首页 基于COM跨进程调用和共享内存的进程间通信方法和系统

基于COM跨进程调用和共享内存的进程间通信方法和系统

举报
开通vip

基于COM跨进程调用和共享内存的进程间通信方法和系统(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN112631815A(43)申请公布日2021.04.09(21)申请号202110257312.0(22)申请日2021.03.10(71)申请人国能信控互联技术有限公司地址102211北京市昌平区未来科技城英才北二街9号国电新能源院307号楼2层(72)发明人沈阳丽 李志强 刘曙元 程睿君 薛尚君 (74)专利代理机构北京智绘未来专利代理事务所(普通合伙)11689代理人肖继军 王萍(51)Int.Cl.G06F9/54(2006.0...

基于COM跨进程调用和共享内存的进程间通信方法和系统
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN112631815A(43)申请公布日2021.04.09(21)申请号202110257312.0(22)申请日2021.03.10(71)申请人国能信控互联技术有限公司地址102211北京市昌平区未来科技城英才北二街9号国电新能源院307号楼2层(72)发明人沈阳丽 李志强 刘曙元 程睿君 薛尚君 (74)专利代理机构北京智绘未来专利代理事务所(普通合伙)11689代理人肖继军 王萍(51)Int.Cl.G06F9/54(2006.01)权利要求书2页说明书4页附图2页(54)发明名称基于COM跨进程调用和共享内存的进程间通信方法和系统(57)摘要基于COM跨进程调用和共享内存的进程间通信方法和系统,结合使用了COM跨进程调用技术和共享内存技术,首先调用端进程在共享内存中动态分配一块连续内存空间,将数据按特定 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 放入此内存空间,然后将内存的起始偏移作为参数传递给相应的COM接口;COM通知被调用进程,被调用进程取得这个偏移并访问共享内存中的相应位置,按同样的格式取得数据,执行一定逻辑之后将结果仍放入该共享内存,并将控制权返回COM,调用端再次从共享内存中取得输出结果。本发明实现了高效传递大量数据的跨进程通信的功能。CN112631815ACN112631815A权 利 要 求 书1/2页1.基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,所述进程间通信方法,包括以下步骤:步骤1,调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的预设数据按设定格式放入此内存空间,然后将该内存空间的起始偏移量作为参数传递给相应的COM接口;步骤2,被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释所述内存空间,得内存空间中的数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端,所述共享内存是预设数目的进程访问的同一块内存空间,共享内存也是一种进程间通信方式;步骤3,调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数;其中,COM为串行通讯端口。2.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,在步骤1中,所述共享内存用于减小COM传输过程中数据复制的性能开销。3.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,在步骤1中,所述调用端包括内存偏移单元,内存偏移单元用于标定共享内存在各个进程中加载时的不同起始偏移量。4.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,在步骤1中,所述COM接口采取宏的机制来统一处理共享内存中的格式,具体的:通过类的构造函数自动计算格式内存占用总空间并动态分配共享内存;根据字段长度,自动计算偏移,根据偏移自动移动指针位置;当退出作用域时,通过类的析构函数自动释放分配的共享内存。5.根据权利要求4所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,所述宏的机制中的宏定义依赖于预设数据字段个数,当数据字段个数不同时,宏定义有若干个;当数据字段个数相同时,可以重复利用同一个宏。6.根据权利要求4所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,由于输出参数位于共享内存,共享内存的回收释放在调用端发送完回复报文之后。7.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,在步骤1中,所述设定格式为将数据按顺序依次连续排列。8.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在于,在步骤2中,被调用端采取对应的解释内存的宏定义。9.根据权利要求1所述的基于COM跨进程调用和共享内存的进程间通信方法,其特征在2CN112631815A权 利 要 求 书2/2页于,在步骤3中,所述输出参数位于共享内存内,共享内存的回收释放在发送完回复报文之后。10.一种利用权利要求1‑9中任一权利要求所述基于COM跨进程调用和共享内存的进程间通信方法的进程间通信系统,所述系统包括动态分配模块、格式解释模块和输出参数模块,其特征在于:所述动态分配模块中调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的数据按设定格式放入此内存空间,然后将内存的起始偏移作为参数传递给相应的COM接口;所述格式解释模块中被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释这块内存,得到数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端;所述输出参数模块中调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数。3CN112631815A说 明 书1/4页基于COM跨进程调用和共享内存的进程间通信方法和系统技术领域[0001]本发明属于进程间通信及消息传输技术领域,涉及基于COM跨进程调用和共享内存的进程间通信方法和系统。背景技术[0002]进程间通信就是在不同进程之间传播或交换信息,进程间通信不仅应用于操作系统、应用软件等领域,也应用于工业物联网、实时数据库等领域。[0003]现有进程间通信方法有:管道、消息队列等;但匿名管道只支持单向通信且只能在本地机器上,命名管道不能实现多进程通信;消息队列进行消息的复制时需要额外消耗CPU的时间,不适宜于信息量大或操作频繁的场合。发明内容[0004]为解决现有技术存在的问题,本发明的目的在于,提供了基于COM跨进程调用和共享内存的进程间通信方法和系统,既解决了跨网络跨进程的调用,又解决了进程间大量数据传输的问题。[0005]本发明采用如下的技术方案:基于COM跨进程调用和共享内存的进程间通信方法,所述进程间通信方法,包括以下步骤:步骤1,调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的预设数据按设定格式放入此内存空间,然后将该内存空间的起始偏移量作为参数传递给相应的COM接口;步骤2,被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释所述内存空间,得内存空间中的数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端,所述共享内存是预设数目的进程访问的同一块内存空间,共享内存也是一种进程间通信方式;步骤3,调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数;其中,COM为串行通讯端口。[0006]在步骤1中,使用共享内存用于减小COM传输过程中数据复制的性能开销。[0007]在步骤1中,所述调用端包括内存偏移单元,内存偏移单元用于标定共享内存在各个进程中加载时的不同起始偏移量。[0008]在步骤1中,所述COM接口采取宏的机制来统一处理共享内存中的格式,具体的:通过类的构造函数自动计算格式内存占用总空间并动态分配共享内存;根据字段长度,自动计算偏移,根据偏移自动移动指针位置;当退出作用域时,通过类的析构函数自动释放分配的共享内存。4CN112631815A说 明 书2/4页[0009]所述宏的机制中的宏定义依赖于预设数据字段个数,因数据字段个数不同,宏定义有若干个;数据字段个数相同的可以重复利用同一个宏。[0010]由于输出参数位于共享内存,共享内存的回收释放在调用端发送完回复报文之后。[0011]在步骤1中,所述设定格式为将数据按顺序依次连续排列。[0012]在步骤2中,被调用端采取对应的解释内存的宏定义。[0013]在步骤3中,所述输出参数位于共享内存内,共享内存的回收释放在发送完回复报文之后。[0014]基于COM跨进程调用和共享内存的进程间通信方法的进程间通信系统,所述系统包括动态分配模块、格式解释模块和输出参数模块,所述动态分配模块中调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的数据按设定格式放入此内存空间,然后将内存的起始偏移作为参数传递给相应的COM接口;所述格式解释模块中被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释这块内存,得到数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端;所述输出参数模块中调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数。[0015]与现有技术相比,本发明的有益效果在于:本发明采用的COM技术实现了跨进程通信;采用的共享内存技术实现了COM调用时传递需要或返回的大量数据的功能,且减少了COM传输过程中数据复制的性能开销。本发明提供了一种既能进程间高效通信又能传输大量数据的方法。附图说明[0016]图1是本发明基于COM跨进程调用和共享内存的进程间通信方法的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 示意图;图2是本发明基于COM跨进程调用和共享内存的进程间通信的实施例流程示意图;图3是本发明基于COM跨进程调用和共享内存的进程间通信系统的具体结构示意图。具体实施方式[0017]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述。本申请所描述的实施例仅仅是本发明一部分的实施例,而不是全部实施例。基于本发明精神,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明的保护范围。[0018]下面结合附图和具体实施方式对本发明作进一步详细的说明。[0019]如图1所示,一种基于COM跨进程调用和共享内存的进程间通信方法,该方法结合使用了COM跨进程调用技术和共享内存技术。[0020]步骤1,调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的数据按设定格式放入此内存空间,然后将内存的起始偏移作为参数传递给相应的COM接口;5CN112631815A说 明 书3/4页共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。[0021]共享内存的实现步骤如下:(1)创建共享内存区进程1通过操作系统提供的API从内存中申请一块共享区域,Linux系统中可以通过shmget,函数实现,生成的共享内存块与某个特定的key进行绑定。[0022](2)映射共享内存到进程1中在Linux环境中,可以通过shmat实现。[0023](3)映射共享内存到进程2中进程2通过进程1的shmat函数和同一个key值,然后执行shmat,将这个内存映射到进程2中。[0024](4)进程1和进程2中相互通信共享内存实现两个映射后,可以利用该区域进行信息交换,由于没有同步机制,需要参与通信的进程自己协商处理。[0025](5)撤销内存映射关系完成通信之后,需要撤销之前的映射操作,通过shmdt实现。[0026](6)删除共享内存区在Linux中通过shctl函数来实现。[0027]步骤2,被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释这块内存,得到步骤1中所述的数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端;步骤3,调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数;其中,COM为串行通讯端口;共享内存是多个进程可以访问的同一块内存空间,也是一种进程间通信方式。[0028]接口采取宏的机制来统一处理共享内存中的格式,宏需要实现以下三个功能:第一,自动计算格式内存占用总空间并动态分配共享内存,此功能可通过类的构造函数完成;第二,根据字段长度,自动计算偏移,根据偏移自动移动指针位置;第三,当退出作用域时,自动释放分配的共享内存,此功能可通过类的析构函数完成。[0029]通知被调用进程,被调用进程取得这个偏移并访问共享内存中的相应位置,按同样的格式取得数据,执行一定逻辑之后将结果仍放入该共享内存,并将控制权返回COM,调用端再次从共享内存中取得输出结果,返回给客户端。[0030]如图2所示,以实时数据库的写快照调用过程为例(putsnapshots),首先网络服务6CN112631815A说 明 书4/4页进程(server)在共享内存中动态分配一块连续内存空间(偏移为position),将数据按特定格式放入(如:将count,ids,datetimes,ms,values,states,qualities,errors的值依次连续放入)此内存空间,之后以偏移量position为参数调用COM接口;快照服务进程(snapshot)在得到通知后取得这个偏移,并访问共享内存中的相应位置,按同样的格式取得数据,执行写快照的逻辑之后将结果(ecode,count,errors)仍放入该共享内存,并将控制权返回调用线程,网络服务进程(server)再次从共享内存中取得输出结果,图2中的序号说明了各种调用的先后次序。[0031]本申请还同时公开了一种基于前述基于COM跨进程调用和共享内存的进程间通信方法的进程间通信系统,具体结构如图3所示,包括动态分配模块、格式解释模块和输出参数模块,动态分配模块中调用端在共享内存中动态分配一块连续内存空间,将进程间需要传递的数据按设定格式放入此内存空间,然后将内存的起始偏移作为参数传递给相应的COM接口;格式解释模块中被调用端通过COM接口的参数得到共享内存起始位置,找到相应的位置后,按同样的格式解释这块内存,得到数据,然后进行调用,调用完成后将输出参数仍放置在该共享内存中,返回给调用端;输出参数模块中调用端在完成调用后,从COM接口得到返回值,在共享内存中得到输出参数。[0032]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。7CN112631815A说 明 书 附 图1/2页图18CN112631815A说 明 书 附 图2/2页图2图39
本文档为【基于COM跨进程调用和共享内存的进程间通信方法和系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥8.0 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
掌桥科研
掌桥科研向科研人提供中文文献、外文文献、中文专利、外文专利、政府科技报告、OA文献、外军国防科技文献等多种科研资源的推广、发现、揭示和辅助获取服务,以及自动文档翻译、人工翻译、文档格式转换、收录引证等科研服务,涵盖了理、工、医、农、社科、军事、法律、经济、哲学等诸多学科和行业的中外文献资源。
格式:pdf
大小:353KB
软件:PDF阅读器
页数:9
分类:
上传时间:2022-01-25
浏览量:0