问问题描述
答精选答案

mmap原理
open一个文件,然后调用mmap系统调用,将文件的内容的全部或一部分直接映射到进程虚拟空间中文件存储映射部分;
完成映射关系后,mmap返回值是一个指针,进程可以通过采用指针方式读写操作这一段内存;
但mmap并不分配物理地址空间,只是占有了进程的虚拟地址空间,当多个进程需要同时访问这个文件的时候,每个进程都将文件所存储的内核缓冲区映射到自己的进程空间虚拟地址中。
当第一个进程访问内核缓冲区的时候,由于没有实际拷贝数据,这时候MMU(内存管理单元)在地址映射表中找不到与该虚拟内存空间相对应的物理地址,此时会触发缺页中断;
缺页中断后,内核会将文件的这一页数据读入到内核缓冲区中,并更新进程的页表,使得页表指向内核缓冲区这一页,之后有其他的进程再次访问这一页的时候,该页已经在内存中了
本文来自作者[連詩雅Shiga]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/2090434.html
评论列表(4条)
我是公众科技网的签约作者“連詩雅Shiga”!
希望本篇文章《mmap 的原理机制》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:mmap原理open一个文件,然后调用mmap系统调用,将文件的内容的全部或一部分直接映射到进程虚拟空间中文件存储映射部分;完成映射关系后,mmap返回值是一个指针,进程可以通过采用指针方式读写操作这一段内存;但mmap并不分配物理地址空间,只是占有了进程的虚拟地址空间,当多个进程需要同时访问这个文件的时候,每个进程都将文件所存储的内核缓冲区映射到自己的进程空间虚拟地址中。当第一个进程访问内核缓冲区的时候,由于没有实际拷贝数据,这时候MMU(内存管理单元)在地址映射表中找不到与该虚拟内存空间相对应的物理地