joe*_*joe 3 memory operating-system virtual-memory
有点像家庭作业问题,但我更想围绕这个概念进行思考:
如果我在两级分页系统中有一个 32 位虚拟地址,其中页面大小为 8KB,外表有 1024 个条目,我如何计算代表(大小)二级/外页表的位数?
答案应该是 9 位,但我不确定如何计算它或公式是什么。
虚拟地址分为这样:
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条目。