Linux中有关动态调页的思维导图,包括请求调页、调页系统额外的开销、被寻址的页、nopage 域
树图思维导图提供 动态调页思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 动态调页思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:cfb9eaff758c36e43eb31ed72cdd541b
动态调页思维导图思维导图模板大纲
一种动态内存分配技术
把页面的分配推迟到不能再推迟为止
一直推迟到进程要访问的页不在物理内存时为止,由此引起一个缺页错误
原因
因为进程开始运行的时候并不访问其地址空间中的全部地址
事实上,有一部分地址也许进程永远不使用
程序的局部性原理保证了在程序执行的每个阶段,真正使用的进程页只有一小部分
临时用不着的页所在的物理页面可以由其他进程来使用
请求调页是首选的
增加了系统中的空闲页面的平均数,从而更好地利用空闲内存
在内存总数保持不变的情况下,请求调页从总体上能使系统有更大的吞吐量
由请求调页所引发的每个“缺页”错误必须由内核处理,这将浪费 CPU 的周期
局部性原理保证了一旦进程开始在一组页上运行,在接下来相当长的一段时间内它会一直停留在这些页上而不去访问其他的页
进程永远也没有访问到这个页
内核能够识别这种情况,这是因为页表相应的表项被填充为 0,也就是说,pte_none 宏返回 1
进程已经访问过这个页
这个页的内容被临时保存在磁盘上
内核能够识别这种情况,这是因为页表相应表项没被填充为 0
由于页面不存在物理内存中,Present为 0
就指向一个把所缺的页从磁盘装入到 RAM 的函数
vma->vm_ops->nopage 域不为 NULL
某个虚拟区映射一个磁盘文件nopage 域指向从磁盘读入的函数
涉及到磁盘文件的低层操作
vm_ops 域为 NULL
vma->vm_ops->nopage 域为 NULL
虚拟区没有映射磁盘文件,也就是说,它是一个匿名映射
do_no_page( )调用do_anonymous_page( )函数获得一个新的页面