(本文由作者译自其英文博客原文

正如我们知道,每次当我们在计算机上运行应用程序的时候,操作系统会把程序从硬盘加载到内存中,然后根据内存里的数据来执行指令或者进行运算。大多数操作系统(如XP, Vista)可以让用户同时处理多个任务,并且可以同时执行多个应用程序。为了最大限度的利用内存,操作系统只会把应用程序当前使用的部分代码和数据加载到内存中。每当应用程序需要用到那部分不在内存的代码或数据时,操作系统就会产生一个内存页面异常,并开始把所需的代码或者数据从硬盘加载到内存中。很明显,整个过程会降低应用程序的性能,因为把数据读取到内存中需要些的额外时间。更糟糕的是,如果内存中没有可用空间了,操作系统会根据算法挑选一些内存页面,把其中的内容写回硬盘,然后再把所需要的数据加载到这些页面中。所以,内存的大小是一个影响计算机性能的关键因素。内存越大,越多应用程序和数据可以被加载在计算机内存里,然后计算机可以更快得运行。

目前来说,内存的价格越来越低,用户也愿意通过增加更多的内存来提高计算机的整体性能。但是,多少内存是合适的呢?以一个大多数人使用过或者正在使用操作系统来说,例如32位XP或Vista,操作系统只能获得总额为232的地址空间; 也就是说4GB是它的上限。那么是不是用户只要插上2根2GB的内存,就可以直接使用4GB的内存了?

当我们插上4GB的内存后,再重启计算机和进入BIOS之后,我们可以看到已经识别的内存大小是4096MB。到目前为止,一切都很顺利。我们可以更进一步确认这4GB内存已经被操作系统识别到了。在Windows启动后,通过选择“电脑”,然后右击它,然后选择属性,我们应该能在屏幕上看到 “内存 (RAM):”是4.00GB的(见下图)。这样从另外一个方面证实,32位的操作系统能够支持高达4GB的内存。

clip_image002

目前来说一切都正常。不过,让我们再看看Windows Task Manager。首先,打开Task Manager,然后单击Performance属性页。

clip_image004

我们可以看到物理内存 (MB)的数值是3566MB,而不是4096MB。 那么剩下的530MB到哪去了呢? 为什么BIOS和系统属性,和Windows Task Manager给出的数值不一样呢?

其实这两个值, 4GB和3566MB,都是对的。4GB是安装在计算机上内存总量,而3566MB当前可以使用的内存总量。换个说法,操作系统分配了3566MB的地址空间给内存。对于多出来的530MB,操作系统没有相应的物理地址来对其进行读写操作。

理论上说, 32位操作系统支持232的物理地址空间(4GB),从0x00000000到0xFFFFFFFF。但并非所有的地址空间都被分配给了内存。其他设备,比如显卡或USB控制器,也需要占用地址空间。比如说,一块带256 MB显存的显卡,操作系统也需要指定一段地址空间范围分配给显卡上的显存,然后才可以对它进行读写。

我们可以通过Device Manager来查看地址空间是如何分配给所有设备的。打开Device Manager中,然后在View菜单里选择”Resources by type”。从这个窗口(见下图) ,我们可以清楚地看到所有物理地址空间从0x00000000到0xFFFFFFFF已经分配给计算机上所有的设备 。Device Manager没有具体标出内存所占用的地址空间,但它存在于一些以System board命名的空间段。

clip_image006

为了验证这点,我们可以通过运行一个叫MemInfo.exe的应用程序 (http://www.winsiderss.com/tools/meminfo/meminfo.zip)。 从结果上我们可以知道有3段地址范围分配给了内存。如果我们把这3个数值加在一起(然后转换成MB),我们可以发现,操作系统拨出3565.35MB的物理地址空间给内存。这个数值和Windows Task Manager上的一样。

clip_image008

所以,如果用户想要充分利用4GB或者更多的内存,可以考虑从32位转到64位的操作系统。

邹少颖