进程间的通信方式-共享内存和内存映射区的区别
发布时间:2024年01月09日
shm和mmap的区别
共享内存和内存映射区都可以实现进程间通信,下面来分析一下二者的区别:
实现进程间通信的方式
- shm: 多个进程只需要一块共享内存就够了,共享内存不属于进程,需要和进程关联才能使用
- 内存映射区: 位于每个进程的虚拟地址空间中, 并且需要关联同一个磁盘文件才能实现进程间数据通信
效率:
- shm: 直接对内存操作,效率高
- 内存映射区: 需要内存和文件之间的数据同步,效率低
生命周期
- 内存映射区:进程退出, 内存映射区也就没有了
- shm:进程退出对共享内存没有影响,调用相关函数/命令/ 关机才能删除共享内存
数据的完整性 -> 突发状态下数据能不能被保存下来(比如: 突然断电)
- 内存映射区:可以完整的保存数据, 内存映射区数据会同步到磁盘文件
- shm:数据存储在物理内存中, 断电之后系统关闭, 内存数据也就丢失了
文章来源:https://blog.csdn.net/f593256/article/details/135481197
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!