多级页表 - 分层分页

Bob*_*y S 17 paging operating-system virtual-address-space

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

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

我该如何计算?

小智 25

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

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

  • 4096/8 = 512个条目; 要解决512个条目log2(512)= 9位.编码每个页面级别的总位数是48 - log2(4096)= 36位.因此,所需的级别总数为36/9 = 4. (2认同)

Jay*_*ngh 6

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