您的足迹:首页 > 经验技术 >【译】操作系统和 PAE 支持

【译】操作系统和 PAE 支持

(本文直接采用必应翻译转译,原网页:http://msdn.microsoft.com/zh-cn/library/windows/hardware/Dn613969(v=vs.85).aspx

处理 4 GB 以上物理内存,需要多个地址 (32 位) 的英特尔处理器的标准操作模式所提供的 32 位。为此,英特尔推出了 36 位的物理寻址模式,称为 PAE,开始与英特尔奔腾 Pro 处理器。

这篇文章介绍了一些微软 Windows 操作系统和几个 UNIX 操作系统使用为使用 PAE 模式处理的应用程序提供支持的技术。因为在这些环境中运行的进程有 32 位指针,操作系统必须管理和呈现 PAE 的 36 位的地址在这种情况下应用程序几乎可以使用它。关键的问题是: 操作系统是如何解决这个问题?性能、 功能、 简单的编程和如何处理这些问题的可靠性将会确定有用的大内存支持。

更新时间: 2006 年 7 月 14 日

PAE: 32-与 64 位系统

PAE 是仅支持 32 位版本的 Windows 操作系统 ;64 位版本的 Windows 不支持 PAE。有关设备驱动程序和 64 位版本的 Windows 的系统要求的信息,请参阅64 位系统的设计地址窗口化扩展 (AWE) 的 API 支持在 32 位系统上。它也支持在 x64 上本机和 Wow64 应用程序系统。

虽然支持 PAE 内存是通常与超过 4 GB 的 RAM 的支持相关联,可以在 Windows XP SP2,Windows Server 2003 和后来 32 位版本的 Windows 上启用 PAE,支持硬件强制数据执行保护 (DEP).

在这篇文章的信息适用于 Windows 2000、 Windows XP 专业版、 Windows Server 2003 和更高版本的这些操作系统的系统,在本文中,称为"窗口"。

 

技术背景

在标准 32 位模式下的地址翻译

所有的 ia-32 处理器 (英特尔奔腾、 奔腾 Pro、 奔腾 II 至强和奔腾 III 至强) 支持 32 位的物理地址 (4 GB),允许应用程序在运行时处理 4 GB 的虚拟地址。该系统必须翻译的应用程序和操作系统使用硬件所使用的 32 位物理地址的 32 位虚拟地址。(奔腾 Pro 是第一个处理器在 IA 32 家庭支持 PAE,但芯片组的支持也是必要的 36 位物理地址,这通常缺乏。

Windows 使用两个级别的映射做翻译,是由一组数据结构称为页目录和页表,内存管理器创建和维护提供了便利。

PSE 模式

IA 32 支持两种方法来访问内存超过 4 GB (32 位)。PSE (页大小扩展) 是第一种方法,附带奔腾 II。此方法提供一个兼容性的优势,因为它保留了 4 个字节的 PTE (页表条目) 大小。然而,这只实际执行是通过驱动程序。这种方法患有显著的性能限制,必要的阅读和写作 4 GB 以上的缓冲区复制操作。在 PSE 36 RAM 磁盘使用模型使用 PSE 模式。

PSE 使用一个标准的 1 K 目录和没有页表扩展大小 4 MB 页 (消除一个级别的间接寻址该模式)。页目录条目 (PDE) 包含 14 位的地址,和当结合 22 位字节索引中,收益率扩展物理地址的 36 位。与支持的标准方式的 4 KB 页面同时支持 4 GB,低于 4 KB 和 4 MB 的页。

请注意位于 4 GB 以上的页面必须使用 PSE 模式 (有 4 MB 的页面大小)。

PAE 模式

PAE 是支持访问内存超过 4 GB ; 第二种方法此方法已被广泛实现。PAE 将最多 64 GB 的物理内存映射到使用 4 KB 或 MB 2 页的 32 位 (4 GB) 虚拟地址空间。页目录和页表扩展到 8 个字节的格式,允许的页表和页帧的基底位址延伸至 24 位 (从 20 位)。这是额外的四位介绍完成 36 位的物理地址。

Windows 支持 PAE 具有 4 KB 页。PAE 还支持在哪里 2 MB 的页面都支持模式。很多 UNIX 操作系统依靠 2 MB 页面模式。地址翻译是不使用页表 (PDE 用品页帧地址直接) 完成的。

 

执行操作系统和应用程序支持

下一个问题是如何管理操作系统和在这种情况下 (具有 32 位指针) 的应用程序几乎可以使用额外的内存地址目前 PAE 36 位。

有五个应用程序的支持模型。(服务器整合和大的高速缓存) 的前两个模型在操作系统的完全处理,不需要对应用程序做任何更改。第二两个模型 (应用程序窗口和进程叉) 所要求的应用程序更改为大内存支持的 API 扩展。最后一个模型 (PSE 36 RAM 磁盘) 不需要更改操作系统 (在驱动程序中实现),但应用程序更改以支持驱动程序的任务。

1.服务器整合

启用 PAE 的操作系统应该是能够利用系统加载多个应用程序 ; 提供的所有物理内存例如,应用程序 #1、 App #2、 App #N,每个组成的 4 GB (最大) 的虚拟地址。在非 PAE 启用系统中,结果可以是分页的大量,因为系统中的最大物理内存限制为 4 GB。

在 PAE 模式下支持额外的物理内存,操作系统可以保留更多这些应用程序在没有分页的内存中。这是有价值的支持服务器整合配置,通常需要在一台服务器的多个应用程序的支持的地方。请注意没有更改应用程序必须支持此功能。

2.大的高速缓存

用于数据缓存使用额外启用 PAE 内存也是可能的。如果操作系统支持此功能,应用程序需要不重新编码,利用它。Windows 先进的服务器和数据中心服务器支持缓存在 PAE 的平台上,可以利用所有可用的内存。

3.应用程序窗口

启用 PAE 的操作系统可以引入一个 API,允许正确编码的应用程序访问物理内存在任何地方在系统中,即使它可能超过 4 GB。理想情况下,API 来分配"高"的物理内存和创建或移动窗口应该是快速和简单的代码。这是极为有利的应用,需要对大量的数据在内存中的快速访问。

高之间共享内存的进程可以引入相当复杂一点的 API 和执行。Windows 可以避免这种资源的共享。

此外,分页的支持使得的设计与实现的操作系统更加困难和使确定性的性能更加难以实现。Windows 可以避免,以及高内存的分页。

4.过程叉和共享的内存

此应用程序的支持模型将当前进程拆分成两个或多个几乎完全相同的副本。副本的用户和系统的堆栈、 已分配的数据空间,和寄存器。主要的区别是父的,一个人进程 ID (PID) ;另有一个新的 PID。叉返回的值是一个 PID。PID 为零为是孩子的副本或 PID 的儿童是父母的副本。

5.PSE36 RAM 磁盘

通过使用内核的设备驱动程序,很像一个 RAM 磁盘,就可以利用上面的内存 4 GB,没有更改任何操作系统。自的页表都保持在 4 字节宽,被维持基本的操作系统 (在 32 位模式下运行) 和 (在 PAE 模式下运行) 的驱动程序之间的兼容性。对于这种很低的发展影响权衡以下几种:

  • 由于被迫执行双缓冲的所有 i/o 操作会降低其性能。

  • 应用程序开发的影响并不明显小于当前 Api 所需。

  • 它不能用作"整合服务器",因为所有应用程序都共享相同的 4 GB 的物理内存空间。

设计和实施

大内存支持的操作系统实现必须直接解决这些问题,才能取得成功。简单、 可靠性和作业系统的性能会受到直接影响,基于在处理这些问题的设计选择。

 

与大内存支持在 IA32 中的技术问题

共享内存和进程间通信

在所有情况下,内存重新映射在哪里用于分配内存,进程,这是共同的许多 PAE 变形,共享内存是有问题的。被重新映射的物理内存是"外"进程的虚拟地址空间。因此,物理内存是少连接到意义上的共享进程的内部访问和安全控制,以及那些由操作系统提供的进程。

若要应用的访问和安全控制,就必须大大增加所需的操作系统内存管理器,以及应用程序开发人员必须使用的 API 集的帐务。这造成负面影响的高性能可能使用非常快速重新映射操作。它也是重要的是记住 IPC/内存共享可能仍会发生两个进程的虚拟地址空间之间在任何情况下,无论身体上映射的内存使用每个可能。

TLB 击落

翻译看看一旁缓冲器 (TLBs) 是处理器的寄存器或缓存中,也提供了直接的逻辑物理映射的页表条目。加载后,处理器已经读取的页目录很少 (TLB 失效) 除非出现任务切换。

在重新映射操作中,它是有必要确保所有处理器在芯片上都有有效的逻辑物理映射。因此,重新映射操作需要 TLB 击落,因为逻辑物理协会失效的重新映射 (在"逻辑"= 内存的应用程序/进程视图)。

(或多个) 处理器重新加载 TLB 时对性能的影响。所有操作系统都有这个问题,并在 PAE 内存的支持,他们以不同的方式改善这一问题:

  • Windows 提供了单个的应用程序进行"批处理",都是同时发生的只因为一个 TLB 击落,而所需的重新映射操作和性能之一倾角而不是随机的重新映射,其中每个会对性能产生影响的能力。这是相当足够的通常用途单一的系统运行的大型应用程序。

  • 其他操作系统提供"受害者"缓冲区或允许一个进程共享另一个进程的映射,但在更多的同步和 API 的复杂性的成本。

    Windows XP 也提供了这个"批处理"或分散/集中功能。此外,这些操作的性能已被改进为 Windows Server 2003,企业版和数据中心版。

I/O

在一个级别或其他,所有 PAE 变形都支持 32 位和 64 位 DMA I/O 设备附带的驱动程序。然而,有一些限制性条款和条件。

内核和记忆的组织

通常情况下,从标准内核的操作系统内核内存空间组织不变。在许多情况下,项目如内存池的大小保持不变。为了向后兼容 PCI 基址寄存器 (酒吧) 保持不变。更大的内存大小原因一些的内核地址空间,通常当和之间转换 16 GB 32 GB 是内存的在系统中实际存在。

操作系统之间的一个区别是是否内存分配是动态的:

  • 一些操作系统需要管理员配置的用于各种目的 (缓存、 映射、 整合和等等) 的内存量。

  • Windows 不需要管理员配置的内存分配,因为用法是动态的在使用的 Api 的限制范围内。

硬件支持

PCI 标准提供一种方法,藉以适配器物理上可能会通过发送地址的高 32 位地址超过 4 GB 的内存和地址在两个单独的低 32 位发送。这被称为双地址周期 (DAC),使用 32 位适配器的了解 64 位地址,但都只有 32 条地址线和适配器的做有 64 条地址线。这是一个向后兼容的功能。

给出的 PCI 地址超出 32 位内存的方法,还有一种是微妙的失效模式。任何 I/O 范围,"范围"跨越两个 4 GB 区域必须进行专门处理。如果不是,地址范围将会正确地解码为只有一个转让的一部分,其余部分将换位到一个不正确的内存位置。这会损坏内存和将崩溃的系统,崩溃应用程序,或静静地在该位置的数据已损坏。应用程序不能阻止这因为他们只给出了虚拟地址和物理水平有不可见。所有操作系统,使用 PAE 都面对这一问题,但一些做不明确防止这种情况的发生,相反取决于设备驱动程序能够采取正确的行动。

然而,Windows,显式地防止这一问题。当 I/O 范围跨越以这种方式时,Windows 返回两个单独的地址和范围的设备和驱动程序。最后的特殊情况是从 4 GB 到超越的第一次过渡。没有 DAC 是转让的必需的因为以下 4 GB,但是 DAC 区域所需的其余。再次,Windows 返回两个单独的地址和范围在这种情况下,防止内存损坏。

很明显,DAC 或 64 位适配器和驱动程序提供最佳性能随着无缓冲的 I/O 的发生。这种缓冲是必需的然而,每当适配器和驱动程序不能利用多个 32 位的地址信息。在一些时尚,作为一个向后兼容性特征利用 PAE 模式寻址支持这"双缓冲"的所有操作系统。这种缓冲有罚款的性能取决于几个因素:

  • 适配器硬件性能

  • 驱动程序性能

  • 提供双缓冲的操作系统支持

  • 在系统中安装的物理内存量

随着物理内存增加,32 位以外的 I/O 地址的相对量也增加对那些低于 32 位的地址。在大多数情况下,操作系统透明地提供双缓冲,虽然一些 Unix 变体做不提供任何援助,在此函数中,并要求任何 32 位设备和驱动程序来管理他们自己双缓冲的例程和分配。

驱动程序问题

通常情况下,设备驱动程序必须在大量的小的方式进行修改。虽然实际的代码更改可能小,他们可以是困难的。这是因为当不使用 PAE 内存寻址,有可能承担物理地址和 32 位虚拟地址的限制是相同的设备驱动程序。PAE 内存使得这种假设不真实。

几个假设及以前可以安全地使用的快捷方式并不适用。一般情况下,这些落三个类别:

  • 这样,它不会忽略的物理地址的高 32 位,必须修改缓冲区分配和共享的内存缓冲区对齐的代码中的对齐方式。

  • 必须避免的地址信息在多个地点,这可能会被截断。

  • 有必要严格隔离虚拟和物理地址引用所以 DMA 操作并不会转移到或从随机存储器中的信息。

可以在 Windows XP SP2,Windows Server 2003 SP1 和更高版本的 Windows 上启用 PAE 模式,支持硬件实施 DEP。然而,为这些系统设计的很多设备驱动程序可能尚未测试在系统配置上与启用了 PAE。为了限制对设备驱动程序兼容性的影响,对硬件抽象层 (HAL) 的更改了 Windows XP SP2 和 Windows Server 2003 SP1 标准版限制为 4 GB 的物理地址空间。驱动程序开发人员都是鼓励阅读有关DEP.

分页

大多数操作系统支持 PAE 支持大于 4 GB 的物理内存虚拟内存分页的一些性质。这通常会出现一些限制,例如限制为 4 GB 的启动/系统分页文件或分页文件 (或文件) 传播与跨多个操作系统组织卷 (不一定物理磁盘轴)。

尽管这允许进行虚拟内存的明显好处,缺点是对具有一个或多个下列特性的应用程序的性能影响:

  • 使用大的物理内存量为他们的数据集

  • 做了大量的 I/O

  • 有大型可执行工作集

最后,通常分页支持为代价增加 API 集和减缓发展和版本迁移。

用户 Api

所有操作系统都支持 PAE 都有允许使用的物理内存,进程的虚拟地址范围之外可能在 ia-32 处理器上的 Api。这些不同主要在多少支持他们提供前面所述的项目: 共享内存、 进程间通信、 分页,等等。由 Windows — — 地址窗口化扩展 (AWE) 的 API 集--只有五个 API 调用,与最复杂的 API 被四次较大和涉及的内核和用户级别的调用组成的提供简单和直观的 API 集。

和扩散的专有 Api — — 其中一些直接与处理器体系结构 (内核级) — — 使移植应用程序从一个 Unix 变体到另一个昂贵、 耗时,不断奋斗来平衡成本与性能优化。Windows 提供了 API 集,这是简单、 快速和完全便携之间 32 位和 64 位硬件平台,需要只重新编译才能起作用。

页面大小

几乎所有操作系统都支持 PAE 时提供超出 4 GB 的物理内存到应用程序中都使用不同的页面大小。主要的例外情况是 Windows,呈现给应用程序只有 4 KB 页在 IA 32 平台上 (这是在基于 Itanium 的平台上不同)。

对应用程序使用不同的页面大小的问题被有关与不同的内存分配大小,以及有关的几乎所有应用程序都使用的页面大小的基本假设的细微影响正常发挥作用所需的附加应用程序复杂性。虽然研究表明一小类应用程序可以受益于较大的页大小 (2 MB 或 4 MB),因为每个 TLB 入口跨越更大的地址范围,一般的规则是应用程序不受益于较大的页面大小。

 

Windows 和 PAE

Windows 版本 支持
Windows 2000 专业版、 Windows XP AWE API 和 4 GB 的物理 RAM
Windows XP SP2 及更高版本 AWE API 和 4 GB 的物理地址空间
Windows 2000 服务器,Windows Server 2003 标准版 AWE API 和 4 GB 的 RAM
Windows Server 2003 SP1 中,标准版 AWE API 和 4 GB 的物理地址空间
Windows Server 2003 企业版 8 处理器和 32 GB RAM
Windows Server 2003 SP1 中,企业版 8 个处理器和 64 GB RAM
Windows 2000 高级服务器 8 处理器和 8 GB 的 RAM
Windows 2000 的数据中心服务器 32 处理器和 32 GB RAM (支持为 64 GB 不由于缺乏系统的测试提供)
Windows Server 2003 数据中心版 32 个处理器和 64 GB RAM
Windows Server 2003 SP1 中,数据中心版 32 处理器和 128 GB 的 RAM

 

PAE 和窗户,对于开发人员,包括准则有关的详细信息请参阅PAE 内存和 Windows.

本博客所有文章如无特别注明均为原创。作者:Lance.Moe复制或转载请以超链接形式注明转自 Lance's Blog
原文地址《【译】操作系统和 PAE 支持

相关推荐

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)