Physical Address Extension

来自osdev
(重定向自PAE
跳到导航 跳到搜索

本文讨论了许多x86处理器上可用的物理地址扩展(PAE-Physical Address Extension)。 本文假设您对虚拟内存有很好的理解(如分页中所讨论的)。 本文还讨论了特定于x86的功能,尽管其他体系结构很容易具有非常相似的机制。

历史

PAE位是在Intel Pentium Pro处理器中引入的。 它专门旨在允许32位操作系统使用超过4 GB的内存。

工作原理

当PAE位关闭时,页表中的每个条目指定物理内存中的一个32位基址。 当位打开时,条目被扩展到允许多达64位 (尽管大多数处理器支持的数量少于此数量)。 这允许进程可以定位在4GB边界之上,但32位进程在任何时候都不能访问超过4GB的空间。

危险和陷阱

32位I/O设备 (和驱动程序代码) 很可能无法理解4 GB以上的地址。

这就产生了一个“漏洞”,因为一些地址空间是为这些驱动程序预留的(请参见Memory Map (x86))。 您可以将DRAM从此区域重新映射到4 GB以上的空间,否则存储空间可能会丢失。

还有额外与DMA的复杂性 (你的32位硬盘驱动器如何复制代码或数据到进程位于4 GB以上?)。

这些困难往往促使操作系统开发人员在一个简单64位地址空间中工作。

长模式

当切换到 长模式 时,需要启用PAE。 结构保持不变。 主要区别在于,基于物理地址0的代码可以使用64位指针访问所有内存。

另见

文章

维基百科

de:Physical_Address_Extension