进程间通信之“内存共享”的简单实现

1. 共享内存的有效特点:

  1. 是所有进程间通信最快的
  2. 不提供任何的同步,互斥机制,(用户可通过设置信号量来保证同步,互斥机制)
  3. 生命周期随内核

2. 创建共享内存

int shmget(key_t key, size_t size, int shmflg)
进程间通信之“内存共享”的简单实现
key : 可通过函数 key_t ftok( );申请到
size: 申请的大小,申请多少系统给多少,但系统内会以页的倍数批准
shmflg:权限

3. 命令行查看,删除共享内存

ipcs -m : 查看当前的共享内存
进程间通信之“内存共享”的简单实现
ipcrm -m 要删除的shmid : 删除指定共享内存
进程间通信之“内存共享”的简单实现

4. 接下来我们利用共享内存来实现进程间通信

共享内存实现进程间通信需要如下几个步骤:
1. 创建共享内存(物理地址);
2. 共享内存(物理地址)映射到虚拟地址(既然要通信,就必须是两个进程的通过页表分别映射到虚拟地中)
3. 最后就可通过各自的虚拟地址访问同一块虚拟地址,来实现进程间通信。
进程间通信之“内存共享”的简单实现
#####代码:
1. 创建共享内存(获取内存物理地址)
进程间通信之“内存共享”的简单实现
2. 对server端映射并读取内存数据
进程间通信之“内存共享”的简单实现
3. 对client端映射并写如数据
进程间通信之“内存共享”的简单实现

结果:
进程间通信之“内存共享”的简单实现