微机内存管理优化
]一1
徐景村弋P\6
【摘要J介绍了微机中配备的四种内存的应用范围厦管理方法,重点时高端内卉的使用厦管理优化进行了N-it:
【关键词】常规内存《.存芏查!堕高端内存高内存稳繁ttJ《乱卉八s
l内存简介
1.1常规内存
常规内存指’640k以下的内存,该内存由DOS管理,用以
存放DOS常驻命令和CONFIGSYS中定义的设备驱动程序.
其余部分可用于存放用户编写的DOS应用程序.由于空问有
限,常规内存不能存放大的用户程序.
1.2高端内存
64~3k,1024k之间的384k属高端内存区.该区内没有可
供用户使用的RAM,有的仅是各种适配器ROM或网卡用的
缓冲RAM.总之该区归硬件使用.值得庆幸的是这些地址空
间并投全被占用.可供用户开发利用.
13扩展内存
扩展内存指的是地址在lMb以上的内存.8086只有20
山东师范大学250014济南
条地址线.所以无能力访问它.286,386SX有24条地址线
能访问的扩展内存可延伸到16Nb.386,486有32条地址线.
扩展内存可延伸到4G但实际上并不一定配备这么多.早期
的286微机常配有lMbRAM,指的就是际640k之外又加r
384k扩展RAM.
站在应用角度看DOS将使用分配给它的全部常规内
存,而扩展内存只在一定条件下使用.要想让扩展内存在
DOS下也能使用最好的
是将它们中的一部分技人缓
冲,以构造成虚拟RAM盘,或者划出高内存区,存放DOS命
令.扩展内存的另一重要用途是可以用于模拟扩充内存=
1.4扩充内存
它是遵守LIM.ENS规范的一类内存,位于正规内存之
外.扩充内存可由两种方法获得:一是在微机中加扩充RAM
板,可加到8Mb,也可加到32Mb但有一点必须说明对于前
f911ll:A+_@DPTR:
f101RO—A:
(11)CT8;
(12)R2:A—R0;
f13)RLC
(14)F0C;
(15)1tO卜A:
(16)清IE0;
(17)中断返回;
f181结束.
补充说明:FO保存下次准备进出的二进制位.其它参照
主控程序说明即可理解.
另外.该中断程序设计时要考虑其执行的最长时问.包
古中断发生返回时间,另加操作时间,总时问不应超过一个
采样周期的时间限制.否则,将造成录放音的严重失真.甚至
不能正常工作.
笔者的实验
明上述中斯程序在8051使用6M晶振.
采样频率为16kttz时,工作正常.当采样频率为32~,lHz时.
能正常工作.究其原理在于中断程序的运行时间超过r采
样周期时间.但使用l2M晶振时,32Mltz采样翱率下可以正
常工作.
6
的实现情况及结论
笔者提出的CPU实现串/并转换的方案已用于单片
语音系统设计并取得了成功可见.该方案较传统的方案
具有使用芯片数
薪浪潮1997年镕12期7
者微机中必须配有EMS32软件,后者必须配有EMS40软
辟:其二是通过DOS的EMM386EXE驱动程序,将扩展内存
转换为扩充内存用.假如系统有16Mb扩展内存,而用户程序
要求使用8Nb扩充内存,执行下述命令即可获得:
DEVICE=C,D0SkEMM386EXERAM8I92
程序不能自动使用扩充内存,扩充内存内的程序只有以
页为单位映射到高端内存之后.才能运行.记住这一点很重
要.具体作法是将扩充内存以16k为单位划成逻辑页,然后
划出不用的64k区域,通常在64ok一1Mb之间,这个区问正
好对应着高端内存区.我们称这64k为页框.页框内16k为
一
个物理页.正好四页.软件驱动程序EMM{它提供应用程序
访问内存的软件界面)将扩充内存中的程序以16k为单位映
射人64k页框内的物理页中,CPU按
的段位移量击访问
物理页内的程序,从而完成了对一个逻辑页程序的访问.当
程序要想访问其它逻辑页时,EMM就会将另外逻辑页映射
进页框中.如此反复,页框成了访问扩充内存的窗口,16k
为单位完成对扩充内存中程序的访问扩充内存主要用来构
造虚拟RAM盘.
l5三种工作模式与高内存区
f11实地址模式:这是8086使用的模式,2O条地址线都
处于激括状态.寻址范围1Mb.
{2I保护模式:是286上处理机使用的模式.在这种
模式下工作.所有的地址线都处于激活状态需注意的是
DOS不在保护模式下运行,要启动DOS.286以上CPL”必须
在实地址模式下模拟8086,因此仍限制在1Mb内.
(3)虚拟86模式:这种模式与实地址模式类似,不同的
是在虚拟86模式下运行DOS,EMM386EXE的驱动程序可
使用386,486的分页技术,将对扩充内存中某些页内容的读
写改到其它地址中(倒如上面谈到的高端内存中).
在熟悉了三种工作模式后,我们来看高内存区,它是位
于扩展内存的65520字节以内的区间.和其它扩展内存不
同.在宴地址模式下就可对它进行读写,这是Micro~曲公司
的编程人员在80年代中后期发现的.他们让处理机的第21
条地址线(编号是Ao)生效.在不转成保护模式下,可直接访
问扩展内存的前6557.0字节.我们称它为高内存区lIMA.
HMA的大小是固定的.不管Pc微机有多少扩展内存,HMA
的大小就是65520字节.
2内存的管理及优化
21常规内存管理
DOS环境下的应用程序基本上都在常规内存中运行,常
规内存不足往往是程序运行失败的原因.释放更多的常规内
存对用户程序往往是有利的.
(1)将DOS的常驻内存命令移人HMA中,释放45k之
多的常规内存.其方法就是对Configsys文件作两个简单的
修改:
81997年12期新浪绷
?安装HIMEMSYS.如果该文件在DOS的C盘上.正
确的命令是:
DEVICE=C:,DoskHIMEMSYS
?加入DOS=HIGH命令.如果ConfigsYs中已有
DOS=UMB语句,可将该句改为DOS=HIGHUMB.DOS=
HIGH将通知系统将DOS装入liMA中.
(2)精减Configys和Autoexeebat内容,不启动不必
要的驻留程序.在DOS启动过程中,两文件的命令决定r安
装哪些使用内存的设备驱动程序和其它内存驻留程序,用户
可从这两个文件中除s中也可装
IMA中.TSRs程序
和设备驱动程序装人uMBs后对DOS装在何处无影响.下面
是一个Config.sys的侧子:
DEVICE=C:,D0S,HIMEMSYS
DEVICE=C,D0S,EMM386EXEOEMS
D0S=HIGH+UMB
】e=40
Buffers=20
(4)用DOS6的MEN/F检测高端内存,以确定如何希
用.以下是一个例子.
Free
Segmem
00570
Conventional
80
MenlO~
Total
(Ok)
00586
00590
0lB32
Toudfree
FeUpl~r
RegionLq?【
156384
265520
160
88608
543952
632800
M
FreeTom]
(55k)56384
(64k)65520
fOkJ
{87k)
(531k)
(618k
Free
(55k)
(64k)
T
56384
65520
dze
{55k)
(64k)
以上说明EMM386EXE生成了两个高端内存块.一个为
55k.另一个为64k.这两个高端内存块所处的位置还可用
MEM/O来检查.结果如下:
Upper
OCA3A
OE00l
memo~Detlal
ReonTom]N删e
l56384(55k)MSDOS
265520f64klMSDOS
(5)将Ts和设备驱动程序装人UMBs并试运行.装
入的命令分别是:
Leadh:lgll【d:】【path】program【paramatea~s】
DEVICEH1GH【d:】【path】driver【parameters】
有两点要注意:一是上述程序的数目不可太多,其总容
量一定要小于LIMBs的容量;二是装人的顺序要正确.一般
来说先装人较小的TSRs程序和设备驱动程序运行,造些程
序要求附加的内存UMBs也可能满足它.若是先装人较大的
程序后装人较小的程序,则因跗加内存不能满足,导致系统
死锁,因此,UMBs中能装多少,哪些能装进去并能成功运行,
其能尝试.为此,要求用户作好如下准备:
?保证系统的硬件能正常工作;
?确保DOS6已正确安装;
?保证当前安装的Ts程序和设备驱动程序是正确
的;
?用FORMAT/S生成一个系统盘,将Config.sys和
Autoc~ee.hat文件拷贝到该盘上作备份用,一旦出现死锁时
可重新启动系统.
(6)使用DOS6的MEMMAKER程序.人工测试哪些
程序和设备驱动程序能在LIMBs中运行是件很麻烦的
事,使用MEMMAKER就方便多了.该程序的主要目标就是
尽可能多地将TSRs和设备驱动程序穆人高端内存.为做到
这一点.它审查Comqgsys和Aoex扩展内存,相应的管理
可归结为对扩展内存的管理.它包括以下内容:
(1)将DOS和鼠标驱动程序穆人高内存区.以节省更多
的常规内存.
(2)存放并运行直接使用扩展内存的程序(例如Win.
dows),或借用DOS扩展程序的软件工具.开辟保护模式内存
区给某些应用程序.让它们可以使用16Mb或更多的扩展内
存.
(3)用扩展内存模拟扩充内存.实践证明使用EMS(扩充
内存管理)的应用程序远比使用XMS(扩展内存管理)的程序
普遍.而且花费较少.EMS3.2可提供8Mb的扩充内存.
EMS4.0可提供32Mb的扩充内存.有一点要说明.如果某程
序提供了选择项,它厩可使用XMS内存也可使用EMS内存,
应让它直接使用XMS内存,而不要使用由EMS仿真提供的
扩充内存,原因是前者运行速度比后者快.
(4)使用扩展内存和扩充建磁盘超高速缓存——RAM
盘RAM盘是设置在内存中的一个虚拟存储设备.它工作
起来跟实际盘一样.可以向里写文件,删脒文件.甚至还可以
给它分配驱动器名字.RAM盘同磁盘的区别在于前者是电信
号存储,关机即失.后者是磁盘存储,RAM盘作为磁盘的超高
速缓存,将系统面向磁盘的访问转向面向RAM盘的访问.这
样以来,可以1O倍地提高硬盘的速度,而且减少了磁头磨
损,延长了硬盘的使用寿命.DOS6的sMARTD五ve其有建
RAM盘的功能./A参数指定在扩充内存中建,/E参数指
定在扩展内存中建.参数前的数字指明RAM盘的容量(以
为单位)例如以卞命令:
DEVICE=C:\DOS\SMARTDrive.sys1024/E
DEVICE=C:\DOS\SMARTDrlvesys720/A
前者在扩展内存中建一个1Mb的RAM盘,后者在扩充
RAM中建一个720kb的RAM盘.RAM盘的容量根据需要还
可设得更大些,常用的DOS命令及较大的用户程序都可装进
去,使用起来厩快又方便,这就是为什么微机要求内存越来
越多的原因.
内存是微机的宝贵资源,内存种类不同,管理优化的措
施也不同,微机在发展,内存管理措施必须紧跟上.这将是一
个值得长期探讨的问
.
参考文献
lJeffP~ise着翼红宇王世航译DOS6内存管理技术北京:电
子工业出版杜,1993
2COTOP着李建臣诨内存管理北京:电子工业出版社.1995
3邦甫京.DOS使用太垒V2.0,V60北京:清华大学出版社.1994
(收稿日期:1997-08-03)
新浪潮1997年12||9