当前位置: 技术问答>linux和unix
关于2.4.2的mmap()
来源: 互联网 发布时间:2016-01-07
本文导语: 最近在看2.4.2的代码 mmap()的主体函数仅仅是创建了vma_area_struct,并将其插入当前进程的mm_struct结构 而分配page及从文件读入相应页面,建立映射的工作推迟到真正需要的时候才进行? 请问是不是这样的啊? 确认一下,请...
最近在看2.4.2的代码
mmap()的主体函数仅仅是创建了vma_area_struct,并将其插入当前进程的mm_struct结构
而分配page及从文件读入相应页面,建立映射的工作推迟到真正需要的时候才进行?
请问是不是这样的啊?
确认一下,请大家指教
mmap()的主体函数仅仅是创建了vma_area_struct,并将其插入当前进程的mm_struct结构
而分配page及从文件读入相应页面,建立映射的工作推迟到真正需要的时候才进行?
请问是不是这样的啊?
确认一下,请大家指教
|
对的,mmap调用创建并添加进程的空间,就是创建并添加一个vma_area_struct(PAGESIZE的整数倍),这样的好处就是可以尽量延迟,提高效率。
当访问该部分空间的时候,首先检查时不是处于vma_are_struct的链表,这是由进程描述符task->mm指向的,如果属于进程地址空间,通过缺页处理程序来建立真正的page映射。
unmmap的时候,就要两部分的操作:
1)撤销线性空间;2)页表映射,如果需要要归还页框(比如有几个进程共享同一组页框,而这个进程作为最后一个进程attach到这组,这是内存管理模块自动处理的)
当访问该部分空间的时候,首先检查时不是处于vma_are_struct的链表,这是由进程描述符task->mm指向的,如果属于进程地址空间,通过缺页处理程序来建立真正的page映射。
unmmap的时候,就要两部分的操作:
1)撤销线性空间;2)页表映射,如果需要要归还页框(比如有几个进程共享同一组页框,而这个进程作为最后一个进程attach到这组,这是内存管理模块自动处理的)
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。