如何计算虚拟页数
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
这意味着地址寄存器可以存储一个地址(数字),可以是0
和2^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
是页面中的总字节数。分子和分母都应采用相同的单位 - 字节。所以你不需要将分母转换为位。
注:
我使用了过度简化的术语,如 memory
、address
、register
等。上面的许多陈述对真正的笔记本电脑无效 - 但对初始的有用学习。
虚拟地址大小: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
这意味着地址寄存器可以存储一个地址(数字),可以是0
和2^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
是页面中的总字节数。分子和分母都应采用相同的单位 - 字节。所以你不需要将分母转换为位。
注:
我使用了过度简化的术语,如 memory
、address
、register
等。上面的许多陈述对真正的笔记本电脑无效 - 但对初始的有用学习。