计算外部/二级页表的大小

joe*_*joe 3 memory operating-system virtual-memory

有点像家庭作业问题,但我更想围绕这个概念进行思考:

如果我在两级分页系统中有一个 32 位虚拟地址,其中页面大小为 8KB,外表有 1024 个条目,我如何计算代表(大小)二级/外页表的位数?

答案应该是 9 位,但我不确定如何计算它或公式是什么。

cad*_*luk 6

虚拟地址分为这样:

PTI - 页表索引

1st PTI | 2nd PTI | Page Offset
Run Code Online (Sandbox Code Playgroud)

“外页表”,第一个 PTI,有 1024 个条目。需要10 位来表示 1024 种不同的状态,因为2^10 = 1024.

页偏移量必须能够索引 8 KiB 的字节,因此它是13 位大。8 KiB 对应 8192 个不同的地址和2^13 = 8192.

现在,剩下第二页表。我们可以通过减法轻松计算其大小:

32 = 10 + 13 + x  = 23 + x    | - 23
9 = x
x = 9
Run Code Online (Sandbox Code Playgroud)

因此“内部”页表可以容纳2^9 = 512条目。