如果页表相当小(例如,256 个条目),则对页表使用寄存器是令人满意的。然而,大多数现代计算机允许页表非常大(例如,100 万个条目)。对于这些机器,使用快速寄存器来实现页表是不可行的。相反,页表保存在主存储器中,页表基址寄存器( PTBR ) 指向页表。更改页表只需要更改这一个寄存器,大大减少了上下文切换时间。
这种方法的问题是访问用户内存位置所需的时间。如果我们想访问位置i ,我们必须首先索引页表,使用 PTBR 中的值偏移i的页码。此任务需要内存访问。它为我们提供了帧号,它与页面偏移量相结合以产生实际地址。然后我们可以访问内存中所需的位置。使用这种方案,访问一个字节需要两次内存访问(一次用于页表条目,一次用于字节)。因此,内存访问速度减慢了 2 倍。这种延迟在大多数情况下是无法容忍的。我们还不如求助于交换!
这个问题的标准解决方案是使用一种特殊的、小型的、快速查找的硬件缓存,称为转换后备缓冲区 (TLB)。TLB 是关联的高速存储器。TLB 中的每个条目都由两部分组成:键(或标签)和值。当联想记忆出现一个项目时,该项目同时与所有键进行比较。如果找到该项目,则返回相应的值字段。搜索速度很快;然而,硬件很昂贵。通常,TLB 中的条目数很少,通常在 64 到 1,024 之间。
资料来源:Silberschatz 等人的操作系统概念。第 333 页