Geo*_*ge2 5 windows memory-management
我正在阅读有关内存管理的新书 Windows Internals 5(物理地址扩展 PAE 部分的第 9 章)。在第 770 页提到“32 位系统在内部用 24 位表示物理地址”。我完全糊涂了,我认为 x86 物理内存也应该由 32 位寻址,这就是为什么系统被称为 32 -位系统。
任何想法有什么问题?
我正在阅读 Windows 内部第四版(第 435-437 页)中的物理地址扩展 (PAE) 章节,但我似乎找不到对 24 位的引用。这里引用了25位用于基页地址,这意味着可寻址空间变为2^(12+25)=128GB。但我们会回过头来讨论这个问题。首先让我们看看线性地址如何转换为物理地址(这在书中有完美的描述):线性地址被分成三部分:
PTE和PDE中的每一项包含32位记录,其中20位分别包含页或下一级表的物理地址。其他 12 位是描述页或表的标志(可读/可写/可执行等)。这就是 80386、x486 和 Pentium 的工作原理。
现在,Pentium Pro 和更新的 CPU 在 PAE 模式下运行时,在 PDE 和 PTE 表中使用 64 位宽记录。在这些记录中,最多可以使用 40 位来编码内存中页面的基地址。这意味着PAE模式理论上可以寻址2^12(每个4Kb)的2^40页(1T页)。总理论地址空间为 2 ^ (40 + 12) = 2 ^ 52 = 4Peta 字节。然而,操作系统并不使用所有这 40 位。例如,Windows 仅使用其中的 24 个,这导致总可寻址地址空间为 2 ^ (24 + 12) = 2 ^ 36 = 64G 字节。
显然,不同版本(风格)的 Windows 在该表中使用不同的位数,这看起来有点奇怪。根据该书的第 4 版,在这种情况下使用了 25 位,这使得可寻址空间达到 128Gb,这也被本页所证实。这就是上面提到的第四版和第五版之间差异的根源。
有关转换如何发生的更详细说明,请查看Intel 64 和 IA32 架构软件开发人员手册的第 4-17 和 4-18 页(第 4.4.2 章)
哦,是的,系统被称为 32 位并不是因为它寻址 2^32 字节。这是因为它运行在内部寄存器为 32 位宽的模式下(这不再总是正确的,但已经足够接近现实了)。如果可寻址空间决定了操作系统的名称,那么 DOS 将是 20 位操作系统,而旧的 Mac 将是 24 位操作系统
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |