首页 > 代码库 > linux共享内存原理

linux共享内存原理

共享内存,顾名思义,就是预留出的内存区域,它允许一组进程对其访问。共享内存是system vIPC中三种通信机制最快的一种,也是最简单的一种。对于进程来说,获得共享内存后,他对内存的使用和其他的内存是一样的。由一个进程对共享内存所进行的操作对其他进程来说都是立即可见的,进程只需要通过一个指向共享内存空间的指针来读取共享内存中的内容,就可以轻松获得结果。然而共享内存不能确保对内存操作的互斥性。一个进程可以向共享内存中的给定地址写入,而同时另一个进程从相同的地址读出,这将会导致不一致的数据。因此使用共享内存的进程必须自己保证读操作和写操作的的严格互斥。可使用锁和原子操作解决这一问题。也可使用信号量保证互斥访问共享内存区域。共享内存在一些情况下可以代替消息队列,而且共享内存的读/写比使用消息队列要快!

 

linux共享内存原理