每一级页表的一个条目覆盖的虚拟内存总量是多少?

What is the total amount of virtual memory covered by one entry of page tables at each level?

以下参数适用于采用 40 位虚拟地址的系统,并且 1G 字节的物理(主)内存。字大小为 64 位(8 字节)。地址点 到字节并在字节边界上对齐。我们使用以下符号表示 i 位 地址:Ai​​-1...A2,A1,A0 其中 Ai-1 是地址的最高有效位,A0 是地址的最低有效位。虚拟地址用V39-V0表示 物理地址用P29-P0表示。

Page size: 64 K bytes
Page table: three-level page table
The virtual page number is split in 3 fields of 8 bits each.
Entries in all tables are 32 bits (4 bytes).

这是我目前所发现的,

因为是40位的虚拟地址,Page Size是64kB(2^16),所以16位是offset,我们用40减去16。剩下的24位是Virtual Page Number (VPN) . VPN 分为 3 个字段,每个字段 8 位。所以我们有一个三级页面 table。每个 table 有 2^8 个条目,每个 table 的大小是 2^8 * 4 bytes = 1024 bytes.

从这里我们如何继续并找到每个级别的页面 tables 的一个条目所覆盖的虚拟内存总量?

在最低级别,每个条目都指向一个页面,因此计算虚拟内存量是微不足道的,它是 1 页的大小。在每个较高级别,一个条目代表较低 table 中的 n 个条目(在本例中为 2^8)。因此,对于第二级,它的 n * 数量被底层条目覆盖,或 2^8* 页面大小。然后使用第二个级别的大小对第三个级别重复此计算。