收藏 分享(赏)

第8章文件系统.ppt

上传人:jinchen 文档编号:9863164 上传时间:2019-09-12 格式:PPT 页数:179 大小:1.24MB
下载 相关 举报
第8章文件系统.ppt_第1页
第1页 / 共179页
第8章文件系统.ppt_第2页
第2页 / 共179页
第8章文件系统.ppt_第3页
第3页 / 共179页
第8章文件系统.ppt_第4页
第4页 / 共179页
第8章文件系统.ppt_第5页
第5页 / 共179页
点击查看更多>>
资源描述

1、第8章 文件系统,8.1 文件系统的概念 8.2 文件的逻辑结构与存取方法 8.3 文件的物理结构与存储设备 8.4 文件存储空间管理 8.5 文件目录管理 8.6 文件存取控制 8.7 文件的使用 8.8 文件系统的层次模型 本章小结 习题,对多数用户来说,文件系统是OS中最直接可见的部分。 文件系统是计算机组织、存取和保存信息的重要手段。 本章主要讨论文件的组织结构、存取结构、保护以及文件系统空间管理等问题。,8.1 文件系统的概念 1. 文件系统的引入 OS对计算机的管理包括两个方面: 1) 硬件资源的管理包括CPU 的管理、存储器的管理、设备管理等;主要解决硬件资源的有效和合理利用问题

2、。 软件资源的管理 包括: 对各种系统程序(包括OS本身的程序)的管理 系统应用程序或工具的管理 库函数及各种用户程序和数据的管理。,图8.1 操作系统的软硬件管理,用户使用计算机来完成自己的某任务时: 使用现有的软件资源来协助完成自己的任务。 编制完成的或未完成的程序存放在什么地方,需要访问的数据存放在什么地方,使得人们可以再利用已有的软件资源。 这两个问题是一个怎样对软件资源(程序和数据)进行透明存取问题。,1)在早期的计算机系统中: 用卡片或纸带来存放程序或数据。 卡片和纸带都分别编号存放,当用户需要使用它们时,再把这些卡片和纸带放在读卡机上输入计算机。 不能做到透明存取。,2)大容量直

3、接存取的磁盘存储器以及顺序存取的磁带存储器等的出现。为程序和数据等软件资源的透明存取提供了物质基础。这导致了对软件资源管理质的飞跃文件系统的出现。,文件系统把相应的程序和数据看作文件,并把它们存放在磁盘或磁带等大容量存储介质上,从而做到对程序和数据的透明存取。 透明存取:不必了解文件存放的物理结构和查找方法等与存取介质有关的部分,只需给定一个代表某段程序或数据的文件名,文件系统就会自动地完成对与给定文件名相对应文件的有关操作。,文件系统必须完成下列工作: 为了合理的存放文件,必需对磁盘等辅助存储器空间 (文件空间) 进行统一管理。 在用户创建新文件时为其分配空闲区; 用户删除或修改某个文件时,

4、回收和调整存储区。 (2) 为了实现按名存取,需要有一个用户可见的文件逻辑结构,用户按照文件逻辑结构所给定的方式进行信息的存取和加工。这种逻辑结构是独立于物理存储设备的。,(3) 为了便于存放和加工信息,文件在存储设备上应按一定的顺序存放。这种存放方式被称为文件的物理结构。 (4) 完成对存放在存储设备上的文件信息的查找。 (5) 完成文件的共享和提供保护功能。,2. 文件与文件系统的概念 (1) 文件 文件是一段程序或数据的集合。 在计算机系统中,文件被解释为一组赋名的相关联字符流的集合,或者是相关联记录( 一个有意义的信息单位 )的集合。 文件的两种解释定义了两种文件形式。,1.赋名的字符

5、流文件:无结构文件或流式文件。 UNIX ,MS-DOS等均采用无结构文件形式。 无结构文件采用字符流方式,与源程序、目标代码等在形式上是一致的; 该方式适用于源程序、目标代码等文件。,2. 记录式文件 由相关联记录组成的文件; 基本信息单位是记录。 记录是由 N (N 1) 个字节组成的具有特定意义的信息单位。 主要用于信息管理。,在有些OS中,从字符流文件的角度出发,设备也被看作是赋予特殊文件名的文件。系统可以对设备和文件实施统一管理,简化设备管理程序和文件系统的接口设计。 用户文件名由用户给定; 它是一个字母数字串,有些系统规定必须是英文字母打头且允许一些其他的符号出现在文件名的非打头部

6、分。例如a.out,ccdos.exe。,(2) 文件系统 OS中与管理文件有关的软件和数据称为文件系统。 它负责为用户建立文件,撤消、读写、修改和复制文件,还负责完成对文件的按名存取和进行存取控制。 文件系统具有以下特点:,友好的用户接口;用户只对文件进行操作,而不管文件结构和存放的物理位置。 对文件按名存取,对用户透明。 某些文件可以被多个用户或进程所共享。 文件系统大都使用磁盘、磁带和光盘等大容量存储器作为存储介质,因此,可存储大量信息。,3. 文件的分类 按文件的性质和用途分为: (1)系统文件 (2) 库文件 (3) 用户文件,(1) 系统文件 只允许用户通过系统调用来执行它们,而不

7、允许对其进行读写和修改。 这些文件主要由OS核心和各种系统应用程序和数据所组成。 (2) 库文件 允许用户对其进行读取、执行, 但不允许对其进行修改。 库文件主要由各种标准子程序库组成。如 C 语言子程序库、FORTRAN子程序库等。,(3) 用户文件 用户委托文件系统保存的文件。 只由文件的所有者或所有者授权的用户才能使用。 用户文件主要由源程序、目标程序、用户数据库等组成。,3. 文件的分类 按组织形式分为: (1) 普通文件(2) 目录文件 (3) 特殊文件,(1) 普通文件 组织格式为系统中所规定的最一般格式的文件,例如由字符流组成的文件。 包括系统文件,用户文件和库函数文件、实用程序

8、文件。 (2) 目录文件 由文件的目录信息构成的特殊文件。文件的内容不是各种程序或应用数据,而是用来检索普通文件的目录信息。,(3) 特殊文件 在 UNIX 系统中,所有的输入、输出设备都被看作特殊文件。 这组特殊文件在使用形式上与普通文件相同,如查找目录、存取操作等。,按信息流向可把文件分为:输入文件、 输出文件输入/ 输出文件 按文件的保护级别可分为:只读文件读写文件可执行文件不保护文件,文件的分类主要是便于系统对不同的文件进行不同的管理,从而提高处理速度和起到保护与共享的作用。 例如,一个系统文件在读入内存时将被放在内存的某一固定区且享受高的保护级别,从而不必像一般的用户文件那样只有在内

9、存用户可用区分得相应的空闲区之后才能被调入内存。,8.2 文件的逻辑结构与存取方法 8.2.1 逻辑结构 文件的逻辑结构是用户可见结构。 文件的逻辑结构可分为两大类: 字符流式的无结构文件 记录式的有结构文件。,选取文件的逻辑结构应遵循的原则: (1) 当用户对文件信息进行修改操作时,给定的逻辑结构应能尽量减少对已存储好的文件信息的变动。 (2) 当用户需要对文件信息进行操作时,给定的逻辑结构应使文件系统在尽可能短的时间内查找到需要查找的记录或基本信息单位。 (3) 应使文件信息占据最小的存储空间。 (4) 应是便于用户进行操作的。,字符流的无结构文件: 查找文件中的基本信息单位(如某个单词)

10、比较困难。 管理简单,用户可以方便地对其进行操作。 适于对基本信息单位操作不多的文件,例如,源程序文件、目标代码文件等。,2.记录式的有结构文件: 把文件中的记录按各种不同的方式排列,构成不同的逻辑结构。 记录是一个具有特定意义的信息单位; 记录的组成:该记录在文件中的逻辑地址(相对位置) 记录名所对应的一组键属性属性值。,图8.2 记录组成例 1296:名为R 的记录在文件中的逻辑地址; 姓名:A:该记录的键;性别,出生年月,工资 :该记录的属性 紧跟在这些后面的是属性值。,一个记录可以有多个键名; 每个键名可对应于多项属性。 记录既可以是定长的,也可以是变长的。 记录的长度可以短到一个字符

11、,也可以长到一个文件,这要由系统设计人员确定。,常用的记录式结构文件有以下几种: 连续结构; 多重结构; (3) 转置结构; (4) 顺序结构。,(1) 连续结构 把记录按生成的先后顺序连续排列。 特点:适用性强,可用于所有文件 ;记录的排列顺序与记录的内容无关。搜索性能较差;例如要找出某个指定键的记录时,系统必须对文件全体进行搜索。,(2) 多重结构 把记录按键和记录名排列成行列式结构; 一个包含n个记录名、m个(mn)个键的文件构成一m*n维行列式。 若第i(1im) 行和第j(1jn) 列所对应的位置上为1,则表示键Ki在记录 Rj中; 反之,则表示键Ki不在记录 Rj 中。 同一个键也

12、可以同时属于不同记录。,把行列式中为0的项去掉,并以键Ki为队首,以包含键Ki的记录为队列元素来构成一个记录队列。 行列式中有m个键,有m个这样的队列。 这m个队列构成了该文件的多重结构。,图8.4 文件的多重结构 图8.5 文件的转置结构,(3) 转置结构 多重结构中: 每个队列中和键直接相连的记录只有一个。 在探索某一特定记录时:先找到该记录所对应的键之后;再在该键所对应的队列中顺序查找。 转置结构:把含有相同键的记录指针全部指向该键,即把所有与同一键对应的记录的指针连续地置于目录中该键的位置下。 转置结构最适合于给定键后的记录搜索。,(4) 顺序结构 如果系统要求按某种优先顺序来搜索或追

13、加、删除记录,则最好采用顺序结构。 如果给定了顺序规定(例如按字母顺序),则把文件中的键按规定的顺序排列起来就形成了顺序结构文件。,例如: 把人民日报上登载的新闻按年月日为键做成记录放入文件中,并以时间先后顺序组成文件。 如果要处理某段时间内所发生的大事等问题,就会变得非常简单。,8.2.2 存取方法 用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。 常用的存取方法有三种: (1) 顺序存取法 (2) 随机存取法(直接存取法) (3) 按键存取法,(1)顺序存取:按照文件的逻辑地址顺序存取。 A.记录式文件:按记录的排列顺序来存取。若当前读取的记录为Ri,则下一次读取的记录被自动地确

14、定为Ri的下一个相邻的记录Ri+1。 B.无结构的字符流文件:按当前读写指针的变化来存取。在存取完一段信息之后,读写指针自动加或减去该段信息长度,以便指出下次存取时的位置。,(2)随机存取法 允许用户根据记录的编号来存取文件的任一记录; 或者是根据存取命令移动读写指针到欲读写处来读写。 UNIX、MS-DOS等系统都采用顺序存取和随机存取等两种方法。,(3)按键存取: 用在复杂文件系统,特别是数据库管理系统中。 文件的存取根据给定的键或记录名进行. 1) 先搜索到要进行存取的记录的逻辑位置; 2)将其转换到相应的物理地址后进行存取。,对文件进行搜索的目的:查找出特定记录 所对应的逻辑地址。 对

15、文件的搜索包括两种: 键的搜索用户给定所要搜索的键名和记录之后,确定该键名在文件中的位置; 记录的搜索:在搜索到所要查找的键之后,在含有该键的所有记录中查找出所需要的记录。,对不同的逻辑结构的文件,其搜索方法和搜索效率不一样。 对指定记录Ri的搜索过程(如图8.6所示)。,图8.6 记录 Ri的搜索过程,对键或记录的搜索都属于表格搜索问题。 搜索算法可以大致分为三种类型。 线性搜索法(linear search) 散列法(hash coding) 二分搜索法(binary search algorithm)。,(1) 线性搜索法 从第一个键或记录开始,依次和所要搜索的键或记录相比较,直到找到所

16、需要的记录为止。 所需要的搜索时间与所搜索的表格大小的 1/2成正比。 搜索效率较低,在文件中记录个数较多时不宜采用。,(2) 散列法 被广泛用于现代OS的数据查找。 核心思想:定义一个散列函数h(k),使得对于给定的键k,散列函数h(k)将其变换为 k所对应的逻辑地址。 散列冲突: 解决散列冲突的方法:,散列冲突:在使用散列函数进行搜索时,有时会出现两个不同的输入值变换到同一地址的问题。即对于k1!=k2,有h(k1)=h(k2)=A。由散列变换得到的结果并不是所要搜索的键。,解决散列冲突的方法是采用多次散列探索。 设第i 次散列变换的结果为hi(k),i=2,3,则可令hi(k) =(h1

17、(k) +di)(mod t) t :被搜索表格长度 di:第i 次搜索所得地址与第1次搜索所得地址之间的距离。 di的取值方法很多。,线性散列法: 设di为i的线性函数,即di=a* i(a为一大于零的常数)。 使用线性散列法并不能完全解决散列冲突问题。例如,对于i!=j,k=1,2,如果 hi(k1)=hj(k2),则存在 hi+k(k1)=hj+k(k2)。,解决散列冲突的另一个方法是生成一组随机数r1,r2,rn,且令di=ri。 使用随机数的方法需要占用一定的存储空间来生成和存放随机数组。,还有一个解决散列冲突的方法是采用平方散列函数方法。 hi(k) =(h1(k)+c*(i*i)

18、(mod t) t是一个表示被搜索表格长度的素数, c 是一个大于零的常数。,(3) 二分搜索法 对于顺序结构排列的键或记录来说,二分搜索法具有较高的搜索效率。 设键K0,K1,K2,Kn(n1)按键间距d排列,如果K0的逻辑位置为a0,则有Ki的逻辑位置为a0+i*d。,首先把所要搜的键与队列的首尾键相比较,如果和其中之一相等,则返回所搜索到的键的逻辑位置。 否则,再与队列1/2处的键比较,如果所要搜索的键正好等于该键的话,则返回该键的逻辑地址; 否则,如果所要搜索的键K 小于位于队列中央的键的话,则继续搜索左边的半个队列。 如果所要搜索的键K大于位于队列中央的键的话,则继续搜索右边的半个队

19、列。 每次用以中央键画分的部分组成新的队列反复进行上述搜索操作,直到找到为止。,图8.7 二分搜索法的搜索过程,好处: 搜索效率高。与线性搜索法相比,当 n(表长)=16时,它比线性搜索法约快二倍; 当 n=1 024 时,其平均搜索速度要快50倍。 缺点: 需要事先把搜索对象按一定顺序排列。,8.3 文件的物理结构与存储设备 文件系统采用哪种存取方法和逻辑结构,实际上是和物理存储介质有关的。 本节介绍文件的物理结构,同时也介绍常用的文件存储设备。,8.3.1 文件的物理结构 文件的存储设备通常划分为若干个大小相等的物理块,每块长为 512 或 1024字节。 把文件信息也划分为与物理存储设备

20、的物理块大小相等的逻辑块。 以块作为分配和传送信息的基本单位。,1)字符流的无结构文件: 每个物理块中存放长度相等的文件信息;存储文件尾部信息的物理块除外。 2)记录式文件: 记录长度可以是固定的,或可变的; 记录长度不一定刚好等于物理块的长度; 由记录的逻辑地址到物理地址的变换繁琐。 假设文件系统中每个记录的长度是固定的,且其长度正好等于物理块的长度;那么对于记录式文件,利用前面的搜索算法得到的逻辑地址与文件的逻辑块号一一对应。,文件的物理结构:指文件在存储设备上的存放方法。 文件的物理结构决定了文件信息在存储设备上的存储位置; 文件信息的逻辑块号(逻辑地址) 到物理块号(物理地址) 的变换

21、也是由文件的物理结构决定。 常用的文件物理结构如下:,(1) 连续文件 连续文件是一种最简单的物理文件结构;它把一个在逻辑上连续的文件信息依次存放到物理块中。 在图8.8中,一个逻辑块号为 0,1,2,3的文件依次存放在物理块 10,11,12,13中。,图8.8 连续文件结构,优点:知道了文件在存储设备上的起址和文件长度,就能很快地进行存取。 缺点: 在建立文件时必须在文件说明信息中确定文件信息长度,且以后不能动态增长。 在文件进行某些部分的删除后,又会留下无法使用的零头空间。 连续文件结构不宜用来存放用户文件、数据库文件等经常被修改的文件。,(2) 串联文件 用非连续的物理块来存放文件信息

22、。 这些非连续的物理块之间没有顺序关系; 每个物理块设有一个指针,指向其后续连接的另一个物理块,从而使得存放同一文件的物理块链接成一个串联队列。,图8.9 串联文件的物理结构,特点: 不必在文件说明信息中指明文件的长度,只需指明该文件的第一个块号就行了。 文件长度可以动态地增长,只要调整连接指针就可在任何一个信息块之间插入或删除一个信息块。 逻辑块到物理块的转换由系统沿串联队列查找与逻辑块号对应的物理块号。 按队列中的串联指针顺序搜索,串联文件结构的搜索效率较低。 串连文件结构一般只适用于逻辑上连续的文件,且存取方法应该是顺序存取的。 串联文件结构不适宜随机存取,(3) 索引文件 要求系统为每

23、个文件建立一张索引表; 表中每一栏目指出文件信息所在的逻辑块号和与之对应的物理块号。 索引表的物理地址由文件说明信息项给出。 索引结构如图8.10所示。,图8.10 索引文件示意图,特点:索引文件结构既可以满足文件动态增长的要求,又可以较方便迅速地实现随机存取。 对于大的文件,索引表也很大。 如索引表的大小超过了一个物理块,那么必须象处理其他文件的存放那样决定索引表的物理存放方式,但这不利于索引表的动态增加; 索引表也可按串联方式存放,但这却增加了存放索引表的时间开销。,解决办法:采用间接索引(多重索引); 在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。 如果一个物理

24、块可装下n个物理块地址的话,则经过一级间接索引,可寻址的文件长度将变为 n*n 块。 若文件长度大于 n*n块的话,还可以进行类似的扩充,即二级间接索引。,图8.11 多重索引结构,大多数文件不需进行多重索引,这些文件所占用的物理块数的块号可以放在一个物理块内。如果采用多重索引,则显然会降低文件的存取速度。 在实际系统中,把索引表的头几项设计成直接寻址方式,即这几项所指的物理块中存放的是文件信息;索引表的后几项设计成多重索引,即间接寻址方式。 在文件较短时,就可利用直接寻址方式找到物理块号。,优点 索引结构既适用于顺序存取,也适用于随机存取。 缺点: 使用了索引表增加了存储空间的开销。在存取文

25、件时至少访问存储器二次以上。 是访问索引表; 根据索引表提供的物理块号访问文件信息。,一种改进的方法是: 当对某个文件进行操作之前,系统预先把索引表放入内存。 文件的存取就可直接在内存通过索引表确定物理地址块号,而访问磁盘的动作只需要一次。,8.3.2 文件存储设备 常用的存储设备有: 磁盘、光盘、磁带等。磁盘: 硬盘和软盘。 存储设备的特性决定了文件的存取设备和方法; 以下介绍以磁带为代表的顺序存储设备和以磁盘为代表的直接存储设备的特性及有关存取方法。,1. 顺序存取设备 磁带是一种最典型的顺序存取设备。 顺序存取设备只有在前面的物理块被存取访问过之后,才能存取后续的物理块的内容。 为了在存

26、取一个物理块时让磁带机提前加速和在下一个物理块的位置上不停止,磁带的两相邻的物理块之间设计有一个间隙将它们隔开(图8.12)。,图8.12 磁带的结构,磁带设备的存取速度或数据传输率与下列因素有关: (1) 信息密度(字符数/英寸) (2) 磁带带速(英寸/秒) (3) 块间间隙 如果带速高,信息密度大,且所需块间隙(磁头启动和停止时间) 小的话,则磁带存取速度和数据传输率高,反之亦然。,缺点:若按随机方式或按键存取方式存取磁带上的文件信息的话,其效率不会很高。 优点:容量大,顺序存取方式时存取速度高。,2. 直接存取设备 磁盘是最典型的直接存取设备。 磁盘允许文件系统直接存取磁盘上的任意物理

27、块。为了存取一个特定的物理块,磁头将直接移动到所要求的位置上,而不需要像顺序存取那样事先存取其他的物理块。,磁盘机:磁盘组组成。 磁盘组:一些磁盘片组成。 每个磁盘片:对应一个装有读/写磁头 的磁头臂; 磁头臂上的两个读/写磁头:分别对磁盘片的上下两面进行读写。,系统在对磁盘进行初始化处理时,把每个磁盘片分割成一些大小相等的扇区。 在磁盘转动时经过读/写 磁头所形成的圆形轨迹称为磁道。磁头臂可沿半径方向移动,因此,磁盘上有多条磁道。 把所有磁盘片的相同磁道称为一个柱面, 磁盘上每个物理块的位置可用柱面号、磁头号和扇区号表示,这些地址和物理块号一一对应。,磁盘的结构如图8.13所示。图8.13

28、磁盘的结构,8.4 文件存储空间管理 文件存储设备是分成若干个大小相等的物理块,并以块为单位来交换信息的; 文件存储空间的管理实质上是一个空闲块的组织和管理问题; 它包括: 空闲块的组织,空闲块的分配与空闲块的回收等几个问题。,空闲块管理方法:(1) 空闲文件目录 (2) 空闲块链 (3) 位示图 (1) 空闲文件目录 把文件存储设备中的空闲块的块号统一放在被称为空闲文件目录的物理块中。 空闲文件目录的每个表项对应一个由多个空闲块构成的空闲区,它包括空闲块个数,空闲块号和第一个空闲块号等。,在系统为某个文件分配空闲块时: 首先扫描空闲文件目录项; 如找到合适的空闲区项,则分配给申请者,并把该项

29、从空白文件目录中去掉。 若一个空闲区项不能满足申请者要求,则把目录中另一项分配给申请者。 如一个空闲区项所含块数超过申请者要求,则为申请者分配了所要的物理块之后,再修改该表项。,当一个文件被删除,释放存储物理块时: 系统则把被释放的块号、长度以及第一块块号置入目录文件的新表项中。 在内存管理时讨论过有关空闲连续区分配和释放算法。只要稍加修改就可用于空闲文件项的分配和回收。 空闲文件项方法适用于连续文件结构的文件存储区的分配与回收。,(2) 空闲块链 把文件存储设备上的所有空闲块链接在一起; 当申请者需要空闲块时,分配程序从链头开始摘取所需要的空闲块,然后调整链首指针。 反之,当回收空闲块时,把

30、释放的空闲块逐个插入链尾上。,空闲块链的链接方法因系统而异; 常用的链接方法有: 按空闲区大小顺序链接的方法; 按释放先后顺序链接的方法; 按成组链接法。其中成组链接法可被看作空闲块链的链接法的扩展。,前两种方法在增加或移动空闲块时需对空闲块链做较大的调整,因而需耗去一定的系统开销。 成组链法在空闲块的分配和回收方面要优于上述两种链接法。,3. 成组链法: 把文件存储设备中的所有空闲块按50块划分为一组。 组的划分为从后往前顺次划 分(如图8.14)。 每组的第一块:存放前一组中各块的块号和总块数。 第一组的前面已无其他组存在,故块数为49块。 最后一组可能不足50块,且该组后面无另外的空闲块

31、组。 最后一组的物理块号与总块数只能放在管理文件存储设备用的文件资源表(栈)中。 系统可根据申请者的要求进行空闲块的分配,并在释放文件时回收空闲块。,图8.14 成组链法的组织 下面我们介绍成组链法的分配和释放过程。,系统在初启时把文件资源表复制到内存; 使文件资源表中放有最后一组空闲块块号与总块数的堆栈进入内存,并使得空闲块的分配与释放可在内存进行。 与空闲块块号及总块数相对应,用于空闲块分配与回收的堆栈有栈指针 Ptr,且 Ptr的初值等于该组空闲块的总块数。,当申请者提出空闲块要求 n时,按照后进先出的原则,分配程序在取走Ptr 所指的块号之后,再做PtrPtr-1 的操作。这个过程一直

32、持续到所要求的n块都已分配完毕或堆栈中只剩下最后一个空闲块的块号。 当堆栈中只剩下最后一个空闲块号时,系统启动设备管理程序,将该块中存放的下一组的块号与总块数读入内存之后将该块分配给申请者。 然后,系统重新设置Ptr指针,并继续为申请者进程分配空闲块。 文件存储设备的最后一个空闲块中设置有尾部标识,以指示空闲块分配完毕。,如果用户进程不再使用有关文件并删除这些文件时,回收程序回收装有这些文件的物理块。 成组链法的回收过程仍利用文件管理堆栈进行回收。在回收时,回收程序先做PtrPtr+1操作,然后把回收的物理块号放入当前指针Ptr所指的位置。,如果 Ptr等于50,则表示该组已经回收结束。此时,

33、如果还有新的物理块需要回收的话,回收该块并启动I/O设备管理程序,把回收的50个块号与块数写入新回收的块中。然后,将Ptr重新置1另起一个新组。 显然,对空闲块的分配和释放必须互斥进行,否则将会发生数据混乱。,(3) 位示图 反映每个文件存储设备的使用情况。 系统首先从内存中划出若干个字节,为每个文件存储设备建立一张位示图。 在位示图中,每个文件存储设备的物理块都对应一个比特位。 该位为“0”:表示所对应的块是空闲块; 该位为“1”:表示所对应的块已被分配。,利用位示图来进行空闲块分配时,只需查找图中的“ 0”位,并将其置为“1”位。 利用位示图回收时只需把相应的比特位由“ 1”改为“ 0”即

34、 可。,8.5 文件目录管理 为了实现对文件的按名存取,每个文件必须有一个文件名与其对应。用户文件名:由用户指定;系统文件和特殊文件:在系统设计时指定。 为了有效地利用存储空间以及迅速准确地完成由文件名到物理快的转换必须把文件名及其结构信息等按一定的组织结构排列,以方便文件的搜索。,把文件名和对该文件实施控制管理的控制管理信息称为该文件的文件说明; 把一个文件说明按一定的逻辑结构存放到物理存储块的一个表目中。 把一个文件的文件说明信息称为该文件的目录。 利用文件说明信息,可以完成对文件的创建、检索以及维护作用。,8.5.1 文件的组成 从文件管理角度看,一个文件包括两部分:文件说明和文件体。

35、文件体:指文件本身的信息,它可能是前面各节讨论的记录式文件或字符流式文件。 文件说明:文件控制块(FCB),它至少包括: 文件名 与文件名相对应的文件内部标识(物理结构是连续结构) 文件信息在文件存储设备上第一个物理块的地址(物理结构是非连续结构时)。 另外,根据系统要求不同,它还包括: 关于文件逻辑结构、物理结构、存取控制和管理信息等。这里的管理信息主要指访问时间、以及记账信息等。,文件说明组成目录文件。 文件系统利用目录文件完成按名存取和对文件信息的共享与保护。 对文件目录的管理就是对文件说明信息的管理。 文件目录的管理要解决的问题:存储空间的有效利用;快速搜索;文件命名冲突;文件共享;,

36、8.5.2 文件目录 文件目录可分为:单级目录二级目录多级目录,单级目录 一种最简单最原始的目录结构。 为存储设备的所有文件建立一张目录表; 每个文件在其中占有一项用来存放文件说明信息。 该目录表存放在存储设备的某固定区域; 在系统初启时或需要时,系统将其调入内存,(或部分调入内存)。,文件系统通过对目录表提供的信息对文件进行创建、搜索、删除等操作。 利用单级目录,文件系统就可实现对文件系统空间的自动管理和按名存取。 单级目录时的文件系统读写处理过程如图8.15。,图8.15 单级目录的读写处理过程,弊端: 在单级目录表中,各文件说明项都处于平等地位,只能按连续结构或顺序结构存放。 如果两个不

37、同的文件重名的话,则系统将把它们视为同一文件。 单级目录必须对单级目录表中所有文件信息项进行搜索,因而,搜索效率也较低。,二级目录 各个文件的说明信息被组织成目录文件,且以用户为单位把各自的文件说明划分为不同的组。 将这些不同的组名及有关存取控制信息存放在OK主目录(MFD)的目录项中。 3. 与主目录 MFD相对应,用户文件的文件说明所组成的目录文件被称为用户文件目录(UFD)。 这样,由MFD和UFD就形成二级目录。,图8.16 二级目录结构,当用户要对一个文件进行存取操作或创建、删除一个文件时: 首先从 MFD找到对应的用户名,并从用户名查找到该用户的 UFD。 余下的操作与单级目录时相

38、同。,优点: 1、解决文件重名问题;文件名演变成:用户名 /用户文件名。 2、方便地解决不同用户间的文件共享问题。 (1)在被共享的文件说明信息中增加相应的共享管理项; (2)把共享文件的文件说明项指向被共享文件的文件说明项即可。,3、二级目录的搜索时间要快于单级目录。 若单级目录表的长度为 n,则单级目录时的搜索时间与 n成正比; 在二级目录时,由于的目录已被划分为个子集,则二级目录的搜索时间是与成正比的。 这里的是用户个数,是每个用户的文件的个数。一般有;,多级目录 把二级目录的层次关系加以推广,就形成了多级目录。 在多级目录结构中,除了最低一级的物理块中装有文件信息外,其他每一级目录中存

39、放的都是下一级目录或文件的说明信息。由此形成层次关系,最高层为根目录,最低层为文件。 多级目录构成树形结构。,图8.17 文件系统的树形结构,树形结构多级目录结构的特点: 层次清楚。 由于分支结构,不同性质、不同用户的文件可以构成不同的子树,便于管理。 不同层次、不同用户的文件可以被赋予不同的存取权限,有利于文件的保护。,(2) 解决了文件重名问题。 文件在系统中的搜索路径是从根开始到文件名为止的各文件名组成; 只要在同一子目录下的文件名不发生重复,就不会由文件重名而引起混乱。,(3) 查找搜索速度快。 在8.2节讨论的对文件中键名的各种搜索方法,例如线性搜索法,散列法以及二分搜索法都可用来对

40、各级目录进行查找。 由于对多级目录的查找每次只查找目录的一个子集,因此,其搜索速度较单级、二级目录时更快。,8.5.3 便于共享的文件目录 对于某一个公用文件来说,如果系统提供了共享文件信息的手段,则在文件存储设备上只需存储一个文件副本,共享该文件的用户以自己的文件名去访问该文件的副本就可以了。,从系统管理的观点看,有三种方法可以实现文件共享。即: (1) 绕道法 (2) 链接法 (3) 基本文件目录表 BFD,绕道法 要求每个用户处在当前目录下工作; 用户对所有文件的访问都是相对于当前目录进行的。 用户文件的固有名是由当前目录到信息文件通路上所有各级目录的目录名加上该信息文件的符号名组成。

41、固有名:为了访问某个文件而必须访问的各个目录和文件的目录名与文件名的顺序连接称为固有名。,使用绕道法进行文件共享时: 用户从当前目录出发向上返回到与所要共享文件所在路径的交叉点,再顺序下访到共享文件。绕道法的原理如图8.18所示。 绕道法需要用户指定所要共享文件的逻辑位置或到达被共享文件的路径。 缺点:绕道法要绕弯路访问多级目录,搜索效率不高。,图8.18 绕道法,链接法 在相应目录表之间进行链接。即将一个目录中的链指针直接指向被共享文件所在的目录。 仍然需要用户指定被共享的文件和被链接的目录。 采用基本文件目录表 BFD的方法。 该方法把所有文件目录的内容分成两部分: 符号文件目录表(SFD

42、) 基本文件目录表(BFD),SFD:包括文件的结构信息、物理块号、存取控制和管理信息等,并由系统赋予唯一的内部标识符来标识;即 SFD中存放文件名和文件内部标识符; BFD:由用户给出的符号名和系统赋给文件说明信息的内部标识符组成。 BFD中存放除了文件名之外的文件说明信息和文件的内部标识符,图8.19 采用基本文件目录的多级目录结构,BFD,在图8.19中,为了简单起见,未在 BFD表项中列出结构信息、存取控制信息和管理控制信息等。 另外,在文件系统中,系统通常预先规定赋予基本文件目录、空白文件目录、主目录 MFD的符号文件目录固定不变的唯一标识符,在图中它们分别为 0,1,2。,采用基本

43、文件目录方式可较方便地实现文件共享。如果用户要共享某个文件,则只需给出被共享的文件名,系统就会自动在SFD的有关文件处生成与被共享文件相同的内部标识符id,例如在图8.19中,用户Wang和Zhang共享标识符为6的文件,对于系统来说,标识符6指向同一个文件;而对Wang和Zhang两用户来说,则对应于不同的文件名b.c和f.c。,8.5.4 目录管理 存放文件说明信息或目录管理说明信息的目录项构成目录文件,这些文件同样存放在文件存储设备中。 在存取一个文件时,必须访问多级目录。 若访问每级目录时都必须到文件存储设备上去搜索,浪费CPU处理时间、降低了处理速度,给输入输出设备增加了负担。,解决

44、办法: 在系统初启时,把所有的目录文件读入内存,由文件系统在内存完成对各级目录的搜索。该方法需要大量的内存支持。 把当前正在使用的那些文件的目录表目复制到内存中。为此,系统提供两种特殊的操作: 把有关的目录文件复制到内存的指定区; 当用户不再访问有关信息文件时删去有关目录文件的内存副本。,把文件存储设备上的目录文件复制到内存的操作称为打开文件(fopen); 把删除文件的内存副本的操作称为关闭文件(fclose)。 这两个操作一般以系统调用的方式提供。 对于按BFD和SFD方式排列的多级文件目录来说,系统按以下方式打开一个文件:,图8.19 采用基本文件目录的多级目录结构,BFD,若准备打开文

45、件a.c,(1) 把主目录 MFD中的相应表目,也就是与待打开文件相联系的有关表目复制到内存。例如,若准备打开图8.19中的文件a.c,则将 MFD中的第一项(Wang)复制到内存。 (2) 根据(1)所复制得到的标识符,再复制此标识符所指明的基本文件目录表BDF 的有关表目。例如图8.19中的id=3的BDF中表目项。这个表目中包括有存取控制信息、结构信息以及下级目录的物理块号等。,(3) 根据(2)所得到的子目录说明信息搜索SFD,以找到与待打开文件相对应的目录表项。如果找到的表目仍然是子目录名,则系统将根据其对应的标识符id,继续上述复制过程,直到所找到的表目是待打开的文件名。例如在图8

46、.19中文件名a.c。,(4) 根据(3)所搜索到的文件名所对应的标识符id,把相应的BDF 的表目项复制到内存。这样,待打开文件的说明信息就已复制到了内存中。由复制的文件说明,系统显然可以方便地得到文件的有关物理块号。,在完成了上述个步骤之后,就说文件是被打开的了。 称这样的文件为打开的文件或活动文件。 把内存中存放活动文件的 SFD表目的表称为活动名字表,这个表每个用户一张。 把内存中存放活动文件的 BFD表目的表称为活动文件表,这个表整个系统一张。,8.6 文件存取控制 文件的共享:不同的用户共同使用一个文件。 文件保护:文件本身需要防止文件的拥有 者本人或其他用户破坏文件内容。 文件保

47、密:未经文件拥有者许可,任何用 户不得访问该文件。,这三个问题实际上是一个用户对文件的使用权限,即读、写、执行的许可权问题。具体地说,文件系统的存取控制部分应做到:,(1) 对于拥有读、写或执行权限的用户,应让其对文件进行相应的操作。 (2) 对于没有读、写或执行权限的用户,应禁止他们对文件进行相应的操作。 (3) 应防止一个用户冒充其他用户对文件进行存取。 (4) 应防止拥有存取权限的用户误用文件。,这些功能是由存取控制验证模块提供的。它们分三步验证用户的存取操作。 (1) 审定用户的存取权限。 (2) 比较用户权限的本次存取要求是否一致。 (3) 将存取要求和被访问文件的保密性比较,看是否

48、有冲突。,可有个方式来验证用户的存取操作: (1) 存取控制矩阵; (2) 存取控制表; (3) 口令; (4) 密码术。 系统设计人员根据需要选择一种或几种方式并将相应的数据结构置于文件说明(BFD等)中,在用户访问存取文件时,对用户的存取权限、存取要求的一致性以及保密性等进行验证。,(1) 存取控制矩阵 以一个二维矩阵来进行存取控制。 一维是所有的用户,另一维是所有的文件。对应的矩阵元素则是用户对文件的存取控制权,包括读,写,和执行。如图8.20所示。,图8.20 存取控制矩阵,当用户向文件系统提出存取要求时,由存取控制验证模块根据该矩阵内容对本次存取要求进行比较,如果不匹配的话,系统拒绝

49、执行。 当文件和用户较多时,矩阵将变得非常庞大,在占用内存空间的大小上及对矩阵进行扫描的时间开销非常大。在实现时采取某些辅助措施以减少时间和空间的开销。,(2) 存取控制表 以文件为单位,把用户按某种关系划分为若干组,同时规定每组的存取权限。 所有用户组对文件权限的集合就形成了该文件的存取控制表,如图8.21所示。 每个文件都有一张存取控制表。,图8.21 存取控制表,在实现时,该表存放在文件说明中,也就是BFD 的有关表目中。文件被打开时,由于存取控制表也相应地被复制到了内存活动文件中,因此,存取控制验证能高效进行。,(3) 口令方式 口令方式有两种: 当用户进入系统,为建立终端进程时获得系统使用权的口令。 每个用户在创建文件时,为每一个创建的文件设置一个口令,且将其置于文件说明中。,口令只有设置者自己知道,若允许其他用户使用自己的文件,口令设置者可将口令赋予其他用户。 优点: 既可以做到文件共享,又可做到保密。 由于口令较为简单,占用的内存单元以及验证口令所费时间都将非常少。,缺点: 相对来说,口令方式保密性能较差。 再者,当要修改某个用户的存取权限时,文件主必须修改口令,这样,所有共享该文件的用户的存取权限都被取消,除非文件主将新的口令通知用户。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报