【技术实现步骤摘要】
一种进程间通信方法及相关设备
[0001]本申请涉及通信
,尤其涉及一种进程间通信(inter process communications,IPC)方法及相关设备。
技术介绍
[0002]IPC是一个进程与另一个进程间共享消息的一种通信方式,主要用于计算机系统中的不同进程之间的消息传递。其中,进程是计算机资源分配的最小单位,每个进程都拥有自己的虚拟地址空间,并与其他进程的虚拟地址空间相互隔离,也就是说,一个进程只能访问自己的虚拟地址空间,不能访问其他进程的虚拟地址空间。为了使不同的进程之间能够互相访问并协调工作,操作系统提供了多种IPC机制。
[0003]但是,现有的IPC机制存在着性能低或者安全性低等问题。
技术实现思路
[0004]本申请实施例公开了一种进程间通信方法及相关设备,不仅能够提升进程间通信的安全可靠性,还能够有效提升进程间通信的性能。
[0005]第一方面,本申请提供一种进程间通信方法,所述方法包括:
[0006]第一进程创建第二进程以及第三进程之间的第一共享内 ...
【技术保护点】
【技术特征摘要】
1.一种进程间通信方法,其特征在于,所述方法包括:第一进程创建第二进程以及第三进程之间的第一共享内存,其中,所述第一进程、所述第二进程以及所述第三进程运行在用户空间,所述第一进程对所述第一共享内存具有读写权限,所述第二进程对所述第一共享内存具有读写权限,所述第三进程对所述第一共享内存具有只读权限,所述第二进程和所述第三进程均在所述第一进程中注册,第一映射区域与所述第一共享内存之间具有第一映射关系,第二映射区域与所述第一共享内存之间具有第二映射关系,所述第一映射区域为所述第二进程虚拟地址空间中与所述第一共享内存建立映射关系的区域,所述第二映射区域为所述第三进程虚拟地址空间中与所述第一共享内存建立映射关系的区域;所述第二进程将第一数据写入所述第一映射区域,并根据所述第一映射关系将所述第一数据从所述第一映射区域映射至所述第一共享内存,所述第三进程根据所述第二映射关系,将所述第一数据从所述第一共享内存映射至所述第二映射区域,从而实现所述第二进程向所述第三进程的单向通信。2.根据权利要求1所述的方法,其特征在于,在所述第一进程创建第二进程以及第三进程之间的第一共享内存之后,所述方法还包括:所述第一进程配置所述第二进程具有所述第一共享内存的读写权限,以及,配置所述第三进程具有所述第一共享内存的只读权限。3.根据权利要求2所述的方法,其特征在于,所述第一进程配置所述第二进程具有所述第一共享内存的读写权限,以及配置所述第三进程具有所述第一共享内存的只读权限,包括:所述第一进程通过访问控制列表ACL配置所述第二进程具有所述第一共享内存的读写权限,以及配置所述第三进程具有所述第一共享内存的只读权限。4.根据权利要求1至3任一项所述的方法,其特征在于,在所述第二进程将第一数据写入所述第一映射区域之前,所述方法还包括:所述第二进程分配第一堆内存,所述第一堆内存用于存储所述第二进程的控制信息;所述第二进程从所述第一堆内存中获取所述第二进程的控制信息,以使得所述第二进程根据所述第二进程的控制信息将所述第一数据写入所述第一映射区域;在所述第三进程将所述第一数据从所述第一共享内存映射至所述第二映射区域之前,所述方法还包括:所述第三进程分配第二堆内存,所述第二堆内存用于存储所述第三进程的控制信息;所述第三进程从所述第二堆内存中获取所述第三进程的控制信息,以使得所述第三进程根据所述第三进程的控制信息将所述第一数据从所述第一共享内存映射至所述第二映射区域。5.根据权利要求4所述的方法,其特征在于,所述第一堆内存与所述第一映射区域为不同的内存,所述第一映射区域用于存储所述第二进程的共享内存信息,所述第二堆内存与所述第二映射区域为不同的内存,所述第二映射区域用于存储所述第三进程的共享内存信息。6.根据权利要求1至3任一项所述的方法,其特征在于,在所述第二进程将第一数据写入所述第一映射区域之前,所述方法还包括:
所述第一进程分配第三堆内存,所述第三堆内存用于存储所述第二进程的控制信息;所述第一进程接收所述第二进程发送的第一获取信息请求,其中,所述第一获取信息请求用于请求从所述第三堆内存中获取所述第二进程的控制信息;所述第一进程根据所述第一获取信息请求将所述第二进程的控制信息发送至所述第二进程,以使得所述第二进程根据所述第二进程的控制信息将所述第一数据写入所述第一映射区域;在所述第三进程将所述第一数据从所述第一共享内存映射至所述第二映射区域之前,所述方法还包括:所述第三进程分配第二堆内存,所述第二堆内存用于存储所述第三进程的控制信息;所述第三进程从所述第二堆内存中获取所述第三进程的控制信息,以使得所述第三进程根据所述第三进程的控制信息将所述第一数据从所述第一共享内存映射至所述第二映射区域。7.根据权利要求6所述的方法,其特征在于,所述第三堆内存与所述第一映射区域为不同的内存,所述第一映射区域用于存储所述第二进程的共享内存信息,所述第二堆内存与所述第二映射区域为不同的内存,所述第二映射区域用于存储所述第三进程的共享内存信息。8.根据权利要求1至3任一项所述的方法,其特征在于,在所述第二进程将第一数据写入所述第一映射区域之前,所述方法还包括:所述第二进程分配第一堆内存,所述第一堆内存用于存储所述第二进程的控制信息;所述第二进程从所述第一堆内存中获取所述第二进程的控制信息,以使得所述第二进程根据所述第二进程的控制信息将所述第一数据写入所述第一映射区域;在所述第三进程将所述第一数据从所述第一共享内存映射至所述第二映射区域之前,所述方法还包括:所述第一进程分配第三堆内存,所述第三堆内存用于存储所述第三进程的控制信息;所述第一进程接收所述第三进程发送的第二获取信息请求,其中,所述第二获取信息请求用于请求从所述第三堆内存中获取所述第三进程的控制信息;所述第一进程根据所述第二获取信息请求将所述第三进程的控制信息发送至所述第三进程,以使得所述第三进程根据所述第三进程的控制信息将所述第一数据从所述第一共享内存映射至所述第二映射区域。9.根据权利要求8所述的方法,其特征在于,所述第一堆内存与所述第一映射区域为不同的内存,所述第一映射区域用于存储所述第二进程的共享内存信息,所述第三堆内存与所述第二映射区域为不同的内存,所述第二映射区域用于存储所述第三进程的共享内存信息。10.根据权利要求1所述的方法,其特征在于,所述第一进程包括检测线程,所述方法还包括:所述检测线程检测所述第二进程或者所述第三进程是否出现复位;在检测到所述第二进程或者所述第三进程出现复位的情况下,所述检测线程通知所述第二进程和所述第三进程中没有出现复位的进程终止通信,并释放所述第一共享内存。11.根据权利要求1所述的方法,其特征在于,所述第一进程包括恢复共享内存线程,所
述恢复共享内存线程为所述第一进程包含的线程中运行级别最高的线程,所述方法还包括:当所述第一进程重启时,所述恢复共享内存线程恢复所述第一共享内存。12.根据权利要求1至11任一项所述的方法,其特征在于,所述第一共享内存中包括破坏者队列,所述第二进程将所述第一数据从所述第一映射区域映射至所述第一共享内存,包括:所述第二进程将所述第一数据从所述第一映射区域映射至所述破坏者队列;所述第三进程将所述第一数据从所述第一共享内存映射至所述第二映射区域,包括:所述第三进程将所述第一数据从所述破坏者队列映射至所述第二映射区域。13.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一进程创建所述第二进程以及所述第三进程之间的第二共享内存,其中,所述第一进程对所述第二共享内存具有读写权限,所述第三进程对所述第二共享内存具有读写权限,所述第二进程对所述第二共享内存具有只读权限,第三映射区域与所述第二共享内存之间具有第三映射关系,第四映射区域与所述第二共享内存之间具有第四映射关系,所述第三映射区域为所述第三进程虚拟地址空间中与所述第二共享内存建立映射关系的区域,所述第四映射区域为所述第二进程虚拟地址空间中与所述第二共享内存建立映射关系的区域;所述第三进程将所述第二数据写入所述第三映射区域,并根据所述第三映射关系,将所述第二数据从所述第三映射区域映射至所述第二共享内存,所述第二进程根据所述第四映射关系,将所述第二数据从所述第二共享内存映射至所述第四映射区域,从而实现所述第三进程向所述第二进程的单向通信。14.一种进程间通信装置,其特征在于,包括:创建模块,用于通过第一进程创建第二进程以及第三进程之间的第一共享内存,其中,所述第一进程、所述第二进程以及所述第三进程运行在用户空间,所述第一进程对所述第一共享内存具有读写权限,所述第二进程对所述第一共享内存具有读写权限,所述第三进程对...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。