操作系统期末复习第五章 文件系统
作者:互联网
第五章 文件系统
概述
文件是操作系统对底层的储存介质最典型的抽象之一。有了文件之后,人们总是考虑数据保存在哪一个文件中,而不是某个存储介质的具体位置。
文件
文件的概念
文件是一组或多组相关信息的集合。数据只有通过文件才能保存到存储介质中。
文件的中保存的单元一般是数值文本或者二进制的机器代码。有些文件没有特定的格式,如ASCII文本文件。有些则包含很复杂的格式,例如可执行程序文件。
文件系统的概念和目的:
文件系统指文件、管理文件的软件及数据结构的总体。
文件系统的主要目的:实现文件的按名存取。
文件的属性:
- 名称
- 类型
- 大小
- 保护:保护机制和访问控制策略
- 拥有者
- 时间信息
文件的操作:
- 创建文件
- 打开
- 删除
- 读取
- 关闭
- 属性修改
文件的类型:
文件的分类:
- 1.按文件性质与用途分类:
- 系统文件:系统软件构成的文件,直运行用户通过系统调用或系统提供的命令执行,不允许对其进行读写和修改。
- 库文件:运行用户对其进程读取和执行,不允许对其进行修改。如C语言的子程序库。
- 用户文件:用户通过操作系统保存到文件,由文件的所有者或被授权的人才能使用。
-
2.按操作保护分类:
- 只读文件: ----r—
- 可读可写文件:----rw—
- 可执行文件 :只能执行,不允许读和写,----x----
各个操作系统的保护方法和级别有所不同,Windows三种:系统,隐藏,可写
Linux和unix由九个级别的保护。
-
3.按用户观点分类(Linux和Windows):
- 普通文件:最一般组织格式的文件,一般是字符流组成的无结构的文件
- 目录文件:由文件的目录信息构成的特殊文件,操作系统的目录也是文件,便于统一管理
- 特殊文件:Unix和Linux,所有输入输出外部设备被看成特殊文件方便统一管理
操作系统把特殊文件的操作链接指向相应的设备操作,真正的设备驱动程序不包含在特殊文件中,而是链接指向操作系统核心中存放在内存高端部分。
-
4.按存取的物理结构分:
- 顺序文件:文件中的记录,顺序地存储到连续的物理盘块中,顺序文件中记录的次序和他们存放在物理介质是存放的次序是一致的。
- 链接文件:文件中的记录可存储在并不相邻的各个物理块中,通过物理块中的链接指针组成一个链表管理,形成一个完整的文件。又称指针串联文件或直接存取文件。
- 索引文件:文件中的记录可存放在不相邻的各个物理块中,记录和物理块之间通过索引表项按关键字存取文件,通过物理块中的索引表管理,形成一个完整的文件。
-
5.按文件的逻辑存储结构分类:
- 有结构文件:由若干个记录构成的文件,称为记录式文件。
- 无结构文件:直接由字符序列所构成的文件,又称为流式文件。
-
6.按文件中的数据形式分类:
- 源文件;由源程序和数据构成的文件。又ASCII码或汉字编码构成。
- 目标文件:由源程序经过计算机编译程序编译,尚未经过链接程序链接的目标代码所形成的文件。
文件的访问
- 顺序访问:按照文件中存储的顺序来访问
- 随机访问:读/写指针可以随机指向任何文件的位置并读/写数据。
- 索引访问:由文件所包含的索引来加快文件的访问速度。
文件的逻辑结构:
1.顺序文件:
- 定长记录:有读写指针指向下一次读写的地址。每一个记录的长度固定。
- 变长记录:每个记录的长度存记于记录前的单元中。
顺序文件对记录进行批量处理即一次读写大量记录时,效率最高。寻找和增加删除一个记录很难,要按顺序逐个查找。
2.索引文件:
直接文件和哈希文件:
1.直接文件:可以直接根据给定的记录键值,直接获得指定记录的物理地址。组织直接文件的关键在于用什么方法进行从记录键值转化为物理地址。
2。哈希文件:
文件保护
访问控制:基于用户和组的访问控制:
访问控制表(Access Control List):给每个文件加一个访问控制列表信息,包含了哪些用户对这个文件有哪种类型的访问。这样系统打开这个文件之前,都有进行搜索文件访问控制列表来判断当前用户是允许执行相关操作。
文件目录
文件系统中主要的数据结构之一,通常通过文件目录实现文件的组织。
对目录管理的要求如下:
- 实现按名存取
- 提高对目录的检索速度
- 文件共享
- 允许文件重名(不在同一个子目录下)
文件控制块(FCB)
文件除了数据本身还有很多属性信息,为了方便和实现,一般程文件的所有属性信息为文件控制块(File Control Block)文件控制块是操作系统为了管理文件而设置的数据结构,存放为了管理文件所需要的相关信息。
文件控制块是文件存在的标志。
文件控制块的内容:
- 基本信息类
- 存取控制信息类
- 使用信息类
文件目录
把所有FCB组织在一起,就构成了文件目录,文件目录即为文件控制块的有序集合。
目录项:就是FCB。
目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫做目录文件。
索引节点
索引结点的引入:
文件目录放在外存上,当检索一个文件时需要启动磁盘,将不同的磁盘块中的目录项逐一调入内存。设目录文件占用N块盘。则查找目录项平均调入盘块数为(N+1)/2。
改进:在查找目录时,目录项中只有文件名是必要的。所以可以采用文件名和其他文件描述信息分开储存的办法。文件描述信息单独形成一个被称为索引结点的数据结构,简称i结点。目录项的内容变成文件名和指向该文件所对应的i结点的指针所构成。
解:
每块磁盘装的目录项:
- 分解前:512/48 = 10 (再装一个装不下了)
- 分解后:512/9 = 64
计算所有目录项所占的磁盘块数:
- 分解前:128/10 = 13
- 分解后:128/64 = 2
查找一个文件的平均访存次数:
- 分解前:(1+13)/2 = 7
- 分解后: (1+2)/2+1=2.5 (这里+1是因为找到文件名还要再访存一次找到i结点,即剩下的信息)
目录的分级结构:
1.单极目录结构:
为所有目录建立一个目录文件。
但是查找速度慢,不允许重名,不便于实现文件共享。
2.二级目录结构:
为了解决命名冲突,一级为主文件目录,给出用户名和用户子目录所在的地理位置;二级为用户文件目录,给出该用户所有文件的FCB。
优点:解决了文件的重名问题和文件共享问题,提高了搜索速度,查找时间降低。
缺点:不适合大量用和大量文件的大系统,增大开销。
3.多级目录结构
也成为树型目录,产生于UNIX,现在广泛应用,目录和文件放在一起,目录也被做成文件。
优点:层析结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制。
缺点:查找一个文件按路径逐层查找,要多次访问磁盘,影响速度。
路径名:
在树型目录结构中,从根目录到任何数据文件,都只有一条唯一的路径。用/连接起来。如上图中用户B访问N路径名为:/B/F/N。
当前目录:
为了提高文件检索速度,文件系统向用户提供了一个当前正在使用的目录。查找一个文件可以从当前目录开始,使用部分路径名。
当前目录一般放在内存中。
即相对地址。而根据根目录得出的地址叫绝对地址。
文件系统的实现:
文件系统的结构:
目录实现:
目录可以看成是一个表,基本的实现问题是如何组织这张表才能获得最好的效率和性能。
目前最强用的两种方式是线性表和哈希表(目录项组织成哈希结构,文件名作为哈希函数的输入值)。
文件的分配方法
1.连续分配:为内阁文件分配一组相邻的盘块。一组盘块的地址定义了盘块上的一段线性地址。一个文件说明里要有第一个记录的物理块号和文件的长度(盘块数)。
优点:是顺序访问容易,访问速度快。
缺点:会产生碎片问题,还必须知道文件长度。
2.链接分配:一个文件的信息存放在若干个不连续的物理块中,各块之间通过指针链接,前一个物理块指向下一个物理块。
优点:提高磁盘空间利用率,不存在外部碎片问题,有利于文件的插入和删除,有利于文件的动态扩充
缺点:存取速度慢,不适于随机存取,可靠性差,要更多的寻道次数和寻道时间,链接指针占用一定空间
分为显示链接和隐式链接
- 隐式链接:文件目录含有第一个记录的指针和最后一个记录的指针。每个盘块含有指向下一个盘块的指针。
但是只适合顺序访问,因为盘块含有下个一盘块的指针,所以必须启动磁盘,访问一次就要启动一次磁盘,速度很慢。解决方法是“簇”,但改进小,且会增大碎片。 - 显式链接:把链接各物理块的指针显示村啊放在内存的一张链接表中(FAT),整个磁盘只设置一张。表的序号是物理盘块号。每个表项放链表指针。文件的首个盘块号存放在相应文件的FCB中。
好处:FAT(File Allocation Table)在内存中,提高检索速度。
问题是可能FAT占用太大内存。
关于FAT表尺寸的计算
盘快数:500M/2K = 250K
250K需要18位来表示
每个盘块号要占用0.5字节,所以需要20位,即2.5字节来描述盘块号
所以FAT的尺寸:250K*2.5=625K
3.索引分配
因为链接的问题:
- 不能搞笑直接存取,对于较大文件必须首先在FAT中查找许多盘块号
- FAT占较大内存
解决:不将整个FAT调入内存,将每个文件对于的盘块号,存入文件的索引块,该索引块就是一个含有许多盘块号的数组。
问题:花费较多外存,小文件索引块利用率低。
索引分配分为单级,多级和混合。文件大就用多级。
点击☞成组链接法来管理空闲盘块
标签:文件,链接,文件目录,操作系统,记录,文件系统,盘块,目录,复习 来源: https://blog.csdn.net/weixin_44157794/article/details/118055363