随着科学技术的进步,计算机有了突飞猛进的发展,特别是高速CPU及大容量内存的引入,使得微型机的处理能力有了巨大的提高。但是就在这种情况下,当运行某些程序时,系统却会出现“内存不够”的提示。难道真的是内存不够吗?现在具有内存优化功能的程序越来越多,如何运用才能达到最佳优化效果?看来,这得需要我们认识一下内存及其相关知识了。
下面就以微型计算机中的主流机型——PC机为例,重点说明。
认识内存
在PC机中,内存主要指RAM(Random Access Memory,随机存取存储器)。程序只有装入内存中方可运行。
一、内存种类及标准
PC机中常用内存有两种,一种是DIP内存芯片,一种是SIMM内存条。DIP内存就是普通的DRAM(动态随机存取存储器)集成块。一个SIMM(Single in-line Memory Module)内存条,是由几片DRAM集成块组成的小印刷电路板。现在,PC机中以使用SIMM内存条最为常见。
SIMM内存条通常有以下几个标准:
(1)容量
内存条的容量主要有:256kB、512kB、1MB、4MB、8MB、16MB等几种,其中以1MB、4MB最为常见。
(2)线数
对于内存条主要有30线、72线两种,其中256kB、512kB、1MB的多为30线,其数据宽度为8位(含奇偶校验功能的为9位):4MB、8MB、16MB的多为72线,其数据宽度为32位(含奇偶校验功能的为36位)。
(3)速度
内存条速度是指内存条上DRAM芯片的存取数据时间。常见的有60ns、70ns、80ns、120ns等几种。在内存条速度的选取上,一定要兼顾主板速度,过高过低都会影响整个系统,只有相互匹配才能发挥最大效率。
(4)奇偶校验
有些高档内存条具有奇偶校验功能。这类内存条所含芯片数量多于普通内存条。如,普通2片条,带奇偶校验后为3片条;普通8片条,带奇偶校验后为9片条。内存条有了奇偶校验功能后,可保证某些软件运行的准确性。
二、内存空间分布
对于PC机,其内存空间根据规则可分为不同的几块。
(1)常规内存(Conventional Memory):
常规内存是位于内存0kB至640kB间的一块空间,这是绝大多数程序运行的空间,是DOS可直接管理的空间。
(2)保留内存(Reserved Memory)
保留内存位于640kB至1MB间的区域,它是留给系统用来存放有关硬件信息的空间。如,视频缓冲、系统BIOS等。常规下程序不能在这一空间存储信息,所以在PC机的内存总量内一般不包括这一部分。
(3)UMB(Upper Memory Block,上位内存块):
虽然在640kB至1MB间的区域是留给硬件使用的,但其中有一部分是空闲区。在CPU为386SX以上的机器中,采用某些措施可以将这部分空闲区映射为机器内存,这样一些DOS程序可在其中运行。对这部分内存称为上位内存块—UMB。
(4)扩展内存(Extended Memory):
扩展内存是内存中1MB以上的区域。凡符合XMS(Extended Memory Specification扩展内存规则)的程序可使用这一空间。
(5)扩充内存(Expanded Memory):
在640kB至1MB中开辟一个连续、空闲的空间为64kB的区域,再以其为窗口,采用映射技术,对640kB以上的空闲内存进行访问直至32MB。凡符合扩充内存规则(Expanded Memory Specification)的程序可访问这一空间。
(6)HMA(High Memory Area,高位内存区):
HMA是在1MB以上开始的第一个64kB区域,这一块内存有着特殊的性质,DOS(5.0版以上)可以在XMS或EMS下访问它。
三、内存Cache(内存高速缓冲)
在486SX档以上PC机中,有一块特殊内存,它可以提高CPU与DRAM内存间的数据交换速度。这一块内存采用非常高速的静态RAM(SRAM),其速度比DRAM内存快得多,对于这种内存称为内存Cache。
在高档PC机中内存Cache容量一般有:8kB、16kB、128kB、256kB几种。内存Cache有两种类型,其中8kB、16kB的多在CPU内部,称为片内Cache;128kB、256kB的位于CPU外部,称为片外Cache。如果有片外Cache,则开机自检时会报告出“ ×××kB Cache Memory”字样。内存Cache工作时,总是预先把CPU可能处理的数据装入其中,之后CPU再查找需要的信息。对于CPU需要的信息落在内存Cache中的情况,称之为“命中”,其几率称之为“命中率”。一般来说,内存Cache越大,命中率越高,对系统性能的提高越明显。
对于内存Cache是否能正常发挥效率,还需依赖于系统整体的匹配性,和所运行程序的情况;这对于兼容机尤为明显。不合理的系统配置,内存Cache的引入还会使得机器频繁死锁。
内存优化
内存优化的核心就是释放尽量多的常规内存。访问640kB以外的内存空间;以及利用内存来加快系统速度。
本文选用 DOS(5.0版以上)所提供的内存优化程序,对具有至少2MB的内存进行优化。
一、将DOS内核装入HMA
由于HMA位于1024kB至1088kB间,超出DOS的管理范围,因此需“激活”扩展内存或扩充内存后才可使用。
在DOS中提供了管理扩展内存的程序HIMEM.SYS。利用这一程序可开辟扩展内存。之后将DOS内核驻留HMA中,这样可节省宝贵的常规内存。
另外,也可以在扩充内存中开辟HMA。在DOS中提供了扩充内存管理程序EMM386.EXE。由于EMM386.EXE是用扩展内存来模拟扩充内存的,所以在使用扩充内存前,必须先用HIMEM.SYS建立扩展内存。
举例说明,在CONFIG.SYS文件中,输入以下命令:
(1)DEVICE=C:\DOS\HIMEM.SYS ---*1
DOS=HIGH ---*2
* 1:开辟扩展内存。
* 2:将DOS内核驻留HMA中。
(2)DEVICE= C:\DOS\HIMEM.SYS ---*3
DEVICE=C:\DOS\EMM386.EXE ---*4
DOS=HIGH ---*5
* 3:开辟扩展内存。
* 4:将扩展内存模拟成扩充内存。
* 5:将DOS内核驻留HMA中。
二、将TSR(驻留内存程序)安装到UMB中
运行TSR程序时总是占用大量的常规内存,特别是对于经常使用的TSR,这种占用对其它程序正常运行的影响尤为明显。而大多数的TSR又有可在UMB中运行的机制,因此可以将其装入UMB中。
已经知道EMM386.EXE可以管理扩充内存,其实它还有另外一个功能:对UMB的管理。EMM386.EXE在管理UMB的同时,可以打开或关闭对扩充内存的管理,这取决于对NOEMS和RAM“开关”的选择。但不论选择何种方式,EMM386.EXE只有在扩展内存的基础上执行管理功能。
举例说明,在CONFIG.SYS文件中,输入以下命令:
(1)DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM ---*6
DOS=HIGH, UMB ---*7
*6:打开 EMM386.EXE对扩充内存和UMB的管理功能;这时内存被开辟为扩充内存。
*7:将DOS核心装入HMA中,并且建立起DOS与UMB的联系。
(2)DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS ---*8
DOS=HIGH, UMB
*8:只打开EMM386.EXE对UMB的管理功能;这样内存被开辟为扩展内存。
例(1)和例(2)同样开辟出了UMB,但空间是不一样的。例(1)得到的UMB将小于例(2)的。
UMB开辟出来,下一步就应该装入TSR了。将TSR装入UMB的命令为LH(toadHigh),可在批处理中进行。这一步工作用户要特别注意。由于UMB空间可能存在着不连续性,以及TSR驻留后的不可执行性,所以要经过多次实验才可得到最佳效果。
三、充分利用扩展内存或扩充内存
用户开辟出扩展内存或扩充内存后,在内存空间足够大(至少2MB)的前提下,可以将其部分转化为某些特殊区域,以提高系统的运行速度。
1.建立磁盘Cache(磁盘高速缓冲)
磁盘Cache不同于内存Cache,它不是PC机固有的,需要用管理程序从内存中开辟。
磁盘Cache是将程序欲读取的信息装入其中,因此同内存Cache一样也存在命中率的情况,且空间越大效率越高。其开辟的最小空间为256kB,而最佳空间为2MB。由于磁盘Cache的空间很大,所以只有在扩展内存或扩充内存中开辟方可有效。
由于内存的读取速度远高于磁盘,所以开辟了磁盘Cache可以大大提高系统速度,同时还可减少对磁盘的频繁读取,从而提高磁盘使用寿命。
可以实现磁盘Cache的程序很多,有Smartdry(DOS、 WINDOWS提供), PC-Cache(PC TOOLS提供),Ncache(Norton Utilities提供)。如果已开辟了UMB,还可以将程序驻留其中,而不占用常规内存。
举例说明,可在AUTOEXEC.BAT文件中输入以下命令:
C:\DOS\SMARTDRV.EXE 1024 ---*9
* 9:开辟了一个1MB的磁盘Cache。如果有UMB,则管理程序SMARTDRV.EXE(包括PC-Cache、Ncache)将自动驻留其中。
另外,当有些程序不允许使用EMM386.EXE,即无法得到UMB时,可在Smartdrv、pC-Cache、Ncache之间分别进行运行测试,以找到在开辟同样大的磁盘Cache空间下,占用常规内存最小者。
2.建立RAM盘(虚拟盘)
RAM盘是用内存去模拟物理磁盘,所以对它的操作要快于硬盘,这样也起到提高系统速度和磁盘寿命的作用。
对RAM盘的操作同物理磁盘是完全一样的,但有一点须特别注意:关机或掉电RMA盘中的信息将丢失。所以在此之前,必须将其中内容拷贝回物理磁盘中。在这里建议使用RAM盘的最好方法:
(1)用来存储程序运行时产生的临时性文件:
这需要用DOS的SET命令设置一个TEMP的环境变量,其指定路径为RAM盘。采用这一方法可提高程序的运行速度,以及节约磁盘空间和简化操作。
(2)在某些情况下,用作软盘间文件拷贝的中转站。
开辟和管理RAM盘的程序有RAMDRIVE.EXE等。同样RAM盘只有开在扩展内存或扩充内存中才有效。
举例说明,在 CONFIG.SYS文件中输入以下命令:
DEVICE=C:\DOS\RAMDRIVE.SYS 512/E ---*10
*10:开辟了一个512kB的 RAM盘。 RAM盘符是最后一个物理盘符后的字母。如,物理盘符有:A:,B:,C:,则RAM盘符为D:。
为了让RAM盘(假设盘符为D:)存储临时性文件,可在AUTOEXEC.BAT文件中输入以下命令:
SET TEMP=D:\ ---*11
*11:设置TEMP环境变量,指定路径为RAM盘。
内存作为程序活动的空间,提高它的配置和利用效率,可充分发挥PC机的整体性能。可以肯定,今后有关这方面的技术会有新的发展,使用户对内存更易使用,更易管理。(张险峰)