[发明专利]一种多进程间的数据交换方法和系统在审
申请号: | 201711132105.2 | 申请日: | 2017-11-15 |
公开(公告)号: | CN107992368A | 公开(公告)日: | 2018-05-04 |
发明(设计)人: | 张冬明;靳国庆;包秀国;袁庆升;云晓春;刘洋;王万能 | 申请(专利权)人: | 国家计算机网络与信息安全管理中心;中国科学院计算技术研究所 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/52 |
代理公司: | 北京律诚同业知识产权代理有限公司11006 | 代理人: | 祁建国,梁挥 |
地址: | 100031*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 数据 交换 方法 系统 | ||
技术领域
本发明涉及信息技术领域,特别涉及一种多进程间的数据交换方法和系统。
背景技术
本发明主要关注点在于主机内的多进程间的数据交换技术,尤其适合多进程间的大数据交换。
常见的进程间数据交换包括使用管道、消息缓冲通信、共享内存、套接字通信(socket)、域名套接字(domainsocket等)。进程间的数据交换量较小时可以使用以上这些方式完成,但当进程间需要交换大量的数据时,这些方式会因为处理数据带宽高、占用较多额外CPU时间而不能满足实时性的要求,同时域名套接字的发送动作由操作系统的软中断触发,而软中断的资源有限,也限制了该方式所能处理的最大带宽。
共享内存则是在操作系统的内存中划分出一部分区域作为系统内两个以上进程共同使用的内存。这种方式使进程间得数据交换不需要进行复制,因此适合大规模数据的交换。但基于共享内存的数据交换需要进行复杂的数据同步操作,造成进程间耦合度极高,任何一个进程出现问题,其他所有进程将出现阻塞。例如数据生产进程通过共享内存的方式向多个数据消费进程提供数据,如果其中一个数据消费进程出现问题导致不能在共享内存中及时取走数据则会造成共享内存空间不足,最终导致数据生产进程也停止工作,从而导致整个处理系统停止工作。
为避免共享内存使用中个别进程故障导致所有进程的死锁的情况,本发明提出使用共享内存与套接字结合的方式来实现主机内多进程间的大规模数据交换。具体地,为提高套接字的数据交换效率,使用域名套接字来传递数据的同步信息。而且,域名套接字中仅传输共享内存的偏移量,可以在一次传输中同步多个数据片段,能够大幅减少对操作系统软中断资源的使用,减少了交互信息对带宽的需求,提高多进程间数据交换的效率。该方法既利用了共享内存数据交换带宽高的特点,又利用域名套接字来消除了进程间对内存访问的耦合导致的死锁。
发明内容
本发明的目的在于克服上述技术的缺陷,提供一种基于共享内存和域名套接字的主机内多进程间大规模数据交换方法和系统。
具体地说,本发明公开了一种多进程间的数据交换方法,其中包括:
数据消费进程启动步骤,启动多个数据消费进程,并向操作系统申请共享内存空间;
共享内存空间划分步骤,启动一个数据生产进程,该数据生产进程和该数据消费进程使用相同的规则定义数据管理单元,并将该共享内存空间按照该数据管理单元的格式划分为N个节点空间,其中N为正整数;
第一节点空间选取步骤,选取某一节点空间作为待写节点空间;
数据写入步骤,该数据生产进程访问该待写节点空间的标识位,若该待写节点空间的标识位为空闲状态,则将其置为在写状态,同时该数据生产进程向该待写节点空间写入数据,写入完成后将标识位置为空闲状态,若该待写节点空间的标识位为在读状态,则放弃该待写节点空间,选取下一个节点空间作为该待写节点空间;
同步数据元组发送步骤,重复调用该数据写入步骤,将该数据生产进程产生的数据依次写入N个节点空间中,并且每写完num个节点空间就通过域名套接字将同步数据元组发送到该数据消费进程,其中num为大于1小于N的正整数;
第二节点空间选取步骤,该数据消费进程通过解析该域名套接字,得到可用节点空间,并根据该可用节点空间,选取某一节点空间作为待读节点空间;
数据读取步骤,该数据消费进程访问该待读节点空间的标识位,若该待读节点空间的标识位为空闲状态或在读状态,则将其置为在读状态,同时该数据消费进程读取并处理该待读节点空间内数据,处理完成后将标识位置为空闲状态,若该待读节点空间的标识位为在写状态,则放弃该待读节点空间,根据该可用节点空间,选取下一个节点空间作为待读节点空间;
重复步骤,重复调用该数据读取步骤,直到所有该数据消费进程均完成数据的读取和处理。
该多进程间的数据交换方法,其中该数据写入步骤还包括,该数据生产进程向该待写节点空间写入数据时,若该待写节点空间已经写有数据,则直接写入新的数据覆盖原有的数据。
该多进程间的数据交换方法,其中该数据生产进程使用互斥锁访问该待写节点空间的标识位;且该数据消费进程使用互斥锁访问该待读节点空间的标识位。
该多进程间的数据交换方法,其中该数据生产进程循环依次在N个节点空间中写入数据并通过域名套接字将N个节点信息发送至数据消费进程。
本发明还公开了一种多进程间的数据交换系统,其中包括:
数据消费进程启动模块,用于启动多个数据消费进程,并向操作系统申请共享内存空间;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家计算机网络与信息安全管理中心;中国科学院计算技术研究所,未经国家计算机网络与信息安全管理中心;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711132105.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种MFC和PCB的连接结构
- 下一篇:一种智能型高压电流测量装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置