0

以下参数适用于使用 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 位的虚拟地址并且页面大小为 64kB (2^16),因此 16 位用于偏移量,我们从 40 中减去 16。剩余的 24 位用于虚拟页码 (VPN)。VPN 分为 3 个字段,每个字段 8 位。所以我们有一个三级页表。每个表有 2^8 个条目,每个表的大小为2^8 * 4 bytes = 1024 bytes.

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

4

1 回答 1

1

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

于 2017-04-09T01:39:22.447 回答