Linux共享内存

概念

共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程修改了共享内存中的数据,其它的进程读到的数据也将会改变。

共享内存并未提供锁机制,也就是说,在某一个进程对共享内存的进行读写的时候,不会阻止其它的进程对它的读写。如果要对共享内存的读/写加锁,可以使用信号量。

共享内存是进程间共享数据最快的方式。

注意

Linux中,共享内存限制值如下:

共享内存使用步骤:

  1. shmget创建一块共享内存
  2. 自定义一个用于映射共享内存的结构体
  3. shmat映射共享内存到当前进程的地址空间(第二步创建的结构体)
  4. 通过结构体访问共享内存
  5. shmdt解除映射
  6. shmctl删除共享内存

创建共享内存