进程间的通信方式——共享内存
共享内存指在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。 1.共享内存 共享内存是进程间通信中最简单的方式之一。共享内存允许两个或者多个进程访问同一块内存,就如同malloc()函数向不同进程返回了指向一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其他进程都会察觉到这个更改。 共享内存的特点: 1.共享内存是进程间共享数据的一种最快的方法。一个进程向共享内存的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。 2.使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥。若一个进程正在给共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读、写这些数据。 2.共享内存模型 要用一块共享内存,进程必须首先分配它。随后需要访问这个共享内存块的每一个进程都必须将这个共享内存绑定到自己的地址空间中。当完成通信之后,所有进程都将脱离共享内存,并且由一个进程释放该共享内存块。理解 Linux 系统内存模型可以有助于解释这个绑定的过程。在 Linux 系统中,每个进程的虚拟内存是被分为许多页面的。这些内存页面中包含了实际的数据。每个进程都会维护一个从内存地址到虚拟内存页面之间的映射关系。尽管每个进程都有自己的内存地址