Memory management 如何计算虚拟页面的数量

Memory management 如何计算虚拟页面的数量,memory-management,cpu-architecture,Memory Management,Cpu Architecture,虚拟地址大小:32位 页面大小=4K=2^12字节 页数是多少? 我知道答案是(2^32)/(2^12)=2^20,但为什么呢 我认为应该是(2^32)/(2^15),因为字节位转换(2^12)*(8)=2^15,内存中的每个字节都有一个从0开始的数字地址。CPU有一个或多个寄存器,用于保存正在处理的一个字节的地址。寄存器是一个物理设备,对它能存储的数字有限制 虚拟地址大小:32位 这意味着地址寄存器可以存储一个地址(数字),可以是0和2^32-1之间的任何地址(数字) 由于地址寄存器可以存储的

虚拟地址大小:32位

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

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


我认为应该是(2^32)/(2^15),因为字节位转换(2^12)*(8)=2^15,内存中的每个字节都有一个从0开始的数字地址。CPU有一个或多个寄存器,用于保存正在处理的一个字节的地址。寄存器是一个物理设备,对它能存储的数字有限制

虚拟地址大小:32位

这意味着地址寄存器可以存储一个地址(数字),可以是
0
2^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
是一页中的总字节数。分子和分母应使用相同的单位-字节。因此,不需要将分母转换为位


注:
我使用了过度简化的术语,如
内存
地址
寄存器
等。上面的许多陈述对真正的笔记本电脑无效,但对初始学习有用。

您的机器是否有字节可寻址内存,其中每个字节都有自己的地址?或者它是字可寻址的(每个地址都是多个连续字节)?NVM,我们可以从正确答案2^32/2^12判断它是字节可寻址的。如果这是正确答案,我们必须假设每个地址指向一个1字节的字?不,每个地址是1字节,但这并不意味着一个字是一个字节。像32位x86这样的普通系统是这样的,具有32位地址和4k页面,以及字节可寻址内存。32位x86的寄存器宽度为4字节。(但它实际上没有一个“字大小”,因为有更宽的向量寄存器…)拥有更多的内存字节是没有意义的。因为CPU永远无法与它们一起工作。您可以拥有物理内存多于映射到单个虚拟地址空间的计算机。这对操作系统内核来说是不方便的,但肯定有可能运行多个进程,每个进程都有4GB的虚拟地址空间映射到物理内存的不同区域。带PAE(物理地址扩展)的32位x86具有36位物理地址,但仍然具有32位虚拟地址。确切地说。这就是为什么要注意的原因:上面的许多陈述对于真正的笔记本电脑来说都是无效的,但是对于最初的学习是有用的。错误的陈述对于学习根本没有用处。