关于共享内存的梳理和总结
1.共享内存
共享内存使用映射的方式,把我们的共享区域内容映射到不同的进程的地址空间里面去;
操作系统修改不同的进程的页表,让不同的进程的空间指向我们的物理内存的同一块区域里面去;
为什么这个 key 需要我们的进程自己进行随机生成,而不是操作系统统一进行管理,这个下面给出来了明确的通俗的解释;
key 和 shmget 之间的区别,以及我们的 shmid 是给我们的进程进行使用的,方便我们的进程对于共享内存进行后续的操作;
shmget 创建这个共享内存,我们的 shmat 指向了进程里面的虚拟内存,完成这个映射的工作:从此我们的进程可以针对于这个共享内存进行访问和操作;
通过类似的引用计数的操作,当我们的计数器的数字变为 0 的时候,这个数字幽灵,也就是我们的共享内存才会被完全的删除;
不同的 IPC 通信机制的结合使用,解决我们的共享内存不提供同步保护机制的问题;