【技术实现步骤摘要】
用于多进程之间通信的方法、设备及系统
本专利技术涉及计算机
,特别是涉及一种用于多进程之间通信的方法、设备及系统。
技术介绍
随着计算机技术的飞速发展和人们对应用程序的要求越来越高,单进程程序在许多场合已经不能满足人们的需求,编写多进程、多线程程序成为现代程序设计的一个重要的特点。在多进程程序设计中,进程间通信是不可避免的。进程间进行通信,不可避免的需要进行大数据块的传递。共享内存允许两个或多个进程共享给定的内存区域。由于进程可以直接读写内存,而不需要任何数据的拷贝,因此共享内存是一种进程间通信(简称IPC,Inter-ProcessCommunication)的有效机制,尤其是在具有多个接收器的情况下。并且,减少的数据拷贝量可以大大降低存储器所需的吞吐量。尽管基于共享内存的方法可提高性能且减少内存访问,但它通常会导致系统安全问题。例如,在进程意外退出时共享内存无法释放,从而会浪费系统资源。更严重的是,在某些实现中,会将用于同步功能的锁放置在共享内存中。该用于同步功能的锁是具有状态的量,当进程需要使用共享内存的资源时,其进行加锁操作,在使用完成后,其进行解锁操作。如果进程在使用共享内存的过程中意外退出,那么该用于同步功能的锁就进入锁定状态,此后,如果有另一进程需要使用共享内存的资源,则该进程将不能完成加锁操作。这种情况也被称为“锁不一致”。即,进程的意外退出会使得锁处于不一致状态,使得其他和该共享内存相关的进程被锁住,永远不能获得该共享内存的资源。对于实时性要求比较严格的无人驾驶系统而言,该问题 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。