计算页表参数的大小

时间:2019-01-07 21:06:27

标签: memory paging cpu-architecture

我得到了一个具有64位虚拟地址空间的系统。页面大小为2KB。 此外,还假定物理内存的大小为16GB。

我需要计算以下参数: 页面条目数(页面表中的行数),页面偏移量需要多少位,虚拟页面号(VPN)需要多少位以及物理页面号需要多少位( PPN)。

因此,首先我得出结论,虚拟内存的大小为2 ^ 64字节,这意味着页表中有2 ^ 53个条目。

根据页面的大小,我得出结论,页面偏移量需要11位。

从这里我不确定。

由于每个虚拟地址的大小为64,因此VPN的大小为64-11 = 53位。

由于物理存储器的大小为2 ^ 34字节,因此物理地址为34位。这意味着PPN的大小为34-11 = 23位。

我的计算正确吗?我的想法也正确吗?

我们将不胜感激

1 个答案:

答案 0 :(得分:1)

您的某些结果是正确的。 PPN是23位,VPN是53位。 但是所有与页表有关的东西都是错误的。

页面表包含一组物理页面地址。因此,由于PPN为23位,因此需要4个字节(23的2的幂)来描述PP。如果页面是2k字节,则可以存储2 ^ 9个PP地址。

由于VPN是53位,并且每个表可以解析9位,因此转换可以由6个连续的表完成。 如果您不熟悉多级页面,则有很多不错的教程。例如查看https://en.wikipedia.org/wiki/Page_table

可以确定的是PT的大小不是2 ^ 53!首先是因为2 ^ 55是疯狂的内存量(〜10 ^ 16)。其次,由于PP的总数为2 ^ 23,所以为什么要使用一个大十亿倍的表...(这就是为什么我们使用多级页表)