C++/Linux之内存映射mmap(memory map)
mmap内存映射原理 【C++/Linux之内存映射mmap(memory map)】mmap是unix/linux下的系统调用。
mmap
mmap 是以一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟空间中一段虚拟地址的一对一关系;实现这样的映射后,进程就可以采用指针的方式读写操作这一块内存,而系统会自动回写脏页面(未提交的数据)到对应文件磁盘上,即完成了对文件的操作而不是调用read/write等系统调用,相反,内核空间这段区域的区域的修改也可以直接反应到内存空间,从而实现不同进程间的文件共享。
文章图片
实现过程
- 进程启动映射过程,并在虚拟地址空间中创建虚拟映射区域
- 调用内核空间的系统调用函数mmap,实现文件的物理地址和进程的虚拟地址的一一映射关系
- 进程发起对这片映射空间的访问,缺页异常,实现文件内容到物理内存的拷贝。
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息