admin管理员组

文章数量:1530085

2024年5月7日发(作者:)

DOS下面的内存管理和优化

一、DOS下内存的分类和分配

1.常规内存(ConventionalMemory)

DOS为了保持对X86软件向前及向后的兼容性,始终维持着640KB的内存限制。这640KB勿

需借助内存管理程序即可直接寻址的内存称为常规内存。这也是DOS系统下所有应用软件都

可利用的区域。

2.上位内存区(UMAUpperMemoryArea)和上层内存块(UMBUpperMemoryBlock)

紧邻常规内存上端的区域即UMA,其中包含ROM,一般留作系统硬件(如BIOS、视频等)使

用,故称系统区域,最大384KB,在1M之内。8086/8088以上的系统的地址线寻址都能达

到1M或更高,故也有将1M以内的内存叫常规内存的。其中的剩余空间即UMB。在386以上

的系统中,通过在config.sys中设置:DEVICE=和DOS=UMB,即可使用UMB存

放设备驱动、command等常驻内存程序。

3.扩充内存(ExtendedMemory)

随着CPU性能的提高以及程序对内存要求的增大,DOS对内存管理需要突破640KB的限制,

但又要解决兼容性的矛盾,因此出现了扩充内存和扩展内存的概念。在286以上的系统中,

采取线性的内存寻址方式直接存取1M以上的新增的内存称ExtendedMemory。通常,DOS是

通过在config.sys中设置DEVICE=C:DOSHIMEM.SYS来使用ExtendedMemory,该驱动

程序执行Lotus/Intel/microsoft/AST等公司共同制定的

XMSExtendedMemorySpecification规范,以防止两个程序同时存取相同内存位置的情况。

它主要用于Windows环境下系统和用户程序。在XMS中起始位置的64K称为高内存区

(HMAHighMemoryArea)。可以通过在config.sys中设置DOS=HIGH,将MS-DOS的大部分

程序从UMA中移至HMA中,以便用户有更多可用的常规内存。

4.扩展内存(ExpandedMemory)

在早期的8086/8088计算机中,超出由地址线直接寻址的,而由系统区域中的"页框"

(Pageframe)间接存取的附加内存称ExpandedMemory。

286以上的计算机都能够使用ExtendedMeory,且它比ExpandedMemory速度快,故当前的机

种大部分是以增加ExtendedMemory的方式增加内存容量。但在286以上的计算机中运行一

些老程序(如lotus1-2-3)时,需要ExpandedMemory。这时只要在config.sys中设置

DEVICE=EMM386.SYS,利用ExtendedMemory模拟ExpandedMemory。DOS6.0以上的版本还

可让扩展内存和扩充内存设置共享的内存,以增加使用上的便利和弹性。当程序需要

ExpandedMemory中的数据时,EMM386.SYS先将数据由ExpandedMemory存入"页框",将"

页框"中不再需要的数据回写到ExpandedMemory。

二、DOS下内存的优化

优化内存主要要达到两个目的,一是将常驻程序从常规内存移出,以便为其他DOS应用程序

留出更多空间;二是提供扩展内存、扩充内存,供磁盘高速缓存、Windows及其它使用1M

以上的程序使用。

1.增加常规内存

在DOS环境下发生"内存不足",大部分是因为常规内存不够用造成的。增加常规内存的措施,

可以在config.sys中设置:

DOS=HIGH将MS-DOS的大部分程序从UMA移至HMA

DEVICE=C:DOSHIMEM.SYS使用ExtendedMemory

LASTDRIVE=F减小最大驱动器符号(一个驱动器约占100B的空间)等。

2.增加ExtendedMemory

在Windows3.X环境下发生"内存不足"提示,大部分是因为ExtendedMemory不足造成的。增

加ExtendedMemory的措施有:

(1)将autoexec.bat中的SMARTDRV命令后的参数改小,即减少分配给磁盘高速缓存器的

空间;

(2)在config.sys中设置EMM386.EXE MIN=0,即不保留模拟ExpandedMemory的

ExtendedMemory,但在需要时仍能提供ExpandedMemory;或设置EMM386.EXENOEMS,即不

使用ExtendedMemory模拟ExpandedMemory,只负责到UMB存取数据;

(3)在config.sys中删除DOS=HIGH,将MS-DOS从HMA送回UMA。

3.增加ExpandedMemory

(1)用EMM386.EXE RAM使ExtendedMemory模拟ExpandedMemory。

(2)尽可能减少分配给RAM盘之类程序的ExpandedMemory。

4、将设备驱动程序装入上位内存

为了提供更多的常规内存给其它应用程序使用,需将一些外部设备的驱动程序(如

)安装到上位内存区块(UMB),在中可做如下配置:

device=

device= NOEMS

DOS=HIGH,umb

DeviceHIGH=

5、将内存驱留程序装入上位内存

将一些常用的内存驱留程序用loadhigh(LH)命令装入UMB,亦可节约基本内存,例如在

文件中加入命令行:LH C:DOSDOSkey

即可将用户普遍使用的DOSkey(键盘命令运行增强程序)加载到上位内存,可节省约3KB的

基本内存。

本文标签: 内存程序常规上位系统