DOS命令处理器COMMAND.COM如何工作

Author: 河北 吕信 Date: 1995-07-14

        COMMAND.COM文件在常规内存中分两部分驻留。一部分称为常驻部分CRPP,它包括DOS的若干中断服务程序和暂驻部分的装入程序,中断服务程序用于处理键盘中断和错误中断。CCPR常驻程序驻留在内存的低端。另一部分则称为暂驻部分CCPT,它包括DOS命令的解释程序,内部命令处理程序以及外部命令的装入程序等。CCPT暂驻在内存的高端。
        DOS命令的解释程序在判断输入命令的模式时,它首先寻找已定义过的宏指令,若有(或有与内部命令同名的)宏指令,则执行该宏指令,否则判断是否为内部命令,是内部命令则由命令处理程序处理并交IO.SYS模块和DOS.SYS模块执行。若不是内部命令,则视为外部命令,此时在指定的磁盘内寻找同名的.COM文件运行,若无法找到同名的.COM文件,DOS便尝试寻找同名的.EXE文件运行,仍无法找到时,DOS会寻找同名的.BAT批处理文件运行。上述方法都尝试过仍无法执行该命令,则只好放弃该命令,并在屏幕上显示“Bad Command or filename”的错误信息。外部命令的装入程序则负责外部命令装入。而被加载的文件执行完毕后把控制权交给COMMAND的常驻部分,常驻部分关闭由被加载文件打开而未关闭的文件之后返回暂驻部分CCPT,在屏幕上再次出现DOS提示符,等待用户键盘输入。
        由于暂驻部分主要任务是判断与处理输入的命令,故它是COMMAND的核心程序,而COMMAND.COM文件则称为DOS的命令处理器。
        另外为了给用户提供尽可能多的内存空间,DOS允许大的用户程序在运行时占用COMMAND.COM文件的暂驻部分,即由用户程序将暂驻部分覆盖。当用户有程序运行结束返回DOS系统时,COMMAND的常驻部分检查暂驻部分的状态,若发现暂驻部分被覆盖,则由常驻部分中的暂驻部分装入程序将暂驻部分程序从盘上的COMMAND.COM文件中再次读到内存高端。
        (河北 吕信)