第9章实例分析:MS-DOS操作系统9.1MS-DOS的处理机管理9.2MS-DOS的存储管理9.3MS-DOS的文件管理9.4MS-DOS的设备管理本章着重讲述四个方面的内容:(1)MS-DOS的进程控制块——程序段前缀与环境块;(2)MS-DOS对常规内存的管理以及地址的“分段”表示法;(3)MS-DOS的文件分配表和树型目录结构;(4)MS-DOS的设备头链以及对块设备、字符设备的不同管理方法。9.1MS-DOS的处理机管理9.1.1MS-DOS的基本组成MS-DOS采用的是层次模块结构,由一个引导程序和三个程序模块组成BOOT(引导程序)IO.SYS及ROM-BIOSMSDOS.SYSCOMMAND.COMCOMMAND.COM(命令处理程序)MSDOS.SYS(DOS核)IO.SYS(BIOS接口模块)BOOT(引导程序)ROM-BIOS图9-1MS-DOS的基本组成图9-2DOS的内存分配图9.1.2MS-DOS的进程MS-DOS本质上是一个单用户、单任务的操作系统。MS-DOS进程由三部分构成:程序段(包括代码、数据、堆栈)、程序段前缀(PSP)和环境块(EVB)。1.程序段前缀(PSP)图9-3DOS的程序段前缀2.环境块(EVB)图9-4程序段前缀与环境块的关系9.1.3MS-DOS的作业管理1.MS-DOS的命令处理(联机方式)2.MS-DOS的批处理(脱机方式)目标程序ZONG.OBJ可执行程序ZONG.EXE库函数FORTRAN.LIB其他目标程序NNNFORTRAN源程序文稿编辑过程正确?编译过程正确?连接过程YY执行过程正确?作业完成Y源程序ZONG.FOR用户命令1.EDLIN2.FOR1,FOR23.LINK4.ZONG图9-5在MS-DOS下一个作业的执行过程9.2MS-DOS的存储管理9.2.1MS-DOS对常规内存的管理MS-DOS对常规640KB内存的管理,采用的是静态式分区存储管理技术,向用户提供多种存储分配策略。为了管理内存中所有已分配的和空闲的分区,MS-DOS在每个内存分区的前面都开辟一个16个字节(即一个节长)的区域,在它的里面存放该分区的尺寸和使用信息。这个区域被称为是一个内存分区所对应的内存控制块(MCB)。图9-6分区内存控制块结构图9-7内存控制块与分区的关系MS-DOS采用这种方法管理内存中的分区后,各分区之间建立起了这样一种关系:从一个内存控制块的起始地址出发,加上一节长度(即16个字节),就到达该控制块所管理的内存分区。在此基础上,再加上该分区的长度(它在内存控制块里记录着),就到达下一个分区的内存控制块的起始位置。MS-DOS较高版本对常规内存的分配,提供了可做出选择的三种方法:(1)最先适应法(2)最佳适应法(3)最后适应法系统初启时,MS-DOS默认的是最先适应法。9.2.2PC机地址的构成——“分段”表示法为了利用一个字长表示出地址引线可以直接达到的存储范围,在IBMPC机中,采用了构成存储器地址的“分段”表示法。……图9-10MS-DOS中的段与非段所谓存储空间地址的“分段”表示法,就是用“段址:段内位移”来表示20位的单元地址。………图9-11MS-DOS地址的分段表示法图9-12MS-DOS物理地址的形成虽然一个单元的物理地址是唯一的,但因为一个单元可以被划分在不同的存储段中,因此用“段址:段内位移”表示单元地址时,可能出现不同的表示结果。9.2.3MS-DOS的各种内存区域图9-13给出了MS-DOS四个存储区域:常规内存区、上位内存区、高端内存区和扩充内存区的划分情形。80286以上直接寻址范围8086/8088直接寻址范围在直接寻址范围外在直接寻址范围外扩展内存扩充内存高端内存(HMA)上位内存(UM)常规内存0KB640KB1024KB1088KB16MB图9-13MS-DOS的不同内存区域1.常规内存区2.上位内存区3.高端内存区4.扩展内存区和扩充内存区9.3MS-DOS的文件管理9.3.1MS-DOS文件管理综述在MS-DOS中,按照文件的内容,同样把文件分成普通文件、目录文件和特殊文件三类。特殊文件是针对设备而言的,普通文件和目录文件则都存放在硬盘或软盘上。MS-DOS的文件名由两个部分组成:基本文件名和扩展名。在MS-DOS,从根目录出发、经过子目录、然后到达一个文件的路径,称为该文件的路径名。9.3.2MS-DOS的文件分配表(FAT)MS-DOS通过盘卷上的文件分配表,记录普通文件和子目录文件占用磁盘存储空间的情形。FAT中的表目总是从0开始顺序编号,表目0和1被用来存放磁盘介质标志等信息。因此,一个文件分配表从第2个表目开始,才真正用来记录磁盘空间的分配情形。…图9-17MS-DOS的文件分配表(FAT)从利用文件分配表管理文件存储空间的做法可以看出以下几点。(1)MS-DOS文件采用的是链接文件这种物理结构。(2)存放在磁盘文件存放区中的文件长度,只受盘空间容量的限制。子目录文件是存放在磁盘文件存放区的,因此MS-DOS虽然对根目录中的目录项数有限制,但对子目录中的目录项数没有限制,它只受限于盘空间的容量。(3)文件分配表起到了磁盘空间管理的作用,不必再用诸如“位示图”等来管理磁盘空间。(4)MS-DOS把簇的链接指针集中存放在FAT中,而不是在簇中,这一方面加快了定位文件位置的速度,另一方面也使得在MS-DOS中,对文件既可以进行顺序访问,也可以进行随机访问。(5)由于是以簇为文件存储空间的分配单位,因此总的来说,每一个文件平均要浪费半簇,它是由内部碎片造成的浪费。9.3.3MS-DOS的树型目录结构MS-DOS的每一个盘卷都有一个根目录表,简称根目录。根目录中有很多目录项,它们可能是一般文件的目录项,也可能是子目录文件的目录项。整个根目录被固定在盘卷的根目录区中。文件E文件F文件A文件B文件C文件D文件G文件J文件I文件H图9-18MS-DOS的目录项结构9.3.4MS-DOS文件访问的实现为了提高对文件访问的速度,MS-DOS在整个系统中设置了一张“系统文件表”(SFT)。该表主要用于记录系统当前同时打开的文件的有关信息,从而起到了活动文件目录的作用。……n-5图9-19MS-DOS的系统文件表……………………图9-20句柄、JFT、SFT之间的关系9.4MS-DOS的设备管理9.4.1MS-DOS设备管理综述在MS-DOS的IO.SYS中,准备有一组常用的标准字符设备驱动程序和块设备驱动程序,由它们支持系统提供的标准配置。MS-DOS也向用户提供添加新设备的手段,能够方便地安装相应的设备驱动程序。9.4.2MS-DOS设备驱动程序的构成MS-DOS的所有设备驱动程序都有如图9-21所示的结构,总体上分成两个部分。一个是由18个字节组成的设备头(DH),另一个是驱动程序的实际代码。图9-21MS-DOS的设备驱动程序结构……………………图9-22MS-DOS的设备头链9.4.3MS-DOS对块设备的管理块设备在MS-DOS中用于存储文件,因此与文件管理关系密切。这里给出块设备管理中用到的数据结构。1.驱动器参数块——DPB2.磁盘缓冲区(DBF)…………NULCON03H02H–1图9-23MS-DOS的DPB与DH联系示意9.4.4MS-DOS对字符设备的管理MS-DOS把字符设备视为流式文件,每一个字符设备的逻辑名就是这个文件的名字。1.为标准设备开辟专用的句柄2.自动打开AUX、CON、PRN三个字符设备文件3.继承主控程序COMMAND.COM打开的文件信息句柄号SFT中序号逻辑设备名对应的物理设备用途01CON键盘输入11CON显示器输出21CON显示器错误输出30AUX第1个串行通信口辅助输入/输出42PRN第1个并行通信口打印图9-24MS-DOS的专用句柄