多级页表分层分页

时间:2012-07-26 14:27:38

标签: memory-management operating-system

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

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

1 个答案:

答案 0 :(得分:5)

在这样的系统上有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。

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

然而,无论是哪种解释,答案都是明确的答案。