[发明专利]一种无锁的处理器间通信的方法和系统在审

专利信息
申请号: 202111591989.4 申请日: 2021-12-23
公开(公告)号: CN114356834A 公开(公告)日: 2022-04-15
发明(设计)人: 郝继锋;任晓瑞;周霆;虞保忠;尹超;朱晓宁 申请(专利权)人: 中国航空工业集团公司西安航空计算技术研究所
主分类号: G06F15/163 分类号: G06F15/163;G06F9/54
代理公司: 中国航空专利中心 11008 代理人: 王世磊
地址: 710000 *** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 处理器 通信 方法 系统
【说明书】:

发明属于计算机系统软件技术领域,具体涉及一种无锁的处理器间通信的方法和系统。应用于发送处理器,包括:步骤1:向接收处理器发送消息;步骤2:接收接收处理器对所述发送消息的回复;步骤3:收到所述回复之后,从指令列表上读取未处理的指令并返回步骤1。通过具备空闲状态、已发送状态以及已处理状态的确定性状态机的指令列表,实现了无锁的处理器间的通信。

技术领域

本发明属于计算机系统软件技术领域,具体涉及一种无锁的处理器间通信的方法和系统。

背景技术

在分布式计算系统中,任务在多个处理器之间共享。在这样的系统中,要执行的任务可以被分配给一组处理器中的某一个,处理器之间需要以一种允许软件确定性地管理资源的方式相互发送消息的方法和系统。基于此种原因,特提出本发明。

发明内容

发明目的:提供一种无锁的处理器间通信的方法和系统,以解决处理器间通信的不确定问题。

技术方案:

一种无锁的处理器间通信的方法,应用于发送处理器,包括:

步骤1:向接收处理器发送消息;

步骤2:接收接收处理器对所述发送消息的回复;

步骤3:收到所述回复之后,从指令列表上读取未处理的指令并返回步骤1。

进一步地,步骤1,具体包括:

监控共享内存,直到一个内存块被标记为“空闲”状态,并在标记为“空闲”状态之后选择一个适当的内存块;

发送处理器把要发送给接收处理器的消息写入所选择的内存块;

将内存块的状态从“空闲”状态更改为“已发送”状态;

将要发送给接收处理器的消息对应的指令添加到指令列表的末尾;

发送处理器确定是否还要给接收处理器发送消息,在确定不再向接收处理器发送消息的情况下,发送处理器更新指令列表的头指针,使其指向接收处理器等待处理的第一条指令;

向接收处理器发送处理器间中断。

进一步地,指令列表中的表项包含对共享内存中内存块位置的索引。

进一步地,步骤3,具体包括:

接收接收处理器发送的处理器间中断;

检查共享内存,并删除指令列表中标记为“已处理”的指令;

把“已处理”的指令对应的内存块的状态从“已处理”变成“空闲”;

更新指针的位置。

一种无锁的处理器间通信的方法,应用于接收处理器,包括:

步骤1:接收发送处理器发送的消息;

步骤2:对接收到的消息进行处理并回复。

进一步地,步骤1,具体包括:

接收到发送处理器发送的处理器间中断;

接收处理器把其指针指向指令列表中第一个待发送的指令;

根据共享内存中的内存块的内容执行指令列表中的下一指令;

将包含第一个待发送的指令的内存块从“已发送”状态更改为“已处理”状态;

确定是否完成了所有指令的接收,如果指令列表中不包含待处理项,则更新指针指向第一个没有被处理的表项并进行处理,如果所有的表项都处理完成,向发送处理器发送处理器间中断。

进一步地,更新指针指向第一个没有被处理的表项,具体包括:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航空工业集团公司西安航空计算技术研究所,未经中国航空工业集团公司西安航空计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202111591989.4/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top