mmap定义
Linux通过将一个虚拟内存区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟内存区域的内容,这个过程称为内存映射(memory mapping)。
mmap原理与实现过程:
原理:在虚拟内存分配了地址空间
mmap原理.png实现过程:
- 进程启动映射过程,并在虚拟地址空间中为映射创建虚拟映射区域
- 调用内核空间的系统调用函数mmap(不同于用户空间函数),实现文件物理地址和进程虚拟地址的一一映射关系
- 进程发起对这片映射空间的访问,引发缺页异常,实现文件内容到物理内存(主存)的拷贝
与常规文件操作比较
1. mmap()中没有进行数据拷贝,真正的数据拷贝是在缺页中断处理时进行的,由于mmap()将文件直接映射到用户空间,所以中断处理函数根据这个映射关系,直接将文件从硬盘拷贝到用户空间,只进行了 一次数据拷贝 。
mmap映射原理与过程.gif2. 常规文件操作需要从磁盘到页缓存再到用户主存的两次数据拷贝
一般文件IO操作.gif参考
深度分析mmap:是什么 为什么 怎么用 性能总结
深入剖析mmap-从三个关键问题说起
LMDB中的mmap、Copy On Write、MVCC深入理解
网友评论