一、概述
1.所有的计算机应用程序都要:存储信息,检索信息。
2.信息存储与检索的基本要求:
(1)能够存储大量的信息;
(2)长期保存信息;
(3)可以共享信息。
3.解决方法:把信息以文件的形式存储在磁盘或其他外部介质上,通过操作系统来管理文件,包括:文件的结构建立,文件命名、存取、使用、保护等。
二、文件
(1)一组带标识的在逻辑上有完整意义的信息项的序列,这个标识称为文件名。信息项是构成文件内容的基本单位。
(2)长度:单个字节,或多个字节。
(3)文件内容的意义:由文件的建立者和使用者解释。
(4)各信息项之间具有顺序关系:
图 7.1.1
(5)文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节。
三、文件命名
文件命名是给文件指定的一个标识符,通过它可以方便的使用、操作和记忆文件。
文件名的一般形式:文件名.扩展名
扩展名是对文件名的补充,常用于区分文件的类别、特征等。
例子:.bak .c .f77 .gif .hlp .html .mpg .obj .ps .tex .txt .zip
一、文件系统
文件系统是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。
例如: MS-DOS,Win 95 等系统都采用了 FAT16 文件系统。Win 2000 等采用 FAT32 文件系统。NTFS 文件系统是一个基于安全性的文件系统,是 Windows NT 所采用的独特的文件系统结构,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。
二、文件系统功能
(1)统一管理文件的存储空间,实施存储空间的分配与回收。
(2)实现文件的按名存取。
(3)实现文件信息的共享,并提供文件的保护和保密措施。
(4)向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令:信息存取、加工等)。
(5)系统维护及向用户提供有关信息。
(6)文件系统的执行效率。文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果。
(7)提供与 I/O 的统一接口。
文件系统是计算机系统管理和维护存储于外部存储设备中数据的软件集合,它也提供用户对这些数据的存入、查询、修改及删除。文件系统通过的基本文件操作包括:
1.创建:定义一个新的文件,同时分配一个文件结构。
2.删除:删除文件结构,释放相关资源。
3.打开:一个已存在的文件由进程通过“打开”操作去打开,并允许进程对文件进行操作。
4.关闭:进程关闭文件,直到下次打开前将不能操作该文件。
5.读:进程读文件的部分或全部数据。
6.写:进程更新文件,添加数据或者更改已经存在的数据。
一、文件的构成
从用户角度看文件,研究文件的组织形式与结构,即文件中所存储信息在逻辑上的关系。下图分别表明三种不同的逻辑关系。
图 7.2.1-1
1.流式文件
构成文件的基本单位是字符,文件是有逻辑意义的、无结构的一串字符的集合。
文件:一个无结构字节序列。
好处:提供数据存取很大的灵活性。
例子:BMP 格式的文件等。
2.记录文件
文件是由若干个记录组成,每个记录有一个键,可按键进行查找。记录文件是有结构的文件。
文件:一个固定长度记录的序列,每条记录有其内部结构。
好处:每个记录在逻辑上具有明确的含义。
例子:计算机系统中的汉字字库。
记录文件按照不同的组织方式构成多种逻辑结构,本节将讨论其中常用的几种。选择文件逻辑结构时要考虑的主要原则包括:访问快速、易于修改、节约存储空间、维护简单和可靠性。
二、顺序文件
1.文件结构
顺序文件指按照记录的关键字顺序组织的文件。它有如下特点:
(1)每个记录格式相同
(2)每个记录长度相同
(3)每个记录有相同数量、类型、顺序的域
(4)每个记录有一个关键字域
下图是顺序文件的示例。
图 7.2.1-2
2.顺序文件的优缺点
顺序文件的最佳应用场合,是在对诸记录进行批量存取时,即每次要读或写一大批记录。此时,对顺序文件的存取效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作。
在交互应用的场合,如果用户(程序)要求查找或修改单个记录,为此系统便要去逐个地查找诸记录。这时,顺序文件所表现出来的性能就可能很差,尤其是当文件较大时,情况更为严重。
顺序文件的另一个缺点是,如果想增加或删除一个记录,都比较困难。
一、文件结构
1.索引文件引入
对于定长记录文件,可随机获得第 i 个记录,它相对于第一个记录首址的地址:
Ai=i×L
对于变长度记录文件,须顺序查找每个记录,从中获得相应记录的长度 Li,按下式计算第 i 个记录的首址:
为快速定位到第 i 个记录,建立索引文件。
2.索引文件的组织
(1)建立一个定长记录的索引表,由该索引表构成索引文件。
(2)文件中每个记录占一个表项,包括:索引号、记录的长度、指向该记录的指针。如下图。
图 7.2.2
这里,逻辑文件指原来的文件,它可以是定长记录的,也可以是变长记录的。
索引文件按照索引项存储,索引项就可以与原文件的记录号相同,也可以与原文件的记录号不同。因此,可以利用索引文件重新在逻辑上组织原文件中记录的顺序。
二、优缺点
(1)能够通过索引项重新在逻辑上组织原文件中记录的顺序。
(2)能够通过索引项提高查询速度
(3)适合于对查询速度要求高且只对部分记录进行处理的文件。
(4)增加新记录时,需要修改对应的索引表。
(5)存储索引文件需要额外的空间。
一、索引顺序文件的组织
(1)将顺序文件的所有记录分成若干组,为顺序文件建立一张索引表,该索引表构成索引顺序文件。
(2)为每组的第一个记录建立一个索引项,其中包含该记录的关键字值和记录指针,
(3)索引顺序文件中记录的分组可以分成多级从而形成多级索引
二、优缺点
(1)一级与多级索引顺序文件能够有效地提高记录查询的速度。
(2)原文件数据的更新可能引起索引顺序文件记录的移动。
(3)存储索引需要额外的存储空间。
一、文件结构
散列文件开发直接访问磁盘中任何一个地址已知的块的能力。和顺序文件以及索引顺序文件一样,每一条记录都需要一个关键词域。但不要求原文件按关键词排序。
散列文件使用基于关键词的散列,即通过建立在关键词上的散列函数定位所查找记录在原文件中的相对于文件起始位置的偏移值。下图给出了散列的组织和散列文件中典型使用的益处文件的类型。
二、优缺点
散列文件常在需要快速访问时使用,并且记录长度是固定的。通常一次访问一条记录,例如:目录、价格表、调度和名字列表等。
散列文件查询速度快,但是需要额外空间存储溢出指针等。
7.3.1 记录组块
一、物理块
在文件系统中,文件的存储设备(如磁盘)常常划分为若干大小相等的存储单元,称为物理块。同时也将文件信息划分成相同大小的逻辑块,所有块统一编号。物理块的基本定位参数(物理地址)是:
(磁头号,柱面号,扇区号)
物理块是操作系统定位和读写存储设备的基本单位,即每次读写都是物理块的整数倍。
操作系统以块为单位进行信息的存储、传输和存储分配。
二、记录组块
记录是访问结构化文件的逻辑单位。若干条记录可以组成一个物理块,有时一条记录可以占据若干个物理块。物理块中记录的存储方式被称为记录组块。
对于给定大小的物理块,有 3 种记录组块方式:
(1)固定组块:使用固定长度的记录,并且若干个完整的记录保存在一个物理块中。在每个物理块的尾部可能会出现一些未使用的空间,称为内部碎片
(2)可变长跨越式组块:使用长度可变的记录,并且紧缩到块中,使得块中没有未使用空间。因此,某些记录可能跨越两个块,通过一个指向后继块的指针连接
(3)可变长非跨越式组块:使用可变长记录,但不采用跨越式的方式。如果下一条记录比块中剩余的未使用空间大,则无法使用这部分空间
三、优缺点
固定组块是记录长度固定的顺序文件最常用的方式,实现较简单。但是,限制记录的长度不超过块的大小。
可变长跨越式组块的存储效率高,对记录大小没有限制但实现较困难。
可变长非跨越式组块实现较容易,会导致空间浪费,并且限制记录的长度不超过块的大小。
一、概念
连续结构也称顺序存储结构,将文件信息存放在若干连续的物理块中
二、优点
(1)简单:存储与管理都简单,且容易实现。
(2)支持顺序存取和随机存取。
(3)顺序存取速度快。
(4)所需的磁盘寻道次数和寻道时间最少。(思考:为什么?)
三、缺点
(1)需要为每个文件预留若干物理块以满足文件增长的部分需要。上述图中,当文件 count 被修改后,占用的物理块为 7 块时,再保存会出现什么问题?
(2)不利于文件插入和删除。
、概念
链接结构是指将文件信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块
二、优点
(1)提高了磁盘空间利用率,不需要为每个文件预留物理块。
(2)有利于文件插入和删除。
(3)有利于文件动态扩充。
三、缺点
(1)存取速度慢,不适于随机存取。(思考:为什么?)
(2)当物理块间的连接指针出错时,数据丢失。
(3)更多的寻道次数和寻道时间。(思考:为什么?)
(4)链接指针占用一定的空间,降低了空间利用率。
一、概念
索引结构指将文件信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构,称为索引表,并将存放文件信息的物理块的块号存放在索引表中
一、概念
索引结构指将文件信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构,称为索引表,并将存放文件信息的物理块的块号存放在索引表中。
索引表是磁盘块地址数组,其中第 i 个条目指向文件的第 i 块。如下图所示。
图 7.3.4-1
二、优点
(1)不需要为每个文件预留物理块。
(2)既能顺序存取,又能随机存取。
(3)满足了文件动态增长、插入删除的要求。
三、缺点
(1)较多的寻道次数和寻道时间。
(2)索引表本身带来了系统开销。如:内外存空间,存取时间等。
四、索引表组织方式
(1)链接模式:一个盘块一个索引表,多个索引表链接起来。
(2)多级索引:将存放索引表的物理块块号放在另一个索引表中,形成多级索引。
(3)综合模式:UNIX 文件系统采用的是多级索引结构(综合模式)。每个文件的索引表为 13 个索引项,每项 2 个字节。最前面 10 项直接存放文件信息的物理块号(直接寻址)。如果文件大于 10 块,则利用第 11 项指向一个物理块,该块中最多可放 256 个文件物理块的块号(一次间接寻址)。对于更大的文件还可利用第 12 和第 13 项作为二次和三次间接寻址。UNIX 中采用三级索引结构后,文件最大可达 16 兆个物理块。如下图所示。
图 7.3.4-2
五、文件结构、文件存取方式与文件存储介质的关系
1.存取方式
(1)顺序存取方式:存取按照逻辑结构中的第一块、第二块,……,依次存取。
(2)随机(直接)存取方式:直接存取逻辑结构中的任意一块。
2.关系
文件结构、文件存取方式与文件存储介质的关系如下表:
一、文件控制块(FCB)
1.概念
文件控制块是操作系统为管理文件而设置的数据结构,存放用于管理文件所需的所有有关信息(文件属性)。
文件控制块是文件存在的标志。
2.文件控制块的内容
文件控制块包含的内容主要有:文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构等。
二、文件目录
把所有的 FCB 组织在一起,就构成了文件目录,即文件控制块的有序集合。其中的每一项是一个 FCB,称为目录项。
为实现对文件目录的管理,将文件目录以文件的形式保存在外存,这个文件就叫目录文件。
为方便文件的管理,采用的主要措施是建立不同的目录结构。
三、单级目录结构
1.结构
通过一个目录文件来管理所有的文件,即系统中仅一个目录文件。
下图是单级目录结构示例。
表 7.4.1
2.优点
简单,易实现。
3.缺点
(1)限制了用户对文件的命名:系统中的任意两个文件不能同名,即用户在给文件命名时必须知道已使用了那些文件名。
(2)文件平均检索时间长。
(3)限制了对文件的共享。
一、二级目录结构
1.结构
目录分为两级:第一级称为主文件目录(MFD),给出用户名,用户子目录所在的物理位置;第二级称为用户文件目录(又称用户子目录,UFD),给出该用户所有文件的 FCB。
下图是二级目录结构的示例。
图 7.4.2-1
2.优点
(1)不同用户的文件可以有相同的文件名:用户名|文件名
(2)提高了文件检索速度。(思考:为什么?)
3.缺点
增加了系统开销——增加了 MFD。
二、多级目录结构(树型目录)
1.结构
按树形结构组织目录,叶节点为文件的 FCB。如下图。
图 7.4.2-2
2.优点
层次结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制。
3.缺点
查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度。
一、文件共享
1.定义
(1)一个文件被多个用户或程序使用。
(2)共享形式:
① 被多个用户使用,由存取权限控制;
② 被多个程序使用,但各用自己的读写指针;
③ 被多个程序使用,但共享读写指针。
2.目的
(1)节省时间和存储空间,减少了用户工作量;
(2)进程间通过文件交换信息。
3.实现
(1)由系统目录实现对文件的共享
用户通过全路径名共享地访问这些文件。
(2)对要共享的文件进行连接
通过“连接(Link)”命令,在用户自己的目录项中对要共享的文件建立起相应的表目,即建立两个文件的等价关系。
二、连接共享的实现
1.目录项指向相同文件节点
问题:删除文件时怎样考虑?
2.符号连接
系统建立一个新文件,类型为 LINK,放在要连接的目录下。该文件包含了连接它的文件的路径名。
问题:系统开销大。
优势:计算机网络环境下可用。
一、文件保护
1.概念
用于提供安全性的特定的操作系统机制。
安全保护的原则:对拥有权限的用户,应该让其进行相应操作,否则,应禁止防止其他用户冒充对文件进行操作。
2.实现
(1)用户验证
(2)存取控制
二、用户验证
当用户登录时,检验其身份(用户是谁,用户拥有什么,用户知道什么)。例如:
(1)口令。
(2)物理鉴定:磁卡,指纹,签名分析,手指长度分析。
三、存取控制
存取控制的原则:审查用户的权限,审查本次操作的合法性。
1.文件的二级存取控制
第一级:对访问者的识别——对用户分类
a) 文件主(owner)
b)文件主的同组用户(group)
c)其它用户(other)
第二级:对操作权限的识别——对操作权限的分类
a) 读操作(r)
b) 写操作(w)
c) 执行操作(x)
d) 不能执行任何操作(-)
下图是二级存取控制的例子。
图 7.5.2-1
2.存取控制矩阵
下图是一个存取控制矩阵。通过读取存取控制矩阵来判定用户对文件的操作权限,进而实施控制。
本章的学习了文件、文件系统的概念以及文件基本操作;介绍了注意的文件逻辑结构和主要的文件物理结构,讨论了它们的特点及适用场景;讨论了记录组块方式及其特点,介绍了文件存取的基本原理;介绍了文件目录的作用,讨论了文件目录结构的分类及其特征;简要地讨论了文件共享与保护的基本方法与措施。