shell模块的构成和功能

Author: 穆大明 Date: 1994-08-05

        标准的DOS shell模块是由COMMAND.COM程序提供的,用户可以在CONFIG.SYS文件中加入一行说明,用自己设计的shell模块替代COMMAND.COM。
        它由如下3个部分组成:
        (1)常驻部分CCPR,它包括中断22H、23H、24H、2EH等中断例程,以及检查和读入暂驻部分CCPT的程序。
        (2)初始化部分,它主要用于处理AUTOEXEC.BAT批文件,完成初始化后,该部分便退出内存。
        (3)暂驻部分CCPT,它包括所有DOS内部命令(如COPY、DIR等)的处理程序和批处理程序。对于DOS3.0以下版本,暂驻部分还包括可装入和执行外部命令的处理程序。
        常驻部分CCPR是被DOS的BIOS模块的初始化程序SysInt加载到内存低端的,位于DOS内核、盘缓冲区、系统文件表和可安装设备驱动程序等之上。暂驻部分位于内存高端,该部分所占据的存贮空间可被应用程序覆盖占用,当某一应用程序终止时,常驻部分作“检查累加和”方法来判定暂驻部分是否仍在内存中,如若不在,便将它从盘上重新读入内存。
        在早期的实现中,DOS必须在64KB内存下运行,所以让shell模块的极小一部分常驻内存。虽然现在个人计算机的内存已经较大,但考虑到用户接口越来越大,而应用程序又总希望使用全部可使用的内存,故这个特性依然很有价值,并被保留下来。