都24年了,还有人不懂mmap内存映射详解?收藏保留

💡 原文中文,约6400字,阅读约需16分钟。
📝

内容提要

mmap是一种内存映射的方法,可以将文件或其他对象映射到进程的地址空间中,实现文件磁盘地址和进程虚拟地址空间的映射关系。mmap操作具有高效性和进程间通信的优点。

🎯

关键要点

  • mmap是一种内存映射的方法,可以将文件映射到进程的地址空间中。
  • mmap操作具有高效性和进程间通信的优点。
  • 进程可以通过指针方式读写映射的内存,系统会自动回写到文件中。
  • mmap在虚拟内存层面实现映射,无论文件大小如何,都可以映射到进程的虚拟地址空间。
  • 内核为每个进程维护一个任务结构,使用vm_area_struct表示虚拟内存区域。
  • mmap内存映射的实现过程分为三个阶段:启动映射、调用内核函数、访问映射空间。
  • 缺页异常触发时,内核会将缺失的页从磁盘装入主存。
  • mmap函数创建指向内存区域的指针,允许多个程序共享内存。
  • mmap与常规文件操作的区别在于数据拷贝次数,mmap只需一次拷贝。
  • mmap的优点包括提高文件读取效率、实现用户空间与内核空间的高效交互、提供进程间共享内存等。
  • 使用mmap时需注意映射区域大小必须是物理页大小的整倍数。
  • 映射建立后,即使文件关闭,映射依然存在,且可用于进程间通信。
➡️

继续阅读