如何计算虚拟页面的数量

时间:2018-05-28 00:06:34

标签: memory-management cpu-architecture

虚拟地址大小:32位

页面大小= 4K = 2 ^ 12字节

页数是多少? 我知道答案是(2 ^ 32)/(2 ^ 12)= 2 ^ 20,但为什么?

我认为它应该是(2 ^ 32)/(2 ^ 15)因为字节位转换(2 ^ 12)*(8)= 2 ^ 15

1 个答案:

答案 0 :(得分:1)

内存中的每个字节都有一个从0开始的数字地址.CPU有一个或多个寄存器,它们保存正在处理的那个字节的地址。寄存器是一种物理设备,它可以存储的数量有限。

  

虚拟地址大小:32位

这意味着地址寄存器可以存储一个地址(数字),可以是02^32 -1之间的任何地址。

作为地址寄存器可以存储的最大地址是2^32 -1,没有必要拥有更多的内存字节。因为CPU永远无法使用它们。因此,通常我们假设总内存为2^32个字节。

  

页面大小= 4K = 2 ^ 12字节

数百万字节的总内存实际上是在称为页面的块中组织的。这里2^32个字节的总内存被分块为2^12个字节的页面。

  

页数是多少?

答案是(2 ^ 32)/(2 ^ 12)= 2 ^ 20。干得好!

  

但为什么呢?我认为它应该是(2 ^ 32)/(2 ^ 15)因为字节位转换(2 ^ 12)*(8)= 2 ^ 15

此处2^32是内存中的总字节数。 2^12是页面中的总字节数。分子和分母都应该是相同的单位 - 字节。所以你不需要将分母转换成位。

注意:

我过度使用memoryaddressregister等术语的简化。上面提到的许多陈述对于真正的笔记本电脑无效 - 但对初始学习很有用。