虚拟内存的分页机制一点总结(机制及倒排页表) .
虚拟内存的分页机制一点总结(机制及倒排页表) .1.设计思想
用固定大小的页来描述逻辑地址空间,用相同大小的页框来描述物理内存空间,由操作系统实现从逻辑页到物理页框的映射,同时负责对所有页的管理和进程运行的控制
2. 相关名称定义
页帧:被分成一页大小的逻辑地址
页框:被分成一页大小的物理地址
页表:页帧映射到页框的表格
标志位:标志页帧是否已成功映射到页框,0否 1是
3.工作机理(按图1 来阐述)
3.1 当执行到某一条指令(逻辑地址)时,检查该指令所在页表中的标志位(一共16页,所以有16个表项)
3.2 若为1,即将图中的页表号放到寄存器的高3位,将逻辑地址的低12为放到寄存器的低十二位,然后将寄存器的内容作为物理地址送到内存总线。
3.3 若为0,引起缺页中断,转到操作系统核心态。核心态根据页面淘汰算法淘汰掉一个页框,然后在页表处理映射关系,将标志位置位。然后转回
用户态,程序从3.1从新开始,此时标志位已经为1,所以能成功执行。
图116 个4KB 的页面MMU的内部操作(图片来自现代操作系统: Andrew)
4.页表处理与优化
当逻辑地址太大时,页表将会很大。主要取决于地址总线,此时有下面的几种解决方法:
4.1TLB(Translation lookaside buffer),即为页表做缓冲
4.2多级页表
4.3 倒排索引,即根据 物理地址来找逻辑地址,而不是根据逻辑地址来找物理地址。
缺点:最差情况下需要搜索整个倒排索引表才能找到映射关系
优化:使用hash算法,最终有如图2的页表
图2倒排页表(图片来自现代操作系统: Andrew)
谢谢分享
页:
[1]