第7章文件管理 本章主要介绍0S如何通过文件系统来管理程序、数据等信息资源,具体包括文件和文 件系统的基本概念、文件的逻辑结构和物理组织、文件存储空间的管理、目录的管理、文 件的共享和保护以及数据一致性控制等内容。 7.1基本内容 7.1.1文件和文件系统 1.文件和文件系统 (1)文件:文件是一个具有符号名的一组相关联元素的有序序列。 (②)文件系统:操作系统中负责管理和存取文件信息的软件机构称为文件管理系统,简称 文件系统 它由三部分组成 ①与文件管理有关的软件;②被管理的文件;③实施文件管理所需的数据结构 (3)文件系统的作用 ①从系统角度来看,文件系统是对文件存储器的存储空间进行组织和分配,负责文件的 存储并对存入的文件进行保护和检索的系统 ②从用户角度来看,文件系统实现了按名存取,并具有使用的方便性、数据的安全性和接 口的统一性等特性 2.文件的类型 (1)按性质和用途分类:系统文件;库文件;用户文件。 用户文件又可分为临时文件、档案文件和永久文件。 (2)按保护方式分类:只读文件;读写文件;不保护文件 (3)按信息流向分类:输入文件;输出文件;输入输出文件。 (4)UNIX系统中的文件分类:普通文件(这种文件可以是系统文件、库文件、用户文件。); 目录文件(目录文件是由文件目录组成的文件);特别文件(这类文件由I/0慢速字符设备构 成)。 3.文件系统的基本功能 (1)文件的结构及有关存取方法。 (2)文件的目录机构和有关处理。 (3)文件存储空间的管理。 (4)文件的共享和存取控制 (5)文件操作和使用 7.1.2文件的结构与存取设备 1.文件的结构 (1)文件的逻辑结构 文件的逻辑结构是呈现在用户面前的文件结构。可以分为两种 ①有结构的记录文件。它又分为两种:定长记录文件;变长记录文件。 无结构的流式文件是有序字符的集合。文件长度为文件所包含的字符总数 (2)文件的物理结构 文件的物理结构是指逻辑文件在文件存储器上的存储结构 为了有效地分配文件存储的空间,通常把它们分成若干块,并以块为单位进行分配和传 送。每个块称为物理块,而块中的信息称为物理记录。物理块长通常是固定的。允许一个逻 辑记录占用几块,也可以在一块中存放几个逻辑记录。 文件在逻辑上都可以看成是连续的,但在物理介质上存放时,却可以有多种形式。以下
第 7 章文件管理 本章主要介绍 OS 如何通过文件系统来管理程序、数据等信息资源,具体包括文件和文 件系统的基本概念、文件的逻辑结构和物理组织、文件存储空间的管理、目录的管理、文 件的共享和保护以及数据一致性控制等内容。 7.1 基本内容 7.1.1 文件和文件系统 1.文件和文件系统 (1)文件:文件是一个具有符号名的一组相关联元素的有序序列。 (2)文件系统:操作系统中负责管理和存取文件信息的软件机构称为文件管理系统,简称 文件系统。 它由三部分组成: ①与文件管理有关的软件;②被管理的文件;③实施文件管理所需的数据结构。 (3)文件系统的作用 ① 从系统角度来看,文件系统是对文件存储器的存储空间进行组织和分配,负责文件的 存储并对存入的文件进行保护和检索的系统。 ② 从用户角度来看,文件系统实现了按名存取,并具有使用的方便性、数据的安全性和接 口的统一性等特性。 2.文件的类型 (1)按性质和用途分类:系统文件;库文件;用户文件。 用户文件又可分为临时文件、档案文件和永久文件。 (2)按保护方式分类:只读文件;读写文件;不保护文件。 (3)按信息流向分类:输入文件;输出文件;输入输出文件。 (4)UNIX 系统中的文件分类:普通文件(这种文件可以是系统文件、库文件、用户文件。); 目录文件(目录文件是由文件目录组成的文件);特别文件(这类文件由 I/0 慢速字符设备构 成)。 3.文件系统的基本功能 (1)文件的结构及有关存取方法。 (2)文件的目录机构和有关处理。 (3)文件存储空间的管理。 (4)文件的共享和存取控制。 (5)文件操作和使用。 7.1.2 文件的结构与存取设备 1.文件的结构, (1)文件的逻辑结构 文件的逻辑结构是呈现在用户面前的文件结构。可以分为两种: ①有结构的记录文件。它又分为两种:定长记录文件;变长记录文件。 ②无结构的流式文件是有序字符的集合。文件长度为文件所包含的字符总数。 (2)文件的物理结构 文件的物理结构是指逻辑文件在文件存储器上的存储结构。 为了有效地分配文件存储的空间,通常把它们分成若干块,并以块为单位进行分配和传 送。每个块称为物理块,而块中的信息称为物理记录。物理块长通常是固定的。允许一个逻 辑记录占用几块,也可以在一块中存放几个逻辑记录。 文件在逻辑上都可以看成是连续的,但在物理介质上存放时,却可以有多种形式。以下
是几种基本的文件物理结构 ①连续结构:是将逻辑文件信息存放在文件存储器上相邻的物理块中。 连续结构的优点是结构简单,存取速度较快;缺点是建立文件时,要求给出文件的最大 长度,且不便于增删,一般只能在末端进行。 ②串联结构:也称为链接结构。其物理块可以不连续,也不必顺序排列;在每个物理块中 设置一个指针(也称链接字),它指向该文件的下一个物理块号 串联结构的优点是文件可动态增删,不必事先知道文件的最大长度p缺点是只适合顺序 存取,必须从头开始査找,査找速度低,且因每块都要设置链接字,破坏了物理信息的完整 性。 ③索引结构:要求为每个文件建立一张索引表,其中每个表目指出文件逻辑记录所在的 物理块号。索引表是由系统自动建立的。 索引结构的优点是有串联结构的所有优点,克服了它的缺点,可随机存取;缺点是增加 了索引表的空间开销,增加了一次访问盘的操作而降低了丈件访问速度 当文件很大时,文件的索引表也会很大。如果索引表的大小超过了一个物理块时,可以 将索引表本身作为一个文件,再为其建立一个”索引表”,这个”索引表"作为文件索引的索引, 从而构成了二级索引。第一级索引表的表目指向第二级索引,第二级索引表的表目指向相应 信息所在的物理块号。以此类推可再逐级建立索引,进而构成多级索引 ④Hash(散列)文件:是采用计算寻址结构,把链值通过某种计算处理,转换成相应记录的 相应地址。计算寻址就是通过Hash函数计算后求得的地址。 Hash文件的优点是不需索引,节省查找时间;缺点是需要使用Hash(散列)函数计算。 2.文件的存取方法 文件的存取方法是指读写文件存储器上的一个物理块的方法。 存取方法有三类:顺序存取法、直接存取法和按键存取法 1)顺序存取法严格按物理记录排列的顺序依次存取 (2)直接存取法允许用户随意存取文件中的任何一个物理记录,而不管上次存取了哪 个记录。 3)按键存取法实质上也是直接存取法,它不是根据记录编号或地址来存取的,而是根 据文件中各记录内容进行存取的。 文件的物理结构密切依赖于文件存储器的特性和存取方法。 如果采用直接存取法,则索引文件效率最高,连续文件效率居中,串联文件效率最低 3.文件存储设备 文件的存储设备主要有磁带、磁盘、光盘等。由于存储设备的特性可以决定文件的存 取方法,因此这里介绍以磁带为代表的顺序存储设备和以磁盘为代表的直接存储设备的特 性,以及存储设备、文件物理结构与存取方法之间的关系 (1)磁带:是一种典型的顺序存取设备,这种设备只有在前面的物理块被存取访问过 之后,才能存取后续物理块的内容。由于磁带机的启动和停止都要花费一定的时间,因此在 磁带的相邻物理块之间设计有一段间隙将它们隔开,如下所示 匚-间第1块间第块间一 磁带的存取速度与信息密度(字符数/英寸〉、磁带带速(英寸/秒)和块间间隙有关。如 果带速高,信息密度大且所需块间隙(磁头启动和停止时间〉小,则磁带存取速度高。反之, 若磁带带速低,信息密度小且所需块间隙〈磁带启动和停止时间〉大,则磁带存取速度低。 由于磁带读写时只有在第ⅰ块被存取之后,才能对第i+1块进行存取操作,因此,某个特定物 理块的存取访问与该物理块到磁头当前位置的距离有很大关系
是几种基本的文件物理结构: ①连续结构:是将逻辑文件信息存放在文件存储器上相邻的物理块中。 连续结构的优点是结构简单,存取速度较快;缺点是建立文件时,要求给出文件的最大 长度,且不便于增删,一般只能在末端进行。 ②串联结构:也称为链接结构。其物理块可以不连续,也不必顺序排列;在每个物理块中 设置一个指针(也称链接字),它指向该文件的下一个物理块号。 串联结构的优点是文件可动态增删,不必事先知道文件的最大长度 p 缺点是只适合顺序 存取,必须从头开始查找,查找速度低,且因每块都要设置链接字,破坏了物理信息的完整 性。 ③索引结构:要求为每个文件建立一张索引表,其中每个表目指出文件逻辑记录所在的 物理块号。索引表是由系统自动建立的。 索引结构的优点是有串联结构的所有优点,克服了它的缺点,可随机存取;缺点是增加 了索引表的空间开销,增加了一次访问盘的操作而降低了丈件访问速度。 当文件很大时,文件的索引表也会很大。如果索引表的大小超过了一个物理块时,可以 将索引表本身作为一个文件,再为其建立一个"索引表",这个"索引表"作为文件索引的索引, 从而构成了二级索引。第一级索引表的表目指向第二级索引,第二级索引表的表目指向相应 信息所在的物理块号。以此类推可再逐级建立索引,进而构成多级索引。 ④Hash(散列)文件:是采用计算寻址结构,把链值通过某种计算处理,转换成相应记录的 相应地址。计算寻址就是通过 Hash 函数计算后求得的地址。 Hash 文件的优点是不需索引,节省查找时间;缺点是需要使用 Hash(散列)函数计算。 2.文件的存取方法 文件的存取方法是指读写文件存储器上的一个物理块的方法。 存取方法有三类:顺序存取法、直接存取法和按键存取法。 (1)顺序存取法严格按物理记录排列的顺序依次存取。 (2)直接存取法允许用户随意存取文件中的任何一个物理记录,而不管上次存取了哪一 个记录。 (3)按键存取法实质上也是直接存取法,它不是根据记录编号或地址来存取的,而是根 据文件中各记录内容进行存取的。 文件的物理结构密切依赖于文件存储器的特性和存取方法。 如果采用直接存取法,则索引文件效率最高,连续文件效率居中,串联文件效率最低。 3.文件存储设备 文件的存储设备主要有磁带、磁盘、光盘等。由于存储设备的特性可以决定文件的存 取方法,因此这里介绍以磁带为代表的顺序存储设备和以磁盘为代表的直接存储设备的特 性,以及存储设备、文件物理结构与存取方法之间的关系。 (1)磁带:是一种典型的顺序存取设备,这种设备只有在前面的物理块被存取访问过 之后,才能存取后续物理块的内容。由于磁带机的启动和停止都要花费一定的时间,因此在 磁带的相邻物理块之间设计有一段间隙将它们隔开,如下所示: 磁 带 … 间隙 第 i 块 间隙 第 i+1 块 间隙 … 磁带的存取速度与信息密度(字符数/英寸〉、磁带带速(英寸/秒)和块间间隙有关。如 果带速高,信息密度大且所需块间隙(磁头启动和停止时间〉小,则磁带存取速度高。反之, 若磁带带速低,信息密度小且所需块间隙〈磁带启动和停止时间〉大,则磁带存取速度低。 由于磁带读写时只有在第 i 块被存取之后,才能对第 i+1 块进行存取操作,因此,某个特定物 理块的存取访问与该物理块到磁头当前位置的距离有很大关系
(2)磁盘是典型的直接存取设备,这种设备允许文件系统直接存取磁盘上的任意物理 块。磁盘机一般由若干磁盘片组成,可沿一个固定方向高速旋转。每个盘面对应一个磁头, 磁臂可沿半径方向移动。磁盘上的一系列同心圆称为磁道,磁道沿径向又分成大小相等的多 个扇区,与盘片中心有一定距离的所有磁道称为一个柱面。因此,磁盘上的每个物理块可用 柱面号,磁头号和扇区号表示。 访问磁盘时间由三部分组成,即寻道时间、旋转延迟时间和传输时间,其中寻道自才间 是指将磁头从当前位置移动到指定磁道所经历的时间,旋转延迟时间是指定扇区移动到磁 头下面所经历的时间,传输时间是指将扇区上的数据从磁盘读出或向磁盘写入数据所经历 的时间 表7.1存取设备、存取方法和物理结构之间的关系 存取设备 磁带 物理结构顺序结构链接结构|索引结构|顺序结构 存取方法直接或顺序顺序直接或顺序顺序 文件长度固定可变、固定可变、固定固定 7.1.3文件目录管理 1.编排文件目录的原则 (1)系统中的文件种类繁多、数量庞大,为了使用户方便地找到文件,需要在系统中建立 一套目录机构。 (2)编排目录的原则是:能够实现″按名存取″,使査找文件准确、快速;解决命名的冲突 及文件共享等问题。 2.文件控制块、目录项和索引结点 为了能对一个文件进行正确的存取,必须为它设置用于描述和控制文件的数据结构,称 之为"文件控制块(FCB)"。文件控制块中最基本的内容是文件名和文件的物理地址,其他的 内容通常有文件的逻辑结构、文件的物理结构、文件的长度、文件的存取权限、文件的建 立日期和时间、文件最后一次修改的臼期和时间、文件的连接计数及文件主的标识符等文 件属性信息 文件控制块与文件一一对应,并分别存放,我们将文件控制块的有序集合称作目录,而 其中的每个文件控制块被称为目录项。目录通常也是以文件的方式存放在外存上,因此,也 将它称为目录文件。 文件目录通常跟文件一起存放在外存上,当文件很多时,文件目录可能要占用大量的物 理块。此时,在文件目录中查找一个指定的文件可能要多次启动外存,故十分费时。而在检 索目录的过程中,实际上只用到了其中的文件名信息,仅当找到了匹配的目录项(即其中的 文件名与指定的文件名相同)后,才需要从该目录项中读出该文件的物理地址等信息 为此,有些系统,如UNIX系统,便采用把文件名和文件描述信息分开的办法,即将文件最 描述信息单独形成一个称为索引结点的数据结构,存放在外存的索引结点区,而组成文件目 录的目录项中仅有文件名和指向该文件所对应的索引绪点的指针。这样,便可大大减少一文 件目录所占的物理块数,从而加快检索目录的速度 3.目录结构 目录结构是指文件目录的组织方式,它将直接关系到文件的存取速度以及文件的共享 性和安全性。常用的目录结构有: (1)单级目录结构 单级目录结构是指在整个文件系统中只建立一张目录表,每个文件占其中的一个表项 每当要建立一个新文件时,必须先检索所有的目录项,以保证新文件名在目录中是惟-的:然 后再从目录表中找出一个空白目录项,填入新文件的文件名和其他说明信息。删除文件时
(2)磁盘是典型的直接存取设备,这种设备允许文件系统直接存取磁盘上的任意物理 块。磁盘机一般由若干磁盘片组成,可沿一个固定方向高速旋转。每个盘面对应一个磁头, 磁臂可沿半径方向移动。磁盘上的一系列同心圆称为磁道,磁道沿径向又分成大小相等的多 个扇区,与盘片中心有一定距离的所有磁道称为一个柱面。因此,磁盘上的每个物理块可用 柱面号,磁头号和扇区号表示。 访问磁盘时间由三部分组成,即寻道时间、旋转延迟时间和传输时间,其中寻道自才间 是指将磁头从当前位置移动到指定磁道所经历的时间,旋转延迟时间是指定扇区移动到磁 头下面所经历的时间,传输时间是指将扇区上的数据从磁盘读出或向磁盘写入数据所经历 的时间。 表 7.1 存取设备、存取方法和物理结构之间的关系 存取设备 磁盘 磁带 物理结构 顺序结构 链接结构 索引结构 顺序结构 存取方法 直接或顺序 顺序 直接或顺序 顺序 文件长度 固定 可变、固定 可变、固定 固定 7.1.3 文件目录管理 1.编排文件目录的原则 (1)系统中的文件种类繁多、数量庞大,为了使用户方便地找到文件,需要在系统中建立 一套目录机构。 (2)编排目录的原则是: 能够实现"按名存取",使查找文件准确、快速;解决命名的冲突 及文件共享等问题。 2.文件控制块、目录项和索引结点 为了能对一个文件进行正确的存取,必须为它设置用于描述和控制文件的数据结构,称 之为"文件控制块(FCB)"。文件控制块中最基本的内容是文件名和文件的物理地址,其他的 内容通常有文件的逻辑结构、文件的物理结构、文件的长度、文件的存取权限、文件的建 立日期和时间、文件最后一次修改的臼期和时间、文件的连接计数及文件主的标识符等文 件属性信息。 文件控制块与文件一一对应,并分别存放,我们将文件控制块的有序集合称作目录,而 其中的每个文件控制块被称为目录项。目录通常也是以文件的方式存放在外存上,因此,也 将它称为目录文件。 文件目录通常跟文件一起存放在外存上,当文件很多时,文件目录可能要占用大量的物 理块。此时,在文件目录中查找一个指定的文件可能要多次启动外存,故十分费时。而在检 索目录的过程中,实际上只用到了其中的文件名信息,仅当找到了匹配的目录项(即其中的 文件名与指定的文件名相同)后,才需要从该目录项中读出该文件的物理地址等信息。 为此,有些系统,如 UNIX 系统,便采用把文件名和文件描述信息分开的办法,即将文件最 描述信息单独形成一个称为索引结点的数据结构,存放在外存的索引结点区,而组成文件目 录的目录项中仅有文件名和指向该文件所对应的索引绪点的指针。这样,便可大大减少一文 件目录所占的物理块数,从而加快检索目录的速度。 3.目录结构 目录结构是指文件目录的组织方式,它将直接关系到文件的存取速度以及文件的共享 性和安全性。常用的目录结构有: (1)单级目录结构 单级目录结构是指在整个文件系统中只建立一张目录表,每个文件占其中的一个表项。 每当要建立一个新文件时,必须先检索所有的目录项,以保证新文件名在目录中是惟-的;然 后再从目录表中找出一个空白目录项,填入新文件的文件名和其他说明信息。删除文件时
先从目录中找到该文件的目录项,然后再根据其中的物理地址回收外存空间,并清除该目录 项 单级目录的管理和实现十分简单。但它不能满足对目录管理的要求,例如它不允许文件 重名,因此也不便于实现文件共享;而且,当文件数目较多时,它的检索速度会变得十分缓 慢。 2)两级目录结构 为克服简单文件目录的缺点,可采用二级目录。二级目录由主目录表(MFD》和用户文件 目录表(UFD)组成。主目录表是管理用户目录表的总文件目录。用户文件目录表由各用户建 立自己的名空间构成。二级目录的优点是解决了"重名”、"别名”问题,提高了查找速度,比 一级目录快得多。 (3)多级目录结构 为了进一步提高对目录的检索速度,使用户更加方便地组织和使用自己的文件,现代操 作系统普遍使用多级目录结构(又称为树形目录结构)来进行文件管理。主目录在这里被称 为根目录,数据文件被称为树叶,而其他的目录均作为树的结点 通常,一个用户进程在一给定的时间内所访问的文件仅局限于某个文件目录之下。为了简化 文件的查找过程,可将该文件目录设置成”当前目录”或"工作目录”,以后用户进程对各文件 的访问都可相对于”当前目录"而进行,而将当前目录到数据文件之间的所有目录文件名(不 包括当前目录文件名)与数据文件名用/依次连接起来,便构成了文件的相对路径名。 4.文件目录项的组织和查询技术 (1)文件目录项的组织 文件目录项的组织随系统而异。不同系统的文件目录项的组织如下 ①CPM中的目录项:CP/M是一个早期的8位微机操作系统,该系统采用简单目录结构, 其目录项包含文件名、文件类型、盘驱动器号、范围、磁盘块数和磁盘块号。 ②MS-D0S中的目录项。MS-D0S采用树型目录结构。其目录项包含文件名、类型、属 性、时间、日期、首簇号、文件长度。MS-D0S采用串联(链接〉结构,其第一个磁盘块的块 号(称为首簇号〉放在目录项中,根据首簇号,按链接表(文件分配表FAT)可以找出该文件的 所有块 ③UNIX中的目录项。UNIX中使用的目录结构非常简单,每个目录项仅包含一个文件名及 其i节点号,而有关文件目录项中的其余文件结构信息、文件控制信息、文件管理等信息均 放在i节点中。 (2)目录查询系统 当用户要访问一个文件时,系统首先要利用用户提供的路径名对目录进行查询,只要找 到对应的文件控制块或索引结点,便可找到具体的文件并对之进行相应的操作。在读/写文 件前,必须先打开文件。打开文件时,操作系统利用用户给出的文件路径名到相应的目录项 中查找该文件相关信息:文件结构信息、文件管理信息和文件控制信息。 7.1.4文件存储空间管理 1.存储空间管理程序应解决的几个问题 个大容量的文件存储器为系统本身和许多用户所共享。为方便用户"按名存取”所需 之文件,系统应能自动为用户分配及管理系统和用户的存储空间。为此,应解决以下三个问 (1)登记空闲区的分布情况 (2)按需要给一个文件分配存储空间。 (3)收回不再需要保留的文件所占的存储空间。 以上问题都归结为盘空闲区的管理问题
先从目录中找到该文件的目录项,然后再根据其中的物理地址回收外存空间,并清除该目录 项。 单级目录的管理和实现十分简单。但它不能满足对目录管理的要求,例如它不允许文件 重名,因此也不便于实现文件共享;而且,当文件数目较多时,它的检索速度会变得十分缓 慢。 (2)两级目录结构 为克服简单文件目录的缺点,可采用二级目录。二级目录由主目录表(MFD〉和用户文件 目录表(UFD)组成。主目录表是管理用户目录表的总文件目录。用户文件目录表由各用户建 立自己的名空间构成。二级目录的优点是解决了"重名"、"别名"问题,提高了查找速度,比 一级目录快得多。 (3)多级目录结构 为了进一步提高对目录的检索速度,使用户更加方便地组织和使用自己的文件,现代操 作系统普遍使用多级目录结构(又称为树形目录结构)来进行文件管理。主目录在这里被称 为根目录,数据文件被称为树叶,而其他的目录均作为树的结点。 通常,一个用户进程在一给定的时间内所访问的文件仅局限于某个文件目录之下。为了简化 文件的查找过程,可将该文件目录设置成"当前目录"或"工作目录",以后用户进程对各文件 的访问都可相对于"当前目录"而进行,而将当前目录到数据文件之间的所有目录文件名(不 包括当前目录文件名)与数据文件名用"/"依次连接起来,便构成了文件的相对路径名。 4.文件目录项的组织和查询技术 (1)文件目录项的组织 文件目录项的组织随系统而异。不同系统的文件目录项的组织如下: ①CP/M 中的目录项:CP/M 是一个早期的 8 位微机操作系统,该系统采用简单目录结构, 其目录项包含文件名、文件类型、盘驱动器号、范围、磁盘块数和磁盘块号。 ②MS -DOS 中的目录项。MS -DOS 采用树型目录结构。其目录项包含文件名、类型、属 性、时间、日期、首簇号、文件长度。MS -DOS 采用串联(链接〉结构,其第一个磁盘块的块 号(称为首簇号〉放在目录项中,根据首簇号,按链接表(文件分配表 FAT)可以找出该文件的 所有块。 ③UNIX 中的目录项。UNIX 中使用的目录结构非常简单,每个目录项仅包含一个文件名及 其 i 节点号,而有关文件目录项中的其余文件结构信息、文件控制信息、文件管理等信息均 放在 i 节点中。 (2)目录查询系统 当用户要访问一个文件时,系统首先要利用用户提供的路径名对目录进行查询,只要找 到对应的文件控制块或索引结点,便可找到具体的文件并对之进行相应的操作。在读/写文 件前,必须先打开文件。打开文件时,操作系统利用用户给出的文件路径名到相应的目录项 中查找该文件相关信息:文件结构信息、文件管理信息和文件控制信息。 7.1.4 文件存储空间管理 1.存储空间管理程序应解决的几个问题 一个大容量的文件存储器为系统本身和许多用户所共享。为方便用户"按名存取"所需 之文件,系统应能自动为用户分配及管理系统和用户的存储空间。为此,应解决以下三个问 题。、 (1)登记空闲区的分布情况。 (2)按需要给一个文件分配存储空间。 (3)收回不再需要保留的文件所占的存储空间。 以上问题都归结为盘空闲区的管理问题
2.常用的盘空闲区管理方法 (1)空白文件目录 盘空间上一个连续的未分配区域称为空白文件。系统为所有这些空白文件单独建立 个目录。对每个空白文件,在这个目录中建立一个表目。表目的内容包括第一个空白块地址 (物理块号)、空白块个数等。在进行存储空间的分配时,同样可采用首次适应、最佳适应等 算法:而回收时,同样要进行空闲区的合并。 这种方法的优点是空闲区的分配和回收都相当容易,但用来管理空闲区的空闲表需要 占用大量的存储空间。 (2)空白块链 该方法是将所有空白块用链接指针或索引结构把它们组成一个空白文件。释放和分配 空白块都可以在链首进行,只需要修改几个有关的链接字。本方法只要求在主存中保存一个 指针,令它指向第一个空白块。 这种方法的优点是实现简单;但工作效率低,因为每当在链上增加或移去空白块时需要 对空白块链做较大的调整,因而会有较大的系统开销 种改进方法是将空白块分成若干组,再用指针将组与组链接起来,将这种管理空白块 的方法称为成组链接法。这种成组链接法,在进行空白块的分配与回收时要比空白块链法节 省时间 (3)位示图法 位示图是利用二进制的一位来表示文件存储空间中的一个块的使用情况。一个m行、n 列的位示图,可用来描述m×n块的文件存储空间,当行号、列号和块号都是从0开始编号时, 第i行、第j列的二进制位对应的物理块号为i×n+j。如果"0"表示对应块空闲,"1”表示对 应块己分配,则在进行存储空间的分配时,可顺序扫描位示图,从中找出一个或一组其值为 0″的二进制位,将对应的块分配出去,并将这些位置1:而在回收某个块时,只需找到对应的 位,并将其值清0便可。 位示图法适合于所有的分配方式,它简单易行,而且位示图通常较小,故可将其读入内 存,从而进一步加快文件存储空间分配和回收的速度 (4)MS-D0S的盘空间管理 MS-DOS盘空间的分配采用文件分配表FAT;盘空间的分配单位称为簇(相当于块),簇的 大小因盘而异,每个簇在FAT表中占一个项。FAT表是一个简单的线性表,它由若干项组成 FAT表的头两项用来标记盘的类型,其余的每个项包含三个十六进制的字符;若为000,表示 空闲簇;FFF表示该簇是一个文件的最后一簇;若为其它任何十六进制字符,表示该簇是某 文件的下一簇号。 (5)UNIX文件存储空间的管理(成组链接法) 成组链接法是UNIX系统采用的空闲盘块管理方式。它将一个文件卷的所有空闲盘块按 固定大小(如每组100块)分成若干组,并将每一组的盘块数和该组所有的盘块号记入前一组 的最后一个盘块中,第一组的盘块数(可小于100)和该组所有的盘块号则记入超级块的空闲 盘块号楼中。 当系统要为用户分配文件所需的盘块时,若第一组不只一块,则将超级块中的空闲盘块 数减1,并将空闲盘块钱校顶的盘块分配出去:若第一组只剩一块且钱顶的盘块号不是结束 标记0,则先将该块的内容(记录有下一组的盘块数和盘块号)读到超级块中,然后再将该块 分配出去:否则,若楼顶的盘块号为结束标记0,则表示该磁盘上己无空闲盘块可供分配 在系统回收空闲盘块时,若第一组不满1∞块,则只需将回收块的块号填入超级块的空 闲盘块钱钱顶,并将其中的空闲盘块数加1:若第一组已有100块,则必须先将超级块中的空 闲盘块数和空闲盘块号写入回收块中,然后将盘块数1和回收块的块号记入超级块中,值得
2.常用的盘空闲区管理方法 (1)空白文件目录 盘空间上一个连续的未分配区域称为空白文件。系统为所有这些空白文件单独建立一 个目录。对每个空白文件,在这个目录中建立一个表目。表目的内容包括第一个空白块地址 (物理块号)、空白块个数等。在进行存储空间的分配时,同样可采用首次适应、最佳适应等 算法;而回收时,同样要进行空闲区的合并。 这种方法的优点是空闲区的分配和回收都相当容易,但用来管理空闲区的空闲表需要 占用大量的存储空间。 (2)空白块链 该方法是将所有空白块用链接指针或索引结构把它们组成一个空白文件。释放和分配 空白块都可以在链首进行,只需要修改几个有关的链接字。本方法只要求在主存中保存一个 指针,令它指向第一个空白块。 这种方法的优点是实现简单;但工作效率低,因为每当在链上增加或移去空白块时需要 对空白块链做较大的调整,因而会有较大的系统开销。 一种改进方法是将空白块分成若干组,再用指针将组与组链接起来,将这种管理空白块 的方法称为成组链接法。这种成组链接法,在进行空白块的分配与回收时要比空白块链法节 省时间。 (3)位示图法 位示图是利用二进制的一位来表示文件存储空间中的一个块的使用情况。一个 m 行、n 列的位示图,可用来描述 m×n 块的文件存储空间,当行号、列号和块号都是从 0 开始编号时, 第 i 行、第 j 列的二进制位对应的物理块号为 i×n+j。如果"0"表示对应块空闲,"1"表示对 应块己分配,则在进行存储空间的分配时,可顺序扫描位示图,从中找出一个或一组其值为 "0"的二进制位,将对应的块分配出去,并将这些位置 1;而在回收某个块时,只需找到对应的 位,并将其值清 0 便可。 位示图法适合于所有的分配方式,它简单易行,而且位示图通常较小,故可将其读入内 存,从而进一步加快文件存储空间分配和回收的速度。 (4)MS -DOS 的盘空间管理 MS-DOS 盘空间的分配采用文件分配表 FAT;盘空间的分配单位称为簇(相当于块),簇的 大小因盘而异,每个簇在 FAT 表中占一个项。FAT 表是一个简单的线性表,它由若干项组成。 FAT 表的头两项用来标记盘的类型,其余的每个项包含三个十六进制的字符;若为 000,表示 空闲簇;FFF 表示该簇是一个文件的最后一簇;若为其它任何十六进制字符,表示该簇是某 一文件的下一簇号。 (5)UNIX 文件存储空间的管理(成组链接法) 成组链接法是 UNIX 系统采用的空闲盘块管理方式。它将一个文件卷的所有空闲盘块按 固定大小(如每组 100 块)分成若干组,并将每一组的盘块数和该组所有的盘块号记入前一组 的最后一个盘块中,第一组的盘块数(可小于 100)和该组所有的盘块号则记入超级块的空闲 盘块号楼中。 当系统要为用户分配文件所需的盘块时,若第一组不只一块,则将超级块中的空闲盘块 数减 1,并将空闲盘块钱校顶的盘块分配出去:若第一组只剩一块且钱顶的盘块号不是结束 标记 0,则先将该块的内容(记录有下一组的盘块数和盘块号)读到超级块中,然后再将该块 分配出去:否则,若楼顶的盘块号为结束标记 0,则表示该磁盘上己无空闲盘块可供分配。 在系统回收空闲盘块时,若第一组不满 1∞块,则只需将回收块的块号填入超级块的空 闲盘块钱钱顶,并将其中的空闲盘块数加 1:若第一组已有 100 块,则必须先将超级块中的空 闲盘块数和空闲盘块号写入回收块中,然后将盘块数 1 和回收块的块号记入超级块中,值得
注意的是,超级块中的空闲盘块钱是临界资源,对该校的操作必须互斥地进行,因此,系统为 空闲盘块钱设置了一把锁,并通过上锁和解锁来实现对空闲盘块钱的互操作 成组链接法除了第一组空闲盘块外,其余空闲盘块的登记不占额外的存储空间;而超级 块(即文件卷的第1块)已在安装磁盘时拷入内存,因此,绝大部分的分配和回收工作可在国 内存中进行,从而使之具有较高的效率。 7.1.5文件的共享 文件共享是指系统允许多个用户(进程)使用同一份文件。在允许文件共享的系统中,如 果用户知道共享文件的路径名,并有访问该文件的权限,则可直接使用文件的路径名来访问 该共享文件。为了使用户能更方便地共享文件,很多系统还允许一个共享文件同时出现在多 个用户的目录下,这种共享可通过下述方法来实现。 1.目录结构中的共享 在目录结构中,可以采用同名或异名的方式来实现文件的共享。这时文件系统的目录结 构已不再是树型结构,而是一个有向的非循环图。异名共享所采用的方法称为文件的勾连 实现勾连的方法有两种:基于索引节点的共享和基于符号链的共享。 (1)基于索引结点的共享方式 在文件的索引结点中设置一个链接计数字段,用来表示链接到本索引结点(亦即文件) 上的用户目录项的数目。当用户C创建一个新文件时,其链接计数被置为1。如果用户B要 共享该文件,则可在B的目录中增加一目录工页,并填上新的文件名和指向该共享文件的索 引结点的指针,索引结点中的链接计数将被加1。 这种方式的缺点是文件主无法删除被他人共享的文件。如果C将共享文件删除并清除 相应的索引结点,则B中将有一个指向无效索引结点的目录工页,若该索引结点以后被分配 给另一个文件,则B将去共享一个错误的文件:如果C留下了索引结点,并将其链接计数减仁 由于C是文件主,若系统要记账收费,C将继续为该文件付账,直至其他用户执行删除操作时, 发现其链接计数为0,将其真正删除为止。 (2)利用符号链实现文件共享 为了使B能共享C的一个文件,可以由系统为B建立一个类型为LINK的新文件,并把该 文件放在B的目录下,在新文件中只包含了被链接文件的路径名。当B读该LINK类型的文 件时,将被os截获,并根据新文件中的路径名去读那小文件。这种实现文件共享的方式叫做 符号链接。在这种方式下,文件主删除被他人共享的文件后,其他用户再去访问该共享文件 时,会因找不到文件而失败,于是可再将符号链(即LIN类型的文件)删除,此时不会造成任 何影响。它的问题是其他用户访问共享文件时,必须根据路径中的分量名逐级地去检索目录, 因此加大了访问文件的开销:另外,尽管LINK类型的文件十分简单,但仍需为它配置一个索 引结点,飞并分配一个盘块来存放被链接文件的路径名,这同样会增加系统的的开销。符号 链接有一个很大的优点,即只要简单地提供一个机器的网络地址以及文件在该机器中的文 件路径名,便可链接全球任何一处机器上的文件 2.打开支件结构中的共享 文件目录结构中的共享是一种静态的共享。当多个用户同时打开某一文件对其访问时, 将在内存中建立打开文件结构,这时的共享称为打开文件结构中的共享,这是一种动,态的 共享。 文件系统中的打开文件结构由三部分组成z进程打开文件表、系统打开文件表和内存 (1)父、子进程打开文件的共享 父进程创建子进程时,除状态、标识以及与时间有关的少数控制项外,子进程基本上是 复制父进程的所有信息。子进程与父进程可以共享父进程所打开的文件。父、子进程可以
注意的是,超级块中的空闲盘块钱是临界资源,对该校的操作必须互斥地进行,因此,系统为 空闲盘块钱设置了一把锁,并通过上锁和解锁来实现对空闲盘块钱的互操作。 成组链接法除了第一组空闲盘块外,其余空闲盘块的登记不占额外的存储空间;而超级 块(即文件卷的第 1 块)已在安装磁盘时拷入内存,因此,绝大部分的分配和回收工作可在国 内存中进行,从而使之具有较高的效率。 7.1.5 文件的共享 文件共享是指系统允许多个用户(进程)使用同一份文件。在允许文件共享的系统中,如 果用户知道共享文件的路径名,并有访问该文件的权限,则可直接使用文件的路径名来访问 该共享文件。为了使用户能更方便地共享文件,很多系统还允许一个共享文件同时出现在多 个用户的目录下,这种共享可通过下述方法来实现。 1.目录结构中的共享 在目录结构中,可以采用同名或异名的方式来实现文件的共享。这时文件系统的目录结 构已不再是树型结构,而是一个有向的非循环图。异名共享所采用的方法称为文件的勾连。 实现勾连的方法有两种:基于索引节点的共享和基于符号链的共享。 (1)基于索引结点的共享方式 在文件的索引结点中设置一个链接计数字段,用来表示链接到本索引结点(亦即文件) 上的用户目录项的数目。当用户 C 创建一个新文件时,其链接计数被置为 1。如果用户 B 要 共享该文件,则可在 B 的目录中增加一目录工页,并填上新的文件名和指向该共享文件的索 引结点的指针,索引结点中的链接计数将被加 1。 这种方式的缺点是文件主无法删除被他人共享的文件。如果 C 将共享文件删除并清除 相应的索引结点,则 B 中将有一个指向无效索引结点的目录工页,若该索引结点以后被分配 给另一个文件,则 B 将去共享一个错误的文件:如果 C 留下了索引结点,并将其链接计数减仁 由于C是文件主,若系统要记账收费,C将继续为该文件付账,直至其他用户执行删除操作时, 发现其链接计数为 0,将其真正删除为止。 (2)利用符号链实现文件共享 为了使 B 能共享 C 的一个文件,可以由系统为 B 建立一个类型为 LINK 的新文件,并把该 文件放在 B 的目录下,在新文件中只包含了被链接文件的路径名。当 B 读该 LINK 类型的文 件时,将被 os 截获,并根据新文件中的路径名去读那小文件。这种实现文件共享的方式叫做 符号链接。在这种方式下,文件主删除被他人共享的文件后,其他用户再去访问该共享文件 时,会因找不到文件而失败,于是可再将符号链(即 LINK 类型的文件)删除,此时不会造成任 何影响。它的问题是其他用户访问共享文件时,必须根据路径中的分量名逐级地去检索目录, 因此加大了访问文件的开销:另外,尽管 LINK 类型的文件十分简单,但仍需为它配置一个索 引结点,飞并分配一个盘块来存放被链接文件的路径名,这同样会增加系统的的开销。符号 链接有一个很大的优点,即只要简单地提供一个机器的网络地址以及文件在该机器中的文 件路径名,便可链接全球任何一处机器上的文件。 2.打开支件结构中的共享 文件目录结构中的共享是一种静态的共享。当多个用户同时打开某一文件对其访问时, 将在内存中建立打开文件结构,这时的共享称为打开文件结构中的共享,这是一种动,态的 共享。 文件系统中的打开文件结构由三部分组成 z 进程打开文件表、系统打开文件表和内存 Inode。 (1)父、子进程打开文件的共享 父进程创建子进程时,除状态、标识以及与时间有关的少数控制项外,子进程基本上是 复制父进程的所有信息。子进程与父进程可以共享父进程所打开的文件。父、子进程可以
并发运行。它们也可以各自独立地打开文件,但这些各自独立打开的文件不能共享 (2)同名或异名打开文件的共享 不同进程通过同名或异名方式打开同一文件实现共享时,各进程使用各自的进程打开文 件表和各自的名方式打开同一文件实现共享。 3.管道文件 采用管道进行通信就像在两个进程之间架设了一个管道,一方能够将消息源源不断地 写入管道,另一方连续从管道中将消息读出。它能够实现大量消息的通信。1 UNIX系统中,管道是一种特殊的文件,是一个特殊的打开文件,由三部分组成:一个外存 索引节点、相应的内存索引节点和两个系统打开文件表。进程创建一个管道文件后,通常接 着创建一个或几个子进程。管道文件实际上是一个临时文件,它以磁盘为中介实现进程间的 通信。与内存相比,管道通信速度较慢,而且它只适用父、子进程之间的通信。管道文件能 实现读写的同步和互斥。 7.1.6文的存取控制 系统中的文件既存在保护问题,又存在保密问题。所谓保护是指避免文件拥有者或其他 用户因有意或无意的错误操作使文件受到破坏。所谓保密是指文件本身不得被未授权的用 户访问。这两个问题都涉及用户对文件的访问权限,即文件的存取控制 文件的保护机构应做到 1)防止未核准的用户存取文件 2)防止一个用户冒充另一个用户存取文件 (3)防止核准用户〈包括文件主〉误用文件。 文件保护机构通常由存取控制验证模块来实现,其基本任务是: (1)审定用户的存取权限 2)比较用户的存取权限和本次的存取要求 (3)比较本次存取要求和被访问文件的存取保护信息 以下介绍几种常用的文件存取控制方法 1.存取控制矩阵 存取控制矩阵是一个二维矩阵:一维列出系统中的所有用户z另一维列出系统中的全部 文件。矩阵中的每个元素用来表示某一用户对某一文件的存取权限 2.存取控制表 由于存取控制矩阵是一个稀疏矩阵,浪费存储,因此,可为每一个文件建立一张存取控制 表,仅存放与该文件有关的用户或用户组。 3.用户权限表 与存取控制表相似,以用户或用户组为单位建立存取控制表,这样的表称为用户权限表 将一个用户或用户组所要存取的文件集中起来存入一张表中,其中每个表目指明用户(组) 对相应文件的存取权限。 4.口令 文件主在建立一个文件时,一方面进行口令登记,另一方面把口令告诉允许访问该文件 的用户。访问该文件时首先核对口令,当口令正确时才允许访问,否则拒绝访问。本方法的 优点是保护信息少,简单,易实现;缺点是保密性不强,且改换口令时需通知所有能访问该文 件的用户 5.密码 文件写入时先进行编码F读出时要先译码再使用。只有掌握了译码方法的用户才能读 出正确的信息。本方法保密性强,节省存储空间,但编码和译码都需大量的时间 6.文件系统的安全性
并发运行。它们也可以各自独立地打开文件,但这些各自独立打开的文件不能共享。 (2)同名或异名打开文件的共享 不同进程通过同名或异名方式打开同一文件实现共享时,各进程使用各自的进程打开文 件表和各自的名方式打开同一文件实现共享。 3.管道文件 采用管道进行通信就像在两个进程之间架设了一个管道,一方能够将消息源源不断地 写入管道,另一方连续从管道中将消息读出。它能够实现大量消息的通信。l UNIX 系统中,管道是一种特殊的文件,是一个特殊的打开文件,由三部分组成:一个外存 索引节点、相应的内存索引节点和两个系统打开文件表。进程创建一个管道文件后,通常接 着创建一个或几个子进程。管道文件实际上是一个临时文件,它以磁盘为中介实现进程间的 通信。与内存相比,管道通信速度较慢,而且它只适用父、子进程之间的通信。管道文件能 实现读写的同步和互斥。 7.1.6 文的存取控制 系统中的文件既存在保护问题,又存在保密问题。所谓保护是指避免文件拥有者或其他 用户因有意或无意的错误操作使文件受到破坏。所谓保密是指文件本身不得被未授权的用 户访问。这两个问题都涉及用户对文件的访问权限,即文件的存取控制。 文件的保护机构应做到: (1)防止未核准的用户存取文件; (2)防止一个用户冒充另一个用户存取文件; (3)防止核准用户〈包括文件主〉误用文件。 文件保护机构通常由存取控制验证模块来实现,其基本任务是: (1)审定用户的存取权限; (2)比较用户的存取权限和本次的存取要求; (3)比较本次存取要求和被访问文件的存取保护信息。 以下介绍几种常用的文件存取控制方法。 1.存取控制矩阵 存取控制矩阵是一个二维矩阵:一维列出系统中的所有用户 z 另一维列出系统中的全部 文件。矩阵中的每个元素用来表示某一用户对某一文件的存取权限。 2.存取控制表 由于存取控制矩阵是一个稀疏矩阵,浪费存储,因此,可为每一个文件建立一张存取控制 表,仅存放与该文件有关的用户或用户组。 3.用户权限表 与存取控制表相似,以用户或用户组为单位建立存取控制表,这样的表称为用户权限表。 将一个用户或用户组所要存取的文件集中起来存入一张表中,其中每个表目指明用户(组) 对相应文件的存取权限。 4.口令 文件主在建立一个文件时,一方面进行口令登记,另一方面把口令告诉允许访问该文件 的用户。访问该文件时首先核对口令,当口令正确时才允许访问,否则拒绝访问。本方法的 优点是保护信息少,简单,易实现;缺点是保密性不强,且改换口令时需通知所有能访问该文 件的用户。 5.密码 文件写入时先进行编码 F 读出时要先译码再使用。只有掌握了译码方法的用户才能读 出正确的信息。本方法保密性强,节省存储空间,但编码和译码都需大量的时间。 6.文件系统的安全性
为了防止由于软、硬件故障而造成系统失败,保证被破坏了的文件能进行有效的恢复, 系统应保存所有文件的双份拷贝。一旦一份拷贝被破坏,就可以使用另一份拷贝恢复系统。 文件拷贝的方法有两种:一种是周期性的全量转存,另一种是增量转存。 文件系统和用户间的接口是通过系统调用实现的。一般文件系统为用户提供的系统调 用主要有建立/删除、打开/关闭、读/写文件等。 7.1.7.文件的使用 用户可通过文件系统所提供的命令和系统功能调用来实施对文件的操作。基本的文件 操作有以下几种 (1)创建文件。在创建一个新文件时,系统要为它分配必要的外存空间,并在文件系统 的目录中,为它建立一个目录项,用来登记该文件的文件名及其在外存的地址等属性。 (2)删除文件。当不再使用某个文件时,可将它从文件系统中删除。此时,系统应先从 目录中找到要删除文件的目录项,并根据其中的外存地址信息回收该文件所占的存储空间, 最后还必须释放它的目录项 (3)读文件。当用户需要某个文件中的数据时,可将相应数据从外存读入内存。此时,系 统同样要查找目录,找到指定文件的目录项,从中得到文件在外存中的地址信息,然后启动 设备将数据读入内存 4)写文件。当用户要求添加或修改某个文件的内容时,可对它进行写操作。为此,也同 样需要查找目录,找到指定文件的目录项,从中得到文件在外存中的地址信息,然后启动设 备将数据写到相应的外存位置。 (5)设置文件的读/写指针。文件的读/写指针指出了要读/写的信息距离文件首字节的偏 移量。在读/写文件时,将根据读/写指针和相应文件目录项中的外存地址信息计算出欲读/ 写的信息在外存中的地址。通过设置文件读/写指针的操作,可将读/写指针设置到文件的任 位置,从而实现对该文件内容的随机访问 (6)打开文件。打开文件的主要功能是将指定文件的属性信息复制到内存中,并返回指向 内存中的该文件属性信息的指针。以后,用户需要对该文件进行操作时,便可直接在内存中 找到文件的外存地址等属性,从而显著地提高对文件的操作速度。 (7)关闭文件。当用户目前不再要求访问某个打开文件时,可对它进行关闭操作。此时, 将从内存中删除指定文件的属性信息,如果其中的文件属性信息已被修改过,则还需将它写 回外存。关闭文件后,若要再次访问该文件,则必须重新进行打开文件的操作。 7.2重点难点学习提示 本章的目的是掌握文件系统的基本概念和实现过程,为此应对以下几个重点、难点问 题作认真的学习,切实地掌握其基本内容 1.顺序文件、索引文件和索引顺序文件 根据用户和系统管理上的需要,可将有结构文件的记录组织成顺序文件、索引文件和-z 索引顺序文件三种形式 (1)顺序文件:应了解如何对定长记录的顺序文件进行读/写操作,这种文件形式有何优 缺点,它主要用于何种场合。 (2)索引文件:应能较好地理解为什么要引入索引文件,并能用图来说明索引文件的组 形式,以及索引文件的优缺点 3)索引顺序文件:应了解索引顺序文件是为了解决什么样的问题而引入的,如何对索 引顺序文件进行检索,当文件非常大时又应如何处理。 2.连续分配、链接分配和索引分配 在为文件分配存储空间时,通常可采用连续分配、链接分配和索引分配三种方式 (1)连续分配:应了解如何连续分配的文件进行顺序访问或随机访问,这种分配方式有
为了防止由于软、硬件故障而造成系统失败,保证被破坏了的文件能进行有效的恢复, 系统应保存所有文件的双份拷贝。一旦一份拷贝被破坏,就可以使用另一份拷贝恢复系统。 文件拷贝的方法有两种:一种是周期性的全量转存,另一种是增量转存。 文件系统和用户间的接口是通过系统调用实现的。一般文件系统为用户提供的系统调 用主要有建立/删除、打开/关闭、读/写文件等。 7.1.7.文件的使用 用户可通过文件系统所提供的命令和系统功能调用来实施对文件的操作。基本的文件 操作有以下几种: (1)创建文件。在创建一个新文件时,系统要为它分配必要的外存空间,并在文件系统 的目录中,为它建立一个目录项,用来登记该文件的文件名及其在外存的地址等属性。 (2)删除文件。当不再使用某个文件时,可将它从文件系统中删除。此时,系统应先从 目录中找到要删除文件的目录项,并根据其中的外存地址信息回收该文件所占的存储空间, 最后还必须释放它的目录项。 (3)读文件。当用户需要某个文件中的数据时,可将相应数据从外存读入内存。此时,系 统同样要查找目录,找到指定文件的目录项,从中得到文件在外存中的地址信息,然后启动 设备将数据读入内存。 (4)写文件。当用户要求添加或修改某个文件的内容时,可对它进行写操作。为此,也同 样需要查找目录,找到指定文件的目录项,从中得到文件在外存中的地址信息,然后启动设 备将数据写到相应的外存位置。 (5)设置文件的读/写指针。文件的读/写指针指出了要读/写的信息距离文件首字节的偏 移量。在读/写文件时,将根据读/写指针和相应文件目录项中的外存地址信息计算出欲读/ 写的信息在外存中的地址。通过设置文件读/写指针的操作,可将读/写指针设置到文件的任 一位置,从而实现对该文件内容的随机访问。 (6)打开文件。打开文件的主要功能是将指定文件的属性信息复制到内存中,并返回指向 内存中的该文件属性信息的指针。以后,用户需要对该文件进行操作时,便可直接在内存中 找到文件的外存地址等属性,从而显著地提高对文件的操作速度。 (7)关闭文件。当用户目前不再要求访问某个打开文件时,可对它进行关闭操作。此时, 将从内存中删除指定文件的属性信息,如果其中的文件属性信息已被修改过,则还需将它写 回外存。关闭文件后,若要再次访问该文件,则必须重新进行打开文件的操作。 7.2 重点难点学习提示 本章的目的是掌握文件系统的基本概念和实现过程,为此应对以下几个重点、难点问 题作认真的学习,切实地掌握其基本内容。 1.顺序文件、索引文件和索引顺序文件 根据用户和系统管理上的需要,可将有结构文件的记录组织成顺序文件、索引文件和--z 索引顺序文件三种形式。 (1)顺序文件:应了解如何对定长记录的顺序文件进行读/写操作,这种文件形式有何优 缺点,它主要用于何种场合。 (2)索引文件:应能较好地理解为什么要引入索引文件,并能用图来说明索引文件的组 形式,以及索引文件的优缺点。 (3)索引顺序文件:应了解索引顺序文件是为了解决什么样的问题而引入的,如何对索 引顺序文件进行检索,当文件非常大时又应如何处理。 2.连续分配、链接分配和索引分配 在为文件分配存储空间时,通常可采用连续分配、链接分配和索引分配三种方式。 (1)连续分配:应了解如何连续分配的文件进行顺序访问或随机访问,这种分配方式有
何优缺点。 (2)链接分配:这是指为每个文件分配多个离散的盘块,并通过链接指针将它们链成个 链表的分配方式。在学习时应较好地理解隐式链接分配方式是为了解决什么问题而引入;再 的,它有何不足之处,而显式链接结构是如何解决上述不足的,它较适合用于哪种场合;并能 用图来说明这两种分配方式是如何将多个离散的盘块链成一个链表的。 (3)索引分配:应能很好地掌握为什么要引入索引分配方式,采用索引分配方式时应如 何对文件进行访问,当文件很大时又应如何处理。另外,还必须很好地了解和掌握混合索引 分配方式是为了解决什么问题而引入的,此时,应如何将文件的逻辑地址转换成物理地址 3.位示图法和成组链接法 (1)位示图法:应了解使用位示图如何来进行磁盘块的分配或回收,这种管理方式有何优 点 (2)成组链接法:应掌握它是如何将盘块进行分组并将各个盘块组链成一个成组链的,它 应如何进行盘块的分配和回收,这种管理方式有什么优点。 4.目录管理 必须对下述与目录管理有关的内容有较清晰的认识 (1)文件控制块(FCB):应了解FCB通常应包含哪些内容,它与文件之间存在着什么样的 关系。 (2)索引结点:应理解磁盘索引结点是为了解决什么问题而引入的,它与FCB、目录项之 间存在着什么样的关系。另外,还应了解为什么要引入内存索引结点,以及在内存索引结点 中还应增加哪些数据项,原因是什么 (3)单级目录和两级目录结构:应清楚地了解在单级目录结构中应如何创建或删除文件, 它在哪些地方无法满足对目录管理的要求,而两级文件目录是如何解决这些问题的 4)多级目录结构:应很好地理解和掌握目录结构由单级发展为两级、并进一步发展为 多级带来了哪些好处,应如何根据绝对路径名或相对路径名在多级目录结构中线性地检索 一个文件或子目录,要创建或删除一个文件或子目录时应如何进行处理 5.文件共享方式 文件共享的主要目的:一是提高文件存储空间的利用率,二是方便用户对文件的使用, 当前常用的文件共享方式有基于索引结点的共享方式和利用符号链实现文件共享两种。 (1)基于索引结点的共享方式:应了解如果不引入索引结点,而直接通过FCB来共享文件 会产生什么问题,这种共享方式应如何进行文件的删除操作,它有何优缺点 (2)利用符号链实现文件共享:应了解当用户访问LINK类型的文件时,系统应如何进行 处理,通过这种方式共享文件有何优缺点。 7.3典型问题分析和解答 1.文件系统有哪些基本功能? 答:文件系统有以下基本功能:(1)文件的结构及有关的存取方法;(2)文件的目录结 构及有关处理;(3)文件的存储空间管理;(4)文件共享的存取控制:(5)文件的操作和使用 2.文件系统提供的基本操作都有哪些? 答:文件系统提供的基本操作有:(1)建立/删除文件;(2)打开/关闭文件;(3)读/写 文件 3.设某系统的磁盘有500块,块号为:0,1,2,3,…,499 (1)若用位示图法管理这500块的盘空间,当字长为32位时,需要多少个字的位示图? (2)第i字的第j位对应的块号是多少?(其中:i=0,1,2,…,j=0,1,2,3,…) 答:(1)位示图法就是在内存用一些字建立一张位示图,用其中的每一位表示一个盘块的
何优缺点。 (2)链接分配:这是指为每个文件分配多个离散的盘块,并通过链接指针将它们链成个 链表的分配方式。在学习时应较好地理解隐式链接分配方式是为了解决什么问题而引入;再 的,它有何不足之处,而显式链接结构是如何解决上述不足的,它较适合用于哪种场合;并能 用图来说明这两种分配方式是如何将多个离散的盘块链成一个链表的。 (3)索引分配:应能很好地掌握为什么要引入索引分配方式,采用索引分配方式时应如 何对文件进行访问,当文件很大时又应如何处理。另外,还必须很好地了解和掌握混合索引 分配方式是为了解决什么问题而引入的,此时,应如何将文件的逻辑地址转换成物理地址。 3.位示图法和成组链接法 (1)位示图法:应了解使用位示图如何来进行磁盘块的分配或回收,这种管理方式有何优 点。 (2)成组链接法:应掌握它是如何将盘块进行分组并将各个盘块组链成一个成组链的,它 应如何进行盘块的分配和回收,这种管理方式有什么优点。 4.目录管理 必须对下述与目录管理有关的内容有较清晰的认识: (1)文件控制块(FCB):应了解 FCB 通常应包含哪些内容,它与文件之间存在着什么样的 关系。 (2)索引结点:应理解磁盘索引结点是为了解决什么问题而引入的,它与 FCB、目录项之 间存在着什么样的关系。另外,还应了解为什么要引入内存索引结点,以及在内存索引结点 中还应增加哪些数据项,原因是什么。 (3)单级目录和两级目录结构:应清楚地了解在单级目录结构中应如何创建或删除文件, 它在哪些地方无法满足对目录管理的要求,而两级文件目录是如何解决这些问题的。 (4)多级目录结构:应很好地理解和掌握目录结构由单级发展为两级、并进一步发展为 多级带来了哪些好处,应如何根据绝对路径名或相对路径名在多级目录结构中线性地检索 一个文件或子目录,要创建或删除一个文件或子目录时应如何进行处理。 5.文件共享方式 文件共享的主要目的:一是提高文件存储空间的利用率,二是方便用户对文件的使用, 当前常用的文件共享方式有基于索引结点的共享方式和利用符号链实现文件共享两种。 (1)基于索引结点的共享方式:应了解如果不引入索引结点,而直接通过 FCB 来共享文件 会产生什么问题,这种共享方式应如何进行文件的删除操作,它有何优缺点。 (2)利用符号链实现文件共享:应了解当用户访问 LINK 类型的文件时,系统应如何进行 处理,通过这种方式共享文件有何优缺点。 7.3 典型问题分析和解答 1.文件系统有哪些基本功能? 答:文件系统有以下基本功能:(1)文件的结构及有关的存取方法;(2)文件的目录结 构及有关处理;(3)文件的存储空间管理;(4)文件共享的存取控制;(5)文件的操作和使用。 2.文件系统提供的基本操作都有哪些? 答:文件系统提供的基本操作有:(1)建立/删除文件;(2)打开/关闭文件;(3)读/写 文件。 3.设某系统的磁盘有 500 块,块号为:0,1,2,3,…,499。 (1)若用位示图法管理这 500 块的盘空间,当字长为 32 位时,需要多少个字的位示图? (2)第 i 字的第 j 位对应的块号是多少?(其中:i=0,1,2,…,j=0,1,2,3,…) 答:(1)位示图法就是在内存用一些字建立一张位示图,用其中的每一位表示一个盘块的
使用情况,通常用"1"表示占用,"0″表示空闲。因此,本问题中位示图所占的字数为: 「500/32|=16 (2)第i字的第j位对应的块号N=32*i+j。 4.请分别解释在连续分配方式、隐式链接分配方式、显式链接分配方式和索引分配有式 中如何将文件的字节偏移量3500转换为物理块号和块内位移量(设盘块大小为1KB,盘块号 需占4个字节) 答:首先,将字节偏移量35ω转换成逻辑块号和块内位移量 3500/1024得到商为3,余数为428,即逻辑块号为3,块内位移量为428。 (1)在连续分配方式中,可从相应文件的FCB中得到分配给该文件的起始物理盘块号,例 如a0,故字节偏移量3500相应的物理盘块号为a0+3,块内位移量为428 (2)在隐式链接方式中,由于每个盘块中需留出4个字节(如最后的4个字节)来存放分 配给文件的下一个盘块的块号,因此字节偏移量3500的逻辑块号为3500/1020的商3,而块 内位移量为余数440 从相应文件的FCB中可获得分配给该文件的首个(即第0个盘块的块号,如b0:然后可 通过读第bO块获得分配给文件的第1个盘块的块号,如b1再从b1块中得到第2块的块号 如b2;从b2块中得到第3块的块号,如b3。如此,便可得到字节偏移量3500对应的物理块 号b3,而块内位移量则为440。 (3)在显式链接方式中,可从文件的FCB中得到分配给文件的首个盘块的块号,如c0;然后 可在FAT的第c0项中得到分配给文件的第1个盘块的块号,如c1;再在FAT的第c1项中得 到文件的第2个盘块的块号,如c2;在FAT的第c2项中得到文件的第3个盘块的块号,如c3。 如此,便可获得字节偏移量3500对应的物理块号c3,而块内位移量则为428 4)在索引分配方式中,可从文件的FCB中得到索引表的地址。从索引表的第3项(距离 索引表首字节12字节的位置)可获得字节偏移量3500对应的物理块号,而块内位移量为 5.假定一个当前含有100块的文件,如果 (1)在开头加入一块 (2)在中间加入一块; (3)在末端加入一块 (4)在开头删除一块 (5)在中间删除一块 (6)在末端删除一块 那么,使用毗连、链接和索引分配策略各涉及到多少次盘I/0操作? 解:它们所涉及的操作次数如下表所示。 序号毗连链接索引 (1)20111 (2)10151 (3) (4) (5)98521 存放在某个磁盘上的文件系统,采用混合索引分配方式,其FCB中共有13个地址工页 第0-9个地址项为直接地址,第10个地址项为一次间接地址,第11个地址项为二次间接地 址,第12个地址项为三次间接地址。如果每个盘块的大小为512字节,若盘块号需要用3个
使用情况,通常用"1"表示占用,"0"表示空闲。因此,本问题中位示图所占的字数为: 「500/32〡=16。 (2)第 i 字的第 j 位对应的块号 N=32*i+j。 4.请分别解释在连续分配方式、隐式链接分配方式、显式链接分配方式和索引分配有式 中如何将文件的字节偏移量 3500 转换为物理块号和块内位移量(设盘块大小为 1KB,盘块号 需占 4 个字节)。 答:首先,将字节偏移量 35ω转换成逻辑块号和块内位移量: 3500/1024 得到商为 3,余数为 428,即逻辑块号为 3,块内位移量为 428。 (1)在连续分配方式中,可从相应文件的 FCB 中得到分配给该文件的起始物理盘块号,例 如 a0,故字节偏移量 3500 相应的物理盘块号为 aO+3,块内位移量为 428。 (2)在隐式链接方式中,由于每个盘块中需留出 4 个字节(如最后的 4 个字节)来存放分 配给文件的下一个盘块的块号,因此字节偏移量 3500 的逻辑块号为 3500/1020 的商 3,而块 内位移量为余数 440。 从相应文件的 FCB 中可获得分配给该文件的首个(即第 0 个)盘块的块号,如 bO;然后可 通过读第 bO 块获得分配给文件的第 1 个盘块的块号,如 b1 再从 b1 块中得到第 2 块的块号, 如 b2;从 b2 块中得到第 3 块的块号,如 b3。如此,便可得到字节偏移量 3500 对应的物理块 号 b3,而块内位移量则为 440。 (3)在显式链接方式中,可从文件的 FCB 中得到分配给文件的首个盘块的块号,如 c0;然后 可在 FAT 的第 cO 项中得到分配给文件的第 1 个盘块的块号,如 cl;再在 FAT 的第 cl 项中得 到文件的第 2 个盘块的块号,如 c2;在 FAT 的第 c2 项中得到文件的第 3 个盘块的块号,如 c3。 如此,便可获得字节偏移量 3500 对应的物理块号 c3,而块内位移量则为 428。 (4)在索引分配方式中,可从文件的 FCB 中得到索引表的地址。从索引表的第 3 项(距离 索引表首字节 12 字节的位置)可获得字节偏移量 3500 对应的物理块号,而块内位移量为 428。 5.假定一个当前含有 100 块的文件,如果 (1)在开头加入一块; (2)在中间加入一块; (3)在末端加入一块; (4)在开头删除一块; (5)在中间删除一块; (6)在末端删除一块。 那么,使用毗连、链接和索引分配策略各涉及到多少次盘 I/O 操作? 解:它们所涉及的操作次数如下表所示。 表 7. 序号 毗连 链接 索引 (1) 201 1 1 (2) 101 51 1 (3) 1 2 1 (4) 0 1 1 (5) 98 52 1 (6) 0 100 1 6.存放在某个磁盘上的文件系统,采用混合索引分配方式,其 FCB 中共有 13 个地址工页, 第 O-9 个地址项为直接地址,第 10 个地址项为一次间接地址,第 11 个地址项为二次间接地 址,第 12 个地址项为三次间接地址。如果每个盘块的大小为 512 字节,若盘块号需要用 3 个