1

1) 假设一个单级页表3
) 发生 TLB 未命中
3) 所需的页表在主存储器中可以执行吗?我想这不会是昂贵的硬件 4)MMU 获取物理页号(我想 MMU 必须以高 n 位作为虚拟页号和低 m 位作为物理页框号的格式保存它。请更正和解释我是否错了)问题:我想必须有一个键值映射,其中虚拟页面编号作为键,物理框架编号。作为价值。MMU 如何在页表中搜索键。如果它像线性搜索一样/w,那将是非常昂贵的。





5)使用硬件,它将偏移位附加到页帧号。

最后读取物理地址。

所以这个问题困扰着我很多,MMU如何在页表中搜索给定的键(虚拟页面条目)?

4

1 回答 1

2

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

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

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

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

于 2013-07-21T21:30:55.863 回答