1、2009-4-7,1,操作系统原理,张德海E-mail: 2009年4月7日,云南大学软件学院,2009-4-7,2,第八章 文件系统,8.1 文件系统的概念 8.2 文件的逻辑结构与存取方法 8.3 文件的物理结构与存储设备 8.4 文件存储空间管理 8.5 文件目录管理 8.6 文件存取控制 8.7 文件的使用 8.8 文件系统的层次模型,2009-4-7,3,第八章 文件系统引言,2009-4-7,4,第八章 文件系统引言,文件系统是计算机组织、存取和保存信息的重要手段。 本章主要讨论文件的组织结构、存取结构、保护以及文件系统空间管理等问题。,2009-4-7,5,8.1 文件系统的概念
2、,硬件资源,软件资源,CPU,存储器,设备,系统程序,系统应用程序,库函数,用户应用程序,操作系统对计算机资源的管理,1.文件系统的引入,2009-4-7,6,8.1.1 文件系统的引入,问题的提出:怎样对软件资源(各种程序和数据)进行透明地存放,使用户能够方便、快捷、有效地使用它们? 物质基础:大容量直接存取的磁盘存储器和顺序存取的磁带存储器的出现为解决上述问题提供了物质基础。,2009-4-7,7,1.文件的概念,从用户的角度:文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的一组有序信息的集合。 从系统的角度:文件是一组赋名的相关联字符流的集合,或者是相关联记录(一个有意义的信息单
3、位)的集合。,2009-4-7,8,1.文件的概念文件形式,文件形式: 流式文件:又称为无结构文件,以字符流的形式存放信息。如:源程序、目标代码等。 记录式文件:由相关联的记录组成,记录是文件存取的基本信息单位。如:人事档案文件、交易记录文件等。,2009-4-7,9,1.文件的概念文件名,文件名 根据文件的定义,每个文件必须有一个唯一的文件名, 不论是系统管理,还是用户使用文件都使用文件名。 文件名是一个有限长度的字符串。 DOS、WINDOWS系统中文件名:文件名 文件扩展名文件名是一个不大于8个字符的字符串,但WINDOWS系统中允许超长文件名,最多可有256个字符,不区分英文字母的大小
4、写。,2009-4-7,10,1.文件的概念文件名,文件扩展名: 不大于3个字符,一般用来表示文件的类型。 例如: C C语言源程序文件 COM 可执行文件(小模式) EXE 可执行文件(大模式) BAT 批处理文件 OBJ 目标文件 hust.txt ll.c ll.obj ll.exe 操作系统讲义.ppt,2009-4-7,11,1.文件的概念文件名,UNIX系统中的文件名: 文件名是一个不大于14个字符的字符串。并且区分英文 字母的大小写。 例如:unix linux ll.c a .out aa AA 注意:在UNIX系统中文件名就是一个字符串,没有文件名和文件扩展名之分,文件的类
5、型由用户命名时确定。例如:li.c,UNIX系统认为这个文件名的长度是4个字符。 而在DOS、WINDOWS系统中则解释这个文件名,li是文件名,c是文件扩展名,表示该文件是一个C语言的源程序文件,而是文件名和文件扩展名的分隔符。,2009-4-7,12,2.文件系统的概念,操作系统中与管理文件有关的软件和数据称为文件系统。 从系统的角度看:文件系统是一个负责文件存储空间管理的机构。 从用户的角度看:文件系统是用户在计算机上存储信息和使用信息的接口。,2009-4-7,13,2.文件系统的概念功能,文件系统的功能: 对磁盘空间进行统一的管理:在用户创建文件时为其分配空闲区,在用户删除或修改某个
6、文件时,回收和调整存储区。 对文件实现按名存取:建立一个用户可见的逻辑结构,让用户按文件逻辑结构进行信息存取和加工。 建立文件的物理结构,便于存放和加工信息。 完成对存放在存储设备上的文件信息的查找。 提供文件的共享和保护功能。,2009-4-7,14,2.文件系统的概念特点,文件系统的特点: 友好的用户接口,用户只对文件进行操作,而不管文件结构和存放的物理位置。 对文件按名存取,对用户透明。 某些文件可以被多个用户或进程共享。 可存储大量信息。,2009-4-7,15,3.文件的分类,按照文件的性质和用途可分为三类: 系统文件:只允许用户通过系统调用来执行,不允许对其进行读写和修改。主要由O
7、S内核和各种系统应用文件和数据组成。 库文件:允许用户进行读取、执行,但不允许修改。主要由各种标准子程序库组成。 用户文件:是用户委托系统保存的文件,只有文件的所有者或所有者授权的用户才能使用,主要由源程序、目标程序和用户数据库等组成。,2009-4-7,16,3.文件的分类(续),按组织形式分为: 普通文件:主要是指组织格式为系统中所规定的最一般格式的文件,如字符流文件。既包括系统文件,也包括用户文件和库文件、实用程序文件等。 目录文件:是指由目录信息构成的特殊文件。该文件的内容不是各种程序和数据,而是用来检索普通文件的目录信息。 特殊文件:在NUIX系统中,所有的I/O设备都被看作是特殊文
8、件。在使用形式上与普通文件相同,但特殊文件的使用是和设备处理程序紧密相连的。系统必须把对特殊文件的操作转为对不同设备的操作。,2009-4-7,17,3.文件的分类(续),按文件的信息流向分为: 输入文件 输出文件 输入/输出文件 按文件的保护级别分为: 只读文件 读写文件 可执行文件 非保护文件,2009-4-7,18,8.2 文件的逻辑结构与存取方法 8.2.1 逻辑结构,文件的逻辑结构是用户可见结构。 文件的逻辑结构分为: 字符流式的无结构文件 记录式的有结构文件,2009-4-7,19,8.2.1 逻辑结构,选取文件的逻辑结构应遵循如下原则: (1)当用户对文件信息进行修改操作时,给定
9、的逻辑结构能尽量减少对已存储好的文件信息的变动。 (2)当用户需要对文件信息进行操作时,给定的逻辑结构应使文件系统在尽可能短的时间内查找到需要查找的记录或基本信息单位。 (3)应使文件信息占据最小的存储空间。 (4)应是便于用户进行操作的。,2009-4-7,20,1.流式文件的特点,查找文件中的信息较困难 管理简单 操作方便 适用于对基本信息单位操作不多的文件,如源程序、目标代码文件等。,2009-4-7,21,2. 记录式文件,记录式文件可以把文件中的记录按各种不同的方式排列,构成不同的逻辑结构,以便用户对文件中的记录进行修改、追加、查找和管理等操作。 记录是一个具有特定意义的信息单位,它
10、由该记录在文件中的逻辑地址(相对位置)与记录名所对应的一组键、属性及其属性值所组成。,2009-4-7,22,记录组成示例,2009-4-7,23,2. 记录式文件,常用的记录式文件有以下几种: 连续结构 多重结构 转置结构 顺序结构,2009-4-7,24,2. 记录式文件连续结构,连续结构是一种把记录按生成的先后次序连续排列的逻辑结构。 连续结构的特点是适用性强,可用于所有文件,且记录的排列顺序与记录的内容无关。 有利于记录的追加与变更。 搜索性能较差。如要找出某个特定的记录,系统必须对文件全体进行搜索。 字符流式的无结构文件实质上是记录长度只有一个字符的连续结构文件。,2009-4-7,
11、25,2. 记录式文件多重结构,如果把记录按键和记录名排列成行列式结构,则一个n个记录名、m(mn)个键的文件构成一个m*n的行列式,其中,如果第i (1im)行和第j (1jn)列所对应的位置上为1,则表示键Ki 在记录Rj中,反之,则表示键Ki 不在记录Rj中,另外,同一个键也可以属于不同的记录。 见下图,2009-4-7,26,文件的记录名和键构成的行列式,2009-4-7,27,2. 记录式文件多重结构,在上图的行列式中,如果只按行列式的结构来排列记录,将会浪费较多的存储空间。 解决办法:将行列式中为0的项去掉,并以键Ki为队首,以包含键Ki的记录为队列元素来构成一个记录队列。 对于一
12、个有m个键的行列式来说,这样的队列有m个,这m个队列构成了该文件的多重结构。,K1 Km,Ri Rj Rz ,Rx Ry Rw ,2009-4-7,28,2. 记录式文件多重结构,在多重结构中,每个队列中和键直接相连的只有一个记录。这种结构虽然在搜索时要优于连续结构,但在搜索某一特定记录时,必须找到所对应的键之后,再在该键所对应的队列中顺序查找。,2009-4-7,29,2. 记录式文件转置结构,与多重结构不同,转置结构把含有相同键的记录指针全部指向该键,即把所有与同一键对应的记录的指针连续地置于目录中该键的位置下。 转置结构最适于给定键后的记录搜索。,K1,含有K1的所有 记录指针,Ri,R
13、j,Rz,2009-4-7,30,2. 记录式文件顺序结构,如果把文件中的键按规定顺序排列起来就形成了顺序结构文件。 顺序结构文件适合于给定某种优先顺序来搜索、追加和删除记录的情况。 例如:按日期顺序记录的新闻记录。,2009-4-7,31,8.2.2 存取方法,用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。 常用的存取方法: 顺序存取法 随机存取法(直接存取法) 按键存取法,2009-4-7,32,1. 顺序存取法,顺序存取法按照文件的逻辑地址顺序存取信息。 在记录式文件中,这反映为按记录的排列顺序来存取。 在流式无结构文件中,当存取完一段信息后,读写指针自动加上或减去该段信息的
14、长度,以便指出下次存取时的位置。,2009-4-7,33,2. 随机存取法,随机存取允许用户根据记录的编号来存取文件的任一记录,或者是根据存取命令把读写指针移到要读写处进行读写。 UNIX系统及MS-DOS等操作系统都采用顺序存取和随机存取两种方法。,2009-4-7,34,3. 按键存取法,按键存取法是根据给定的键或记录名首先搜索到要进行存取的记录的逻辑位置,再将其转换到相应的物理地址后进行存取。 按键存取是一种用在复杂文件系统,特别是数据库管理系统中的存取方法。 对文件的搜索分为两步: 对键进行搜索 在含有键的记录中搜索出所需记录,2009-4-7,35,按键存取法中记录的搜索过程,由Ri
15、所对应的键名查找 拥有该键的记录队列,找到了吗?,返回空,由记录队列查找Ri,返回Ri的逻辑地址,否,找到了吗?,返回空,否,是,是,2009-4-7,36,3. 按键存取法搜索算法,对键或记录的搜索与其他数据搜索问题都属于表格搜索问题(table lookup)。 主要的表格搜索算法有三种类型 线性搜索法(linear search) 散列法(hash coding) 二分法(binary search algorithm),2009-4-7,37,(1).线性搜索法,线性搜索法:从记录的第一个键或记录开始,依次和所要搜索的键或记录相比较,直到找到所需要的记录为止。 线性搜索法是一种最简单、
16、最直观的搜索法。但效率较低。 线性搜索法所需要的搜索时间与所搜索的表格大小的1/2成正比。这是因为找到一个所需要的记录平均要和表中登记的总项数的1/2比较后才能找到。,2009-4-7,38,(2). 散列法,散列法广泛应用于现代操作系统的数据查找。 散列法的核心思想:定义一个散列函数h(k),使得对于给定的键k,散列函数h(k)将其变换为k所对应的逻辑地址。 散列冲突:两个不同的键经散列函数变换后得到同一地址: h(k1)= h(k2) (k1k2),2009-4-7,39,(2). 散列法,散列冲突的解决办法是采用多次散列探测。 线性散列探测法: 设第i次散列变换结果为hi(k),i=2,
17、3,则可令: hi(k)=(h1(k) + di) (mod t),这里,t 为散列表的长度。令di为i的线性函数,即di=a*i。 随机散列探测法:令di= ri,其中,r1, r2, rn为一随机数。 平方散列探测法:令hi(k)=(h1(k) + c*(i * i) (mod t)。,2009-4-7,40,(3) 二分搜索法,对于顺序结构排列的键或记录来说,二分搜索法具有较高的搜索效率。 设键K1, K2 , K3 ,Kn(n1)按键间距d排列,如果K1的逻辑位置为a1,则Ki的逻辑位置为a1+i*d。二分搜索法首先把所要搜索的键与队列的首尾键相比较,如果和其中之一相等,则返回所搜索到
18、的逻辑位置。否则,再与队列的1/2处的键相比较,如果所要搜索的键正好等于该键的话,则返回该键的逻辑位置;否则,如果大于该键,则继续搜索右半队列,小于该键则搜索左半队列。,2009-4-7,41,(3) 二分搜索法,与线性搜索法相比,当n(表长)=16时,它比线性搜索快约2倍,当n=1024时,要快50倍。 缺点:需先将记录按键值排好序。,2009-4-7,42,8.3 文件的物理结构与存储设备,无论采用何种文件存取方法,都是首先定位信息的逻辑地址,然后由逻辑地址映射到物理地址,再对物理地址内的信息进行操作。 由逻辑地址到物理地址的映射是和文件的物理存储方式(物理结构)紧密相关的。 文件系统所采
19、用的逻辑结构也和文件的物理结构密切相关。,2009-4-7,43,8.3 .1 文件的物理结构,一个文件存储介质,格式化后就分成许多大小相等的单位存储块(物理盘块),在现代计算机系统中,一般来说,每个物理块是一个磁盘的扇区,长度为512字节或1024字节。并给每个存储块有个编号,称为物理块号。 为了有效地利用存储设备和便于系统管理,一般把文件信息划分为与物理存储设备的物理块大小相等的逻辑块。从而,以块作为分配和传送信息的基本单位。,2009-4-7,44,8.3 .1 文件的物理结构,对于流式文件,每一个物理块存放长度相等的文件信息。 对于记录式文件,由于记录的长度可以是固定的也可以是可变的,
20、其长度不一定刚好等于物理块的大小,从而逻辑地址到物理地址的变换较复杂。 为便于讨论,本章中均假设记录的长度是固定的,且其长度刚好等于物理块的大小。,2009-4-7,45,8.3 .1 文件的物理结构,文件的物理结构指文件在存储介质上的结构,目前有三种基本结构: 连续文件结构 串联文件结构 索引文件结构,2009-4-7,46,1. 连续文件,2009-4-7,47,1.连续文件,优点:结构简单,实现容易,不需要额外的开销。 缺点: 用户创建文件时要给出文件的大小; 不利于文件的动态增加和修改; 连续文件是一种连续结构的文件,对每个文件 要求存放在存储介质上的连续的物理块中,存 储空间利用率不
21、高。类似于存储管理中的分区 适用于变化不大的顺序访问的文件,在流行的UNIX系统中仍保留了连续文件结构。,2009-4-7,48,2. 串联文件,一个串联文件结构是按顺序由串联的块组成的,即文件的信息按存储介质的物理特性存于若干块中。 每个物理块的最末一个字(或第一个字)作为链接字,它指出后继块的物理地址。链首指针存放在该文件目录中。文件的结尾块的指针为“”。 这种文件结构不要求连续存放。 对于记录式文件一块中可包含一个逻辑记录或多个逻辑记录,也可以若干物理块包含一个逻辑记录。,2009-4-7,49,2. 串联文件,2009-4-7,50,2. 串联文件,评价: 1.存储空间利用率高; 2.
22、文件创建时用户不必指出文件的大小; 3.文件动态扩充和修改容易。 4.顺序存取效率高,随机存取效率太低,如果访问文件的最后的内容,实际上是要访问整个文件。 类似于存储管理中的页式,2009-4-7,51,2. 串联文件,为了克服链接文件的存取效率太低的问题,人们提出文件映照的技术,即把链接文件中的链接字集中在一结构中,这样既保持了链接文件的优点,也克服了其缺点,DOS、WINDOWS系统就采用了这样结构。,2009-4-7,52,文件映照的技术,FAT:文件分配表,磁盘格式化后建立,从磁盘的 F8H:硬盘 000H:空闲簇 FFFH:文件的结尾簇 XXXH:文件的下一簇,2009-4-7,53
23、,3. 索引文件结构,随机文件结构是另一种形式的非连续文件,文件数据存放的存储介质上的物理块号与文件的逻辑块号一一对应,并建立这样对应关系的数据结构文件索引表。 访问文件时,根据文件的逻辑块号查文件索引表,找到对应的物理块号,然后,进行访问。 随机文件有三种形式的结构:直接地址结构、索引结构、计算寻址结构。 索引结构是当代计算机操作系统中普遍采用的结构,如UNIX系统、LINUX系统。,2009-4-7,54,3. 索引文件结构,这种文件结构的数据结构是文件的索引表,每个文件有一个索引表,表中每个表目包括:逻辑块号,物理块号。 索引表位置:文件目录中,文件的开头等。 索引表大小:固定大小,非固
24、定大小。,2009-4-7,55,3. 索引文件结构,UNIX系统采用索引文件结构,UNIX系统采用多级间接索引结构,对小型文件采用直接索引,对大型文件采用间接索引,从而,既保证绝大多数的文件有高的存取效率,又能适应存取一些大型文件。(既保证了文件系统的高效率,又使其有很宽的适应面)。,2009-4-7,56,2009-4-7,57,2009-4-7,58,3. 索引文件结构,索引结构既适用于顺序存取,也适用于随机存取。 缺点: 索引表增加了系统开销 存取文件时需要至少访问存储器二次以上:一次是访问索引表,一次是根据物理块号访问文件信息。 改进办法:当对某个文件进行操作之前,系统预先把索引表放
25、入内存。,2009-4-7,59,4.三种文件结构的比较,连续文件的优点是不需要额外的空间开销,只要在文件目录中指出文件的大小和首块的块号即可,对顺序的访问效率很高。适应于顺序存取。缺点是动态地增长和缩小系统开销很大;文件创建时要求用户提供文件的大小;存储空间浪费较大。 串联文件克服了连续文件的不足之处,但文件的随机访问系统开销较大。适应于顺序访问的文件。DOS系统中改造了串联文件的结构,使其克服了串联文件的不足,但增加了系统的危险性。,2009-4-7,60,4.三种文件结构的比较,索引文件既适应于顺序访问,也适应于随机访问,是一种比较 好的文件物理结构,但要有用于索引表的空间开销和文件索引
26、的时间开销。UNIX系统是使用索引结构成功的例子。 在当前流行的一些UNIX操作系统的版本中,同时支持连续文件结构和索引文件结构。DOS、WINDOWS系统支持类似于文件映照结构,2009-4-7,61,8.3.2 文件存储设备,常用的设备:磁盘、光盘、磁带 存储设备的类型决定了文件的存取设备和方法。 类型: 顺序存储设备:磁带 直接存储设备:磁盘、光盘,2009-4-7,62,1. 顺序存取设备,磁带是一种最典型的顺序存取设备。 顺序存取设备:只有在前面的物理块被存取访问过之后,才能存取后续的物理块的内容。,磁带,2009-4-7,63,1. 顺序存取设备,磁带的存取速度或数据传输速率与下列
27、因素有关: 信息密度(字符数/英寸) 磁带带速(英寸/秒) 块间间隙,2009-4-7,64,2. 直接存取设备,磁盘是最典型的直接存取设备。 磁盘设备允许文件系统直接存取磁盘上的任意物理块,为了存取一个特定的物理块,磁头将直接移动到所要求的位置上,而不需要象顺序存取那样事先存取其他的物理块。,2009-4-7,65,磁盘的结构,2009-4-7,66,磁盘的结构(续),磁头臂,柱面,磁盘一般由盘片组成,每个磁盘片对应一个装有读/写磁头的磁头臂,磁头臂上的两个读/写磁头分别对盘片的上下两面进行读写。,2009-4-7,67,8.4 文件存储空间管理,只有有效地进行存储空间管理,才能保证多个用户
28、共享文件存储设备和得以实现文件的按名存取。 文件存储空间的管理实质上是一个空闲块的组织和管理问题:空闲块的组织、空闲块的分配和回收等。 空闲块管理方法: 空闲文件目录 空闲块链 位示图。,2009-4-7,68,1.空闲文件目录,空闲文件目录是一种最简单的空闲块管理方法:把文件存储设备中的空闲块的块号统一放在一个称为空闲区文件目录的物理块中。 空闲文件目录的每个表项对应一个由多个空闲块构成的空闲区,它包括空闲块个数,空闲块号和第一个空闲块号等。,2009-4-7,69,空闲文件目录方法:(续),当系统为某个文件分配空闲块时: 首先扫描空闲文件目录项,如找到合适的空闲区项,则分配给申请者,并把该
29、项从空白文件目录中去掉。 如果一个空闲区项不满足要求,则把目录中另一个项分配给申请者(连续文件结构除外)。 如果空闲区项所含块数超过申请者要求,则为申请者分配了所要求的物理块后再修改该表项。 当一个文件被删除,释放存储物理块时,系统把被释放的块号、长度及第一块块号置入空白目录文件的新表项中。,2009-4-7,70,1.空闲文件目录(续),在内存管理时讨论过的有关空闲连续区分配和释放算法,只要稍加修改就可用于空闲文件项的分配和回收。 空闲文件目录方法适用于连续文件结构的文件存储区的分配与回收。,2009-4-7,71,2. 空闲块链,空闲块链是一种较常用的空闲块管理方法。 空闲块链把文件存储设
30、备上的所有空闲块链在一起,当申请者需要空闲块时,分配程序从链头开始摘取所需要的空闲块,然后调整链首指针。反之,当回收空闲块时,把释放的空闲块逐个插入链尾上。,2009-4-7,72,2. 空闲块链,空闲块链的链接方法因系统而异,常用的链接方法为: 按空闲块大小顺序链接 按释放顺序链接 按成组链接法(可视为空闲块链法的扩展) 前两种方法在增加或移动空闲块时需要对空闲块链做较大的调整,系统开销大。 成组链法在空闲块的分配和回收上优于前两种方法。,2009-4-7,73,成组链法,成组链法首先把文件存储设备中的所有空闲块按50块划分为一组,组的划分为从后往前顺次划分。 每组的第一块用来放前一组中各块
31、的块号和总块数。第一组的块数为49块。最后一组的块数可能不足50块,该组的物理块号与总块数放在管理文件存储设备用的文件资源表中。,2009-4-7,74,成组链法的组织,最后组的块号与总块数,文件资源表,最后组,第三组,第二组,第一组,文件存储设备,第一组各块号与总块数,倒数第二块各块号与总块数,50块,50块,49块,第二组各块号与总块数,2009-4-7,75,UNIX系统的空闲块的管理,2009-4-7,76,成组链法空闲块的分配与释放,系统在初启时把文件资源表复制到内存,从而使文件资源表中放有最后一组空闲块块号与总块数的堆栈进入内存,并使得空闲块的分配与释放可以在内存进行。这就减少了每
32、次分配和释放空间对I/O设备的压力。,2009-4-7,77,成组链法空闲块的分配,用于空闲块分配与回收的的堆栈有栈指针Ptr,且Ptr的初值等于该组空闲块的总块数。 分配空闲块时,按后进先出的原则将栈顶的空闲块分配给申请者, Ptr置Ptr-1。 当堆栈中只剩下最后一个空闲块号时,将该块中存放的下一组的块号与总块数读入内存之后将该块分配给申请者。 系统重置Ptr指针,继续分配空闲块。,2009-4-7,78,成组链法空闲块的回收,成组链法的回收过程仍利用文件管理堆栈进行回收。在回收时,回收程序先做Ptr置Ptr+1。 把回收的物理块号放入当前指针Ptr所指的位置。如果Ptr等于50,则表示该
33、组回收已经结束。 Ptr重新置1,另起一个新组。 对空闲块的分配与回收必须互斥地进行。,2009-4-7,79,3. 位示图,空闲文件目录和空闲块链法在分配和回收空闲块时,都需在文件存储设备上查找空闲文件目录或链接块号,这必须经过设备管理程序启动外设才能完成。,2009-4-7,80,3. 位示图,为了提高空闲块的分配与回收速度,可以采用位示图法: 系统首先从内存中划出若干个字节,为每个文件存储设备建立一张位示图,反映每个文件存储设备的使用情况。在位示图中,每个文件存储设备的物理块都对应一个比特位。如果该位为“0”,则表示所对应的存储块是空闲区,反之,如果该位为“1”,则表示所对应的块已分配出
34、去。,2009-4-7,81,3. 位示图法分配与回收,利用位示图进行空闲块分配时,只需查找图中的“0”位,并将其置为“1”位。 回收时,只需把相应的比特位置为“0”。,2009-4-7,82,8.5 文件目录管理,为了有效地利用存储空间以及迅速准确地完成由文件名到文件物理块的转换,必须把文件名及其结构信息等按一定的组织结构排列,以方便文件的搜索。 把文件名和对该文件实施管理的控制信息称为该文件的文件说明,并把一个文件说明按一定的逻辑结构存放到物理存储块的一个表目中。 利用文件说明信息,可以完成对文件的创建、检索以及维护。 把一个文件的文件说明信息称为该文件的目录。对文件目录的管理就是对文件说
35、明信息的管理。,2009-4-7,83,8.5 文件目录管理,文件目录的管理包括: 存储空间的有效利用 快速搜索 文件命名冲突 文件共享,2009-4-7,84,8.5.1 文件的组成,从文件管理的角度看,一个文件包括:文件说明和文件体。 文件体指文件本身的信息 文件说明(也叫文件控制块FCB),至少包括文件名、与文件名相对应的文件内部标识以及文件信息在存储设备上第一个物理块的地址。 根据系统要求不同,文件说明还包括文件逻辑结构、物理结构、存取控制和管理信息(访问时间、记帐信息等)。 文件说明组成目录文件。文件系统利用目录文件完成按名存取和对文件信息的共享与保护。,2009-4-7,85,8.
36、5.2 文件目录,文件目录项: 1.文件名 2.文件的大小,单位:字节 3.文件在物理存储介质中的位置。取决于文件的物理结构 。 对于连续文件:文件起始块号(即文件的第一个物理块块号); 对于串联文件:指向第一个物理块的指针; 对于索引文件:索引表。 4.存取控制信息 文件主和其它用户对该文件的访问权限。 5.管理信息 包含文件创建的日期和时间,最近修改该文件的日期和时间等。 6.文件的类型,2009-4-7,86,8.5.2 文件目录,文件目录可分为: 单级目录 二级目录 多级目录,2009-4-7,87,1.单级文件目录,最简单的文件目录结构是在系统中建立一张线性表,每个文件占一表目,由文
37、件名和文件的说明和管理信息组成。这样的表称为单级文件目录. 优点:单级文件目录的主要功能是实现“按名存取”, 并且实现容易。 缺点: 主要问题是“重名“问题所谓“重名”是指不同用户对不同文件起了相同的名字,即两个或多个文件只有一个相同的符号名。 其次,由于单级目录必须对目录表中所有文件信息项进行搜索,所以搜索效率低。,2009-4-7,88,1.单级文件目录示例,2009-4-7,89,单级目录的读写处理过程,控制权交给文件系统,文件名在 目录表中吗?,分配存储空间,计算读写信息的物理块号,失败返回,否,读,是,写,调用设备管理程序 控制权转移,根据给定的文件名 搜索单级目录表,读还是写?,改
38、写单级目录表,2009-4-7,90,2.二级目录,在二级目录中,各个文件的说明信息被组织成目录文件,且以用户为单位把各自的文件说明划分成不同的组。 与这些不同的组名有关的存取控制信息存放在主目录(MFD)中。 用户文件的文件说明所组成的目录文件被称为用户目录(UFD)。 这样,由MFD和UFD就形成了二级目录。,二级目录结构,Wang的文件目录结构,Zhang的文件目录结构,主目录MFD,文件共享,2009-4-7,92,2.二级目录,使用二级目录可以解决文件重名和文件共享问题,并且可获得较高的搜索速度。 从系统管理的角度看,二级目录中文件名已演变为“用户名/用户文件名”。 两个不同的用户可
39、以具有同名的文件。 可以方便地解决不同用户之间的文件共享:在被共享文件的说明信息中增加共享管理项;把共享文件的文件说明项指向被共享文件的文件说明项。,2009-4-7,93,2.二级目录,在单级目录中,对单级目录的搜索时间与单级目录表的长度n成正比; 在二级目录中,n个目录被划分成m个子集,如果每个子集有r个用户文件,则对二级目录的搜索时间与m+r成正比。这里,m+rn。因此,二级目录的搜索速度要快于单级目录。,2009-4-7,94,3.多级目录结构,目录文件:由文件的目录项组成的文件称为目录文件。 系统中有一个根目录(或根目录文件),在这个目录中可登记一般文件,也可以登记目录文件,在每个目
40、录文件中可以登记一般文件,也可以登记目录文件。 根据这个递归定义就形成了一个倒立的树的结构。对于一棵树,它有一个树根(只有一个,根目录),在树根上可以长树叶(一般文件),也可以长树枝(子目录文件);对于每个树技又可以长树枝,也可以长树叶。,2009-4-7,95,文件系统的树形结构,1,4,3,2,6,5,14,13,12,11,10,7,8,9,2009-4-7,96,多级目录结构的特点,(1)层次清楚由于分支结构,不同性质、不同用户的文件可以构成不同的子树,便于管理。不同层次,不同用户的文件可以被赋予不同的存取权限,有利于文件的保护。 (2)解决了重名问题只要在同一子目录下的文件名不发生重
41、复,就不会产生混乱。 (3)查找搜索速度快对多级目录的查找每次只查找目录的一个子集,所以其搜索速度要比单级、二级目录快。,2009-4-7,97,7.5.3 便于共享的文件目录,从系统管理的角度看,有三种方法可以实现文件共享: 绕道法 链接法 基本文件目录表(BFD),2009-4-7,98,1. 绕道法,绕道法要求每个用户处在当前目录下工作,用户对有文件的访问都是相对于当前目录进行的。 用户文件的固有名是由当前目录到信息文件通路上所有各级目录的目录名加上该信息文件的符号名组成。(为了访问某个文件而必须访问的各个文件的目录名与文件名的顺序连接称为文件的固有名),2009-4-7,99,1. 绕
42、道法,使用绕道法进行文件共享时,用户从当前目录出发向上返回到与所要共享文件所在路径的交叉点,再顺序下访到共享文件。 绕道法需要用户指定所要共享文件的逻辑位置或到达被共享文件的路径。 绕道法需要绕弯路访问多级目录,从而其搜索效率不高。,2009-4-7,100,绕道法原理图,与被共享文件所在路径的交叉点,当前目录,被共享文件,文件,2009-4-7,101,2. 链接法,将一个目录中的链指针直接指向被共享文件所在的目录。 链接法仍然需要用户指定被共享的文件和被链接的目录。,2009-4-7,102,3. 基本文件目录表(BFD),BFD方法把所有文件目录的内容分成两部分: 一部分包括文件的结构信
43、息、物理块号、存取控制和管理信息等,并由系统赋予唯一的内部标识,称为基本文件目录表(BFD); 另一部分则由用户给出的符号名和系统赋予文件说明信息的内部标识符组成,称为符号文件目录表(SFD) 。,2009-4-7,103,3. 基本文件目录表(BFD),系统通常预先规定赋予基本文件目录、空白目录、主目录MFD的符号文件目录固定不变的唯一标识符。 采用基本文件目录方式可以方便地实现文件共享。如果用户要共享某个文件,则只需给出被共享的文件名,系统会自动在SDF的有关文件处生成与被共享文件相同的内部标识符ID。,采用基本文件目录的多级目录结构,主目录(MFD),空闲文件目录,Wang的SFD,Zh
44、ang的SFD,a.c,w.c,9,Sub-d的SFD ID,b.c,f.c,z.c,w.c,2009-4-7,105,8.5.4 目录管理,问题的提出: 存放文件说明信息的目录项构成目录文件。这些文件存放在外存中。 存取文件时,先要访问目录文件。如果访问每级目录都到外存,则需花费大量时间进行I/O操作,造成CPU浪费,降低处理速度。 解决办法:将当前正在使用的文件的目录表复制到内存。,2009-4-7,106,8.5.4 目录管理(续),把目录文件复制到内存的操作称为打开文件(fopen),把删除文件的内存副本的操作称为关闭文件(fclose)。这两个操作一般以系统调用的形式提供给用户。 对
45、于按BDF和SDF排列的多级文件目录,系统按以下方式打开一个文件:,2009-4-7,107,系统打开文件的步骤:,(1)把主目录MFD中的相应表目,也就是与待打开文件相联系的有关表目复制到内存。 (2)根据(1)所复制得到的标识符,再复制此标识符所指明的基本文件目录表BDF的有关表目。 (3)根据(2)所得到的子目录说明信息搜索SFD,以找到与待打开文件相对应的目录表项。 (4)根据(3)所搜索到的文件所对应的标识符ID,相应的BDF的表目项复制到内存。 由复制的文件说明,系统就可以方便地得到文件的有关物理块号。从而系统可以对文件进行操作。,2009-4-7,108,8.5.4 目录管理(续
46、),打开的文件称为活动文件。 把内存中存放活动文件的SFD表目的表称为活动名字表,这个表每个用户一张。 把内存中存放活动文件的BFD表目的表称为活动文件表,这个表整个系统一张。,2009-4-7,109,8.6 文件存取控制,文件的存取控制涉及到文件的共享、保护和保密。 文件的共享是指不同的用户共同使用一个文件。 文件的保护则指文件本身需要防止文件的拥有者或其他用户破坏文件内容。 文件保密是指未经文件拥有者许可,任何用户不得访问该文件。 这三个问题实际上是一个用户对文件的使用权限,即读、写、执行的许可权问题。,2009-4-7,110,1.文件存取控制的目标,(1)对于拥有读、写或执行权的用户
47、,应让其对文件进行相应的操作。 (2)对于没有读、写或执行权的用户,应禁止其对文件进行相应的操作。 (3)应防止一个用户冒充其他用户对文件进行存取。 (4)应防止拥有存取权限的用户误用文件。,2009-4-7,111,文件存取控制的步骤:,(1)审定用户的存取权限 (2)比较用户权限的本次存取要求是否一致 (3)将存取要求和被访问文件的保密性进行比较,看是否有冲突。,2009-4-7,112,2.验证用户存取权限的方法,存取控制矩阵 存取控制表 口令 密码技术系统设计人员可采用其中的一种或几种进行用户权限验证。,2009-4-7,113,(1)存取控制矩阵,2009-4-7,114,(2) 存
48、取控制表,存取控制表以文件为单位,把用户按某种关系划分为若干个组,同时规定每组的存取权限。所有用户组对文件权限的集合就形成了该文件的存取控制表。,2009-4-7,115,(2) 存取控制表(续),每个文件都有一张存取控制表。 在实现时,该表存放在文件说明中,也就是BDF的有关表目中。文件被打开时,由于存取控制表也相应地被复制到了内存活动文件中,因此存取控制验证能高效进行。,2009-4-7,116,(3) 口令方式,每个用户在创建文件时,为每一个创建的文件设置一个口令,且将其置于文件说明中,当任一用户想使用该文件时,都必须首先提供口令。 优点:实现简单,系统开销小,可以实现共享和保密。 缺点
49、:保密性差,一旦口令被破解,则无法进行存取控制。一旦口令被修改,需要通知所有授权用户。一旦口令丢失,所有用户都无法操作文件。,2009-4-7,117,(4) 密码方式,在用户创建文件时将文件进行编码,在读出文件时进行译码解密。 文件的加密和解密需要提供一个代码键(Key)。,编码程序,解码程序,密码文件,用户文件,用户文件,用户指定代码键,存取要求代码键,存储,2009-4-7,118,(4) 密码方式(续),优点:保密性强 缺点:编码和解码需要花费大量处理时间,增加系统开销。,2009-4-7,119,8.7 文件的使用,(自学),2009-4-7,120,8.8 文件系统的层次模型,1967年,Dijkstra 提出操作系统的层次模型。 1968年,Madnick 将该模型引入文件系统。 层次结构法的优点: 可以按照系统所提供的功能来划分各种不同的层次。 下层为上层服务,上层使用下层的功能。 上下层之间无需了解对方的内部结构和实现方法。 易于设计,易于理解,易于实现 。 便于管理和维护。,