如何配置内存 何宗琦 1997-01-01   一台微机的物理存储器总是一定的(当然可以扩充)。而上一期介绍的各种内存的大小,除基本内存外,UMB、HMA、XMS、EMS都是可随设置参数的不同而改变的。各种应用软件,对内存的使用不完全相同,有的软件要求使用XMS,有的要求使用EMS。   设置内存的各个区域及其大小通常是在系统启动时执行CONFIG.SYS文件完成的。在CONFIG.SYS文件中用于内存管理的命令只有三条:   DEVICE=[路径]HIMEM.SYS[参数]   DEVICE=[路径]EMM386.EXE[参数]   DOS=〈参数〉   但是这三条命令的使用方法并不简单,特别是参数的选择将直接影响内存区域的建立和范围大小。由于没有哪种设置能满足所有软件的使用,所以通常在CONFIG.SYS中采用多种设置,并用菜单方式进行选择,以便不同的应用软件能在不同的内存环境下工作。下面分别介绍三条命令的使用。 #2  1.HIMEM.SYS   HIMEM.SYS作为XMS存储器的管理驱动程序,它的主要功能是把扩展存储器按XMS规范来管理,也就说,它把传统的扩展存储器改造成了XMS存储器。因此,只有用XMS规范编写的程序才能使用XMS存储器。此外,HIMEM.SYS可以建立HMA存储器供使用。HIMEM.SYS命令的格式是:DEVICE=HIMEM.SYS[参数]   DOS 6.2版的HIMEM.SYS提供了10种参数,下面介绍几个主要参数,其余的请参考有关手册。 #3  ●/HMAMIN=m   本参数用于指定一个0~63范围的数m,这个数以KB为单位,表示一个程序文件的长度。只有大于这个长度的文件才能使用HMA内存。如果省略本参数,则HIMEM.SYS自动将HMA分配给首先要求使用HMA的程序。   在同一时刻,只能有一个应用程序使用高端内存HMA。为了最有效地使用HMA,应把本参数的m值设为申请使用HMA的程序中的最大者,以保证HMA得到最大限度的使用。 #3  ●/INT15=memory   安装HIMEM.SYS后,如不用本参数说明,则所有的物理扩展存储器都将纳入XMS管理而成为XMS存储器。此时传统的扩展存储器不再存在(用MEM命令观察可看到“0 Bytes available configurous extended memory”)。这将使得那些需要用BIOS INT15来调用传统扩展内存的早期软件无法运行。本参数的目的就是保留一定容量的传统扩展内存,以便可以使用旧版软件。本参数中memory表示所保留的容量,以KB为单位。取值范围为64到65535,但最大不能超过系统的物理扩展存储器的容量。   一般说来,在DOS 5.0之后出版的软件,凡需要使用1MB以上内存的,大都支持XMS。 #3  ●/CPUCLOCK:ON|OFF   安装HIMEM.SYS之后,如发现计算机的时钟速度改变,则应指定本参数为ON来解决,本参数的缺省值为OFF。 #3  ●/TESTMEM:ON|OFF   这是DOS 6.2以上版本提供的新参数。启动计算机时HIMEM将检测扩展内存,由于它采用了读写比较的方法,因此与上电自检内存相比更为彻底。但是这项检查将使启动时间加长。 本参数的缺省值为ON,如要缩短启动时间,可设置本参数为OFF。 #2  2.EMM386.EXE   EMM386.EXE是EMS的管理驱动程序。它的功能是把XMS存储器模拟成EMS存储器来使用,并且建立UMB存储器。由于EMM386.EXE的扩展名使用了EXE,所以它是一个外部命令,可在DOS下执行。但EMM386.EXE一般还是在CONFIG文件中使用,其格式为:   DEVICE=EMM386.EXE[参数]   EMM386.EXE提供了二十多个参数,下面介绍最常用的几个。 #3  ●ON|OFF|AUTO   ON表示激活EMM386.EXE驱动程序,OFF表示挂起EMM386.EXE程序,AUTO表示仅当有程序请求时,才支持EMS内存和UMB内存。   本参数用在已设置EMM386.EXE,但未设置UMB的情况下,即CONFIG文件中的命令行为:   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:\DOS\EMM386.EXE   在DOS下再直接执行EMM386.EXE并配合这些参数可改变EMM386.EXE的工作状态。   C:\>EMM386 OFF   取消EMM386功能   C:\>EMM386 ON   恢复EMM386功能   C:\>EMM386 AUTO   设EMM386为自动状态 #3  ●memory   本参数是一个数值,取值范围为64到32768,以KB为单位。表示要配置给EMS的存储器总量,缺省值为256KB。例如,将1024KB模拟为EMS存储器,CONFIG.SYS文件中的命令行应写为:   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:\DOS\EMM386.EXE 1024 #3  ●NOEMS   本参数表示只提供UMB存储器,但不建立EMS存储器。CONFIG.SYS文件命令行应写为:   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:\DOS\EMM386.EXE NOEMS #3  ●RAM=XXXX-XXXX   本参数表示同时建立UMB和EMS存储器。XXXX-XXXX表示指定建立UMB的段地址范围。如不指定段地址范围,则EMM386将把保留内存区中所有的可用空间用来建立UMB及一个页框。通常,可以不指定UMB的段地址以获得更多的UMB空间。   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:\DOS\EMM386.EXE RAM #3  ●L=minXMS   本参数的L是Least(最少)的意思,minXMS是一个数字,以KB为单位。表示在执行EMM386.EXE时,至少要保留多大容量的XMS不被模拟成EMS。这样在执行EMM386.EXE后,内存中仍有指定数量的XMS存在。如要求至少保留384KB作为XMS,CONFIG.SYS命令行应写为:   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:|DOS\EMM386.EXE L=384 #3  ●X=XXXX-XXXX   本参数的X是eXclued(不包含)的意思。XXXX-XXXX为段地址范围,表示禁止EMM386把指定的范围作为EMS或UMB,其目的是为了防止发生冲突。 #3  ●FRAMEX=XXXX   本参数用以指定实际的64KB页帧(或称为页框)的范围。取值范围为8000-9000和C000-E000之间。例如,选页帧在E000-EFFF范围,DE00-DFFF范围不能作为UMB,则CONFIG.SYS的命令行应写为:   DEVICE=C:\DOS\HIMEM.SYS   DEVICE=C:\DOS\EMM386.EXE RAM FRAME=E000 X=DE00-DFFF #3  ●I=XXXX-XXXX   本参数中I是Include(包含)的意思。XXXX-XXXX是段地址范围,表示该范围内的地址空间可用作UMB。其意义正好和X参数相反。如果X参数和I参数指定的范围重复,则以X参数有效。I参数一定要与NOEMS和RAM参数一起使用才有效。例如:   DEVICE=C:\DOS\EMM386.EXE NOEMS I-E000-EFFF   在设置中,一般都希望获得较大的UMB,以便驻留TSR程序,留出更多的基本内存供用户程序使用。 #2  3.DOS   DOS命令的功能有两个:   (1)把DOS系统的核心部分由基本内存搬到HMA中,从而腾出空间供用户使用。   (2)与UMB建立联系,以便装载TSR程序或设备驱动程序到UMB中。   DOS命令的格式为: #3  ●DOS=HIGH/LOW   表示把DOS核心部分装入UMB(选HIGH),还是装入基本内存(选LOW)。缺省值为LOW,一般应选HIGH。 #3  ●DOS=UMB/NOUMB   表示DOS将与UMB建立联系(选UMB)或不准许使用UMB(选NOUMB)。一般应选UMB。可把两行命令合为一行,参数间用逗号间隔。   如:DOS=HIGH,UMB   在系统启动时,DOS自动设置缓冲区数目Buffers的值为15,每个Buffers占523字节。随着DOS=HIGH的执行,Buffers也随DOS的核心程序移到HMA中,这当然是好事,但是如果用户自己设定的Buffers太大,如超过47个,则HMA装入DOS核心后的剩余空间无法容纳,就把全部Buffers移至基本内存中,这将得不偿失。   在CONFIG.SYS文件中,HIMEM.SYS命令行应放在EMM386.EXE命令行之前,DOS命令行可随意放在任何位置。