Windows 中的 RAM、 虚拟内存、 页面文件和内存管理

适用于: Microsoft Windows XP Home EditionMicrosoft Windows XP Professional EditionMicrosoft Windows Server 2003 R2 Datacenter Edition (32-Bit x86)

概要


这篇文章包含在 32 位版本的 Windows 的虚拟内存实现有关的基本信息。此信息涉及 Windows 2000、 Windows XP、 Windows Server 2003,Windows Vista 和 Windows Server 2008。(因为Windows Server 2008 R2仅有64位版本,因此本信息不适用于此系统。)

详细信息


在现代操作系统 (例如 Windows)中,应用程序和许多系统进程始终使用虚拟内存地址来引用内存。虚拟内存地址自动硬件转换到现实 (RAM) 地址。只有操作系统内核的核心部分绕过此地址转换,并直接使用实际的内存地址。

虚拟内存总是要使用,即使所有正在运行的进程所需的内存不超过系统安装的 RAM 总量。

进程和地址空间

在 32 位版本的 Windows 下运行的所有进程 (例如,应用程序可执行文件) 都分配的虚拟内存地址 (一个虚拟地址空间),范围从 0 到 4294967295 (2 * 32-1 = 4 GB),无论多少 RAM 实际安装在计算机上。

在默认的 Windows 配置下,2 千兆字节 (GB)的虚拟地址空间会分配给每个进程私有使用,其他的2GB则被所有进程以及操作系统共享使用。通常情况下,应用程序 (例如,记事本,Word、 Excel 和Acrobat Reader) 使用仅 2 GB 的专用地址空间的一小部分。操作系统只向那些正在使用的虚拟内存页面分配物理内存页帧。

物理地址扩展 (PAE) 是英特尔 32 位体系结构扩展到 36 位的物理内存 (RAM) 地址的功能。PAE 不会更改虚拟地址空间的大小(仍为4 GB),而是改变处理器可寻址的物理内存(RAM)量。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

268363英特尔物理地址扩展 (PAE) 在 Windows 2000 中
用于在进程中运行的代码的 32 位虚拟内存地址与 36 位物理内存地址之间的转换,由计算机硬件自动和透明地根据由操作系统维护的转换表处理。任何虚拟内存页 (32 位地址) 都可以与任何物理内存页 (36 位地址) 相关联。

下面的列表介绍了的 RAM 的数量 (截止 2010 年 5 月) 支持不同的 Windows 版本和版本︰
Windows NT 4.0 4 GB
Windows 2000 专业版 4 GB
Windows 2000 标准服务器 4 GB
Windows 2000 高级服务器 8 GB
Windows 2000 数据中心版服务器 32 GB
Windows XP 专业版 4 GB
Windows Server 2003 Web 版 2 GB
Windows Server 2003 标准版 4 GB
Windows Server 2003 企业版 32 GB
Windows Server 2003 数据中心版 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 企业版 64 GB
Windows Server 2008 数据中心版 64 GB
Windows 7 4 GB

页面文件

RAM 是有限的资源,而对于大多数实际的目的,是没有限制的虚拟内存。可以有多个进程,以及每个进程有自己 2 GB 的专用的虚拟地址空间。当现有的所有进程正在都使用的内存超出了可用的 RAM 时,操作系统将页 (4 KB 片) 的一个或多个虚拟地址空间移动到计算机的硬盘。这将释放 RAM 框架用于其他用途。在 Windows 系统中,这些"分页出"页存储在一个或多个文件 (Pagefile.sys 文件) 分区的根目录中的。每个磁盘分区中可以有一个这样的文件。在系统属性中配置的位置和大小的页面文件 (单击高级,单击性能,然后单击设置按钮)。

用户经常询问"多大应该使页面文件?"有是这个问题没有一个答案,因为这取决于已安装的 RAM 的数量和多少虚拟内存的工作负荷需要。如果没有可用的其他信息,典型安装 ram 的 1.5 倍以上的建议是很好的起点。在服务器系统中,通常需要具有足够的 RAM,以便永远不会短缺,并且基本上未使用的页面文件。对于这些系统,它可能会提供任何有用的用途,要维护真正大的页面文件。另一方面,如果磁盘空间充足,维持较大的页面文件 (例如,安装 RAM 的 1.5 倍) 不原因的问题,和这也无需担心通过使它的大小。

性能、 结构限制和 RAM

在任何计算机系统上,随着负载的增加 (用户数,工作的量),性能有所下降,但以非线性的方式。负载或超过某个特定点的需求有增加会导致性能显著降低。这意味着某些资源处于严重短缺,已经成为一个瓶颈。

在某些时候,短缺的资源不能增加。这意味着已达到为体系结构的限制。在 Windows 中的一些经常报告体系结构限制如下所示︰
  • 2 GB 的系统 (内核) 的共享虚拟地址空间
  • 2 GB 的专用的虚拟地址空间,每个进程 (用户模式)
  • 660 MB 的系统 PTE 存储 (Windows Server 2003 及更早版本)
  • 470 MB 的页面缓冲的池存储 (Windows Server 2003 及更早版本)
  • 256 MB 的非页面缓冲的池存储 (Windows Server 2003 及更早版本)
这尤其适用于 Windows Server 2003,但这可能也是适用于 Windows XP 和 Windows 2000。但是,Windows Vista 和 Windows Server 2008 中,Windows 7 并不是所有共享这些体系结构的限制。用户和内核内存 (数字 1 和 2 在此处) 的限制是相同的但如 Pte 和各种内存池的内核资源是动态的。此新功能使分页和未分页的内存。这也使得 Pte 和增长超过了前面已讨论,直至用尽整个内核时点限制的会话池。

经常发现并引用语句,如下所示︰
使用终端服务器,2 GB 共享的地址空间将完全使用之前使用 4 GB 的 RAM。
这可能在某些情况下,则返回 true。但是,您需要监视您的系统是否它们适用于您的特定系统或不知道。在某些情况下,这些语句是从特定的 Windows NT 4.0 或 Windows 2000 环境的结论并不一定应用于 Windows Server 2003。了重大更改为 Windows Server 2003 以减少事实上实际上已达到这些体系结构限制的可能性。例如,在内核中的一些程序移至非内核进程来减少共享虚拟地址空间中使用的内存。

监视内存和虚拟内存的使用情况

性能监视器是原则的工具来监视系统性能和识别瓶颈的位置。要启动性能监视器,请单击开始,单击控制面板,单击管理工具,然后双击性能监视器。以下是一些重要的计数器和他们告诉您的摘要︰
  • 内存、 提交字节︰ 此计数器是一种虚拟内存的需求。

    这将显示所分配的字节数内存页面框架或页面文件 (或可能是两个) 中的页槽的进程并向其承诺操作系统。随着提交的字节数的增长大于可用的 RAM,页面将会增加,并正在使用的页面文件大小也会增加。在有些情况下,分页活动开始显著地影响性能。
  • 进程工作集、 _Total︰ 此计数器是在"活动"使用的虚拟内存量。

    此计数器显示多少 RAM 是必需的以便为所有进程正在使用的虚拟内存是在 RAM 中。此值始终是在 Windows 中使用的页面大小是 4096,倍数。对虚拟内存将增加超过可用的 RAM 需求,作为操作系统调整进程的虚拟内存中有多少是在其工作集大小以优化可用 RAM 使用并最小化分页。
  • 分页文件,在使用 %页面文件︰ 此计数器是一种多少页面文件的实际使用。
    使用此计数器以确定页面文件是否为适当的大小。如果此计数器达到 100 时,页面文件已满,并且操作将停止工作。这取决于您的工作负载的变动性,您可能希望页面文件大以便它通常是用不超过 50-075%。如果正在使用多页文件,则有多个不同的物理磁盘上可以提高性能。
  • 内存,页数/秒表示︰ 此计数器是最容易产生误解的措施之一。

    此计数器的值很高并不一定意味着性能瓶颈起源于 RAM 不足。操作系统用于非换页内存过度承诺由于使用分页系统。
  • 内存、 页输出/秒︰ 此计数器显示多少个虚拟内存页面写入页面文件以释放用于其他目的的内存页帧每秒。

    这是最佳的计数器来监视如果您怀疑分页是性能瓶颈。即使提交的字节数大于所安装的 RAM,如果页输出/秒是低或零大多数情况下,从 RAM 不足没有显著的性能问题。
  • 内存,缓存字节数
    内存,非分页池字节,
    内存、 分页缓冲池字节为单位,
    内存,系统代码的总字节数,
    内存,系统的驱动程序的总字节数︰
    这些计数器的总和是多少 4 GB 的虚拟地址空间的共享部分 2GB 实际使用的度量值。使用这些选项来确定是否您的系统将达到讨论前面讨论过的体系结构限制之一。
  • 内存、 可用的兆字节数︰ 这个计数器衡量将多少 RAM 可满足虚拟内存的需求 (或者新的分配,或从页面文件还原页面)。

    当 RAM 简而言之是供应 (例如,提交字节数大于已安装的内存),操作系统将尝试通过复制没有页面文件处于使用中的虚拟内存页面保留一部分安装的 RAM 可供立即使用。因此,此计数器将达到零,并不一定表示您的系统是否充足的 RAM。
有关这些主题的详细信息,请访问下面的 Microsoft 网站和博客站点︰