Debugging Tools for Windows

/3GB

在32位版本Windows 上,/3GB参数启用4GT内存调整,既一个将用户模式虚拟地址空间扩展到3GB并将内核的地址空间控制到1GB的特性。

/3GB [ /userva=SizeInMB ] 

子参数

/userva
为以/3GB参数引导的操作系统指定用户模式虚拟地址空间的候选值。
SizeInMB
指定用户模式虚拟地址空间以MB为单位的大小数值。这个值可以是2048(2GB)和3072(3GB)中的一个十进制值。Windows使用剩下的地址空间(4GB减去指定值)作为内核地址空间。

注释

Windows Server 2003、Windows XP、Windows 2000支持/3GB参数。在Windows Vista及之后的Windows中,使用BCDEdit的IncreaseUserVA 成员(element,查看WMI的BCDEdit说明)。

Windows中默认情况下低2GB空间为用户模式程序保留,而高2GB内存地址空间为内核模式程序保留。可以用这个参数来测试驱动程序在1GB内核空间中的运行情况。

4GT内存调整(4 GT RAM Tuning)被以下系统完全支持:Microsoft Windows NT Server 4.0企业版并包含Service Pack 3;Microsoft Windows 2000 Advanced Server;Microsoft Windows 2000 Datacenter Server;以及所有版本的Windows XP、Windows Server 2003、Windows Vista和之后版本的Windows。

在其他版本Windows NT和Windows 2000中,系统限定了内核使用3GB分界线以上的空间。所以用户模式应用程序最多访问2GB地址空间。

/userva 子参数是为需要介于2GB和3GB用户模式地址空间,特别是运行内存密集型用户模式程序的计算机设计。当不使用 /3GB 参数时,/userva 被跳过。

/3GB/userva参数只在基于x86或x64处理器上运行的32位Windows系统的引导入口中有效。

用户模式应用程序要获得使用3GB开关的好处,必须用/LARGEADDRESSAWARE 选项链接。

在64位版本Windows Server 2003上,系统不需要/3GB引导参数就自动为以/LARGEADDRESSAWARE 选项链接的应用程序扩展地址空间。在Windows Server 2003 RTM(没有Service Pack 1)上,32位程序最多访问3GB内存地址空间。在包含Service Pack1的Windows 2003上,他们可以访问4 GB虚拟内存空间。原生的64位用户模式程序可以访问最高8 TB的虚拟地址空间。

使用/3GB参数减少系统中内核可使用的地址空间总数 。为了在剩下的1GB虚拟内存中协调所有内核资源,Vista之前的基于NT内核的系统限定物理内存只能在16GB以下,而Windows Vista限定可以在64GB以下。Windows Vista中内存资源的分配是动态的,所以更加灵活和有效,因此系统可以提供更多内存用于地址映射来供应更多物理内存。

下面的表格列出了支持适用4 GB以上物理内存的32位Windows系统在使用和不使用/3GB引导参数的情况下的物理内存限制。

操作系统 没有使用/3GB时的物理内存限制 使用/3GB时的物理内存限制
Windows Vista 4 GB 4 GB (no effect)
Windows Vista, Datacenter Edition 128 GB 64 GB
Windows Server 2003, Enterprise Edition 32 GB 16 GB
Windows Server 2003, Enterprise Edition SP1 64 GB 16 GB
Windows Server 2003, Datacenter Edition 128 GB 16 GB
Windows Server 2003, Datacenter Edition SP1 128 GB 16 GB
Windows XP (all editions) 4 GB 4 GB (no effect)

在Windows XP上,有一些驱动,特别是某些具有板载RAM的显示适配器驱动,不能在/3GB参数下运行,因为他们需要多于1GB的内核地址空间支持。

示例

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB /userva=3030

Bootcfg命令

bootcfg /raw "/3GB" /A /ID 1
bootcfg /raw "/3GB /userva=3030" /A /ID 2

Build machine: CAPEBUILD