Unix IPC之共享内存区(1)
2015-08-18 14:12
260 查看
1 共享内存区
共享内存区是可用IPC形式中最快的,只有映射和解除映射需要进入内核的系统调用,映射后对共享内存区的访问和修改不再需要系统调用(内核只要负责好页表映射和处理页面故障即可),但通常需要同步手段。一个客户-服务器间传递文件数据的例子中,FIFO或消息队列等IPC方式通常需要4次内核-进程间的数据复制(但是Posix消息队列可使用内存映射I/O实现,就不一定4次了),每次都需要切换地址空间,开销很大;共享内存区只需要2次跨内核的数据复制。
2 mmap
mmap的三个目的:1. 使用普通文件以提供内存映射I/O。
2. 使用特殊文件以提供匿名内存映射。
3. 使用shm_open以提供Posix共享内存区。
3 munmap
4 msync
4 访问内存映射对象
若filesize > mmapsize,相当于将文件的部分映射为内存映射区
若filesize < mmapsize,文件大小将会随着内存映射区访问指针的增长而增长(同步时会增长)
如果内存映射区的访问指针超过内存映射区的大小,超出部分的数据将会丢失,将无法同步到文件。
来自为知笔记(Wiz)
相关文章推荐
- 最短路径
- Android四大组件之服务-Service 原理和应用开发详解
- oc 字典
- C#位操作与枚举的应用
- 证书的常见问题初探
- Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录
- iOS内存管理
- WaitForSingleObject()、WaitForMultipleObject() 函数
- Zabbix分布式监控系统使用总结
- Spring 学习笔记(七)——远程服务
- 使用百度地图做一个位置选择功能
- java Tuple 元组
- Oracle 基础笔记1
- 【发极客头条 得C币】人人都是主编!(第1期)
- ulua
- http://www.cocoachina.com/ios/20150812/12938.html
- 使用@Valid @RequestBody 的用意在于抛出notvalid的异常
- 学习随笔
- Jsp页面上传图片浏览器兼容问题
- 发明家?