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

Does paging let us use physical memory that is larger than what can be addressed by the CPU’s address pointer length?

我正在阅读有关内存管理的有关操作系统的恐龙书。我认为这是最好的书之一,但是书中有一些关于分页的内容我不明白。

书上说,"A 32-bit CPU uses 32-bit addresses, meaning that a given process space can only be 2^32 bytes (4 TB ). Therefore, paging lets us use physical memory that is larger than what can be addressed by the CPU’s address pointer length."

我不太明白这部分,因为如果 CPU 只能引用 2^32 个不同的物理地址,如果有 2^32+1 个物理地址,最后一个地址将不会CPU 可以联系到。那么分页对此有何帮助?

此外,本书前面说 "Frequently, on a 32-bit CPU , each page-table entry is 4 bytes long, but that size can vary as well. A 32-bit entry can point to one of 2^32 physical page frames. If frame size is 4 KB (2^12 ), then a system with 4-byte entries can address 2^44 bytes (or 16 TB ) of physical memory."

我不知道在 ideal/theoretical 情况下这怎么可能,因为据我所知,虚拟地址的一部分将引用页面 table 的条目,而另一部分虚拟地址的一部分将引用该页面中该特定类型的偏移量。因此,在本书提出的上述情况下,即使 CPU 可以指向 2^32 个不同的页面条目,它也无法读取该页面内的任何特定字节,因为它不指定办公室。

也许我误解了这本书或者我漏掉了某些部分。非常感谢您的帮助!非常感谢!

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

[P]aging 让我们使用的物理内存大于 CPU 的地址指针长度所能寻址的内存”完全是胡说八道(除非书中为术语 "paging," 仍然没有用)。

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

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

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

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

页面 table 条目中的位分为索引物理页框的位和控制位。让我们任意选择32位索引页框和32位用于控制。

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

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

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

你引用:"Frequently, on a 32-bit CPU , each page-table entry is 4 bytes long, but that size can vary as well. A 32-bit entry can point to one of 2^32 physical page frames. If frame size is 4 KB (2^12 ), then a system with 4-byte entries can address 2^44 bytes (or 16 TB ) of physical memory."

这是理论上的废话。使用页面 table 条目的所有 32 位作为页框索引的系统无法运行。页面 table.

中必须有一些控制位

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

虽然使用逻辑页可能允许处理器管理比逻辑地址大小建议的更多内存,但这并不是管理页中内存的目的。

分页的目的——在其正常和习惯用法中是指虚拟内存页面在物理页面框架和辅助存储之间移动——是为了允许进程访问比系统上的物理内存更多的虚拟内存.

还有一个额外的内存管理系统正在(谢天谢地)消亡:段。段还为系统提供了一种管理比逻辑地址 space 允许的更多物理内存的方法。