【发布时间】:2011-03-14 06:29:34
【问题描述】:
我正在阅读“了解 Linux 内核”。
64 位架构的分页
正如我们在前面看到的 部分,两级分页通常是 由 32 位微处理器使用。 然而,两级分页不是 适用于采用 64 位架构。让我们使用一个 思想实验来解释原因:
首先假设一个标准页面大小 4 KB。因为 1 KB 覆盖了一个范围 210 个地址,4 KB 涵盖 212 地址,因此 Offset 字段为 12 位。这会留下多达 52 位的 要分配的线性地址 表和目录之间 字段。 如果我们现在决定使用 64 位中只有 48 位用于寻址 (这个限制给我们留下了一个 舒适的 256 TB 地址空间!), 剩下的 48-12 = 36 位将 必须在 Table 和 目录字段。如果我们现在决定 为这两个中的每一个保留 18 位 字段,页面目录和 每个进程的页表应该 包括 218 个条目,即超过 256,000 个条目。
“如果我们现在决定只使用 64 位中的 48 位进行寻址”。为什么? & 为什么只有 48 位?为什么不是其他数字?
好吧,我只是一个普通的 PC 用户和程序员。我很难相信 32 位寻址,即每个进程 4GB(更正确的是 2GB/3GB)地址空间是一个限制。如果你真的遇到了这个限制。请举个例子。
windows 的这个限制是多少?
我知道虚拟内存!= 物理内存和处理器地址引脚与虚拟内存无关。这是一个完全不同的问题。如何知道处理器的地址引脚数量(= 地址总线的大小)。 http://ark.intel.com 处理器规格不包括此规格。
答案:
请参阅Paul Betts's answer 以获得第一个问题的合理答案。
【问题讨论】:
标签: windows memory-management 64-bit linux-kernel address-space