在下一篇博文,关于mmap的原理框架

两盒软妹~` 提交于 2020-03-20 23:43:41

3 月,跳不动了?>>>

对磁盘上文件的访问,必须将文件按照一定规则整合并搬运到内存中,然后对这个文件访问。将被访问的文件页的顺序被排列成

radix tree. 假设在文件不大,并且没有内存写回而且访问到整个文件时,那么,这个文件页的在逻辑上的线性组织就在内存中

被完整的转化成了一棵树状的排列——radix tree(这棵树很重要)。但实际中的mmap总会与脏页写回与请求调页的存在

mmap原理:将要访问的文件部分,按照大小,权限,在线性区中开辟出一块一模一样的虚拟空间。也就是说访问这个虚拟空间中的一个位置与访问文件中的相同位置是一样的,只不过mmap映射的区域是一块空白,需要请求调页机制来处理。当访问该线性地址对应的页表时,发现页表项为空,那么就要请求调页,讲该页加入基树中,并进行IO,如果该页是私有映射并进程试图写该页,那么就要重新分配一块匿名线性区,并加入到临近或是自己的anov_vma中。并在分配一页,把上次分配的页框内容copy到此页中,把此页加入lru非活动链表中。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!