【操作系统】第六章文件系统
第六章文件系统
信息是计算机系统中的重要资源。操作系统中的一个重要组成部分,文件系统,就负责信息的组织、存储和访问。
文件系统的功能就是提供高效、快速和方便的信息存储和访问功能。本章的主要内容就是信息的组织。
1.文件管理的目的 2.文件系统的基本概念 3.文件系统的结构和功能元
6.1 文件和文件系统
6.1.1 文件、记录和数据项
1.文件是具有文件名的一组相关元素的有序集合。文件名是文件的标识符号。
2.文件包含两部分:
文件体:文件本身的信息。文件体是相关字符流的集合(无结构文件)或相关记录的集合(有结构文件)。
文件说明:文件存储和管理信息 ;如:文件名、文件内部标识、文件存储地址、访问权限、访问时间等。
3.
文件:由创建者所定义的、具有文件名的一组相关元素的有序集合,是文件系统中一个最大的数据单位,它描述一个对象集。
记录:是一组相关数据项的集合,描述一个对象在某方面的属性
数据项:在文件系统中,数据项是最低级的数据组织形式,分为:
基本数据项:用于描述一个对象的某种属性的字符集,又称数据元素或字段;
组合数据项:由若干个基本数据项组成。
4.文件类型:
按用途分:系统文件、用户文件、库文件
按数据形式分:源文件、目标文件、可执行文件
按存取控制属性分:只执行文件、只读文件、读写文件
按组织形式和处理方式分
普通文件:ASCII码或二进制码组成的字符文件
目录文件:由文件目录组成-目录是由文件说明索引组成的用于文件检索的特殊文件。
特殊文件:系统中各类I/O设备
按存放时限分类:根据系统保留文件的时间:临时文件、永久文件和档案文件。
按设备类型分类:根据文件存储介质的设备类型:磁盘文件、磁带文件、卡片文件和打印文件等。
按文件的组织结构分类:
文件的逻辑结构:从用户观点出发观察到的文件组织-流式文件和记录式文件。
文件的物理结构:文件的存储结构,即文件在外存的存储组织形式-顺序文件、链接文件和索引文件等。 涉及存储介质、外存分配方式
5.文件系统模型
6.1.3 文件系统的结构和功能元素 ——文件系统向上级提供的服务功能元素
文件访问:文件的创建、打开和关闭,文件的读写;
目录管理:用于文件访问和控制的信息,不包括文件内容
文件结构管理:划分记录,顺序,索引
访问控制:并发访问和用户权限
限额(quota):限制每个用户能够建立的文件数目、占用外存空间大小等
审计(auditing):记录对指定文件的使用信息(如访问时间和用户等),保存在日志中
文件的分块存储:与外存的存储块相配合
I/O缓冲和调度:性能优化
文件定位:在外存上查找文件的各个存储块
外存存储空间管理:如分配和释放。主要针对可改写的外存如磁盘。
外存设备访问和控制:包括由设备驱动程序支持的各种基本文件系统如硬盘,软盘,CDROM等
6.1.4 文件组织结构
6.2 文件的组织
6.2.1 文件逻辑结构类型
文件的逻辑结构,是指从用户观点出发讨论文件内部的逻辑结构或用户访问模式;它可以独立于在外存上的物理存储。是用户可以直接处理的数据及其结构。
文件逻辑结构的设计要求:
访问性能:便于检索;便于修改
存储性能:向物理存储转换方便,节省空间,可靠性,维护简单
文件的不同组织层次:域、记录、文件
无结构文件
文件体为字节流,不划分记录,顺序访问,每次读写访问可以指定任意数据长度
当前操作系统中常用的文件组织
累积文件(pile堆文件)
文件体为无结构记录序列,通过分隔符来划分记录,各记录大小和组成可变。新记录总是添加到文件末尾。如日志log,或电子邮件的邮箱文件(mailbox)。检索必须从头开始
是一种简单的文件组织方式,当数据难以组织时使用
顺序文件
文件体为大小相同、格式固定的排序记录序列
由一个主文件和一个临时文件组成
记录按某个关键字域排序,存放在主文件中
新记录暂时保存在临时文件中,定期归并入主文件,并按正确顺序产生一个新文件
访问时需要顺序搜索
索引文件
将每种可能成为搜索条件的域都有一个索引,通过索引来访问记录
记录大小不必相同,不必排序,存放在主文件中
另外建立索引,每个索引项指向一个记录,索引项按照记录中的某个关键字域排序
对同一主文件,针对不同的关键字域相应建立多个索引
索引文件的记录项通常较小,查找速度快,便于随机访问
索引文件对主文件中的记录按需要的数据项(一个或几个)建索引表。这时记录可为不定长的,它为每个记录设置一个表项。索引文件本身是顺序文件组织。
索引顺序文件
在顺序文件(主文件)的基础上,另外建立索引和溢出文件。这样做的目的是加快顺序文件的检索速度。
在索引顺序文件中,可将关键字域中的取值划分若干个区间,每个区间对应一个索引项,后者指向该区间的开头记录。新记录暂时保存在溢出文件中,定期归并入主文件
索引文件与索引顺序文件的区别在于主文件不排序
索引顺序文件特点
通过划分层次,在记录数量较大时,比顺序文件大大缩短检索时间。
顺序文件是N/2(这时可使用折半查找),
索引顺序文件(一级索引)是i/2 + N/(2*i),其中i为索引长度。索引还可以是多级的。如:有1000,000条记录的顺序文件的平均检索长度为500,000,而在添加一个有1000条索引项的索引文件后,平均检索长度为1000。
索引顺序文件限制:基于文件的一个关键字域(属性)进行处理。当需要基于其他域而不是关键字域进行搜索一个记录时,将会受到限制。
哈希文件或直接文件、散列文件
直接访问磁盘中任何一个地址已知的块
记录大小相同
由主文件和溢出文件组成
记录位置由哈希函数确定
检索时给出记录编号,通过哈希函数计算出该记录在文件中的相对位置
访问速度快, 通常一次只访问一条记录
6.2.2 文件的存取
用户在一个文件上的操作:“读”和“写”
读:存储介质 → 内存;写:内存 → 存储介质
顺序存取法:按照文件信息的逻辑顺序依次存取。按记录的排列顺序来存取。如:为了存取记录Ri , 必须先通过记录R1 R2… Ri-1
随机存取法(直接存取):可以按任意的次序对文件进行读写操作。如可根据记录的编号来直接存取文件中的任意一个记录
索引存取:对文件中的记录按某个数据项的值进行排列,从而可以根据键值来快速存取。
文件的使用:文件的性质决定了文件的使用,也决定了存取方式的选择。例如,源程序文件用顺序存取法、数据库文件用随机存取法
**存储介质的特性 **
磁带:适合顺序存取。总是从磁头的当前位置开始读写磁带上的信息。
磁盘:既可采用顺序存取方式,又可采用随机存取方式。
6.2.3文件的物理结构
是从系统的角度来看文件,从文件在物理介质
上的存放方式来研究文件。
连续结构(顺序)
串联结构
索引结构
UNIX文件系统的多级索引结构
连续结构(顺序)
串联结构
索引结构
优点:保持了链接结构的优点,又解决了其缺点
即能顺序存取,又能随机存取
满足了文件动态增长、插入删除的要求(只要有空闲块)
能充分利用外存空间
缺点:较多的寻道次数和寻区时间。索引表本身带来了系统开销(占外存空间)。如:内外存空间,存取时间
索引表组织
多级索引:将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中。
6.3 外存分配方式
6.3.1 连续分配
6.3.2 链接分配
优点
提高了磁盘空间利用率,不存在外部碎片问题
有利于文件插入和删除,但效率不高
有利于文件动态扩充
缺点
存取速度慢,不适于随机存取
可靠性问题,如指针出错
更多的寻道次数和寻区时间
链接指针占用一定的空间
6.3.3 索引分配
多重索引分配的优缺点
优点:保持了链接结构的优点,又解决了其缺点
- 即能顺序存取,又能随机存取
- 满足了文件动态增长、插入删除的要求(只要有空闲块)
- 能充分利用外存空间
缺点:较多的寻道次数和寻区时间。索引表本身带来了系统开销(占外存空间)。如:内外存空间,存取时间
混合索引分配
6.4目录管理
- 目录(文件)是由文件说明组成的用于文件检索的特殊文件。
- 文件目录的管理解决:存储空间的有效利用、快速检索、文件命名冲突、文件共享等问题。
目录内容、目录结构类型、文件别名的实现
6.4.1 文件控制块和索引节点
文件控制块
- 文件控制块:为文件设置的用于描述和控制文件的数据结构,文件管理系统借助其中的信息,对文件施以各种操作。文件与文件控制块一一对应。
- 文件目录:文件控制块的有序集合。一个文件控制块即为一个文件目录项。
- 一个文件目录也可视为一个文件
- 包含三类信息:基本信息类、存取控制信息类、使用信息类
索引节点
- 引入:在检索目录文件时,只需文件名——文件名与文件描述信息分开,使文件描述信息单独形成一个索引节点——i节点(BFD)。在文件目录中的每个目录项仅由文件名和i节点指针构成
- 磁盘索引节点:存放在磁盘上,每个文件有唯一的磁盘索引节点。各文件索引节点集中存放在索引节点区,按节点号排列。包括:文件主标识符、文件类型、文件存取权限、文件物理地址、文件长度、文件链接计数、文件存取时间
- 内存索引节点:存放在内存中,文件打开时,将磁盘索引节点拷贝到内存的索引节点中。增加:索引节点编号、状态、访问计数、文件所属文件系统的逻辑设备号、链接指针
6.4.2 目录结构
单级目录结构
- 整个文件系统中只建立一张目录表,每个文件占一个目录项
- 建立一个新文件时,先检索所有目录项,保证新文件名在目录中的唯一性,再从目录表中找出一个空白目录项,填入新文件信息
- 查找速度慢,不允许重名,不便于实现文件共享
两级目录结构
多级目录结构(树形目录结构)
- 主目录——根节点,数据文件——叶节点,其他的目录均作为树的结点
- 路径名:将全部目录文件名与数据文件名依次用“/”连接起来
- 当前目录(工作目录-各文件的访问可根据当前目录设置路径)
- 绝对路径名(从根目录开始的完整路径名-文件全名)、相对路径名(相对于当前目录设置路径--把从当前目录开始到数据文件为止所构成的路径名称为相对路径名)
层次结构清晰,查询速度快,有益于文件的管理和保护,查找文件时需按路径名逐级访问中间节点,增加了磁盘访问次数