分页是否让我们使用比CPU地址指针长度可寻址的物理内存大的物理内存?

问题描述:

我正在阅读有关内存管理的操作系统恐龙书。我认为这是最好的书籍之一,但有关书中分页的东西,我不明白。本书说:“32位CPU使用32位地址,这意味着给定的进程空间只能是2^32字节(4 TB)。因此,分页可以让我们使用大于什么可以通过CPU的地址指针长度来解决。“分页是否让我们使用比CPU地址指针长度可寻址的物理内存大的物理内存?

我不太明白这部分,因为如果CPU只能引用2^32个不同的物理地址,如果有2^32 + 1个物理地址,最后的地址将无法达到CPU。那么寻呼如何帮助这个呢?本书前面提到:“在32位CPU上,每个页表项的长度都是4个字节,但是这个大小也可能会有所不同,32位条目可以指向2^32个物理页面帧,如果帧大小为4 KB(2^12),则具有4字节条目的系统可以寻址2^44字节(或16 TB)的物理内存。

我不明白在理想/理论情况下甚至是可能的,因为据我所知,虚拟地址的一部分将引用页表的一个条目,而虚拟地址的另一部分将引用到该页面中该特定类型的抵消。因此,在本书提出的上述情况下,即使CPU可能指向2^32个不同的页面条目,也不能读取该页面内的任何特定字节,因为它没有指定办公室。

也许我误解了这本书,或者有一部分我错过了。我非常感谢你的帮助!非常感谢!

这听起来像你需要烧你的书。没用的。

“老化让我们使用的物理内存大于CPU地址指针长度所能解决的问题”是完全废话(除非本书为术语“分页”指定了两个不同的含义,其中它仍然是无用的)。

让我们从逻辑寻址开始。逻辑地址由页面选择器和页面偏移组成。一些数字(P)将被分配给页面选择器,剩下的将被分配给偏移量。如果页面为2^9位,则页面选择器中有23位,页面内的字节偏移量为9位。

请注意,9/23选择是我的任意。现在大多数系统使用较大的页面,但这些值过去已经使用过。

页面选择器中的23位是进程页面表中的索引。

页表中的条目大小将是2的幂(并且我从未见过一个小于4)。为了我们的目的,假设每个条目长度为8个字节。

页表项中的位被划分为索引物理页面帧和控制位的位。让我们做32位索引页框和32位控制的任意选择。

这意味着系统理论上可以管理2^9个字节大或总共2^41个字节的2^32个页面。如果我们将页面大小从2^9增加到2^20,系统理论上可以管理2^52(32 + 20)字节的内存。

请注意,每个进程仍然只能访问2^32个字节。但在我的9位页面系统中,2^9进程每个可以在具有2^41个物理字节内存的系统上同时访问2^32个页面(忽略这种总体过度简化中对共享系统地址空间的需求)。

请注意,如果我将页表更改为32位,并将这9位分配给控制,并将23分配给页面框架选择,那么系统只能管理2^32字节的内存(这比以前更常见管理大于2^32字节)。

您引用:“在32位CPU上,每个页表项的长度通常为4个字节,但这个大小也可能不同,32位条目可以指向2^32个物理页面之一如果帧大小为4 KB(2^12),则具有4字节条目的系统可以寻址2^44字节(或16 TB)的物理内存。“

这是理论学士学位。将页表条目的全部32位用作页面框架的索引的系统无法运行。页表中必须有一些控制位。

您从本书中引用的引用具有高度误导性。由于地址线限制,很少(任何?)32位处理器甚至可以访问2^32字节的内存。

尽管逻辑页面的使用可能允许处理器管理更多的逻辑地址大小所暗示的内存,但这不是管理页面内存的目的。

页面调度的目的 - 在正常和惯用的用法中,是指虚拟内存页面在物理页面框架和辅助存储之间的移动 - 允许进程访问比系统上的物理内存更多的虚拟内存。

有一个额外的内存管理系统(幸好)正在消失:段。段也为系统提供了一种管理比逻辑地址空间允许的更多物理内存的方法。

+0

哈哈,谢谢你的回答!它确实证明了我自己的理解,只是我没有你那么大胆地​​去热情地谴责这本书,因为这本书看起来很有名望,所以很高兴知道我并不是唯一一个觉得这本书很怪异的人。这本书是Silberschatz,Galvin,Gagne操作系统概念,希望其他初学者也可以少受这本书的误导= = 无论如何,谢谢:) – sosostris

+0

亚马逊160美元。 VAX/VMS内部和数据结构的拷贝低于5美元,如果注明日期的话,会有更好的信息。 – user3344003