【问题标题】:Number of page table index bits in multilevel paging多级分页中的页表索引位数
【发布时间】:2014-03-09 06:29:52
【问题描述】:

处理器使用 36 位物理地址和 32 位虚拟地址,页框大小为 4 KB。每个页表条目大小为 4 个字节。三级页表用于虚拟到物理地址的转换,其中虚拟地址的使用如下:

位 30 - 31 用于索引到第一级页表
位 21 - 29 用于索引到二级页表
位 12 - 20 用于索引到第三级页表
位 0 - 11 用作页面内的偏移量

寻址一级、二级和三级页表的页表项中的下一级页表(或页框)所需的位数分别为?

这是 GATE 2008 提出的一个问题。
我的分析: 最大页框数 = (物理地址大小) / (页面大小) = 2^36 / 2^12 = 2^24。 因此,24 位足以索引第三级页表中的页码。现在我们必须找出第三层有多少页表。假设 9 位用于索引到第 3 级页表。所以第 3 级有 2^9 个页表。这意味着 2^32 个虚拟空间包含在 2^9 个页表中,因此每个页表的条目 = 2^32/2^9 = 2^23。因此,l2 页表条目中需要 23 位来索引 3 级页表中特定页表的条目。 L1 页表的 L2 中有 2^9 页表,我们需要到达这 2^9 页表中的任何一个。所以 L1 需要 9 位。

这种分析似乎不正确。我很困惑。有人可以解释一下这些概念吗?

【问题讨论】:

    标签: operating-system paging virtual-memory


    【解决方案1】:

    一开始我们的物理地址是2^36,页面大小是2^12。因此 2^24 应该是页数。你猜对了。

    因为第 3 级页表有 9 位,即 2^9,然后每个条目有 4 个字节,所以 2^11。现在 2^36/2^11 将给出 2^25。因此 25 位(二级表为 25 位)。

    现在再次给出二级页表的 9 位。所以同样的逻辑再次适用 2^36/2^11,同样是 2^25。(一级表为 25 位)。

    因此答案必须是 25,25,24

    你必须明白的一点是,虽然虚拟地址空间是 2^32,但我们需要映射整个 2^36 个条目而不是 2^32。而且,每个页面可以处理 2^9 * 2^2,你也没有考虑到这个 2^2。同样的事情也适用于更高的层次

    你应该看看这个question 还有这个wikipedia entry,尤其是图。

    【讨论】:

    • 我在gatementor找到了这个解释,也很有见地。
    【解决方案2】:

    在这个问题中,有 36 位物理内存,其中 12 位指定用于偏移量。偏移量不会在任何级别发生变化(因为它是页面的大小)。因此,在任何级别中,页表都需要 24 个帧位。由于物理内存有 36 位,因此无法通过增加页表中的位数来增加物理内存大小。

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2011-07-30
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2011-02-02
      • 2020-11-02
      相关资源
      最近更新 更多