MMap

2021-04-09  本文已影响0人  NapoleonY
  1. mmap 是什么?
    本质是一种进程虚拟内存映射的方法,可以将一个文件、一段物理内存或其他对象映射到进程的虚拟内存地址空间。实现这样的映射关系后,进程就可以采用指针的方式来读写操作这一段内存,进而完成对文件的操作,而不必再调用 read/write 等系统调用函数了。

  2. 为什么对于大文件而言 mmap 的效率要高于 read/write?
    调用 read/write 进行的常规的文件系统操作中,函数的调用过程:

而使用 mmap 进行的文件操作中,首先会创建新的虚拟内存区域与文件磁盘地址之间的映射关系,在之后数据访问中,如果发现内存中并无相应的数据,则发起缺页异常,通过已经建立好的映射关系,只使用一次数据拷贝就将数据从磁盘中拷贝到用户空间中,供用户态进程使用。

参考

  1. Linux 操作系统原理 — mmap() 进程虚拟内存映射
  2. Linux内存映射mmap原理分析
  3. [原创] 深入剖析mmap原理 - 从三个关键问题说起
  4. mmap原理之详解
  5. mmap机制初探
  6. 理解inode
上一篇下一篇

猜你喜欢

热点阅读