Windows x86 物理内存是 24 位?

Geo*_*ge2 0 windows memory

我正在阅读有关内存管理的新书 Windows Internals 5(物理地址扩展 PAE 部分的第 9 章)。在第 770 页提到“32 位系统在内部用 24 位表示物理地址”。我完全糊涂了,我认为 x86 物理内存也应该由 32 位寻址,这就是为什么系统被称为 32 -位系统。

任何想法有什么问题?

提前致谢,
乔治

Max*_*mus 7

我认为这里的混淆可能是物理寻址与虚拟寻址的结果。在 32 位 Windows 上,虚拟内存地址(即由应用程序和其他更高级别进程使用的地址)是 32 位。物理内存地址在直接与硬件对话的级别下降,这 (1) 禁止用于内核/HAL 之外的几乎任何东西,以及 (2) 实现细节,所以那里发生的事情肯定会显得很奇怪更多的例子不止这些。

  • 物理地址空间和虚拟地址空间是完全分开的:比如我的64位处理器提供了64位虚拟地址空间,但是只有48位物理地址总线。(为了便于将来扩展,物理地址空间为 64 位宽,并带有定义的“孔”——但这不是必需的)。较旧的 32 位芯片做了类似的事情,而后来的芯片提供了比虚拟更大的物理地址空间。虚拟地址空间定义了正在运行的进程看到的内容;物理地址空间定义内核看到的内容。两者不需要有任何关系。 (3认同)