九、MS-DOS操作系统简介
MS-DOS是美国Microsoft公司为IBM PC微型计算机开发的一个单用户、单任务磁盘操作系统,也称为IBM-DOS或PC-DOS。和其它微型机操作系统一样,MS-DOS的主要功能是进行文件管理和设备管理,其中文件系统负责建立、删除、读/写、检索文件,而输入输出系统则负责驱动显示器、键盘、磁盘、打印机以及异步通讯口的工作。
1.MS-DOS的系统结构
MS-DOS采用层次模块结构,它由三个层次模块和一个引导程序组成。这三个模块是文件系统(MSDOS.SYS)、命令处理程序(COMMAND.COM)和输入输出系统(IO.SYS)。其中输入输出系统又由驻在ROM中的基本输入输出系统BIOS和系统盘上的BIOS接口模块两部分组成。MS-DOS是用户与物理机器的接口,用户**它提供的一组键盘命令或一组软中断和系统功能调用来使用MS-DOS。命令处理程序(COMMAND.COM)可处理MS-DOS和操作员打入的键盘命令以及批处理文件。当命令处理程序执行操作员打入的键盘命令时,它就启动相应的程序运行。用户程序在运行过程中可以调用MS-DOS文件系统提供的一组系统功能调用。MS-DOS文件系统提供的系统功能调用主要有文件的建立、删除、读写以及其它各种文件操作。此外,它还管理内存、外设以及其它系统资源并为应用程序使用这组资源提供相应的系统功能调用。文件系统是MS-DOS的核心部分。当文件系统在处理系统功能调用时,要调用BIOS接口模块中的设备驱动程序提供的设备读写、控制等功能。最后由设备驱动程序调用BIOS驱动设备工作。BIOS是MS-DOS中惟一与设备有关的部分。由于它与硬件的关系较为密切,通常固化在ROM中,故也称为ROMBIOS。BIOS包括自检程序、一组设备输入输出子程序和装入程序。引导程序是在磁盘初始化时,由FORMAT命令写在软盘或硬盘的0柱0面1扇区上的,它在系统启动时用来查找和装入MS-DOS(IO.SYS和MSDOS.SYS)。
2.MS-DOS的存储管理
MS-DOS是基于单道程序设计方法的操作系统,它最早选用的微处理器芯片是Intel8088和8086。这类微处理器上共有20根地址总线,因而内存容量为1MB,编址从0开始到2 20 -1结束。其中除MS-DOS的常驻主存部分和硬件用于硬盘驱动、显示缓冲等需要外,可供用户使用的内存空间最多还剩余640KB。MS-DOS对用户空间采用单连续存储管理方法。当一个用户程序装入运行时,MS-DOS把整个用户区分配给它;当程序运行结束时,MS-DOS收回用户区以满足下一个用户程序的运行要求。用户区域最多只有640KB,这一限制使许多用户感到失望,因而从MS-DOS5.0开始管理的内存空间可以扩大到16MB(80286)或4GB(80386、80486),把所管理的内存空间可分成下列几类:
(1)常规内存把0KB至640KB的内存区域作为基本内存区,称为“常规内存”,可供所有的程序使用。其中MS-DOS5.0占用了一部分,其余可归用户使用。来源:www.examda.com
(2)保留内存指定址在640KB到1MB之间的内存区域,这部分区域也称“上方内存”(Upper Memory—缩记为UMB)。该区域供硬件使用,保留给屏幕处理、ROM BIOS或其它设备使用。
(3)扩展内存定址在1MB之后的内存称“扩展内存”,一般程序不能直接使用扩展内存。扩展内存的使用要用XMS(Extended Memory Specification)规范提供支持,所以,扩展内存有时也简称XMS。Microsoft的HIMEM.SYS是一个符合XMS规范的扩展内存管理程序,因而,在使用扩展内存前应首先在CONFIG.SYS中加入安装HIMEM.SYS的命令。扩展内存的第一段,即1MB到1MB+64KB的区域称为“高内存区”(High Memory Area—缩写HMA)。用户可以要求把常规内存中的DOS大部分常驻程序移到高内存区,以腾出更多的空间让用户的应用程序使用。
(4)扩充内存扩充内存是由EMS(Expanded Memory Specification)规范支持的内存,它被做成一块卡的方式插在扩充槽上,扩充内存可简称EMS。使用EMS时必须装入扩充内存管理程序EMM386.EXE。
3.MS-DOS的文件管理
(1)文件和文件名在MS-DOS中,所有的程序和数据都是以文件的形式存储在磁盘上的。为了区分不同的文件,每个文件必须有一个惟一的标识,在MS-DOS中把文件的标识称为“文件引用名”,简称“引用名”。引用名由三部分组成,格式如下([]中的部分是可以缺少的):
[〈盘符〉][〈文件名〉][.〈扩展名〉]
(2)目录结构MS-DOS的文件系统采用树形目录结构,树中的每一个结点都有一个名字以供访问。树的结点分为三类:根结点表示根目录;树枝结点表示子目录;树叶则表示文件。根目录又称为系统目录,每张盘上只有一个根目录。根目录中能存储的目录和文件的数量是有限的,子目录中能存储的目录或文件是没有限制的,只要磁盘能容纳就行。根目录的代号为“\”,不能改变,而子目录的名称可以自己定义,子目录名的格式与文件名类似,由不超过8个的有效字符组成。MS-DOS中把子目录也看做文件(称“目录文件”)。每一个文件在目录中占一个目录项,每个目录项由32个字节组成。当建立一个新文件时,MS-DOS会在指定的目录中建立该文件的目录项,登记文件名、指出文件长度、建立时间和日期、存放地址和属性等。在MS-DOS中,“簇”是磁盘空间的分配单位,一个簇由若干扇区组成(簇中扇区数取决于磁盘容量),首簇号指出文件在磁盘上的起始地址。文件的属性有“档案属性”(文件是否有备份)、“只读属性”(此文件只能读取,不能写入数据和删除)、“隐含属性”(文件被隐藏,可以使用但不能拷贝或删除)、“系统属性”(不能拷贝、删除和随意修改)等。
(3)绝对路径和相对路径在MS-DOS中允许用“绝对路径”和“相对路径”两种方式来寻找文件。文件的绝对路径是指从根目录到指定文件或目录的通路,这个通路是惟一的,其路径是由通路所经过的所有目录的目录名组成。绝对路径以“\”开始,目录名之间用反斜杠“\”隔开。如果只允许用户使用绝对路径来指定文件,显然会有以下两个不足:从系统的实现来看,文件的查找总是要从根目录开始,因而查找的时间较长;从用户的使用来看,用户总是从根目录开始指定其文件的路径,当路径较长时,用户常常感到很不方便。事实上,用户在上机操作的一段时间内,常常仅访问一个子目录下的文件。因此,为了提高系统效率和方便用户使用,在MS-DOS中引进了当前目录和相对路径的概念。在系统初始启动之后,当前目录就是根目录,以后,用户可以用“改变当前目录”命令进行修改。如果文件就在当前目录中,则仅指出文件名即可,MS-DOS将在当前目录中寻找该文件。如果文件不在当前目录中但在当前目录的下级目录中,则可指出从当前目录到指定文件或目录的通路,从当前目录开始的路径称“相对路径”。相对路径是不以“\”开始的路径。为了在键盘命令中指出要求MS-DOS进行处理的某个文件或目录,在输入命令行中通常应打入:
[〈盘符〉][〈路径〉]〈文件名〉或[〈盘符〉]〈路径〉用来指定某个文件或某个目录。为了方便起见,在下文中将它们称为“文件路径名”或“目录路径名”。
(4)文件结构MS-DOS中文件的逻辑结构是流式文件结构,即文件中的信息不再划分逻辑记录。存储结构采用链接文件结构,但链接指针不是保存在文件的信息块中,而是集中保存在文件定位表FAT中。在MS-DOS中盘空间的分配单位是“簇”,簇的大小由盘的类型决定,对于双面软盘,簇的大小为1KB(两个磁盘块)。FAT表中每个登记项顺序编号,与簇号对应。在MS-DOS中的链接文件结构有四个特点:一是在文件目录项中指出文件的首簇号;二是文件的长度仅受盘空间容量的限制;三是文件定位表FAT也起到了“磁盘空间分配表”的作用,而不必再另用位示图等来表示磁盘空间的分配情况了,FAT中为“000”的登记项所对应的簇号就是当前空闲的盘空间;四是MS-DOS把文件的链接指针集中在FAT中,而不是分散在磁盘块中,因此,能很快地找到文件的存放位置,这种链接结构既可采用顺序存取方式,又可有效地进行随机存取。
(5)文件的使用MS-DOS为应用程序提供了一组使用文件的系统功能调用:打开文件、建立文件、读文件、写文件、删除文件、改变文件读/写指针、关闭文件等。在使用文件前必须先“打开文件”(文件已存在的情况)或“建立文件”(文件不存在的情况),使用结束后要“关闭文件”。另外,用户可以用文件类型操作命令来管理和使用文件。关于文件的常用操作命令的具体使用请参考有关手册。
4.MS-DOS的设备管理
(1)块设备与字符设备
按主存储器与设备交换的单位来分类,MS-DOS把设备分成两类:块设备和字符设备。块设备交换信息的单位为“块”,块设备主要用于存储文件信息,硬盘和软盘都是软设备。在块设备上存储信息是按块组织的,程序执行时可以从这些设备上读取某个文件信息,也可以将某个文件信息存储到它们上面去。字符设备交换信息的单位为“字节”,字符设备主要是作为一种输入输出工具,例如,键盘、显示器、行式打印机等,字符设备上的信息往往是以字符为单位组织的。
(2)设备的驱动
MS-DOS设备管理的主要任务是提供各类设备驱动程序(包含在BIOS接口模块中),尽管各类设备的特性有很大差异,但设备驱动程序为文件系统MSDOS.SYS提供了一组统一的设备驱动功能和接口。文件系统就用规定的命令码调用设备驱动功能,完成一次输入输出操作。MS-DOS的设备驱动程序分三部分:设备头、设备策略模块和设备中断模块。设备头用于标识设备的类型是字符设备还是块设备。如果是字符设备,还必须定义该设备的设备名(即以后提到的设备文件名)。如果是块设备,还要指出该设备对应的驱动器个数(在MS-DOS中称为单元数)。另外,设备头必须指出设备中断模块和设备策略模块的入口地址。
(3)在MS-DOS中,除磁盘文件外,把一些常用的标准外部设备也看做文件,称为“设备文件”。设备文件的引用名为:
<设备名>[<序号>][:]