我得到了一个具有64位虚拟地址空间的系统。页面大小为2KB。 此外,还假定物理内存的大小为16GB。
我需要计算以下参数: 页面条目数(页面表中的行数),页面偏移量需要多少位,虚拟页面号(VPN)需要多少位以及物理页面号需要多少位( PPN)。
因此,首先我得出结论,虚拟内存的大小为2 ^ 64字节,这意味着页表中有2 ^ 53个条目。
根据页面的大小,我得出结论,页面偏移量需要11位。
从这里我不确定。
由于每个虚拟地址的大小为64,因此VPN的大小为64-11 = 53位。
由于物理存储器的大小为2 ^ 34字节,因此物理地址为34位。这意味着PPN的大小为34-11 = 23位。
我的计算正确吗?我的想法也正确吗?
我们将不胜感激
答案 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,所以为什么要使用一个大十亿倍的表...(这就是为什么我们使用多级页表)