[发明专利]一种进程间通信的方法及系统有效
申请号: | 201710954668.3 | 申请日: | 2017-10-13 |
公开(公告)号: | CN109669784B | 公开(公告)日: | 2021-06-22 |
发明(设计)人: | 杨启彬;刘森玉;别晓辉 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 通信 方法 系统 | ||
本发明实施例涉及一种进程间通信的方法及系统,用于从第一进程向第二进程传输通信数据。该方法包括:对第一进程和第二进程进行初始化配置,包括在共享内存空间中开辟第一内存空间;根据通信数据长度和阈值的大小选择通信方式,其中阈值为第一内存空间的大小;通过所选的通信方式进行进程间的数据交互。当通信数据长度小于阈值时,选择共享内存方式进行通信,当通信数据长度达到或超过阈值时,选择数据文件方式进行通信。本发明实施例,解决了由于内存拷贝和分配释放带来的延时问题,以及Binder通信机制携带数据量大小限制问题。
技术领域
本发明涉及计算机领域,尤其涉及一种进程间通信方法及系统。
背景技术
进程间通信(Inter-Process Communication,IPC)就是其中的一种通信传递技术,它主要用于计算机系统中的不同进程之间的消息传递。目前主要有管道通信、Socket、共享内存等机制。
在现有的终端操作系统,例如安卓(AndroidTM)系统中的消息通信基础有一种叫做Binder的通信机制,它就是一种IPC通信机制。原理上讲,它也是一种基于C/S架构的通信机制,只是Binder通信采用了内部代理通信,使得Binder的客户端进行通信的时候,好像在本地进行操作一样。同时,Binder通信的时候也无需知道对端服务的端口,只需知道了该服务的名字即可。
Android的Binder通信机制确实是非常安全和快捷,但是它也存在缺点:1)Binder的通信性能受到其携带的数据长度有关。同时,Binder的驱动需要针对Binder第一进程携带过来的数据拷贝进入第二进程空间,这个也是需要耗费时间的,数据量越大,耗时越长。2)内核驱动由于需要拷贝第一进程的数据,因此需要管理特定的内存来存储该数据,通信的信息长度受限、需要内核驱动额外分配内存协助通信。
发明内容
本发明提供了一种进程间通信的方法及系统,解决了由于内存拷贝和分配释放带来的延时问题,以及Binder通信机制携带数据量大小限制问题。
第一方面,提供了一种进程间通信的方法,用于从第一进程向第二进程传输通信数据。该方法包括:确定第一进程的通信数据的数据长度是否小于第一内存空间的大小,其中通信数据用于第一进程与第二进程进行数据交换,第一内存空间为分配给第一进程访问的内存空间;当通信数据的长度小于第一内存空间的大小,将通信数据存储至第一内存空间中;为第二进程分配虚拟内存空间,虚拟内存空间用于第二进程访问通信数据;将第一内存空间的物理内存页映射到虚拟内存空间。解决了由于内存拷贝和分配释放带来的延时问题,以及安卓中的Binder通信机制携带数据量大小限制问题。
在一种可能的实施方式中,解除第一内存空间中的物理内存页与虚拟地址空间的映射,释放虚拟地址空间。该实施方式,可以回收虚拟地址。
在一种可能的实施方式中,当通信数据的长度大于第一内存空间的大小,将通信数据存储为数据文件,第二进程通过数据文件的元数据访问通信数据。
在一种可能的实施方式中,将通信数据存储为数据文件,第二进程通过数据文件的元数据访问通信数据具体包括:将通信数据存储在位于第一内存空间之外的第二内存空间中;将第二内存空间映射为数据文件;将数据文件的元数据存储到第一内存空间中。
在一种可能的实施方式中,调整通信数据的地址;向第二进程发送消息,消息包括数据文件的元数据。
在一种可能的实施方式中,数据文件的元数据包括文件描述符,向第二进程发送消息之前,还包括:根据文件描述符所对应的控制信息,确定对应的第二进程,将文件描述符转换成第二进程能够识别的文件描述符。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710954668.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据处理方法和设备
- 下一篇:终端应用的页面分享方法、装置、服务器及存储介质