您好,欢迎访问三七文档
DOS基础知识的补充首页[点击关闭此窗口]本专题对教材中未涉及的一些DOS常用命令做了补充介绍。DOS6。22的内存管理命令较难理解:教材对这些程序的相互关系叙述得不很清楚,为此我们对这些命令做一补充和分析。一、对扩展内有的三种使用方式第一种方式,可称为原始方式,早期设汁的一些使用扩展内存的软件如SUPPERCCDOS5。21以下版本就是这样使用的(金山汉字启动时会自动把汉字库调入道扩展内存中)所谓原始方式,也可叫“野蛮”使用方法,因为这种方式中,各软件都有自己的一套使用扩展内存方法,相互不通气也互不兼容,结果造成任何时候都只能有一个软件使用扩展内存,否则就会出现一个程序把另一个程序在扩展内存中冲掉这种相互“打架”现象。我们可把这种没有统一规范以“野蛮”方式使用的扩展内存称为“无类型的内存”或叫“野的内存”。1984年以后,针对这种现象,解决对扩展内存使用方法的混乱局面,国际计算机际行业相继推出了两个使用扩展内存的的规范,这分别是XMS规范和EMS规范。这两个规范是各软件使用扩展内存的共同遵循的标准,统一和规范了对扩展内存访问的方法。各应用程序使用扩展内存时都要遵循这两个规范的规定来访问扩展内存,应用程序不再象以前那样直接对扩展内存进行存取,而是通过XMS或EMS规范实现对扩展内存的访问,由XMS或EMS规范管理和调度各应用程序对扩展内存的访问,这就可根本上避免以“野蛮”方式访问扩展内存时所可能导致的那种相互打架现象。在XMS和EMS两种规范中,调XMS规范是一个更先进的观范,目前新设计的绝大部分使用扩展内存的软件如WINDOWS、OFFICE等基本上遵循XMS规范(使用EMS规范访问扩展内存的软件目前已很少)。我们把通过把XMS规范访问的扩展内存称为“XMS类型的内存”或简称XMS内存,把通过EMS规范访问的扩展内存称为“EMS类型的内存”或简称EMS内存。这两种规范使用扩展内存的方式是不一样的。XMS是通过将扩展内存中的数据交换到常规内存中的方式使用扩展内存的,用户程序依然到常规内存中存取数据,再由XMS规范的驱动程序HIMEM.SYS负责将其转换为对扩展内存的访问。EMS是通过将扩展内存中的数据交换到上位内序中的空闲地址处。即上位内存块(UMB)中的方式使用扩展内存的,经过专门设计的用户程序转到UMB中存取数据,再由EMS规范的驱动程序EMM386.EXE负责将其转换力对扩展内存的访问。由于EMS内存是通过将扩展内存映像到UMB中,这相当于在上位内存中开出的一页窗,用户程序通过这个窗口一页一页地使用扩展内存,所以人们也把EMS内存叫扩页内存。以上两种使用扩展内存的方式可如下所示:HIMEM.SYS用户程序←一一…一一→常规内存→…一……一→扩展内存(XMS规范)EMM386.EXE用户程序←一一…一一→上位内存块→…一……一→扩展内存(EMS规范)二、设备驱动程序HIMEM.SYS的作用用法:DEVICE=[盘符][路径]HIMEM.SYSHIMEM.SYS的作用有二:一是将1M之外无类型的扩展内存转换为符合XMS规范的内存,即开辟XMS内存,以供那些需要使用XMS内存的程序所使用。二是从XMS内存中划出第一个64K内存块,即从XMS内存中开辟出高内存区HMA,以便以后DOS=HIGH命令能把DOS部分内核从常驻区中已到HMA中,以节省更多的常规内存供用户程序所使用。由于以后要运行的很多软件都要使用由HIMEM.SYS所开辟出的XMS内存,显然HIMEM.SYS应先于所有使用XMS内存的程序运行。另外,HMA也是HIMEM.SYS开辟出来的,所以只有在运行HIMEM.SYS才可能实现DOS=HIGH的功能。三、DOS=HIGH命令的作用DOS=HIGH命令的功能就是把DOS部分内核从以DOS常驻区中移到HMA中,以节省出更多的常规内存供用户程序所使用。在DOS6.22中只有DOS内核能被移到HMA中,设备驱动程序和常驻程序部只能被移至UMB中。因为HMA是由HIMEM.SYS所开辟出来的,所以若仅运行DOS=HIGH,则只要HIMEM.SYS的支持就够了,不需要运行EMM386.EXE。四。设备驱动程序EMM386.EXE的作用及其重要参数的含义用法:DEVICE=[盘符][路径]EMM386.EXE[NOEMS][RAM]1.EMM386.EXE的作用EMM386.EXE的作用也有二:一是从HIMEM.SYS开辟出的XMS内存中划出一部分转换为符合EMS规范的内存,映像到位于上位内存区中的EMS页框(EMS窗口)中,即开辟出EMS内存,或叫作XMS内存来模拟EMS内存,以供那些需要使用EMS内存的老式程序所使用。二是从HIMFM.SYS所开辟出的XMS内存中划出一部分,映像到上位内存块中,即开辟出上位内存块,以便以后DOS=UMB命令能使DOS把上位内存块也利用起来。由此我们看到,EMS内存和UMB都是从调XMS中“借”过来的,而XMS又是由HIMEM。SYS开辟出来的,所以EMM386.EXE是靠HIMEM.SYS程序来支撑的。由于UMB是由EMM386.EXE所开辟出来的,所以只有在运行了EMM386.EXE后。才可能实现DOS=UMB的功能。2.EMM386.EXE的参数运行EMM386.EXE时的参数很重要,主要运行参数如下:(1)若不带任何参数运行EMM386.EXE,则仅提供EMS内存,不提供UMB。(2)若带参数NOEMS运行EMM386.EXE,则仅提供UMB不提供EMS。(3)若带参数RAM运行EMM86。EXE,则既提供EMS内存,又提供UMB。大部分考题都要求,在编写CONFIG.SYS文件时,要把一些程序调到UMB中,所以我们在书写EMM386.EXE命令时,后面一定要写上参数NOEMS或RAM,即应写成DEVICE=EMM386.EXERAM或DEVICE=EMM386.EXENOEMS均可。很多学员只写成DEVICE=EMM386.EXF,后面什幺参数也不写,这时UMB就出不来了,用法举例:【例1】DEVICE=C:\DOS\EMM386.EXE(只提供EMS内存)【例2】DEVICE=C:\DOS\EMM386.EXENOEMS(只提供UMB)【例3】DEVICE=C:\DOS\EMM386.EXERAM(同时提供EMS内存和UMB)五、DOS=UMB命令的作用DOS=UMB命令的功能是让DOS把由EMM3S6.EXE所开辟出的UMB与常规内存连接在一起,即让DOS把UMB也利用起来,这样以后才有可能用DEVICEHIGH或LOADHIGH命令把设备驱动程序或常驻程序由常规内存调入到UMB中,以节省出更多的常规内存供用户程序所使用。因为UMB是由EMM386.EXE所开辟出来的,所以若要运行DOS=UMB就必须先运行EMM386.EXE。另外,DOS=UMB只是通知DOS把UMB也利用起来,但并未把任何程序调入到UMB中,若要具体地将某一程序调入到UMB中,需要再运行DEVICEHIGH或LOADHIGH命令。还有,若只写了EMM386.EXE,而没有写DOS=UMB,则EMM386.EXE所开辟出的UMB对DOS来讲并没有什幺用处,此时DOS并不会使用UMB,当然也就更无法实现DEVICEHIGH或LOADHIGH命令了,所以一定别忘了DOS=UMB这一句。通过以上分析可知DOS=HIGH与DOS=UMB这两条命令并没有什幺必然联系,一个是有关HMA的,一个是有关UMB的,在CONFIG.SYS中也下一定要同时出现。六、DEVICEHIGH与LOADHIGH命令的作用当在CONFIG.SYS中写上DOS=UMB命令后,DOS便可将UMB也利用起来,我们可把一些程序存放到UMB中。但是并不是所有的程序部能放到UMB中。能放到UMB中的程序只有两类,一类是设备驱动程序,另一类是常驻程序。1.用DEVICEHIGH=命令装载设备驱动程序用法:DFVICEHIGH=[盘符[[路径]设备驱动程序名设备驱动程序是指那些用来驱动和管理硬件设备的程序,例如HIMEM.SYS便是一个用来驱动和管理扩展内存这种设备的程序,又如MOUSE.SYS是一个驱动鼠标器这种设备工作的程序。设备驱动程序只能以“DEVICE=设备驱动程序名”的形式写在CONFIG.SYS中,设备驱动程序是在DOS启动时在执行以COMMAND.COM和AUTOEXEC.BAT前就已被执行并被永久地装入内存的。除个别外,绝大部分设备驱动程序都不能在DOS提示符下运行。绝大部分设备驱动程序的扩展名都是.SYS,只有eMM386.EXE等少量几个设备驱动程序例外。如果用“DECIVE=”命令来装载设备驱动程序,那幺设备驱动程序将被装入到常规内存中。若想把设备驱动程序装入到上位内存中,必须改用“DFVICFHICTH=”命令。实际上在DOS6.22中DEVICEHIGH命令已可完全替代DEVICE命令,所有写DEVICE的地方部可换成DEVICEHIGH,DOS若发现无法将该驱动程序装人到UMB中,会自动将其放到常规内存中,不会出错。尽管如此,我们还是建议学员在考试时对这两个命令根据情况区分使用。2.用“LOADHIGH”命令运行常驻程序用法:LOADHIGH[盘符][路径]常驻程序名或LH[盘符][路径]常驻程序名在DOS提示符下执行的程序,在其运行结束后,,通常便释放其所占据的所有内存空问,以供下一个要运行的程序所使用。但是有一类程序却不是这样,这类程序就是常驻程序。常驻程序也叫常驻内存程序、TSR程序或驻留程序,是指那些一旦执行便永久地占据内存(这些程序永远呆在内存里不出来)的程序。程序常驻内存后,就有机会随时发挥作用,监视和控制用户的工作。例如病毒就是典型的常驻程序,启动汉字操作系统时需运行的程序如SPIIB.COM、SPDOS.COM、PY.COM,鼠标管理程序MOUSE..COM等都是常驻程序。DOS6.22中的SMARTDRV.EXE、DOSKEY.COM、VSAFE.COM等也是常驻程序。常驻程序都必须在DOS提示符下运行,不能写在CONFIG.SYS中。所以判断一个程序是设备驱动程序还是一个常驻程序的通常方法是:若其必须写在CONFIG.SYS中,则便是设备驱动程序;若只能在DOS提示符下运行便是一个常驻程序(当然能在DOS提示符下运行的并不都是常驻程序)。如果运行常驻程序时没写LOADHIGH,如MOUSE,则该常驻程序便将驻留在常规内存中,若想将常驻程序调到UMB中,必须在命令的前面写上LOADHIGH(注意:LOADHIGH简写为LH),例如:LOADHIGHMOUSE.COM.则MOUSE.COM被放到UMB中。要特别注意这两个命令的用法差别:设备驱动程序只能用“DEVICEHIGH=”命令,常驻内存只能用“LOADHIGH”命令(或“LH”命令),并且DEVICEHIGH前面必须写上等号,而LOADHIGH后面绝不可写等号,用一个空格与常驻程序名隔开就可以。七、磁盘高速缓冲程序SMARTDRV.EXE的作用与用法DOS6..22中有一个非常有用的常驻程序SMARTDRV.EXE,使用它可以大大加快磁盘的读写速度。其工作原理如下:由于相对于内存而言,磁盘(包括硬盘)的读写速度要慢多了。为此SMARTDRV.EXE从XMS内存中外辟出一块区域(称之为高速缓冲区)作为主机与磁盘之间的一块中间区域,用来暂时存放上次从磁盘上读取的数据。这样,下次读取磁盘时,SMARTDRV.EXE首人查找一下要读取的数据在这块缓冲区中是否能找到,若能找到就没有必要再读取磁盘,就可直接把数据从缓冲区中取回了,这样可大大节省读取磁盘的时间。当然若在缓冲区中找不到,那就没办法了,还得读磁盘去。所以这就有个在缓冲区中是否能找到,即命中率的概念,显然重复读取的数据命中率就比较高。类似地,SMARTDRV.EXE对写磁盘也能进行高速缓存。当写磁盘时,主机只要把数据写到缓冲区中就可马上返回做其它事情,待CUP空闲时,再由SMARTDRV.E
本文标题:DOS与内存
链接地址:https://www.777doc.com/doc-3977631 .html