共享内存
介绍
- 共享内存就是两个不相关的进程访问同一个逻辑内存,从而达到两个进程互相通信的效果。共享内存是两个正在运行的进程之间共享和传递数据最有快的一种通信方式;
实现原理
- 共享内存是两个进程地址通过页面映射到同一个物理地址;
特点
- 速度快:读写速度是最快的的进程通信方式;
- 共享内存的生命周期跟随内核。即所有访问共享内存区域的对象都已经正常结束,共享内存区域仍然在内核中存在,除非是显式的删除共享内存区域对象。
- 缺点是共享内存没有提供同步禁止,需要信号量对共享内存同步访问控制;
函数
1. shmget()
- 函数说明:创建共享内存
- 函数原型
int shmget (key_t __key, size_t __size, int __shmflg)
- 函数介绍:
- __key:表示IPC的一个唯一标识,由该标识符通过 shmget 生成一个指向共享内存的 ID 值。不同的进程可以通过相同的 key 返回的 ID 值去访问同一块共享内存;
- __size:指定共享内存的大小,一般为一页大小的整数倍