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

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

在第一,第二和第三级页表的页表项中寻址下一级页表(或页帧)所需的位数分别是?

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

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

最佳答案

首先,我们的物理地址为2 ^ 36,页面大小为2 ^ 12。因此2 ^ 24应该是页数。而你认为正确。

由于为第三级页表指定了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,尤其是这个数字。

10-07 19:38