[发明专利]一种基于共享内存池的IPC通信方法在审
申请号: | 202010216291.3 | 申请日: | 2020-03-25 |
公开(公告)号: | CN111427707A | 公开(公告)日: | 2020-07-17 |
发明(设计)人: | 杜若蒙;魏志锋 | 申请(专利权)人: | 北京左江科技股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 张然 |
地址: | 100095 北京市海淀区高*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 共享 内存 ipc 通信 方法 | ||
1.一种基于共享内存池的IPC通信方法,其特征在于,包括:
进行IPC通信,包括:消息接收和消息发送;
消息发送包括:
申请共享内存,如成功则继续,否则结束;
向共享内存写入消息数据;
将申请到的共享内存的虚拟地址转换为逻辑地址;
将该逻辑地址发往目的接收队列;
该接收队列的消息接收包括:
接收消息队列收到该逻辑地址;
根据转换公式将该逻辑地址还原出内存池ID和共享内存最小管理单元逻辑地址;
通过内存池ID逻辑地址获得虚拟地址,虚拟地址加上共享内存最小管理单元逻辑地址等于消息实际存储地址;
处理消息;
释放该逻辑地址;
进行内存池创建管理。
2.如权利要求1所述的基于共享内存池的IPC通信方法,其特征在于,使用共享内存控制管理块、共享内存最小管理单元、共享内存最小管理单元的头部信息、共享内存最小管理单元的尾部信息以及双向链表对系统申请共享内存进行统一管理。
3.如权利要求1所述的基于共享内存池的IPC通信方法,其特征在于,通信双方发送数据时,发方通过虚拟内存地址将数据写入共享内存,将虚拟地址转换为该逻辑地址。
4.如权利要求1所述的基于共享内存池的IPC通信方法,其特征在于,接受方通过IPC接口收到发方的该逻辑地址,将该逻辑地址转换为本地的虚拟地址,从该虚拟地址中读出数据并解析。
5.如权利要求1所述的基于共享内存池的IPC通信方法,其特征在于,内存池创建管理包括:
a)读取配置文件,顺序解析配置文件,检查配置参数是否合法,合法后获取内存池ID、共享内存最小管理单元可用内存以及共享内存最小管理单元总数,如不合法,则结束;
b)使用内存池ID获取共享内存首地址,若成功到则转a),失败则转c);
c)使用内存池ID关键字创建共享内存,长度为共享内存控制管理块结构大小,共享内存最小管理单元总数个共享内存最小管理单元的可用内存、头部信息以及尾部信息;
d)创建信号量,用于临界资源的保护,并获得资源;
e)初始化空闲的双向链表,将线性的共享内存初始化为双向链表,链表元素为共享内存最小管理单元;
f)初始化共享内存最小管理单元,设置实际大小为BLK_SIZE、已经使用的大小为0,属主信息为0,关联值为0,数据域的地址设置为自定义地址;
g)初始化共享内存控制管理块的内存池内使用中共享内存最小管理单元的双向链表为空;
h)释放二义信号量资源,跳转到a)。
6.如权利要求1所述的基于共享内存池的IPC通信方法,其特征在于,申请共享内存时使用二分查找方法查找合适的内存池:
对内存池ID根据共享内存最小管理单元可用内存大小顺序排列,在申请内存时,通过查找所有内存池共享内存最小管理单元可用内存大小,并进行比较推算出合理的内存池ID进行使用。
7.如权利要求6所述的基于共享内存池的IPC通信方法,其特征在于,申请共享内存时使用二分查找方法查找合适的内存池进一步包括:
将M指向的共享内存控制管理块记做SMCB[M],申请内存大小记做REQ_SIZE,最大内存池ID为MAX,最小内存池ID为MIN,中间内存池ID记做M,M=(MIN+MAX)/2;
a)REQ_SIZE与中间位置的SMCB[M]的BLK_SIZE比较,通过中间内存池M将MAX个SMCB分成两部分;
b)如果SMCB[M]的可用内存大小小于REQ_SIZE继续,如果大于就在MIN到M+1个内存池ID中继续查找;
c)如果SMCB[M+1]的可用内存大小大于等于REQ_SIZE那么返回M+1值为申请到的内存池ID否则在M-1到MAX个内存池ID中继续查找。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京左江科技股份有限公司,未经北京左江科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010216291.3/1.html,转载请声明来源钻瓜专利网。