【问题标题】:What is the total amount of virtual memory covered by one entry of page tables at each level?每个级别的页表条目覆盖的虚拟内存总量是多少?
【发布时间】:2017-09-04 06:04:32
【问题描述】:

以下参数适用于使用 40 位虚拟地址的系统和 1G 字节的物理(主)内存。字大小为 64 位(8 字节)。地址点 到字节并在字节边界上对齐。我们使用以下符号表示 i-bit 地址: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。

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

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题。
  • 不要关闭它,问题已正确标记。

标签: cpu-architecture virtual-memory page-tables


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多