【问题标题】:In operating system, How MMU searches for virtual page number as key in page table在操作系统中,MMU如何在页表中搜索虚拟页码作为键
【发布时间】:2013-07-21 21:11:51
【问题描述】:

1) 可以说是单级页表
3)发生 TLB 未命中
3)所需的页表在主存

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

4)MMU获取物理页号(我猜MMU必须以高n位作为虚拟页号,低m位作为物理页帧号的格式保存。如果我错了,请纠正并解释)
问题:我想必须有一个键值映射,其中虚拟页号作为键,物理帧号。作为价值。 MMU 如何在页表中搜索键。如果它是像线性搜索这样的软件,那将是非常昂贵的。
5)通过硬件,它将偏移位附加到页框号。

最后读取物理地址。

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

【问题讨论】:

  • 这完全取决于架构,您是否考虑过特定​​的 CPU/架构?

标签: memory-management operating-system mmu


【解决方案1】:

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

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

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

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

【讨论】:

  • 哦,你知道了,它的基地址在 PTBR 并且虚拟内存地址具有传染性,所以它所要做的就是 PTBR + virtual_memory_address/virtual_page_no 来获取密钥并读取对应的帧号我现在发现这个问题非常错误和误导,没有必要在页表中搜索键。我不知道我是否应该删除这个问题。感谢 gr8 的解释,真的很有帮助。
  • 欢迎。您可以以对其他人有帮助的方式编辑您的问题。
猜你喜欢
  • 2020-03-18
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多