(1)命令解释程序
在所有的OS中,都把命令解释程序放在OS的最高层,以便能直接与用户交互。该程序的主要功能是先对用户输入的命令进行解释,然后转入相应命令的处理程序去执行。在MS-DOS中的命令解释程序是COMMAND.COM,在UNIX中是Shell。这一章中将主要讲述MS-DOS下的COMMOND.COM命令解释程序。
在联机操作方式下,终端处理程序把用户键入的信息送键盘缓冲区中保存,一旦用户键入回车符,便立即将控制权交给命令处理程序。命令解释程序的主要作用是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕上显示。若命令解释程序未能识别命令或执行中出现问题,会在终端显示出错信息。
(2)MS-DOS的命令解释程序的组成
MS-DOS是1981年有Microsoft公司开发的,配置在微机上的OS。随着微机的发展,MS-DOS的版本也在不断升级。在这里我们以MS-DOS操作系统中的COMMOND.COM处理程序为例,说明命令解释程序的组成,主要包括三部分:
常驻部分:这部分包括一些中断服务子程序,如正常退出中断INT20,驻留退出中断INT27。此外,它还包括这样的程序:当用户程序终止后,它检查暂存部分是否已被用户程序覆盖,若已被覆盖,便重新将暂存部分调入内存。
初始化部分:它跟随在常驻内存部分之后,在启动时获得控制权。还包括AUTOEXEC.BAT文件的处理程序,并决定应用程序装入的基地址。每当系统接电或重新启动后,由处理程序找到并执行AUTOEXEC.BAT文件,该文件在用完后不再被需要,它将被第一个由COMMON.COM装入的文件覆盖。
暂存部分:这部分主要是命令解释程序,并包含了所有的内部命令处理程序、批文件处理程序,以及装入和执行外部命令的程序。它们都驻留在内存中,但用户程序可以使用并覆盖这部分内存,用户程序结束时,常驻程序又会将它们重新从磁盘调入内存,恢复暂存部分。
(3)MS-DOS命令解释程序的工作流程
系统在接通电源或复位后,初始化部分获得控制权,对整个系统完成初始化工作,并自动指向AUTOEXEC.BAT文件,之后将控制权交给暂存部分。暂存部分受限读入键盘缓冲区中的命令,判别其文件名、扩展名以及驱动器名是否正确。若发现有错,在给出出错信息后返回;若无错,再识别该命令。一种简单的识别命令的方法时基于一张表格,其中的每一表目都是由命令名及其处理程序的入口地址两项所组成。如果暂存部分在该表中能找到键入的命令,且是内部命令,便可以直接从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令。如果发现键入的命令不是内部命令而是外部命令,则暂存部分还需为之建立命令行,再通过执行系统调用exec来装入该命令的处理程序,并得到其基地址;然后把控制权交给该程序去执行相应的命令。
下图是COMMOND.COM的处理流程: