第二十六讲 文件管理之文件的外存分配方式
1 引言
用户对不同的文件采用不同的存储方式,以便于对文件进行各种操作。因此,如何有效利用外存空间和如何提高对文件的访问速度?是这讲的主要内容
2 文件物理结构
物理块:一个文件存储介质,格式化后就分成许多大小相等的单位--存储块(物理盘块),在现代计算机系统中,一般来说,每个物理块是一个磁盘的扇区,512字节。并给每个存储块有个编号,称为物理块号。
逻辑块:一般把文件信息也划分成与物理块大小相等的逻辑块。
文件的物理结构:是指文件在存储设备上的存放方式。
因文件的物理结构和外存分配方式直接有关,因此主要的三种分配形式分别形成不同的文件物理结构:
连续分配形成连续文件结构形成连续文件
链接分配形成链接文件结构形成链接文件
索引分配分别对形成索引文件结构形成索引文件。
1 连续分配
连续分配方式:是把一个在逻辑上连续的文件信息顺序的存放在各邻接的物理块中。
优点:速度快,节省空间。
缺点:长度变化困难。不利于文件动态扩充。存在外部碎片。
说明:该方式可把逻辑文件中的记录,顺序的存储到邻接的各物理块中,这样所形成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。这种分配方式保证了逻辑文件中的记录顺序与存储器中文件占用盘块的顺序的一致性。
随着文件的建立与删除不断进行,将产生很多外碎片,利用紧凑方法也可消除碎片。
适用于:变化不大的顺序访问的文件
UNIX系统:仍保留了连续文件结构。
2 链接分配
2.1 概述
链接分配是一种离散分配方式,可将文件装到多个离散的盘块中,可通过在每个盘块上的链接指针,将同属于一个文件的多个离散盘块链接成一个链表。这样形成的物理文件就是链接文件。
链接方式分为:隐式链接、显式链接
磁盘空间的链接式分配:如图
2.2 隐式链接
说明:
l 一个串联文件结构是按顺序由串联的块组成的,即文件的信息按存于若干块中。
l 每个物理块的最末一个字(或第一个字)作为链接字,它指出后继块的物理地址。链首指针存放在该文件目录中。文件的结尾块的指针为“∧”。
l 这种文件结构不要求连续存放。
l 对于记录式文件一块中可包含一个逻辑记录或多个逻辑记录,也可以若干物理块包含一个逻辑记录。
隐式链接块如图:
链接文件结构图如下:
优点:
1、无外部碎片,没有磁盘空间浪费
2、无需事先知道文件大小。文件动态增长时,可动态分配空闲块。对文件的增、删、改十分方便。
缺点:
1、不能支持高效随机/直接访问,仅对顺序存取特有效顺序存取效率高,随机存取效率太低,如果访问文件的最后的内容,实际上是要访问整个文件。
2、需为指针分配空间。 解决方法将几个盘块组成一个簇
3、可靠性较低(指针丢失/损害)因此引入显示链接解决此问题
2.3 显式链接
DOS、WINDOWS系统就采用了显式结构。
概念:是指把用于链接文件各物理块的指针,显示地存放在内存的一张连接表中。该表在整个磁盘就一张。此表就是文件分配表
n 用于链接文件各物理块的链接指针,显式地存放在内存的一张链接表中。
n 该表在整个磁盘仅设置一张。
n 表序号为整个磁盘的物理块号(0---(n-1)),n是盘块总数。
n 表项存入链接指针,即下一个块号。
n 文件的首块号存入相应文件的FCB中。
n 查找在内存的FAT中,故提高了检索速度,同时又减少磁盘的访问次数。
n 被MS-DOS、OS/2、Windows采用。
见课本图6-9
3 索引分配
3.1 引言
事实上,在打开某个文件时,只需把该文件占用的盘块的编号调入内存即可,完全没有必要调入整个FAT。为此应将每个文件所对应的盘块号集中在一起。
索引分配方法:就是基于上述想法所形成的一种分配方法。它为每个文件分配一个索引块(表),再把分配给该文件的所有盘块号,都记录在该索引块中,因而该索引块就是一个含有许多盘块号的数组。在建立一个文件时,便须在为之建立的文件目录项中填上指向该索引块(表)的指针。
索引表:索引结构要求为每个文件建立一个索引表,表中每个表目包括:逻辑块号,物理块号与该逻辑块号对应的物理块号。
索引表位置:文件目录中,文件的开头等。
3.2 单级索引分配
只有一级索引的分配方式。
3.3 多极索引分配
当OS为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS便为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。以此类推,再通过链指针将各索引按序链接起来。显然当文件太大时索引块太多,此方法低效。此时应为索引块再建立一级索引,这样便形成了两级索引分配方式。如果文件非常大时,还可用三级四级索引方式。
如图
3.4 混合索引分配方式
混合索引分配方式:是指将多种索引分配方式结合而形成的一种分配方式。
UNIX(每个块4K字节)如下图
当文件<40K时,10个直接地址;
当文件<4M+40K时,一次间接(假定每个盘块号占4个字节);
当文件<4G+4M+40K时,二次间接;
当文件<4T+4G+4M+40K时,三次间接;
优点:
既适应于顺序访问,也适应于随机访问。
UNIX系统是使用索引结构成功的例子。
缺点:
需要用于索引表的空间开销和文件索引的时间开销。
3.5 总结
3.5.1 文件类型与文件存储器、存取方法的关系