主题:【求助】有必要升级到Windows 7吗? -- 重庆老牛
这个好像是32位操作系统的缺陷造成的,多出来的部分只能做虚拟盘或磁盘缓存等,并不能被程序直接用到(确切地说,是使用PSE或AWE API编写的程序才能直接申请到这部分内存,前者如ramdisk等,后者目前只有SQL Server等少数程序)。如果某程序由于内存不够不能运行或运行不畅,通常解决办法有:
1. 使用3GB模式启动操作系统。
2. 使用64位操作系统。
个人觉得64位系统才是王道,但这个也只是对如3dmax等大型软件来说的。
我从测试版一直用到现在
所以如果内存是4G,补丁应该不需要了,不过还是需要硬件支持。4G以上还是推荐32位的2003或者64位系统。
打了补丁是可以被应用程序使用的。至于ramdisk那只是把系统不能识别使用的部分内存虚拟成一个分区供存储文件,而不是把这部分空间直接让程序使用。
所谓32位OS只能识别使用4G内存的说法其实有误。否则那DOS那就只能识别1M了哦?
win2003 dataserver版本最高好像是支持32G. 所谓“限制”不过是ms自己的限制罢了。
当然64位是必然潮流。
如果兄弟内存超过3G,那么先运行其中的一个reg文件然后再安装。安装过程中会让你选择虚拟出分区类型,你选择fix disk。容量你可以先选择1G,这样当重启之后你看任务管理器中可用内存是否变少了——应该不会少很多。因为系统只能识别3.2G左右,你是从4G挖取1G,那么其中800M都是3.2之外的。
重启之后可以把IE/FF的临时文件指向 虚拟盘(最好是其中的temp目录)。还可以把系统环境变量TMP/TEMP也指向虚拟盘,不过虚拟盘得大些(至少1G),不然解压大文件,或者安装大程序时虚拟空间会不够的。
我甚至开了几百M的虚拟文件—虽然4G内存够大可以不用系统交换文件,在虚拟盘上面开交换文件有多此一举的嫌疑但有些软件需要交换文件而且你也不可能真正禁用windows的交换文件的(系统会给你偷偷再建立一个)。
对于普通32位Windows程序来说,使用的几乎全部是用WIN32 API,而后者的编程模型限制了最多只能使用4G线性内存地址,其中2G为操作系统使用,2G为应用程序使用(实际不到2G,只有1.7G左右),如果使用3GB模式启动操作系统,可以改成操作系统1G,应用程序3G。如果采用AWE API是可以申请到4G以上(就像DOS下通过DPMI接口可以申请到16M内存,这个接口Windows还在支持),但是无疑这样对开发是不利的,因为很少有类库支持这个API,现在手动分配/释放内存几乎是程序员的噩梦。
对于32位超过4G(其实是3.25G或3.5G)的大内存的使用,通常有几种:
1. 象你说的,用作虚拟盘,这种需要在驱动程序级别实现,实际上会造成所有I/O操作需要二次定位,对系统性能有不利影响。
2. Server Integration,可以把多个应用程序装载到不同的4G虚拟空间去,这样可以减少内存频繁分页造成的性能降低。这个是操作系统如2003 Ent自动完成的。
3. 用作Cache或数据缓冲区,如SQL Server,Oracle等可以使用AWE API申请到超过4G的内存用作缓冲,目的也是为了减少分页。
32位程序使用超过4G内存作为普通内存使用是有很大限制的,如进程通讯/共享,I/O等,所以用处不是很大。而且对于桌面系统来说,即使支持Server Integration,但在把所有内存装满之前,CPU已经不堪重负。
桌面系统中需要大内存的通常都是设计类和科学计算类软件,如3ds max等,对这类软件来说,恰好是64位计算的强项,在32位下很难搞得向64位那样好。
综上,桌面系统32位即使能使用大内存也没太大意义,通常的桌面操作如文字处理,上网聊天等4G以下已经足够,XP SP2以上已经最多能用3.5G,利用率已经很高了,实在不甘心把剩下的部分做个虚拟盘之类也不错(这个是微软原生支持的,使用的是PSE技术,硬件上从pentium pro开始就支持,那个修改版的ramdisk也是基于微软自带的程序);如果是做设计64位才是王道。(游戏另说,不知道大内存对32位游戏是否有质的帮助)。