查看: 73939|回复: 27
收起左侧

[已解决] 说32位系统不能使用4G以上内存的都进来

   关闭 [复制链接]
awangwjf
发表于 2011-8-30 03:24:07 | 显示全部楼层 |阅读模式
本帖最后由 awangwjf 于 2011-8-30 04:17 编辑

铁密度大于水,但铁做的船怎么能浮在水上呢?

先和大家明确一点:
原装正版32位WindowsXP和Windows7是不能正常使用3.5GB以上物理内存的。

如果只是为了确认上面的事实这个贴子就不用发了。

关键的问题是很多坛友由此得出结论:
原版的32位Windows系统是不能识别和使用超过4GB物理内存的
——貌似这也是MS的“官方”说法。

支持这种说法的坛友当然有充分的理论依据:

内存使用是通过内存地址来确定的,32位系统的内存物理地址范围是0到2^32-1,

用Excel算一算,2^32是4294967296,一个整数可以寻址一字节,1024字节=1KB,1024KB=1MB,1024MB=1GB,

除一下,哈,结果正好得4,这难道还会错?


照这个理论我们来看看经典的16位操作系统MS-DOS:
DOS下有640K基本内存一说,算一下2^16,正好是640K,请注意,640K叫做基本内存。

DOS5.0以后可以通过LH命令把用户程序甚至DOS的一部分装到超过640K以上的高端内存区,不使用任何640K以内的内存,实现0内存占用,注意这个LH命令是DOS原生命令。

再看看DOS下的应用软件:
可能有朋友记得很多DOS下的游戏要求2M甚至4M内存才能运行,我记得最后一个DOS版的AUTO CAD内存建议已经达到12M了。

即然系统只能寻址640K的内存,那运行在系统下的软件怎么会要求超过系统寻址范围以外的内存才能运行呢,有点想不通了吧。

有坛友说,你说的那是都是古生代的事了,DOS,我见都没见过,不是由你说么。


那我们就说Windows吧,第一个普及的纯16位的Windows——Windows 3.1

下面是MS官方Windows3.1的安装内存需求:(摘自windows3.1安装说明文件)
Windows 3.1 requires the following minimum configuration:
640 kB plus 256 kB extended memory (1024 kB extended memory preferred; 2048 kB for 80386)

中文意思是:最小640K+256K扩展内存,建议1024KB,386微机建议2048KB


MS不是说的32位系统只能寻址2^32=4GB内存,那16位系统应该只能寻址2^16=640KB内存才对呀?
怎么这个16位的Windows系统会要求最小640K+256K内存,建议1024KB甚至2048KB呢?

实际上windows3.1/3.2(3.2只有中文版,微软一直很看重大陆的)全面普及时大部分是运行在4M物理内存的机子上。

是不是有些冤大头的感觉了。


下面是一些32位windows系统最大物理内存支持说明:(都是微软官网数据)
Windows 2000 Advanced Server的   8 GB of physical RAM 8 GB的物理内存  
Windows 2000 Datacenter Server Windows 2000 Datacenter Server的   32 GB of physical RAM 32 GB的物理内存  
Windows XP (all versions) Windows XP (所有版本)   4 GB of physical RAM* 4 GB的物理RAM *  
Windows Server 2003 (and SP1), Standard Edition Windows Server 2003的(和SP1 ) ,标准版   4 GB of physical RAM* 4 GB的物理RAM *  
Windows Server 2003, Enterprise Edition Windows Server 2003企业版   32 GB of physical RAM 32 GB的物理内存  
Windows Server 2003, Datacenter Edition Windows Server 2003中,数据中心版   64 GB of physical RAM 64 GB的物理内存  
Windows Server 2003 SP1, Enterprise Edition Windows Server 2003 SP1的,企业版   64 GB of physical RAM 64 GB的物理内存  
Windows Server 2003 SP1, Datacenter Edition Windows Server 2003 SP1中,数据中心版   128 GB of physical RAM 128 GB的物理内存  


微软关于windows系统内存使用的说明:
PAE 提高了 IA32 处理器处理大于 4 GB 的物理内存的能力。Microsoft Windows 2000 Advanced Server、Microsoft Windows 2000 Datacenter Server、Microsoft Windows Server 2003 Enterprise Edition 和 Microsoft Windows Server 2003 Datacenter Edition 可以使用 PAE 来利用超出 4GB 的物理内存。若要启用 PAE,需要在 Boot.ini 文件中使用 /PAE 参数。

注意:只有在服务器使用热添加内存设备时,Windows Server 2003 Enterprise Edition 和 Windows Server 2003 Datacenter Edition 才自动启用 PAE。在这种情况下,不需要在配置为使用热添加内存设备的系统上使用 /PAE 开关。在其他情况下,必须在 Boot.ini 文件中使用 /PAE 开关来利用大于 4GB 的内存。

典型情况是,在 Windows 2000 或 Windows Server 2003 下运行的进程最多可以访问 2 GB 的内存地址空间(假设未使用 /3GB 参数),其中一些内存是物理内存,另一些是虚拟内存。运行的程序越多(因而进程也越多),占用的内存地址空间也就越接近 2 GB 这一最大值。

当出现这种情况时,分页进程将显著增加并且会对性能产生负面影响。Windows 2000 和 Windows Server 2003 内存管理器使用 PAE 向程序提供更多的物理内存。这会降低对交换页面文件内存的需要,从而提高了性能。程序本身并不知道实际的内存大小。所有的内存管理和 PAE 内存分配都由内存管理器处理,与运行的程序无关。

当使用 /3GB 参数时,上述信息对于运行的程序有效。要求 3 GB 内存的程序更有可能让其所需的内存有更多部分在物理内存中,而不是在分页的虚拟内存中。这将增强那些能够使用 /3GB 参数的程序的性能。但例外情况是当 /3GB 参数与 /PAE 参数一起使用时。在这种情况下,操作系统将不使用任何超过 16 GB 的内存。此行为是由内核虚拟内存空间考虑导致的。因此,如果系统使用 Boot.ini 文件中的 /3GB 项重新启动,并且系统的物理内存超过 16 GB,则操作系统不使用额外的物理随机存取内存 (RAM)。重新启动计算机时如果不使用 /3GB 开关,将能够使用所有的物理内存。

AWE 是内存管理器功能的一套应用程序编程接口 (API),它使程序能够寻址更多内存 — 超过标准 32 位寻址的 4 GB 内存空间。AWE 使程序能够将物理内存保留为非分页内存,然后将非分页内存部分动态映射到程序的内存工作集。此过程使内存密集型程序(如大型数据库系统)能够为数据保留大量的物理内存,而不必交换分页文件以供使用。相反,数据在工作集中进行交换,并且保留的内存超过 4 GB 范围。此外,超出 4 GB 的内存范围对内存管理器是公开的,并且 AWE 通过 PAE 发挥作用。没有 PAE,AWE 就无法保留超出 4 GB 的内存。

以下是一个 Boot.ini 文件的示例,其中已添加了 PAE 开关:[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE

警告:Boot.ini 文件的内容根据您的配置而异。总之,PAE 是 Windows 2000 和 Windows Server 2003 内存管理器的一项功能,它为请求内存的程序提供了更多物理内存。程序并不知道它正使用的内存中有些在大于 4 GB 的范围内,正如程序不知道它请求的内存实际上是在页面文件中一样。如果向系统添加更多内存,BIOS 可能会认出安装在服务器中的全部物理 RAM,而 Windows 将只能认出部分 RAM。如果服务器具有启用的冗余内存功能或内存镜像功能,则全部剩余内存可能对 Windows 都不可见。冗余内存在某个内存块故障时为系统提供一个故障转移的内存块。内存镜像将内存块拆分为一个镜像集。两种功能都在 BIOS 中启用或禁用,而无法通过 Windows 访问。要修改这些功能的设置,您可能必须参考系统用户手册或 OEM 网站。另外,您可能必须联系硬件供应商。

例如,如果正在运行的系统安装了 4GB 的 RAM,随后又添加了另外 4GB 的 RAM,Windows 可能只识别出 4GB 或 6GB 的物理内存,而不是全部的 8GB。冗余内存功能或内存镜像功能可能在您未知的情况下就在新内存块上启用。这些症状类似于未将 /PAE 开关添加到 Boot.ini 文件时的症状。



基于Windows NT 5的Windows2000系列和Windows2003系列在核心和架构上与桌面版的Windows XP完全一样,如果你懂一些系统知识,用服务器系统做桌面系统用是很不错的。


在DOS和Windows3.1时代,使用大于寻址范围之外的内存是通过himem.sys实现的,这个文件是DOS的一部分。

基本WindowsNT5的Windows2000和Windows2003是通过一种叫PAE的技术实现的。

关于32位XP和Win7不支持4GB以上物理内存,MS官方的说法其实很微妙,说法没错,但用户听了以后往往会得到错误的结论。

MS不让32位XP和Win7支持4GB以上内存不是技术上做不到,而完全是出于商业目的,服务器系统的利润远大于桌面系统。


32位单进程程序在32位windows系统下最高只能使用2G内存(其实是3G),那么在64位windows系统下同样只能使用2G内存。

32位Windows系统使用4G以上内存导致一些驱动蓝屏,是驱动本身的原因,在64位的系统上安装这些驱动同样蓝屏,因为这些驱动不能支持4G以上内存寻址。

我们不能说这些驱动有问题,因为这些驱动的安装环境:32位windows桌面系统是不支持使用超过4G内存的。

但如果就这样把责任推给能使用4G以上内存的32位windows系统,显然是不公平的。


下面是本人机子上安装的三个windows系统,:
Windows2003    32位企业版(使用了MAC美化包)
Windows7       32位 旗舰版 使用了ReadyFor4G补丁
Windows2008R2    微软第一个只有64位版本而没有32位版的操作系统,原版,未做任何修改。



这里还有更多人的应用实例:
http://macleo.iteye.com/blog/1075262
里面有个实例32位VISTA下不用任何第三方软件实现8G内存完美支持。

偶的系统只有MACOSX出过五国,Windows下是求一蓝屏。


其实关于32位系统支持4G内存的话题早已不愿再谈,只是想对某些人说:
不懂不是你的错,不懂还出来坑人就是你的不是了。

评分

参与人数 1经验 +15 收起 理由
HEMM + 15 感谢分享使用心得。

查看全部评分

Faccv
发表于 2011-8-30 07:23:05 | 显示全部楼层
我只想问问,LZ用64位就那么蛋疼?
不知道这是剑
发表于 2011-8-30 07:34:02 | 显示全部楼层
的确,服务器系统微软是没说不能用4GB内存的。包括32位WIN2003
yunnl
发表于 2011-8-30 09:55:54 | 显示全部楼层
x64用着好好的。。。
Violet_2012
发表于 2011-8-30 10:12:24 | 显示全部楼层
无所谓了,期待全面升级,并安装64WIN8

以上
Earic
发表于 2011-8-30 14:16:18 | 显示全部楼层
这里是在问了几位高手下得出的答案,本人完全不明白,有能力的可以去看看:

解释:
XP/win 7 32bit在安装4G内存后会分配其中部分内存作为设备保留的内存地址 剩余部分用户无法直接使用  32bit的XP/Vista也不允许单个程序占用超过3G的内存 这是系统内核的特点  一般显示3G到3.5G不等的内存容量

地址窗口化扩展插件 (AWE) 可以使 32 位操作系统访问大量内存,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存,最多可支持 64 GB 的物理内存 。AWE 由操作系统提供
参考 http://hi.baidu.com/love008_kv/blog/item/8a38b03d85e355cc9f3d620e.html

评分

参与人数 1经验 +3 收起 理由
HEMM + 3 感谢解答: )

查看全部评分

起个好名字
发表于 2011-8-30 15:07:27 | 显示全部楼层
3G和4G差别不大
风之雪
发表于 2011-8-30 15:10:01 | 显示全部楼层
好长啊...看得我晕     不过就差1G 不用太计较 ....用64位也可以0 0
jixiang8821
发表于 2011-8-30 15:13:35 | 显示全部楼层
是有4G补丁的这个知道~4G不是突破8G才是~
amtf000
发表于 2011-8-30 19:10:53 | 显示全部楼层
不明白,4G内存为什么不上64位的系统,现在的软件不是太老的,基本上都支持64位的win7.
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-6-30 14:27 , Processed in 0.156360 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表