文件系统由两个部分组成:文件集合,每个文件存储相关数据;目录结果,用于组织系统内的所有文件并提供文件信息。
10.1 文件概念
操作系统对存储设备的物理属性加以抽象,从而定义逻辑存储单位,即文件(file)。文件由操作系统映射到物理设备上。
文件属性
因操作系统而异。通常包括:名称、标识符、类型、位置、尺寸、保护、时间、用户标识。
文件操作
创建、写入、读取、重定位、删除、截断(删除文件内容,但保留属性)
文件类型
...
10.2 访问方法
顺序访问
直接访问
10.3 目录与磁盘的结构
文件系统的每个设备都有内容的卷表或设备的目录,以列出设备上文件的位置。另外,创建目录允许组织文件。
单级目录:容易导致命名问题,因为每个文件必须具有唯一的文件名称。
两级目录:通过为每个用户创建单独的目录以包含文件。
树形目录:允许用户创建子目录,来组织文件。
无环图目录:允许共享子目录和文件,但是是的搜索和删除变得更为复杂。
...
10.4 文件系统结构
文件系统提供高效和便捷的磁盘访问,以便允许轻松存储、定位、提取数据。文件系统永久驻留在外存上。
文件系统通常按分层或模块化结构来实现。较低层处理存储设备的物理属性,较高层处理文件的符号名称和逻辑属性,中间层将逻辑文件概念映射到物理设备属性。
...
10.5 分配方法
如何为这些文件分配空间,以便高效快速的使用和访问文件。磁盘空间分配的三个主要常用方法:连续、链接、索引。
10.5.1 连续分配
要求每个文件在磁盘上占有一组连续的块。磁盘地址为磁盘定义了一个线性排序。有了这个排序,假设只有一个作业正在访问磁盘,在块 b 之后访问块 b+1 通常不用移动磁头。当需要磁头移动时(从一个柱面的最后扇区移动到下一个柱面的第一个扇区),只需要移动一个磁道。
因此,用于访问连续分配文件的所需寻道数量最小,在确实需要寻道时所需的寻道时间也最小。
但也有问题,一个难题是为新文件寻找空间。会有外部碎片产生。
10.5.2 链接分配
解决了连续分配的所有问题。采用链接分配,每个文件是磁盘块的链表,磁盘块可以散布在磁盘的任何地方。目录包括文件第一块和最后一块的指针。每一块都有下一块的指针。
要创建一个新文件,只需在目录中增加一个新的条目。采用链接分配,每个目录条目都有文件首个磁盘块的一个指针,初始值为null,大小字段为0。写文件导致空闲空间管理系统找到一个空闲块,这个块会被写入并链接到文件的尾部。读文件只需按照链接指针来读块。
没有外部碎片。缺点是,主要问题它只能有效用于顺序访问文件。磁盘寻道时间增大。不能支持文件的直接访问。另一个是可靠性,当指针丢失或损坏时,会产生错误。
它的一个重要变种是文件分配表(File-Allocation Table,FAT)。在该表中,每个磁盘块都有一个条目,并且可按块号来索引。FAT的使用和链表系统。可能导致大量的寻道时间,优点是改善了随机访问时间。
10.5.3 索引分配
索引分配通过将所有指针放在一起,即索引块,解决了链接分配必须按序读取的问题。
每个文件都有自己的所有块,整数一个磁盘块地址的数组。索引块的第 i 个条目指向文件的第 i 个块。目录包含索引块的地址。当查找和读取第 i 个块时,采用第 i 个索引块的第 i 个索引块条目的指针。类似分页方案。
索引分配支持直接访问,并没有外部碎片问题。然而却浪费空间,索引块指针的开销通常大于链接分配的指针开销。
这里有一个问题:索引块应该多大。
- 链接方案
- 多级索引
- 组合方案