Unn*_*nni 5 paging operating-system virtual-memory
处理器使用 36 位物理地址和 32 位虚拟地址,页框大小为 4 KB。每个页表条目大小为 4 个字节。一个三级页表用于虚拟到物理地址的转换,其中虚拟地址的使用如下:
位 30 - 31 用于索引到第一级页表
位 21 - 29 用于索引到第二级页表
位 12 - 20 用于索引到第三级页表
位 0 - 11 用作偏移量页面内
寻址一级、二级和三级页表的页表项中的下一级页表(或页框)所需的位数分别为?
这是 GATE 2008 中提出的一个问题。
我的分析: 最大页框数 =(物理地址大小)/(页面大小)= 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 位来索引第三级页表中特定页表的条目。从 L1 页表到 L2 中有 2^9 个页表,我们需要到达这些 2^9 个页表中的任何一个。所以在 L1 中需要 9 位。
这种分析不知何故似乎不正确。我很困惑。有人可以解释这些概念吗?
首先我们的物理地址是 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 。同样的事情也适用于更高的层次