多级页表 - 分层分页

时间:2011-04-05 21:40:20

标签: operating-system paging virtual-address-space

来自过去的操作系统final的示例问题,我该如何计算这类问题?

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

我该如何计算?

2 个答案:

答案 0 :(得分:25)

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

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

答案 1 :(得分:6)

  • 逻辑地址位= 64,
  • 页数= 2 ^ 64/2048 = 2 ^ 64/2 ^ 11 = 2 ^ 53
  • 页面我们有页面表的正弦值= 4字节,
  • 1页中的条目数将为= 2048/4 => 512,
  • 位表示一个条目=日志(512)= 9位,
  • 和Page的位数= 53位
  • 因此,级别数= 53/9 => 6级页表