如何计算虚拟页数

How to calculate number of virtual pages

虚拟地址大小:32位

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

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

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

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

virtual address size: 32 bits

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

由于地址寄存器可以存储的最大地址是2^32 -1,因此拥有更多的内存字节没有意义。因为 CPU 将永远无法与它们一起工作。所以通常我们假设总内存为 2^32 字节。

page size = 4K =2^12 bytes

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

what is the number of pages?

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

but why? i think it should be (2^32)/(2^15) because of the byte bit conversion (2^12)*(8)=2^15

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


注:

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