21

来自过去操作系统决赛的示例问题,我如何计算这种问题?

一台计算机有一个 64 位的虚拟地址空间和 2048 字节的页面。页表条目占用 4 个字节。使用多级页表是因为每个表都必须包含在一个页中。需要多少级?

我将如何计算这个?

4

2 回答 2

33

由于页表必须适合一页,因此页表大小为 2048 字节,每个条目为 4 字节,因此一个表包含 2048/4=512 个条目。要处理 512 个条目,它需要 log2(512)=9 位。可用于对每个页面级别的条目进行编码的总位数为 64-log2(2048)=53 位(地址空间的位数减去页面偏移位)。因此,所需级别的总数为 53/9=6(向上取整)。

x86-64 默认页表大小为 4096 字节,每个页表必须适合一页,页表条目为 8 字节。当前的 CPU 仅实现 48 位的虚拟地址空间。需要多少页表级别?

于 2011-04-05T23:15:11.143 回答
9
  • 逻辑地址位=64,
  • 页数将= 2^64/2048 = 2^64/2^11 = 2^53
  • 我们有页表的条目正弦= 4 Byte 的页面,
  • 1页中的条目数将= 2048/4 => 512,
  • bit 表示一个Entry=Log(512)=9bit,
  • 页面的位是= 53位
  • 因此层数=53/9=>6层页表
于 2012-01-25T10:30:41.840 回答