最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

32位系统为什么认不到4G内存

IT圈 admin 30浏览 0评论

2024年6月2日发(作者:滑雨筠)

确实是只能认到3.25G,要是想用到4G,可以装以下的系统:

Windows XP Professional x64 Edition(即64位的XP)

windows server 2003(即服务器系统,32位或64位版本都可以)

windows 7(测试版系统,但只有64位可以用4G以上的内存)

windows server 2008(也是服务器系统,32位或64位版本都可以)

windows vista 64(最强系统,vista64旗舰版可以识别2048G内存)

尽管从许可上来说,32位客户端SKU的最大内存支持是4GB,但是实际上的限制会

更低,这要看计算机的芯片组以及所连接的设备。这是因为物理地址映射不仅仅包含物理

内存,还包含设备内存,X86和X64位系统会把所有设备内存映射到低于4GB的地址边

界,以便确保和32位操作系统的兼容性,这些操作系统不知道如何处理超过4GB的地址

部分。如果计算机配备4GB内存和类似显卡、声卡和网卡这样的设备,Windows会给这

些设备内存分配共计500MB空间,而4GB物理内存中的500MB只能占用超过4GB的地

址边界,如下图所示。

其结果是,如果计算机拥有3GB或者更多内存,同时又运行32位Windows客

户端操作系统,我们可能无法享受到所有内存。在Windows 2000、Windows XP和

Windows Vista RTM系统上,我们可以在系统属性对话框、任务管理器的“性能”标签

页上看到可以访问的物理内存,在Windows XP和Windows Vista(包含SP1)中,我

们还可以在Msinfo32和Winver工具窗口里看到这些信息。在Windows Vista SP1中,

其中某些工具会显示系统所安装的物理内存,而不是可以使用的内存,可以参考这篇微软

知识库文章。

在笔者的4GB笔记本电脑中,如果启动到32位Windows Vista,可用的物理内存是

3.5GB,可以在Msinfo32工具中看到。

我们可以使用Alex Ionescu所开发的Meminfo工具来查看物理内存的分配情

况。在这台笔记本电脑上运行Meminfo,并加上-r参数以便转储物理内存的分配情况,结

果如下图所示:

注意其中内存地址范围中存在两个缺口,其中一个从页9F0000到页100000,另

一个缺口从DFE6D000到FFFFFFFF(4GB)。但是,如果启动到64位Windows Vista,

所有的4GB内存都可以使用,剩余的500MB物理内存位于高于4GB边界的地址部分,

我们可以看到Windows是如何使用这500MB物理内存的:

到底是谁占据了4GB以下的内存地址?设备管理器可以回答这个问题。要访问该工

具,可以运行“”,在“查看”菜单中选择“依连接排序资源”选项,然

后展开“内存”节点。在笔者的这台笔记本上,最大的映射设备内存,果然是显卡产生的,

共占据256MB内存,从E0000000-EFFFFFFF:

其他设备占用其他大部分的地址空间,PCI总线会保留一部分地址范围,以供系统引

导时某些设备固件所使用。

在带超级显卡的高端游戏计算机上,4GB以下的内存地址会减少很大一块。举个例子,

笔者曾经购买过一台游戏计算机,带4GB内存和两块1GB的显卡。在采购时,笔者并没

有指定操作系统版本,还以为他们会安装64位版本的Windows Vista,但是实际上安装

的是32位版本,结果Windows只能访问2.2GB的内存。安装64位Windows后,我们

可以在Meminfo的结果中看到从8FEF0000到FFFFFFFF存在如此大的内存空洞:

设备管理器显示,在2GB的内存空洞中,有512MB是显卡所占用的(每块显卡占用

256MB),看起来设备固件保留其他更多的动态映射内存:

哪怕计算机只有2GB内存,在32位Windows中也无法使用所有的内存,因为芯片

组会为设备强制保留一部分内存范围。我们的一台家庭公用计算机,几个月前从一家OEM

厂商那里购买的,显示安装了2GB内存,但是只有1.97GB是可用的:

其中7E700000到FFFFFFFF的物理地址范围是给PCI总线和设备所保留的,理论上

还有最多7E700000字节(1.976GB)的物理地址空间,但是其中还有一些还要给设备内

存所保留,这就是为什么Windows报告说1.97GB。

因为设备厂商需要向微软硬件质量实验室(WHQL)同时递交32位和64位驱动程序,

才能获得驱动程序签名认证,目前绝大多数设备驱动程序能够处理超过4GB边界的物理地

址。但是,32位Windows会继续忽略超出4GB的内存空间,因为很难衡量这样做的风

险,如果没有问题的话,OEM厂商应该转向64位Windows。

使用64位Windows,我们能够完全使用所有的系统内存(SKU的最大限制),而不

管容量多大,如果我们要购买高端游戏计算机,则应该请OEM厂商预装64位Windows。

是否拥有足够的内存?

不管系统拥有多少内存,问题是内存是否足够?不幸的是,我们没有快又准的方法来

确切地了解。这里只有一个大致的办法可以使用,该方法基于对系统“可用”内存的长期

监控,特别是在运行内存密集型负载的时候。如果物理内存没有分配给进程、内核,或者

驱动程序,则Windows会把这部分物理内存定义为可用内存。顾名思义,可用内存可以

在需要时分配给某个进程或者系统。Windows当然会对这部分内存进行最大限度的利用,

会将其用作文件缓存(备用列表),还有存放清零内存(清零页列表),另外,Windows Vista

还会使用SuperFetch功能,把数据和代码预加载到备用列表中,确保今后会使用的代码

和数据,得到优先处理。

如果可用内存变少了,这说明进程或者系统正在大量消耗内存,如果可用内存在相当

长的时间内都接近0,则可以考虑添加内存,有助于增加性能。有很多方法可以追踪可用

内存。在Windows Vista里,我们可以在任务管理器里查看“物理内存使用记录”,以便

间接地追踪可用内存,确认其是否长期逼近100%。笔者的8GB桌面计算机的任务管理器

如下图所示:

在所有版本的Windows中,我们可以使用性能监视器来查看可用内存,只需在

Memory计数器组中添加Available Bytes计数器即可:

我们可以在Process Explorer的“System Information”对话框里查看可用内存的

即时值,也可以在Windows Vista之前的Windows系统的任务管理器的“性能”标签页

里查看可用内存大小。

2024年6月2日发(作者:滑雨筠)

确实是只能认到3.25G,要是想用到4G,可以装以下的系统:

Windows XP Professional x64 Edition(即64位的XP)

windows server 2003(即服务器系统,32位或64位版本都可以)

windows 7(测试版系统,但只有64位可以用4G以上的内存)

windows server 2008(也是服务器系统,32位或64位版本都可以)

windows vista 64(最强系统,vista64旗舰版可以识别2048G内存)

尽管从许可上来说,32位客户端SKU的最大内存支持是4GB,但是实际上的限制会

更低,这要看计算机的芯片组以及所连接的设备。这是因为物理地址映射不仅仅包含物理

内存,还包含设备内存,X86和X64位系统会把所有设备内存映射到低于4GB的地址边

界,以便确保和32位操作系统的兼容性,这些操作系统不知道如何处理超过4GB的地址

部分。如果计算机配备4GB内存和类似显卡、声卡和网卡这样的设备,Windows会给这

些设备内存分配共计500MB空间,而4GB物理内存中的500MB只能占用超过4GB的地

址边界,如下图所示。

其结果是,如果计算机拥有3GB或者更多内存,同时又运行32位Windows客

户端操作系统,我们可能无法享受到所有内存。在Windows 2000、Windows XP和

Windows Vista RTM系统上,我们可以在系统属性对话框、任务管理器的“性能”标签

页上看到可以访问的物理内存,在Windows XP和Windows Vista(包含SP1)中,我

们还可以在Msinfo32和Winver工具窗口里看到这些信息。在Windows Vista SP1中,

其中某些工具会显示系统所安装的物理内存,而不是可以使用的内存,可以参考这篇微软

知识库文章。

在笔者的4GB笔记本电脑中,如果启动到32位Windows Vista,可用的物理内存是

3.5GB,可以在Msinfo32工具中看到。

我们可以使用Alex Ionescu所开发的Meminfo工具来查看物理内存的分配情

况。在这台笔记本电脑上运行Meminfo,并加上-r参数以便转储物理内存的分配情况,结

果如下图所示:

注意其中内存地址范围中存在两个缺口,其中一个从页9F0000到页100000,另

一个缺口从DFE6D000到FFFFFFFF(4GB)。但是,如果启动到64位Windows Vista,

所有的4GB内存都可以使用,剩余的500MB物理内存位于高于4GB边界的地址部分,

我们可以看到Windows是如何使用这500MB物理内存的:

到底是谁占据了4GB以下的内存地址?设备管理器可以回答这个问题。要访问该工

具,可以运行“”,在“查看”菜单中选择“依连接排序资源”选项,然

后展开“内存”节点。在笔者的这台笔记本上,最大的映射设备内存,果然是显卡产生的,

共占据256MB内存,从E0000000-EFFFFFFF:

其他设备占用其他大部分的地址空间,PCI总线会保留一部分地址范围,以供系统引

导时某些设备固件所使用。

在带超级显卡的高端游戏计算机上,4GB以下的内存地址会减少很大一块。举个例子,

笔者曾经购买过一台游戏计算机,带4GB内存和两块1GB的显卡。在采购时,笔者并没

有指定操作系统版本,还以为他们会安装64位版本的Windows Vista,但是实际上安装

的是32位版本,结果Windows只能访问2.2GB的内存。安装64位Windows后,我们

可以在Meminfo的结果中看到从8FEF0000到FFFFFFFF存在如此大的内存空洞:

设备管理器显示,在2GB的内存空洞中,有512MB是显卡所占用的(每块显卡占用

256MB),看起来设备固件保留其他更多的动态映射内存:

哪怕计算机只有2GB内存,在32位Windows中也无法使用所有的内存,因为芯片

组会为设备强制保留一部分内存范围。我们的一台家庭公用计算机,几个月前从一家OEM

厂商那里购买的,显示安装了2GB内存,但是只有1.97GB是可用的:

其中7E700000到FFFFFFFF的物理地址范围是给PCI总线和设备所保留的,理论上

还有最多7E700000字节(1.976GB)的物理地址空间,但是其中还有一些还要给设备内

存所保留,这就是为什么Windows报告说1.97GB。

因为设备厂商需要向微软硬件质量实验室(WHQL)同时递交32位和64位驱动程序,

才能获得驱动程序签名认证,目前绝大多数设备驱动程序能够处理超过4GB边界的物理地

址。但是,32位Windows会继续忽略超出4GB的内存空间,因为很难衡量这样做的风

险,如果没有问题的话,OEM厂商应该转向64位Windows。

使用64位Windows,我们能够完全使用所有的系统内存(SKU的最大限制),而不

管容量多大,如果我们要购买高端游戏计算机,则应该请OEM厂商预装64位Windows。

是否拥有足够的内存?

不管系统拥有多少内存,问题是内存是否足够?不幸的是,我们没有快又准的方法来

确切地了解。这里只有一个大致的办法可以使用,该方法基于对系统“可用”内存的长期

监控,特别是在运行内存密集型负载的时候。如果物理内存没有分配给进程、内核,或者

驱动程序,则Windows会把这部分物理内存定义为可用内存。顾名思义,可用内存可以

在需要时分配给某个进程或者系统。Windows当然会对这部分内存进行最大限度的利用,

会将其用作文件缓存(备用列表),还有存放清零内存(清零页列表),另外,Windows Vista

还会使用SuperFetch功能,把数据和代码预加载到备用列表中,确保今后会使用的代码

和数据,得到优先处理。

如果可用内存变少了,这说明进程或者系统正在大量消耗内存,如果可用内存在相当

长的时间内都接近0,则可以考虑添加内存,有助于增加性能。有很多方法可以追踪可用

内存。在Windows Vista里,我们可以在任务管理器里查看“物理内存使用记录”,以便

间接地追踪可用内存,确认其是否长期逼近100%。笔者的8GB桌面计算机的任务管理器

如下图所示:

在所有版本的Windows中,我们可以使用性能监视器来查看可用内存,只需在

Memory计数器组中添加Available Bytes计数器即可:

我们可以在Process Explorer的“System Information”对话框里查看可用内存的

即时值,也可以在Windows Vista之前的Windows系统的任务管理器的“性能”标签页

里查看可用内存大小。

发布评论

评论列表 (0)

  1. 暂无评论