2

考虑一个具有 32 位虚拟地址和 1KB 页面的虚拟内存系统。每个页表条目需要 32 位。希望将页表大小限制为一页。

  1. 需要多少级页表?
  2. 其中两级表有 256 个条目;一级表有 64 个条目。(8+8+6=22)。如果顶级页表有 2^6 个条目,那么可能有多少页?
  3. 如果中级页表有 2^6 个条目,那么可能有多少页?
  4. 如果底层页表有 2^6 个条目,那么可能有多少页?
4

1 回答 1

6

在这样的系统上有 2^32/2^10 = 2^22 个页面。这意味着只需要 22 位来寻址一个页面。为了简单和实用,大多数现代系统会将其与 32 位对齐并使用额外的位作为标志,因此在 32 位页表条目中,页表地址中有 16 MB。一个页面可以容纳 256 个条目,需要总页数为 2^22 / 256 = 16384 以获得最深的级别。下一级将有 16384 / 256 = 64;由于 64 < 256,最高级别将适合一页,因此答案是 3。

如果您不考虑 32 位对齐(这在现实世界中是站不住脚的),那么答案仍然是三个,因为在 22 位上,每页最多有 372 个条目,因此,2^22/ 372 = 11275第一个和 11275 / 372 = 30 表示第二个,1 表示第三个。

或者,您可以从上到下解释它,因此不是从最深层次开始,而是从顶层开始。在这种特殊情况下,从顶部开始将导致每页具有最多未使用条目的最深级别。这显然不理想,最好在更高级别有未使用的页表条目。

然而,对于这两种解释中的任何一种,答案无疑是 3。

于 2012-07-26T15:22:55.857 回答