在操作系统中,MMU如何在页表中搜索虚拟页码作为键

时间:2013-07-21 21:11:52

标签: memory-management operating-system mmu

1)所以让我们说一个单级页表
3)发生TLB未命中 3)所需的页表位于主存储器

问题:MMU是否总是获取其中的多个寄存器所需的页表,以便可以执行像TLB这样的快速硬件搜索?我想这不会是昂贵的硬件

4)MMU获取物理页码(我猜MMU必须以高n位格式保存,如虚拟页面编号和低m位作为物理页面帧号。请纠正并解释我是否错误)
 问题:我想必须有一个键值映射,其中虚拟页面号为关键和物理帧号。作为价值。 MMU如何在页面表中搜索密钥。如果它是线性搜索的s / w,那么它将非常昂贵。
5)使用硬件,它将偏移位附加到页框号

最后读取物理地址。

所以这个问题让我很烦恼,MMU如何在页面表中搜索给定的密钥(虚拟页面条目)?

1 个答案:

答案 0 :(得分:2)

  

如果页面使用页表的寄存器是令人满意的   表格相当小(例如,256个条目)。最现代的   但是,计算机允许页表非常大(对于   例如,100万条)。对于这些机器,使用速度快   寄存器实现页表是不可行的。相反,   页面表保存在主内存中,页面表格基本寄存器 PTBR )指向页面表。   更改页表只需要更改这一个寄存器,   大大减少了上下文切换时间。

     

这个问题   方法是访问用户存储器位置所需的时间。要是我们   想要访问位置 i ,我们必须首先索引到页面表,   使用PTBR中的值偏移 i 的页码。这个任务   需要内存访问权限。它为我们提供了帧号   与页面偏移量组合以产生实际地址。我们可以   然后访问内存中的所需位置。有了这个方案,两个内存   访问一个字节需要访问(一个用于页表条目,   一个字节)。因此,内存访问速度减慢了2倍。   在大多数情况下,这种延迟是不能容忍的。我们可能会这样   很好地交换!

     

这个问题的标准解决方案是   使用一个特殊的小型fastlookup硬件缓存,称为转换后备缓冲区(TLB)。该   TLB是关联的高速内存。 TLB中的每个条目都包含在内   两部分:一个键(或标签)和一个值。当联想记忆时   出现一个项目,该项目与所有键进行比较   同时。如果找到该项,则相应的值字段为   回。搜索速度很快;然而,硬件很昂贵。   通常,TLB中的条目数量很少,通常是编号   介于64和1,024之间。

资料来源: Silberschatz等人的操作系统概念。第333页