[发明专利]一种支持分布式系统的透明进程间通信系统及方法有效
申请号: | 201510725014.4 | 申请日: | 2015-10-30 |
公开(公告)号: | CN105426260B | 公开(公告)日: | 2018-08-21 |
发明(设计)人: | 彭夏鹏;杨威;李悦;许璐璐 | 申请(专利权)人: | 北京航天自动控制研究所;中国运载火箭技术研究院 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 杨春颖 |
地址: | 100854 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种支持分布式系统的透明进程间通信系统及方法,所述系统包含多个通信节点,每个节点包括进程模块11和进程模块12、通信处理模块、链路发送服务模块、链路接收服务模块;所述方法包含唯一进程ID号设计、基于进程ID号的消息传递机制、消息传递路径快速路由、消息的快速传递,和基于“节点内部进程间通信+链路发送接收服务”的跨节点进程间通信机制。所述系统及方法高效地实现了进程间的消息传递,统一了节点内部进程间通信和跨节点进程间通信,实现了对分布式处理的支持。 | ||
搜索关键词: | 一种 支持 分布式 系统 透明 进程 通信 方法 | ||
【主权项】:
1.一种支持分布式系统的透明进程间通信系统,其特征在于包括:多个通信节点,每个节点包括进程模块11和进程模块12、通信处理模块、链路发送进程模块、链路接收进程模块;当节点接收通信系统内的其它节点发送的消息时,该节点只需要一个进程模块11,将接收通信系统内的其它节点发送的消息的节点中的进程模块11作为进程模块21;为每个进程设定一个唯一进程ID号,节点内进程间通信或节点间进程间通信时,以进程ID号为通信地址进行消息收发;进程ID号需要满足一下条件:①进程ID号由用户创建该进程时指定,保证该ID号在一个通信系统内是唯一的;②针对每个节点为进程ID进行分段,每个节点上的进程ID号属于同一号码段;通信处理模块为进程模块11、进程模块12、链路发送进程模块和链路接收进程模块创建一个先入先出型FIFO接收队列,用来存放接收到的消息,消息包括消息头和消息体,消息头包括:发送进程ID、接收进程ID和消息体长度;链路发送进程模块负责该节点通过通信链路向通信系统内的其它节点发送消息,该通信链路用链路发送进程模块执行进程的进程ID号命名,即链路号;链路接收进程模块负责接收通信系统内的其它节点通过通信链路向该节点发送的消息;每个链路发送进程模块执行一个发送进程,对应一条指向发送进程要发送的消息中设定的接收进程ID号对应的进程模块21所在节点的物理链路;在每个节点的通信处理模块中创建一个路由表,该路由表包括了接收进程ID号所属号码段和从发送进程所在节点到该接收进程所在节点的通信链路的链路号;如果接收进程与发送进程在同一个节点内,那么该链路号对应的通信链路为通信处理模块自身,即进程模块12发送消息给通信处理模块转发至进程模块11的先入先出型FIFO接收队列中;如果接收进程与发送进程不在同一节点,那么通信链路是链路发送进程模块执行的进程ID号,即链路号,对应的通信链路;在一个节点内,当进程模块12需要发送消息时,首先向通信处理模块申请一块内存区域,通信处理模块根据进程模块12的申请分配一块内存区域,作为消息存放载体,并把分配的内存区域地址,即消息载体地址,反馈给进程模块12,进程模块12根据反馈回的消息载体地址,把发送进程的ID号、接收进程的ID号和消息体长度写入发送消息的消息头,把需要发送的信息内容写入消息体,然后进程模块12把消息载体地址传递给通信处理模块;通信处理模块根据消息载体地址,获取该消息的消息头中的接收进程的ID号,根据该接收进程的ID号,在创建的路由表中查找从发送进程所在节点到该接收进程所在节点的通信链路的链路号,如果该链路号对应的通信链路为通信处理模块自身,通信处理模块将消息载体地址发送给进程模块11,并存放在进程模块11中的先入先出型FIFO接收队列中,如果进程模块11处于等待接收消息状态,使进程模块11恢复工作状态;如果该链路号对应的通信链路为链路发送进程模块执行进程的进程ID号,即链路号所对应的通信链路,通信处理模块将消息载体地址发送给链路发送进程模块,并存放在链路发送进程模块中的先入先出型FIFO接收队列中,然后该链路发送进程模块从该链路发送进程模块中的先入先出型FIFO接收队列中读取消息载体地址,并将消息载体地址对应的消息,通过物理链路发送给进程模块21所在的节点的链路接收进程模块,如果该链路接收进程模块处于等待接收消息状态,使该链路接收进程模块恢复为工作状态;进程模块21所在的节点的链路接收进程模块向进程模块21所在的节点的通信处理模块申请一块内存区域,该通信处理模块根据进程模块21所在的节点的链路接收进程模块的申请,分配一块内存区域作为消息存放载体,并把分配的内存区域地址,即消息载体地址,反馈给进程模块21所在的节点的链路接收进程模块,进程模块21所在的节点的链路接收进程模块根据反馈回的消息载体地址,把从物理链路接收的消息写入分配的消息存放载体,然后进程模块21所在的节点的链路接收进程模块把消息载体地址传递给进程模块21所在的节点的通信处理模块后转发给进程21;当进程模块11接收本节点内部进程12传来的消息时,判断进程模块11的先入先出型FIFO接收队列中是否存有消息载体地址,如果存有消息载体地址,进程模块11从进程模块11的先入先出型FIFO接收队列中读取消息载体地址,根据该消息载体地址从进程模块11所在节点的通信处理模块读取消息;否则,进程模块11不工作,等待消息存入进程模块11的先入先出型FIFO接收队列中,完成节点内透明进程间通信的消息接收;当进程模块21接收通信系统内的其它节点中的进程模块12发送来的消息时,判断进程模块21的先入先出型FIFO接收队列中是否存有消息载体地址,如果存有消息载体地址,进程模块21从进程模块11的先入先出型FIFO接收队列中读取消息载体地址,根据该消息载体地址从进程模块21所在节点的通信处理模块读取消息;否则,进程模块21不工作,等待消息存入进程模块21的先入先出型FIFO接收队列中,完成节点间透明进程间通信的消息接收。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航天自动控制研究所;中国运载火箭技术研究院,未经北京航天自动控制研究所;中国运载火箭技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510725014.4/,转载请声明来源钻瓜专利网。