中关村村草 发表于 2012-01-04 16:39

虚拟内存的分页机制一点总结(机制及倒排页表) .

虚拟内存的分页机制一点总结(机制及倒排页表) .







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)

我是软件狂 发表于 2012-01-04 16:39

谢谢分享
页: [1]
查看完整版本: 虚拟内存的分页机制一点总结(机制及倒排页表) .