【doc】如何使用扩展内存和扩充内存
如何使用扩展内存和扩充内存 1994年1月
第卷第1期
四川师范大学(自然科学膜)
JournalofSichuanNormalUniversity(NaturalScience)
VoI.17,No.1
Jaa..1994
c7一如何使用扩展内存和扩充内存
吴明史亘
(敦学熏)
T~333
【摘要】奉文主要讨论了DOS扩展的有关技术,支持软件使用方法和范圈.这有助于
充分刺用计算机资镯【,扩大应用程序曲处理能力.
关键调bOS.扩匿内存,扩充内存.高速缓存,保护方式.实方式
中囝分蜒哥—菌丙;;,一
286以上的机器都配置了1MB或1MB以上的扩晨存储器,但一般用户是无法对其寻址的.而
它最适合存放较大的程序.如汉字点阵的库文件等.且不与用户争用常规存储器.这样就可为用户
挤出十分可观的存储空间.比如一个使用了扩展存储器的汉字操作系缀只占用几十K的常规存
储器.否则会占用300K左右的常规存储器.?
有人认为内存越大越好.其实非并完全如此,关键是如何充分利用这部分扩大了的内存.计算
机能使用多大的存储器是设计进CPU的,多年来,绝大多数用户都是在Ms—DOS的640KB常规
内存的限制下工作的,因而造成了严重的存储器管理问
.而在高档微机上,大都配有2~16MB的
内存,如何才能解决这类硬件配置与DOS不匹配的问题.这对于新型CPU功能的发挥,对于越来
越大的应用程序网络程序和相应的数据应用等.都是一个巨大的障碍.为了充分利用IMB以上地
址的内存空间资|醣c.克服DOS"实方式"的局限性,人们想了很多办法,但最有效的办法是将处理器'
推入"保护方式"下才能象使用常规内存一样有效地使用这部分空间.在需要DOs服务时再返回实
方式.现就有关问题介绍如下.'
】内存管理
早期的8086/8088处理器寻址空间为1MB字节,80286以上的CPU其寻址空间可达16MB
字节,80386寻址空闻可达4GB字节.早期的8086的1MB寻址存储器的划分如下图所示.
UMB可以通过专门的硬件和内存管理程序找到,构成uMB,并在实方式下访问.HMA只能
在80286以上的机器使用,也可在实方式下访问.而EMB是在扩展存储器中分配的,只能在保护
方式下访问.
对于286以上的机器,其开头的1024K字节分配同下图.当内存超过640K时,则情况就有所
不同.当RAM?1MB时,上部内存的分配方案就可能有好几种.可以按EMS,XMS任一种或两种
同时增加内存,但在使用时是有差别的,且必须符合由LIM制定的扩充内存规范3.0,3.2EMS
(ExpandedMemorySpecification).1987.10又推出EMS4.0版.它支持4倍于3.2版的扩充内存,
或XMS(ExtendedMemorySpecification)2.0版(已有3.0版)的规范.
收稿日期l993—05—18
第1期吴明炬如何使用扩喂内存和扩充内存
000000H
010000H
OA0000H
i00000H
l10000H
FFFFFFH
低位内存__
常规内存6-
0K
(Conventional MemorY)—
UpperMemory—
Blocks(UMB)jB4K ,上部内存_—_L''
HighMemory- Atea(HMA)64K 高位内存一
EMB(t'Id"
memoryblocks)f f&Jff,
也叫DOS低区,低端内存,基本1 内存,基本RAM640K,自由内J ?
l竹I
l岫
也叫DOS高区或扩充内存I
(EMS),ROM,高端内存,l
384K,BIOS内存或适配器内存..J
IMB以上叫扩展内存(XMS),也
可为扩充内存或两者兼而有之.
使用EMS扩充存储器的程序并不能直接存取扩展存储器的信息,因它是在CPU地址空伺以
外的存储空间.解决的办法是:采用页面切换及内存映射技术通过把EMS扩充存储器分为若干个
16K的段(叫做一个页面).从非DOS寻址的区域映射到第一个IMB字节的上部存储器地址上实
现寻址,它最大可访问8MB的EMS内存.对EMS3.0和3.2版每页的长度为16K.4.0版允许分
配其他长度的页,为兼容起见,最好不使用这个功能.由于EMS扩展存请器管理程序只允许一次
访问有限的信息,因此它的使用比较麻烦.速度较慢,应优先选用XMS. PC286,386,486都可使用XMS,它通过用专门的指令对处于较高地址的扩展存储器寻址,可
获得较高的速度和效率.但对于扩展存储器的使用不象使用常规内存那样简单,方便,不能直接使
用,而必须经过一些处理,转换.常使用户感到不便
2使用扩展存储器的环境和条件
在目前虽然可以通过EMS来使用扩展存储器,但必须具备下列的一些基本条件; I)要求内存?IMB的PC286,386,486及其兼容机.在PC286,386上使用扩展存器,必须增加
物理内存,为使性能更好,应把扩展内存与系统内存物理上一起放在PC母板上.如母板上没有额
外的存储器位置,可加一块内存适配板,并将其部分或全部配置成扩展存储器; 2)在MS--DOS3,3以上,DRDOS5.0,6,0以及OS/2,UNIX等操作系统的支持下使用;
3)在Windows3.0,3.1支持下使用;
4)用SETuP程序直接设置;
5)需要驱动程序扩展内存要求既要有存储器管理软件EMM,如HIEME.SYS或QEMM.
SYS等,用来管理系统或应用程序对扩展内存的访问;又要有硬件(扩展内存适配板)的支持;
6)尽管提供给用户的界面相同,但不同的机器有不同的EMS(依赖于机器的硬件结掏),因它
与系统使用的扩展存储器板有关.
3使用扩展,扩充内存的方法
如何真正用好640K内存?MS—DOS,DRDOS,Windows等提供了一系列技术以压鳍操作系
统本身所占的常规内存,如:将各种设备驱动程序(鼠标,网络驱动程序等),DOS内核驻留程序等
安排到常规内存之外;另外.还可在某种条件下把显示缓冲区不用的内存块也连接至常规内存,使
lOO四川师范大学(自然科学版)17卷
640K的常规内存能真正供用户使用.使用方法如下:
1)将扩展内存设置成一个虚拟盘,把一些原放在常规内存的程序放到扩充内存中,这是最常用
的一种方法.如;将一些大程序如中文DOs的l6点阵中文字库或其他应用程序放到虚盘中.节
省常规内存的空间留作它用.使用时应对Config.sys文件作适当的配置.例: ?一台PC286主机,IMB内存,在MS--DOS3.30下,其Config.sys设置如下: DEVICE=c:\DOS\ANSI.SYS使用扩展键盘管理模块}
DEVICE=C:M)OS\VDISK.SYS38451264/E开虚盘384K空间; FILES=20
?一台AST386主机,4MB内存,在MS--DOS5.0下,其C0nfig.sys的设置为: DEVICE=C:',DOS\ANSI.SYS
DEVICE=HIMEM.sYs扩展内存管理;
DOs=HIGH将DOs放在高位内存;
DEVICE=RAMDRIVE.SYS3072/E开虚盘3072K空间}
FILES一20
@在网络中使用
在DOS3.30以上应用RAMDRIVE.SYS(代替VDISK.SYS),Config.sys设置为: DEvICE—C:\HIMEM.SYS
DEVICE=C:\ANSI.SYS
DEVICE=X:kRAMDRVICE.SYS38451264/E FILES一30
BUFFERS一30
2)利用DOS提供的设备驱动程序来使用扩展内存
?在Ms—DOs5.0下使用
为了更有效地使用扩展丙存,DOS5.0提供了两个可安装的存储器管理程序HIMEM.SYS
(286)和EMM386.EXE(386,486系统)来使用XMS.但它需要有EMS和EMM内存管理软件才
能真正使用起来.EMM386.EXE可在386以上的机器中,用XMS仿真EMS. A.HMA的使用HIMEM.SYS提供了HMA的管理,DOS5.0可将自身的一部分装入
HMA,从而增加常规内存的可用空间.安装时可直接将HIMEM.SYS或EMM386.EXE拷入c:
盘根目录下,然后建立Config.sys文件,其设置如下:
DEVICE=C:\DOS\SETVER.EXE
FILES=30
BUFFERS=20
SHELL—C:',DOS\cOMMAND.COMC:\DOS/\P DEVICE—c;\DOS\HIMEM.SYSC假设HIMEM.SYS在C:\DOS子目录中]]286以上内存
DoS—HIGHJ?lMB时
B.UMB的使用为了在386及386SX以上的微机中,使用EMM386.EXE程序来管理UMB
和仿真EMS,必须在Config.sys文件中设置如下命令:
DEVICE—C;\DOS\HIMEM.SYS
DEVICE=Cl',DOS\EMM386.EXECMemory3[RAM][NOEMS]
DOS=UMB用于386或486机,可建立基本内存与高位内存的联系.
第1期是明炬,如何使用扩展内存和扩充内存l0l
EMM386.EXE必须在HIMEM.SYS已装入的情况下运行.MEM0RY指定要分配给 EMM386.EXE的以KB为单位的内存数量,缺省值为256;RAM参数规定可以存取EMS和
UMB;N0EMs则规定只存取UMB,若用户很少或不用EMS,可使用N0EMs开关和缺省内存
值.
然后用DEVICEHIGH命令将设备驱动程序装入.可用LOADHIGH或LH命令将应用程序
或内存驻留程序装入UMB,内存高端空问不够再驻留基本内存.使用386以上机器的用户应尽可
能地使用UMB,从面可使普通应用程序获得更多的内存空间.与此同时,应适当地修改配置文件,
否则,由于有的程序不能运行而导致系统无法启动或产生死机. 此外,还可用MEM外部命令及c,D,P开关,获得常规内存和扩展内存分配情况的报告.
@在DR6.0下使用
DRDOs6.0提供了2个设备驱动程序HID0s.SYS(对286机),EMM386.sYs(对386以上
机器)以支持上述提到的上部内存,高位内存,EMS,XMS等的使用.这两个驱动程序可通过
DRDOS的INSTALL或SETUP程序很方便地设置和安装,在Config.sys中加入有关的安装命令
和相应的参数,以最好地发挥这两个驱动程序的作用.为此,它提供了HIBUFFERS,HIINSTAL—
L,HIDOS和HILOAD命令.前三个命令要放在Config.sys文件中,用来在机器启动时分别把磁
盘缓冲区设置在上部或高位内存,把内存驻留程序和系统数据结掏安装到上部内存.最后一个外部
命令用来把内存驻留程序或其它实用程序装入到上部内存并执行之.这样就把常规内存中的东西
尽可能的都搬到常规内存之外去,从而扩大了常规内存的可用空间,留作它用. 另外还可以利用HIDOS和EMM386.SYS来释放由DOS操作系统在上部内存区预留的显示
缓冲区,使得这部分内存可以和常规内存连接起来对MDA是从0A0000H~0B0000H段的64K,
对EGA(VGA)是从0A00o0H,0B8000H段的96K,并将原来常规内存高端的系统数据移到常规
内存的低端,从而将常规内存的可用块一直延续到这部分增加内存的末尾,最大可用块可达700K
左右.
例;在Conflg.sys文件中应包括下述内容:
HIBUFFERS=15在高位内存中开辟l5个缓冲区
HIDOS=ON将系统数据结构移到上部内存中
HIDEVICE—C:\DRDOS\ANSI.SYS将ANSI.SYS设备驱动程序安装到上部内存中
当使用鼠标操作时,应在命令行中键入:
c>HIL0ADMsM0usE即将鼠标设备驱动程序装入上部内存
当在网络上使用时,在命令行中键入命令;
C>HILOADCkNET\1PX1
C>HILOADC:\NET\NEXTJ将网络驱动程序装入上部内存
这样,通过上述操作已将系统内核,缓冲区,系统数据结掏和网络驱动程序等都移出了常规内
存,从而就给常规内存留下了相当可观的空间.
,使用外部命令MEM和MEMMAX,了解大于lMB内存的分配情况.MEM有七个可选择项,
同时可选多个,以观察内存的使用情况.比如/B,将显示操作系统内存不同部分的使用情况,如设
备驱动程序和BIOS以及当前如何为程序分配内存的Dos内存控制块(MCB)链等. 在MEMMAx后可带一u,+U开关,使之有选择地禁止/开放使用上部内存.可在INsTALL
过程中自动加入一行MEMMAx—u命令到Autoexec.bat文件中,可阻止应用程序使用上部内
存.如要使用HILOAD命令,则须执行MEMMAX+u以重新开放上部内存.
lO2四川师范大学(自然科学版)17卷
通过使用MEMMAX—L开关,可强制将应用程序装入低位的84K内存区之上,这样应用程
序就可以使用低位内存了.在程序运行终止后,用MEMMAX+L命令恢复使用低位64K内存区.
3)在Windows下使用
在286处理器系统上,Windows只能在
模式下运行,不能管理虚拟存储,即使有1,2MB
内存也不宜采用Windiws作为改变工作环境的手段;只有在386及其以上的系统上才能更有效地
发挥其处理器的功能.
在Windows3.0中包含了HIMEM.SYS和SMARTDRV.SYS,EMM386.SYS等驱动程序.
若用户在DOS5.0下使用Windows3.0,则应用该Dos中的HIMEM.sYs和SMARTDRV.SYS,
EMM386.EXE取代.若采用Windows3.1,就应用该Windows中的HIMEM.SYS和sMART—
DRV.EXE,EMM386.EXE取代.Windows3.1中的HIMEM.SYS符合最新的xMs规范.新的
SMARTDRV.EXE和EMM386.EXE为可执行文件,使其可随时改变一部分运行参数,面不必重
新启动系统.一般在运行Windows时即自动生成Config.sys文件.SMARTDRV.EXE的安装可
在Config.sys文件中用
INSTALL=c:\Windows\SMATRDRV.EXE20481024或在Autoexec.bat文件中直接用
SMARTDRV20481024命令.采用新驱动程序能使系统的整体性能始终保持最佳状态.
4)用sETuP程序直接设置.下面以Gw286Ex/16为倒加以说明.. 系统EMS功能的设置或改变-EMSMemo~容量,取决于总的内存容量,在基本配置(1MB)
下,EMSMemory只能设为288KB或0KB,在>IMB时,EMS和xMs内存的容量可以选择,二者
的总内存容量是除去ShadowRAM所占用的部分.如内存容量为2MB时,设置结果是:
C1024K]E
A
XTENDEDMEMOR
篓Y篓1024KB篇…扩展内存为l二=二::二二一…一,96K3SHADowMEM01三穹存为%KBls…am…~述:一C288K3EMSMEMORY扩充内存为288KBJ……………一
第1期吴明俎?如何使用扩展内存和扩充内存103
ClnitCaeheSize3--以KB为单位的高速缓存尺寸,有效值为128~8192,最佳尺寸是2MB.
CMinCaeheSize3--最小高速缓存尺寸.隐含值为0.
[/a)——告诉系统将缓存装入EMS,如缺省则被装入XMS.
(3)文件名缓存(FilenameCache)利用Ms—Dos3.3以上的FAsT0PEN程序可以加速文件
和目录的访问.它所采用的也是高速缓存技术.使用时在Config.sys中作如下设置 INSTALL—C;\D0s\FAsTOPENC:=50C/X3开关C/X2将FAST0PEN装入EMS. 在386系统上将其装入UMB,需在Autoexec.bat文件中加入;
LHC:kDOS\FASTOPENC;;50命令装入.
参考文献
1.计算机世界月刊i993.(1),73~7,5,1993.(4)l71,74
2.中国计算机用户1992.(4)t54,1993,(3)t3,13.
3.计算机世界周报1993.2.17:149.151
4.随机用户手册
H0WTOUSEEXTENDEDMEMORY
ANDEXPANDEDMEMORY
WuMingxuan
(DepartmentofMalhemalics)
AtTtThisarticlemainlydiscussesthetechniquesofextendedDOS-supportingsoftwar~andt
he哪af
theirapplications,whichhelpmakefulluseofcomputerres.urcesandexpandtheproce~ngeal
mbili6eaofapplied
progTammes—
KeywordsDOS-extendedmemory-expandedmemory-cache,printedmode-redmode.
aassifkationcodenfChineseliteraturesTP?3