处理器使用36位物理地址和32位虚拟地址,页面大小为4 KB。每个页表条目大小为4个字节。三级页表用于虚拟到物理地址转换,其中虚拟地址使用如下:
位30-31用于索引到第一级页表
位21-29用于索引到第二级页表
位12-20用于索引到第三级页表
位0 - 11用作页面内的偏移量
在第一,第二和第三级页表的页表条目中寻址下一级页表(或页帧)所需的位数分别是?
这是2008年GATE提出的一个问题。
我的分析:最大页框数=(物理地址大小)/(页面大小)= 2 ^ 36/2 ^ 12 = 2 ^ 24。
因此,24位足以索引第3级页表中的页码。现在我们必须找出第3级中有多少页表。它给出了9位用于索引到第3级页表。因此在级别3中有2 ^ 9个页面表。这意味着2 ^ 32个虚拟空间包含在2 ^ 9个页面表中,因此每页表格的条目= 2 ^ 32/2 ^ 9 = 2 ^ 23。因此,在l2页表条目中需要23位来索引第3级页表中特定页表的条目。 L2页面表中有2 ^ 9页表,我们需要到达这些2 ^ 9页表中的任何一个。因此L1中需要9位。
这种分析在某种程度上似乎并不正确。我很困惑。有人可以解释这些概念吗?
答案 0 :(得分:4)
首先我们的物理地址为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,特别是这个数字。
答案 1 :(得分:1)
在这个问题中,有36位物理内存,其中12位被指定用于偏移。偏移量不会在任何级别发生变化(因为它是页面的大小)。因此,在任何级别中,页表都需要24个帧位。由于有36位物理内存,因此无法通过增加页表中的位数来增加物理内存大小。