一、文件系统的引入
文件系统的三个基本要求:
- 能够存储大量的信息;
- 能够长期保存信息;
- 可以共享信息(并发存取);
文件是通过操作系统来管理的,包括文件的结构、命名、存取、使用、保护和实现方法等——构成了文件系统
二、文件结构
1、域(field)/字段
域是基本数据单元,一个域包含一个值,可以通过其长度和数据类型来描述。域的长度可以是固定的,也可以是可变的。通常情况下域包含了:要保存的实际值、域名,在某些情况下还包括域的长度。(员工的名字、日期可以作为一个域的值)
2、记录(record)
记录是一组相关的域的集合,它可以视为应用程序的一个单元。(一个员工的记录可以包括他的名字、工号、工作类型等域)
3、文件(file)
文件是一组相似记录的集合,它被用户和应用程序视为一个实体,并可以通过名字访问。文件有一个唯一的文件名,可以被创建或删除。访问控制通常在文件级实施,也就是说,在一个共享系统中,用户和程序被允许或被拒绝访问整个文件。
4、数据库(database)
数据库是一组相关数据的合集(由若干类型的文件组成),它的本质特征是数据元素之间存在着明确的关系,且可供不同的应用程序使用。
文件是一个抽象机制,它提供了一种把信息保存在存储介质上,且便于以后访问/存取的方法。
5、文件的组成
文件,是带标识(称为文件名)的,在逻辑上有完整意义的一组信息项序列。
- 信息项:构成文件内容的基本单位;
- 信息项长度:单个或多个字节;
- 文件内容的意义:由文件的创建者和使用者解释;
三、文件系统
文件系统,是操作系统中管理文件的模块,提供文件存储和访问功能。
1、目的
- 方便的文件访问和控制:以符号名作为文件标识,便于用户使用;
- 并发文件访问和控制:在多道程序系统中支持对文件的并发访问和控制;
- 统一的用户接口:在不同设备上提供同样的接口,方便用户操作和编程;
- 多种文件访问权限:在多用户系统中的不同用户对同一文件会有不同的访问权限;
- 差错恢复:能够验证文件的正确性并有一定的差错恢复能力;
2、文件系统架构
一种典型的架构如图:
- 最底层的设备驱动程序直接与外围设备通信,设备驱动程序负责启动该设备上的I/O操作,处理I/O请求的完成,通常是操作系统的一部分。(文件操作典型的控制设备是磁盘和磁带)
- 基本文件系统又称为物理I/O层,是与计算机系统外部环境的基本接口。该层处理在磁盘间或磁带系统间交换的数据块,关注的是这些块在辅助存储和内存缓冲区中的位置。基本文件系统通常是操作系统的一部分。
- 基本I/O管理程序负责所有文件I/O的初始和终止。需要一定的控制结构来维护设备的输入/输出、调度和文件状态。I/O缓冲区的指定和辅助存储的分配也是在这一层实现的。
- 逻辑I/O使用户和应用程序能够访问到记录,因此其处理的是文件记录;
- 访问方法层为应用程序和文件系统及保存数据的设备之间提供了一个标准接口。
3、文件管理功能
文件系统要向上层用户提供的服务元素有:
- 文件命名:作为文件标识;
- 访问控制:并发访问和用户权限;
- 文件结构管理:划分记录,顺序,索引;
- 目录管理:用于文件访问和控制的信息,不包括文件内容;
- 文件操作:文件的创建、打开、读写和关闭;
- 文件存取:用于完成文件的修改、追加、搜索等操作;
- 限额:限制每个用户能够建立的文件数目、占用外存空间大小;
- 审计:记录对指定文件的使用信息,保存在日志中(如访问时间和访问的用户等)
4、文件的分类
- 按性质和用途:系统文件、库文件和用户文件;
- 按信息保存期限:临时文件、永久文件、档案文件;
- 按文件保护方式:只读文件、读写文件、可执行文件;
- 按逻辑结构:流式文件(无结构)、记录式文件(结构化);
- 按物理结构:顺序文件(连续)、链接文件、索引文件;
5、文件结构)
- 字节序列:构成文件的基本单位是字节,文件是一个无结构的字节序列,其逻辑意义由用户程序解释;
- 堆:数据按它们的到达顺序收集(如日志、电子邮件的邮箱文件),通过穷举搜索访问记录;
- 顺序文件:通常用于批处理应用,是最常用的文件组织形式。每条记录都使用一种固定的格式,所有记录具有相同的长度并且由相同数目、长度固定的域按特定的顺序(按关键域)组成。
- 索引顺序文件:在顺序文件的基础上增加索引以提高随机查找速度,索引文件中每个记录由关键字段和指向主文件的指针组成(采用一个溢出区来处理新记录)
- 索引文件:为每个可能搜索到的字段设置一个索引,只能通过索引来访问记录,记录大小不必相同不必排序;
- 散列文件:使用关键字的散列查找记录;
6、文件目录
- 文件由文件体(文件本身的信息、数据)和文件说明组成(元数据);
- 文件说明,也称为文件控制块(FCB),是操作系统为管理文件而设置的数据结构,存放了为管理文件所需要的所有相关信息(如FAT文件系统中一个目录项/文件条目为32B)
- 文件控制块是文件存在的标志(常为链式结构);
- 文件目录就是文件控制块的有序集合,其中一个FCB称为一个目录项;
- 通常把文件目录以文件的形式保存在外存,这个文件就叫目录文件,由操作系统管理;
- 目录的主要功能是用于从文件名到文件内容的映射;
- 文件访问的两大步骤为:目录检索(根据用户给出的文件名寻找目录项)、文件寻址(根据目录项中的文件物理地址等信息计算出文件的任意记录或字节在存取介质上的地址)
目录的结构:(设计目录结构的目标主要是提高检索效率)
- 一级目录:整个目录组织是一个线性结构,系统中的所有文件都建立在一张目录表中。(标准的FAT最多有112个目录项,存放在7个扇区上)一级目录有命名冲突。(如多个文件有相同的文件名——不同用户对不同文件采用了相同的命名;或者一个文件有多个不同的文件名——不同用户对同一文件的命名)
- 二级目录:在根目录(第一级目录,主文件目录MFD,包括了用户名和子目录指针)下,每个用户对应一个目录(第二级,用户文件目录UFD),在用户目录下是该用户的文件,不再有下级目录。部分克服了命名冲突问题但不利于用户对文件的分类管理;
- 多级目录:采用层次结构,每个用户可在其用户目录下自主创建若干层次的子目录,也称为树型目录。解决了命名冲突问题。为了提高目录检索速度,可以把目录项中的文件说明信息分为两部分:符号目录项(文件名、文件内部标识符,Unix下为16B)和基本目录项(其余文件说明信息),减少了检索时要匹配的字节数。
- 多级目录把符号目录项构成的符号文件目录组织成树状结构,按文件名排序;把基本目录项构成的基本文件目录组织成线性结构,按文件内部标识排序。
分析多级目录的性能:
其中分解前查找一个文件的平均访盘次数为[(1+13)*13/2]/13=(1+13)/2;
分解后的计算同理,但其中+1表示根据搜索到的符号目录项去检索磁盘中的基本目录文件。