下载此文档

基于桥接模式多平台共享内存管理设计及实现.docx


文档分类:通信/电子 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
基于桥接模式多平台共享内存管理设计及实现.docx基于桥接模式多平台共享内存管理设计及实现摘要:在多平台操作系统下,共享内存的实现存在一些差异,在程序设计中通常依靠条件编译来实现,导致软件耦合性太强,不利于扩充。该文结合设计模式中的桥接模式,提出了一种支持多操作系统平台的共享内存程序设计方案改进的新方法。关键词:多平台;共享内存;桥接模式中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)31-7592-05在实时控制系统中,大部分系统都要求支持多种操作系统平台,并且经常要进行大量的数据交换和共享。进程间的数据交换和共享可以采用共享内存、管道、发送消息等几种方法来直接完成,在这些方法中,共享内存能够很好的实现进程间大容量数据的快速交换。在不同操作系统下,共享内存的实现存在一些差异,因此,在软件设计中经常需要判别操作系统的类型,分情况进行实现,这样极大地降低了软件的可扩充性和实现细节对客户的透明性。本文旨在结合设计模式中的Bridge模式,提出了一种多操作系统平台下,共享内存模块的设计和实现方法。1Bridge模式Bridge模式的用意是将抽象部分与实现部分分离,使它们都可以独立的变化。主要适用于以下情况:在类的抽象和它的实现部分之间可以划分开,相互独立,还能动态结合;类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。结构图如图1所示。2各平台共享内存的实现共享内存(SharedMemory)是一种在Windows平台或者Unix平台下多个进程之间通讯的常用方法。可用于同一个程序中多个进程之间通讯,也可以用于不同程序之间的信息传递。,共享内存的实现在Windows操作系统中,任何一个进程不允许读取、写入或是修改另一个进程的数据,但是在某个进程内创建的文件映射对象的视图却能够为多个其他进程所映射,这些进程共享的是物理存储器的同一个页面。因此,当一个进程将数据写入此共享文件映射对象的视图时,其他进程可以立即获取数据变更情况。为了进一步提高数据交换的速度,还可以采用由系统页文件支持的内存映射文件而直接在内存区域使用,显然这种共享内存的方式是完全可以满足在进程间进行大数据量数据快速传输任务要求的。具体步骤如下:在发送进程中调用内存映射API函数CreateFileMapping创建一个有名字标识的共享内存;函数CreateFileMapping原型如下所示:HANDLECreateFLeMapping(HANDLEhFile,LPSECURITY_ATTRIBUTESlpFileMappingAttributes,DWORDflProtect,DWORDdwMaximumSizeHigh,DWORDdwMaximumSizeLow,LPCTSTRlpName);如果多个进程都要对同一共享内存进行写访问,则必须保持相互间同步。映射文件还可以指定PAGE_WRITECOPY标志,可以保证其原始数据不会遭到破坏,同时允许其他进程在必要时自由的操作数据的拷贝。在创建文件映射对象后,发送端进程调用MapViewOfF订e函数映射到本进程的地址空间内;接收端进程访问共享内存对象,需要通过内存对象名调用0penFileMapping函数,以获得共享内存对象的句柄。然后调用MapViewOfF订e函数来映射对象视图。用户可以使用该对象视图来进行数据读写操作,以达到数据

基于桥接模式多平台共享内存管理设计及实现 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小博士
  • 文件大小56 KB
  • 时间2019-04-18