1概述
文件(File)是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。一个文件包括文件体和文件说明。文件体是文件真实的内容。文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。
文件的类型:
(1) 按文件性质和用途可将文件分为系统文件、库文件和用户文件。
(2) 按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。
(3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
(4)UNIX 系统将文件分为普通文件、目录文件和设备文件(特殊文件)。
文件的逻辑结构可分为两大类:一是有结构的记录式文件,它是由一个以上的记录构成的文件,故又称为记录式文件;二是无结构的流式文件,它是由一串顺序字符流构成的文件。
文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法,
包括:
(1)连续结构。连续结构也称顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上。只要知道文件的起始物理块号和文件的长度,就可以很方便地进行文件的存取。
(2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。因此,只要知道文件的第一个物理块号就可以按链指针查找整个文件。
(3)索引结构。在采用索引结构时,将逻辑上连续的文件信息(如记录)存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
(4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块。
2索引文件结构
如下图所示,系统中有 13 个索引节点,0-9 为直接索引,即每个索引节点存放的是内容,假设每
个物理盘大小为4KB,共可存 4KB*10=10KB 数据10 号索引节点为一级间接索引节点,大小为 4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有 1024 个地址,对应1024 个物理盘,可存10244KB=4098KB数据。
二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024 * 1024 * 4KB 数据。
- 文件目录
文件控制块中包含以下三类信息:基本信息类、存取控制信息类和使用信息类。
(1) 基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等。
(2) 存取控制信息类。文件的存取权限,像 UNIX 用户分成文件主、同组用户和一般用户三类,这三类用户的读/写执行 RWX 权限。
(3) 使用信息类。文件建立日期、最后一次修改日期、最后一次访问的日期、当前使用的信息(如打开文件的进程数、在文件上的等待队列)等。
文件控制块的有序集合称为文件目录
相对路径:是从当前路径开始的路径。
绝对路径:是从根目录开始的路径。
全文件名=绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。
树形结构主要是区分相对路径和绝对路径,如下图所示:
- 文件存储空间的管理
文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。顺序存取方法是指对文件中的信息按顺序依次进行读/写:随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。
文件存储空间的管理:
(1)空闲区表。将外存空间上的一个连续的未分配区域称为“空闲区”。操作系统为磁盘外存上的所有空闲区建立一张空闲表,每个表项对应一个空闲区,适用于连续文件结构。
序号 |
第一个空闲块号 |
空闲块数 |
状态 |
1 |
18 |
5 |
可用 |
2 |
29 |
8 |
可用 |
3 |
105 |
19 |
可用 |
4 |
- |
- |
未用 |
(2)位示图。这种方法是在外存上建立一张位示图 (Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值 0 和1 分别表示空闲和占用。
(3)空闲块链。每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。每次申请空闲物理块只需根据链表的头指针取出第一个空闲物理块,根据第一个空闲物理块的指针可找到第二个空闲物理块,依此类推。
(4)成组链接法。例如,在实现时系统将空闲块分成若干组,每 100 个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。假如某个组的第一个空闲块号等于 0,意味着该组是最后一组,无下一组空闲块。