用于多进程之间通信的方法、设备及系统技术方案

技术编号:26259090 阅读:27 留言:0更新日期:2020-11-06 17:53
本发明专利技术涉及一种用于多进程之间通信的方法、设备及系统。在一些实施例中,所述方法包括:向操作系统申请文件描述符;建立所述文件描述符与共享内存之间的映射关系;将所述映射关系存储在共享内存管理模块中;以及将所述文件描述符发送给接收者模块。本发明专利技术的方案解决现有共享内存技术中由于进程意外退出所导致的系统安全性问题,且实现了对共享内存生命周期的管理并保证了通知机制的健壮性。

【技术实现步骤摘要】
用于多进程之间通信的方法、设备及系统
本专利技术涉及计算机
,特别是涉及一种用于多进程之间通信的方法、设备及系统。
技术介绍
随着计算机技术的飞速发展和人们对应用程序的要求越来越高,单进程程序在许多场合已经不能满足人们的需求,编写多进程、多线程程序成为现代程序设计的一个重要的特点。在多进程程序设计中,进程间通信是不可避免的。进程间进行通信,不可避免的需要进行大数据块的传递。共享内存允许两个或多个进程共享给定的内存区域。由于进程可以直接读写内存,而不需要任何数据的拷贝,因此共享内存是一种进程间通信(简称IPC,Inter-ProcessCommunication)的有效机制,尤其是在具有多个接收器的情况下。并且,减少的数据拷贝量可以大大降低存储器所需的吞吐量。尽管基于共享内存的方法可提高性能且减少内存访问,但它通常会导致系统安全问题。例如,在进程意外退出时共享内存无法释放,从而会浪费系统资源。更严重的是,在某些实现中,会将用于同步功能的锁放置在共享内存中。该用于同步功能的锁是具有状态的量,当进程需要使用共享内存的资源时,其进行加锁操作,在使用完成后,其进行解锁操作。如果进程在使用共享内存的过程中意外退出,那么该用于同步功能的锁就进入锁定状态,此后,如果有另一进程需要使用共享内存的资源,则该进程将不能完成加锁操作。这种情况也被称为“锁不一致”。即,进程的意外退出会使得锁处于不一致状态,使得其他和该共享内存相关的进程被锁住,永远不能获得该共享内存的资源。对于实时性要求比较严格的无人驾驶系统而言,该问题会严重影响无人驾驶系统的稳定性和安全性。
技术实现思路
为了解决上述技术问题,本专利技术实施例公开了如下技术方案:在一方面中,本专利技术提供一种用于多进程之间通信的方法,包括:向操作系统申请文件描述符;建立所述文件描述符与共享内存之间的映射关系;将所述映射关系存储在共享内存管理模块中;以及将所述文件描述符发送给接收者模块。可选地,所述方法进一步包括:在将所述文件描述符发送给接收者模块之前,向所述操作系统申请unix网络套接字;以及将所述unix网络套接字存储在通知模块中。可选地,将所述文件描述符发送给接收者模块包括:将所述文件描述符通过所述通知模块中的unix网络套接字发送给所述接收者模块。可选地,所述unix网络套接字是抽象unix域套接字。可选地,所述方法进一步包括:在将所述文件描述符发送给接收者模块之后,向所述操作系统申请共享内存中的内存空间;将数据存储在所述内存空间中;以及将所述内存空间的描述信息发送给所述接收者模块。可选地,所述内存空间的描述信息包括所述内存空间的相对起始位置的偏移量和大小。可选地,将所述内存空间的描述信息发送给所述接收者模块包括:将所述内存空间的描述信息通过所述通知模块中的unix网络套接字发送给所述接收者模块。在另一方面中,本专利技术提供一种用于多进程之间通信的方法,包括:从发送者模块接收文件描述符;将所述文件描述符映射为共享内存;关闭所述文件描述符;以及在共享内存管理模块中保存所述共享内存的信息。可选地,所述方法进一步包括:在从发送者模块接收文件描述符之前,向所述操作系统申请unix网络套接字;以及将所述unix网络套接字存储在通知模块中。可选地,从发送者模块接收文件描述符包括:通过所述通知模块中的unix网络套接字从所述发送者模块接收所述文件描述符。可选地,所述unix网络套接字是抽象unix域套接字。可选地,所述方法进一步包括:在从发送者模块接收文件描述符之后,从所述发送者模块接收所述共享内存中的内存空间的描述信息;以及基于所述描述信息从所述内存空间读取数据。可选地,所述内存空间的描述信息包括所述内存空间的相对起始位置的偏移量和大小。可选地,从所述发送者模块接收所述共享内存中的内存空间的描述信息包括:通过所述通知模块中的unix网络套接字从所述发送者模块接收所述内存空间的描述信息。在又一方面中,本专利技术提供一种用于多进程之间通信的设备,包括:内存管理模块,所述内存管理模块经配置以向操作系统申请文件描述符,建立所述文件描述符与共享内存之间的映射关系,以及将所述映射关系存储在所述共享内存管理模块中;以及通知模块,所述通知模块耦合到所述内存管理模块,且经配置以将所述文件描述符发送给接收者模块。可选地,所述通知模块进一步经配置以:向所述操作系统申请unix网络套接字;以及将所述unix网络套接字存储在所述通知模块中。可选地,所述通知模块经配置以通过所述unix网络套接字将所述文件描述符发送给所述接收者模块。可选地,所述unix网络套接字是抽象unix域套接字。可选地,所述内存管理模块进一步经配置以向所述操作系统申请共享内存中的内存空间,以及将数据存储在所述内存空间中;以及所述通知模块进一步经配置以将所述内存空间的描述信息发送给所述接收者模块。可选地,所述内存空间的描述信息包括所述内存空间的相对起始位置的偏移量和大小。可选地,所述通知模块经配置以通过所述unix网络套接字将所述内存空间的描述信息发送给所述接收者模块。在又一方面中,本专利技术提供一种用于多进程之间通信的设备,包括:通知模块,所述通知模块经配置以从发送者模块接收文件描述符;以及内存管理模块,其耦合到所述通知模块且经配置以:将所述文件描述符映射为共享内存,关闭所述文件描述符,以及在所述共享内存管理模块中保存所述共享内存的信息。可选地,所述通知模块进一步经配置以:向操作系统申请unix网络套接字;以及将所述unix网络套接字存储在所述通知模块中。可选地,所述通知模块经配置以通过所述unix网络套接字接收所述文件描述符。可选地,所述unix网络套接字是抽象unix域套接字。可选地,所述通知模块进一步经配置以从所述发送者模块接收所述共享内存中的内存空间的描述信息;以及所述内存管理模块进一步经配置以基于所述描述信息从所述内存空间读取数据。可选地,所述内存空间的描述信息包括所述内存空间的相对起始位置的偏移量和大小。可选地,所述通知模块经配置以通过所述unix网络套接字接收所述内存空间的描述信息。在又一方面中,本专利技术提供一种用于多进程之间通信的系统,包括发送者模块和接收者模块。所述发送者模块经配置以:向操作系统申请文件描述符;建立所述文件描述符与共享内存之间的映射关系;将所述映射关系存储在所述发送者模块的共享内存管理模块中;以及将所述文件描述符发送给所述接收者模块。所述接收者模块耦合到所述发送者模块且经配置以:从所述发送者模块接收文件描述符;将所述文件描述符映射为共享内存;关闭所述文件描述符;以及在所述接收者模块的共享内存管理模块中保存所述共享内存的信息。在又一方面中,本专利技术提供一种计算机可读存储介质,其上存储有程序或指令,所述程序或指令在被处理器执行时实现上述用于多进程之间通信的方法。在又一方面中,本专利技术提供一种包含指本文档来自技高网
...

【技术保护点】
1.一种用于多进程之间通信的方法,其特征在于,包括:/n向操作系统申请文件描述符;/n建立所述文件描述符与共享内存之间的映射关系;/n将所述映射关系存储在共享内存管理模块中;以及/n将所述文件描述符发送给接收者模块。/n

【技术特征摘要】
1.一种用于多进程之间通信的方法,其特征在于,包括:
向操作系统申请文件描述符;
建立所述文件描述符与共享内存之间的映射关系;
将所述映射关系存储在共享内存管理模块中;以及
将所述文件描述符发送给接收者模块。


2.根据权利要求1所述的方法,其特征在于,在将所述文件描述符发送给所述接收者模块之前,所述方法进一步包括:
向所述操作系统申请unix网络套接字;以及
将所述unix网络套接字存储在通知模块中。


3.根据权利要求2所述的方法,其特征在于,所述将所述文件描述符发送给接收者模块,包括:
将所述文件描述符通过所述通知模块中的unix网络套接字发送给所述接收者模块。


4.根据权利要求2所述的方法,其特征在于,所述unix网络套接字是抽象unix域套接字。


5.根据权利要求2所述的方法,其特征在于,在将所述文件描述符发送给所述接收者模块之后,所述方法进一步包括:
向所述操作系统申请所述共享内存中的内存空间;
将数据存储在所述内存空间中;以及
将所述内存空间的描述信息发送给所述接收者模块。


6.根据权利要求5所述的方法,其特征在于,所述内存空间的描述信息包括所述内存空间的相对起始位置的偏移量和大小。


7.根据权利要求5所述的方法,其特征在于,所述将所述内存空间的描述信息发送给所述接收者模块,包括:
将所述内存空间的描述信息通过所述通知模块中的unix网络套接字发送给所述接收者模块。


8.一种用于多进程之间通信的方法,其特征在于,包括:
从发送者模块接收文件描述符;
将所述文件描述符映射为共享内存;
关闭所述文件描述符;以及
在共享内存管理模块中保存所述共享内存的信息。


9.根据权利要求8所述的方法,其特征在于,在从所述发送者模块接收所述文件描述符之前,所述方法进一步包括:
向操作系统申请unix网络套接字;以及
将所述unix网络套接字存储在通知模块中。


10.根据权利要求9所述的方法,其特征在于,所述从发送者模块接收文件描述符,包括:
通过所述通知模块中的unix网络套接字从所述发送者模块接收所述文件描述符。


11.根据权利要求9所述的方法,其特征在于,所述unix网络套接字是抽象unix域套接字。


12.根据权利要求9所述的方法,其特征在于,在从所述发送者模块接收所述文件描述符之后,所述方法进一步包括:
从所述发送者模块接收所述共享内存中的内存空间的描述...

【专利技术属性】
技术研发人员:刘伟靳江明
申请(专利权)人:北京图森未来科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1