当前位置: 首页 > news >正文

网站上传图片加水印电子工程师培训机构哪个好

网站上传图片加水印,电子工程师培训机构哪个好,江苏常州建设局网站,网站升级通知自动跳跃SylixOS管线模型分析前文主要介绍了SylixOS中的块设备CACHE管理#xff0c;本章主要介绍磁盘高速传输。在CAHCE回写中SyilxOS采取了两种方式#xff0c;即直接回写和多管线并发回写。并发写管线通过多线程并发处理CACHE提交的写请求#xff0c;实现磁盘高速传输。SylixOS中通… SylixOS管线模型分析前文主要介绍了SylixOS中的块设备CACHE管理本章主要介绍磁盘高速传输。在CAHCE回写中SyilxOS采取了两种方式即直接回写和多管线并发回写。并发写管线通过多线程并发处理CACHE提交的写请求实现磁盘高速传输。SylixOS中通过LW_DISKCACHE_WP结构体管理并发写管线该结构体的具体内容如程序清单 1-1所示。程序清单 1-1 typedef struct {BOOL                    DISKCWP_bExit;                      /*  是否需要退出                */BOOL                    DISKCWP_bCacheCoherence;            /*  CACHE 一致性标志            */BOOL                    DISKCWP_bParallel;                  /*  并行化读写支持              */INT                     DISKCWP_iPipeline;                  /*  写管线线程数                */INT                     DISKCWP_iMsgCount;                  /*  写消息缓冲个数              */PVOID                   DISKCWP_pvRBurstBuffer;             /*  管线缓存                    */PVOID                   DISKCWP_pvWBurstBuffer;             /*  管线缓存                    */LW_OBJECT_HANDLE        DISKCWP_hMsgQueue;                  /*  管线刷新队列                */LW_OBJECT_HANDLE        DISKCWP_hCounter;                   /*  计数信号量                  */LW_OBJECT_HANDLE        DISKCWP_hPart;                      /*  管线缓存管理                */LW_OBJECT_HANDLE        DISKCWP_hSync;                      /*  排空信号                    */LW_OBJECT_HANDLE        DISKCWP_hDev;                       /*  非并发设备锁                */LW_OBJECT_HANDLE        DISKCWP_hWThread[LW_CFG_DISKCACHE_MAX_PIPELINE];/*  管线写任务表                */ } LW_DISKCACHE_WP; typedef LW_DISKCACHE_WP    *PLW_DISKCACHE_WP; DISKCWP_bExit为LW_TRUE时写管线线程将会退出DISKCWP_bCacheCoherence为LW_TRUE时管线缓存将使用非缓冲的内存DISKCWP_bParallel并行化读写支持如果不支持则需要在操作设备前调用设备锁防止并发操作DISKCWP_iPipeline写管线线程数为0时表示不是用并发写管线DISKCWP_iMsgCount:写消息缓冲个数最小为DCATTR_iPipeline, 可以为 DCATTR_iPipeline 的2 ~ 8 倍DISKCWP_hMsgQueue管线刷新队列上层通过发送一个消息发起一个写请求DISKCWP_hCounter计数信号量用于计数当前缓冲块发起写请求时申请完成回写时释放DISKCWP_hPart通过定长内存管理管线缓存DISKCWP_hDev非并发设备锁DISKCWP_hWThread管线写任务表DISKCWP_hSync排空信号用于回写完成后同步。写管线创建写管线的创建通过调用__diskCacheWpCreate函数来完成其函数原型如程序清单 1-2所示。程序清单 1-2 INT   __diskCacheWpCreate(PLW_DISKCACHE_CB  pdiskc,PLW_DISKCACHE_WP  pwp, BOOL              bCacheCoherence,BOOL              bParallel,INT               iPipeline, INT               iMsgCount,INT               iMaxRBurstSector,INT               iMaxWBurstSector,ULONG             ulBytesPerSector); 函数__diskCacheWpCreate原型分析pdiskc                    缓冲控制块pwp                        并发写管线控制块bCacheCoherence         CACHE 一致性需求bParallel                并发读写支持iPipeline                写管线线程数iMsgCount                管线总消息个数iMaxRBurstSector        读猝发长度iMaxWBurstSector        写猝发长度ulBytesPerSector         每扇区大小函数__diskCacheWpCreate根据入参创建对应的写管线并填充相关信息到并发写管线控制控制结构体其创建流程如下所示。创建管线缓存创建管线刷新队列创建计数信号量创建内存分区缓存管理创建排空信号创建非并发设备锁创建写管线线程组写管线线程写管线线程的函数原型如程序清单 1-3所示。程序清单 1-3 static PVOID  __diskCacheWpThread (PVOID  pvArg) 参数pvArg为PLW_DISKCACHE_CB类型的磁盘缓冲控制块。管线线程运行后循环等待接收管线刷新消息。其中消息类型如程序清单 1-4所示。程序清单 1-4 typedef struct {ULONG                   DISKCWPM_ulStartSector;             /*  起始扇区                    */ULONG                   DISKCWPM_ulNSector;                 /*  扇区数量                    */PVOID                   DISKCWPM_pvBuffer;                  /*  扇区缓冲                    */ } LW_DISKCACHE_WPMSG; typedef LW_DISKCACHE_WPMSG *PLW_DISKCACHE_WPMSG; 当线程接收到消息后根据消息中的信息调用具体的硬件接口进行写操作。完成写操作后需要释放消息中的内存块以及计数信号量和同步信号接着进入下一次循环等待接收消息。SyilxOS管线使用当支持并发写管线时可以通过调用__diskCacheWpGetBuffer函数在已初始化后的内存分区中申请一个内存块该函数的具体实现如程序清单 2-1所示。程序清单 2-1 PVOID  __diskCacheWpGetBuffer (PLW_DISKCACHE_WP  pwp, BOOL bRead) {PVOID  pvRet;if (bRead) {return  (pwp-DISKCWP_pvRBurstBuffer);}if (pwp-DISKCWP_iPipeline  0) {return  (pwp-DISKCWP_pvWBurstBuffer);}if (API_SemaphoreCPend(pwp-DISKCWP_hCounter, LW_OPTION_WAIT_INFINITE)) {_BugHandle(LW_TRUE, LW_TRUE, diskcache pipeline error!\r\n);}pvRet  API_PartitionGet(pwp-DISKCWP_hPart);_BugHandle((pvRet  LW_NULL), LW_TRUE, diskcache pipeline error!\r\n);return  (pvRet); } 在申请内存块前需要先请求计数信号量计数信号量与内存块数量相等。当内存分区中已没有剩余的内存块时线程无法获得计数信号量进入休眠。当管线线程完成写操作后会释放接收到的内存块并释放计数信号量此时休眠线程成功申请信号量进入就绪态并顺利获得内存块。接着需要将CACHE中的缓冲数据拷贝到内存块中并提交一个写请求。管线线程接收到消息后进行具体的写操作和资源释放。写请求函数如程序清单 2-2所示。程序清单 2-2 INT  __diskCacheWpWrite (PLW_DISKCACHE_CB  pdiskc,PLW_BLK_DEV       pblkdDisk,PVOID             pvBuffer,ULONG             ulStartSector,ULONG             ulNSector) {LW_DISKCACHE_WPMSG  diskcwpm;PLW_DISKCACHE_WP    pwp  pdiskc-DISKC_wpWrite;if (pwp-DISKCWP_iPipeline  0) {return  (pdiskc-DISKC_pblkdDisk-BLKD_pfuncBlkWrt(pblkdDisk, pvBuffer,ulStartSector,ulNSector));}diskcwpm.DISKCWPM_ulStartSector  ulStartSector;diskcwpm.DISKCWPM_ulNSector      ulNSector;diskcwpm.DISKCWPM_pvBuffer       pvBuffer;API_MsgQueueSend2(pwp-DISKCWP_hMsgQueue, diskcwpm, sizeof(LW_DISKCACHE_WPMSG), LW_OPTION_WAIT_INFINITE);return  (ERROR_NONE); } 发起写请求后可通过调用__diskCacheWpSync函数进行写同步该函数通过写管线控制块中的DISKCWP_hSync信号量实现同步功能。参考资料无 转载于:https://blog.51cto.com/12557713/1936781
http://www.pierceye.com/news/98340/

相关文章:

  • 做网站的费用计入销售费用吗做装修效果图的网站
  • 企业网站制作深圳免费域名映射
  • 安徽建设厅网站施网站的静态页面谁做
  • 网站内页seo桂林山水甲天下是哪个景点
  • 外贸网站免费建站小榄网站建设公司
  • 做旅游网站赚钱吗wordpress模板调用自定义插件
  • 南宁手机网站建设工艺品做网站
  • 可以下载电影的网站怎么做适合程序员的wordpress主题
  • 哪些网站微信支付平台建设网站软件
  • 做系统网站赚钱做爰网站有哪些
  • 新密做网站公司网站建设工作部署会
  • 上海网站推广方法怎么做网页 网站制作
  • 网站蜘蛛怎么看wordpress多用户商城主题
  • 拨付网站建设经费的请示wordpress+电商版本
  • 深圳网站制作需要多少钱互动营销网站
  • 营销型网站公司名称烟台网站建设专业臻动传媒
  • 哪个网站可以做结婚证企业黄页官网
  • 进网站备案大学生网页设计心得体会
  • 做网站除了广告还有什么收入的短视频营销的发展趋势
  • 企顺网网站建设娜娜视频免费视频在线
  • 如何做英文网站wordpress 247
  • 玄武模板网站制作点击查看视联网视频会议系统
  • 域名购买之后怎么做网站网站二级页面设计要求
  • 一个好的网站怎样布局安康市网站建设
  • 上海企业网站优化多少钱湛江网站建设方案托管
  • 手机网站可以做英文版本吗怎么自己购买域名 建设网站
  • 茂港手机网站建设公司如何将音乐上传到wordpress
  • 做房地产网站wordpress 文章页面模板
  • 深圳做app网站建设网站申请支付宝支付
  • 巴音郭楞库尔勒网站建设知名企业门户网站建设