[发明专利]一种基于共享内存的进程间通讯方法有效
申请号: | 201310432622.7 | 申请日: | 2013-09-22 |
公开(公告)号: | CN103514053B | 公开(公告)日: | 2017-01-25 |
发明(设计)人: | 刘庆云;李世明;刘洋;秦鹏;郑超;孙永;周舟;杨威 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/44 |
代理公司: | 北京轻创知识产权代理有限公司11212 | 代理人: | 杨立 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于共享内存的多进程间通讯方法,本发明以循环队列形式对共享内存进行管理,共享内存供多个进程以队列形式顺序读写,读或写以块为单位,块大小由用户控制;共享内存被多进程共享,进程分为只读进程和只写进程;支持多个进程同时对该共享内存进行读操作,只能有一个进程对该共享内存进行写操作,读写不冲突,能同时进行;本发明所述方法大大减少了进程间交换信息时经由内核的拷贝次数,提高了后台系统的吞吐量,降低了系统的开销,有效地提高了系统的性能。 | ||
搜索关键词: | 一种 基于 共享 内存 进程 通讯 方法 | ||
【主权项】:
一种基于共享内存的多进程间通讯方法,其特征在于,包括如下步骤:步骤1:写进程创建包括管理单元、循环队列和内存池的共享内存,并在管理单元中存储关于整个共享内存的管理信息;步骤2:写进程从管理单元中获取关于当前写进程的操作位置,根据每次待写入数据的大小,顺序开辟与待存入数据大小等大的第N(N=1,2,3…)存储块,将待写入的数据存入相应存储块中;步骤3:开辟第N存储块时,记录所述第N存储块的大小、起始位置、结束位置以及存储的是否为完整数据,上述记录的信息形成第N结构体,并存入循环队列的队尾指针处;同时更新管理单元中关于当前写进程的操作位置的记录;步骤4:在执行步骤2至3的同时,一个或若干个读进程可对共享内存进行读操作;步骤5:每个读进程自循环队列的队头开始,依次读取第N(N=1,2,3…)结构体;步骤6:判断第N结构体是否处于循环队列的队尾,如果是队尾,说明该结构体对应的存储块正在进行写操作,则等待,等到队尾指针不指向该结构体时,执行步骤7;如果不是队尾,则直接执行步骤7;步骤7:根据该结构体中关于第N存储块的位置信息,读取内存池中相应第N存储块中的数据;步骤8:判断所述写进程是否还要向内存池写入数据,如果是,返回步骤2;否则判断内存池中数据是否都已读完,如果未读完则返 回步骤5;否则结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310432622.7/,转载请声明来源钻瓜专利网。
- 上一篇:旋转压缩机和具有其的冷冻循环装置
- 下一篇:耐磨环组件和泵送设备