根据我的理解,要从物理内存访问页面,CPU会为请求的页面生成PageNumber和PageOffset。然后,逻辑PageNumber内容将替换为页表条目中的物理PageNumber内容。因此,请求页面的物理位置是PageNumber + PageOffset。那么,CPU如何获得有关偏移值的信息呢?
此外,在分配新页面时,CPU如何确定要分配的页面的偏移值?
答案 0 :(得分:2)
当从虚拟内存转换为物理内存时,不会替换地址中的所有位。虚拟存储器的高阶位确实被物理地址位替换,但是保留了一定数量的低阶位,并且它们对应于偏移。标识页面偏移量的位数因架构而异。
看一下这个图表:
图例:
请注意,地址转换期间不会更改偏移量。因此,当CPU检索内存时,不需要进行任何计算 - 偏移量不变。
对于第二个问题:分配内存时,会分配整页,并且CPU不关心页面的偏移。仅当从CPU请求特定存储器地址(具有其未改变的偏移量)时,偏移才有意义。