第11章 文件管理
本章基本内容与要求 基本内容 基本概念与术语 文件的结构 文件目录 文件存储空间的管理 文件的共享 文件的存取控制
本章基本内容与要求 要求 掌握基本概念与术语 掌握文件的结构、文件目录、文件存储空间的管理 了解文件的共享、文件的存取控制
11.1 基本概念与术语 1.文件与文件系统的概念 文件 具有标识符(文件名)的一组相关信息的集合。 包括两部分:文件体,即文件本身的信息;文件属性,即文件存储和管理信息,如文件名、文件内部标识、文件存储地址、访问权限和访问时间等 文件系统 操作系统中负责存取和管理文件信息的机构。 由管理文件所需的数据结构(如文件控制块,存储分配表等)和相应的管理软件以及访问文件的一组操作组成。
11.1基本概念与术语 2.文件分类 从操作系统的角度讲,文件按组织形式可分为普通文件、目录文件、特殊文件 另外按照文件的逻辑结构可分为有结构文件(记录式文件)和无结构文件(流式文件);按照文件的存取控制属性分为可执行文件、只读文件和读写文件;按文件的物理结构分为顺序(连续)文件、链接文件和索引文件。
11.1基本概念与术语 3.文件存取控制方法与存储设备 用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。常用的存取方法有三种: 顺序存取法,随机存取法(直接存取法)和按键存取法。 常用的存储设备有磁盘、光盘、磁带等。其中磁盘又可分为硬盘和软盘。由于存储设备的特性决定了文件的存取设备和方法
11.2 文件的结构 文件的逻辑结构 文件的物理结构
1.文件的逻辑结构 文件的逻辑结构是用户可见结构。按文件的逻辑结构可分为有结构文件和无结构文件。 有结构文件是指由若干个相关的记录构成的文件,又称记录式文件。这种文件又分为定长记录文件和变长记录文件。变长记录文件包括顺序文件、索引文件和索引顺序文件。 无结构文件又称流式文件,组成流式文件的基本信息单位是字节或字,其长度是文件中所含字节的数目,如大量的源程序,库函数等采用的就是流式结构。文件长度以字节为单位。对流式文件的访问,是采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。 UNIX、Windows中,所有的文件都被看作是流式文件。
2.文件的物理结构 文件的物理结构,又称为文件的存储结构,是指文件在外存上的存储组织形式。事实上,由于文件的物理结构决定了文件信息在存储设备上的存储位置,因此,文件信息的逻辑块号(逻辑地址) 到物理块号(物理地址) 的变换也是由文件的物理结构决定的。 常用的文件物理结构有连续分配、链接分配与索引分配。
2.1连续分配 连续分配是一种最简单的物理文件结构。它把一个在逻辑上连续的文件信息依次存放到物理块中,为每个文件分配一组相邻的盘块。 连续分配的优点是算法简单,支持顺序存取和随机存取,顺序存取速度快,另外所需的磁盘寻道次数和寻道时间最少。 连续分配的缺点是文件不能动态增长,文件存取要求有连续的存储空间,必须事先知道文件的长度,要预留空间,预留过大则造成空间浪费;不利于文件插入和删除;会产生外部碎片问题,解决要采用存储压缩技术。
2.1连续分配
2.2 链接分配 链接分配是将文件存储在离散的盘块中,离散的盘块之间通过指针链接。将同属于一个文件的多个离散的盘块链接成一个链表,由此所形成的物理文件称为链接文件。链接文件盘块动态分配,无外碎片。
2.2 链接分配 显式链接文件目录和FAT表
2.3索引分配 一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构——索引表,并将这些块的块号存放在一个索引表中。索引分配通过为每个文件分配一个索引块,存放索引表,记录文件的盘块号,文件目录项中保存索引块的盘块号。
2.3索引分配 索引分配保持了链接结构的优点,又克服了其缺点;即能顺序存取又能随机存取;同时满足了文件动态增长、插入删除的要求。 索引分配的缺点是需较多的寻道次数和寻道时间,此外索引块本身带来了系统开销。
11.3 文件目录 文件控制块(FCB) 文件的目录结构
1.文件控制块(FCB) 一个文件包括两部分:文件说明和文件体,文件体指文件本身的信息,文件说明有时也叫文件控制块(FCB)。文件控制块的有序集合即为文件目录,每一个文件控制块就是一个文件目录项。文件目录是一种文件,称为目录文件。文件系统利用目录文件完成按名存取和对文件信息的共享与保护。 FCB中包括基本信息类、存取控制信息类和使用信息类。其中基本信息类中包含文件名、文件内部标识、文件物理位置、文件逻辑结构和文件的物理结构等信息。
2.文件的目录结构 文件的目录结构关系到文件系统的存取速度、文件的共享性、文件的安全性。文件目录可分为单级目录、二级目录和多级目录。 (1) 单级目录 单级目录是一种最简单、最原始的目录结构。整个目录组织是一个线性结构,系统中的所有文件都建立在一张目录表中。每个文件的信息占用一个目录项。 优点:简单,易于实现,实现了“按名存取”。 缺点:在文件较多时,查找速度慢、不允许重名和不便于实现文件共享(即别名问题,一个文件有多个不同的文件名)。
2.文件的目录结构 (2) 二级目录 各个文件的说明信息被组织成目录文件,且以用户为单位把各自的文件说明划分为不同的组。然后,把这些不同的组名和有关存取控制信息存放在主目录(MFD)目录项中。 与主目录 MFD相对应,用户文件的文件说明所组成的目录文件被称为用户文件目录(UFD)。
2.文件的目录结构 (3) 多级目录(树型目录) 多级目录结构由根目录和各级目录组成,为管理上的方便,除根目录外,其它各级目录均以文件的形式组成目录文件。 根目录中的每个目录项可以对应一个目录文件,也可以对应一个数据文件,同样目录文件中的每个目录项可以对应一个目录文件,也可以对应一个数据文件。如此类推,就形成多级目录结构。
(3) 多级目录(树型目录)
(3) 多级目录(树型目录) 路径名:从树的根(即主目录)开始, 把全部目录文件名与数据文件名,依次地用“/”连接起来, 即构成该数据文件的路径名(path name)。 相对路径(relative path name):把从当前目录开始直到数据文件为止所构成的路径名 绝对路径(absolute path name):从树根开始的路径名。 优点:层次清晰,便于管理和保护;便于文件共享;有利于文件分类;解决了重命名问题;引入当前路径或索引接点,提高了检索速度;并能够进行存取权限的限制。
11.4 文件存储空间管理 空闲表法 空闲链表法 成组链接法
1.空闲表法 为所有空闲区(含多个空闲盘块)建立一张空闲表,每个空闲区对应一个空闲表项,包括表项序号、空闲区第一个盘块号、空闲区长度(块数) 起始空闲盘块号 盘块数 1 2 4 9 3 15 5 ……
2.空闲链表法 就是把空闲盘块或空闲盘区用链表方式组织在一起,该方法可分为空闲盘块链表法和空闲盘区链法。 空闲盘块链法 以盘块为单位拉成一条链。当用户创建文件请求申请空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户;当用户删除文件释放空间时,系统把回收的盘块插入链尾。 空闲盘区链法 以盘区(每个盘区包含若干个盘块)为单位拉成一条链。分配盘区的方法与动态内存分配类似,采用FF或者BF等策略;回收的时候也要考虑分区的合并。
3.成组链接法 可看作空闲块链接法的扩展,UNIX系统采用该方法。 将文件区中的所有盘块等分成若干组(假定每组含m块),把每一组含有的盘块总数和该组所有的盘块号记入前一组的第一个盘块,这样所有空闲块就通过每组的第一个盘块链接起来;最末一组只有m-1个盘块,因此倒数第二组所记录的下一组盘块数为m-1,同时用于记录第m个块的位置的号数设置NIL,表示空闲盘块链的结束。 设置一个堆栈(一般在内存中),即空闲盘块号栈S(临界资源),用于存放当前可用的一组(第一组)空闲盘块的盘块号以及栈中尚有的空闲盘块号数N;将第一组的盘块总数和所有盘块号记入空闲盘块号栈,作为当前可供分配的空闲盘块号
3.成组链接法
11.5 文件的共享 常用的共享方式有基于索引节点的共享方式和利用符号链接实现的共享方式。 基于索引节点的共享方式是将索引节点与文件目录分开,通过不同的目录指向同一索引节点实现共享。文件的删除需要看文件的链接数。可以通过多个文件名,链接到同一个索引接点上,故可以建立同一个文件的多个彼此平等的别名。当文件主删除文件时,只能等到链接计数count=0时,才能真正删除该文件。 基于符号链接的共享方式是在利用符号链方式实现文件共享时,只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户,则只有该文件的路径名,并不拥有指向其索引结点的指针。
11.6 文件的存取控制 文件的存取控制有多种实现方式,下面介绍3种,分别为按用户分类的存取控制权限、存取控制矩阵和口令方式。 Unix使用按用户分类的存取控制权限,即在文件存取控制上把用户分为创建者(owner)、同组用户(group)和一般用户(public)三种。权限有可读(R)、可写(W)和可执行(X)三种。使用Unix命令chmod可设置某文件的权限
11.6 文件的存取控制 存取控制矩阵方式以一个二维矩阵来进行存取控制。二维矩阵的一维是所有的用户,另一维是所有的文件。对应的矩阵元素则是用户对文件的存取控制权,包括读R,写W和执行X。 Nju Hhu Zhangft …… A.C RWX X B.C RW R D.C W E.C
11.6 文件的存取控制 口令方式有两种: 当用户进入系统,为建立终端进程时获得系统使用权的口令。 每个用户在创建文件时,为每一个创建的文件设置一个口令,且将其置于文件说明中。 显然,口令只有设置者自己知道,若允许其他用户使用自己的文件,口令设置者可将口令赋予其他用户。这样,既可以做到文件共享,又可做到保密。