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