共享内存实现进程间通信,python 多进程共享内存
1.共享内存的无奈之门是什么?共享内存允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传输数据的非常有效的方式。不同进程之间共享的内存通常被安排为相同的物理内存。进程可以将同一个共享内存连接到自己的地址空间,所有进程都可以像访问C语言中malloc()分配的内存一样访问共享内存中的地址。如果一个进程将数据写入共享内存,这些更改将会立即影响任何其他可以访问同一共享内存的进程。
特别说明:共享内存不提供同步机制,即在第一个进程写完共享内存之前,没有自动机制阻止第二个进程读取它。所以我们通常需要使用其他机制来同步对共享内存的访问,比如前面提到的semaphore。关于信号量的更多信息,请参考另一篇文章:Linux进程间通信——使用信号量。
共享内存的通信原理在Linux中,每个进程都有自己的进程控制块(PCB)和地址空间(Addr Space),每个进程都有对应的页表,负责映射进程的虚拟地址和物理地址,并通过内存管理单元(MMU)进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一个区域,它们指向的区域就是共享内存。
共享存储器通信原理示意图:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。