文件扩充空间
计算机文件是存储在某种长期储存设备或临时存储设备中的一段数据流,并且归属于计算机文件系统管理之下。文件扩充空间是指一个文件动态扩充已经超出了系统分配给它的空间,需要系统再给文件分配存储空间。文件扩充空间主要原因是文件大小大于系统分配空间大小。
基本信息
- 中文名
文件扩充空间
- 外文名
file extension space
- 学科
计算机
- 定义
再分配或重新分配存储空间
- 原因
文件太大
- 领域
文件管理
简介
文件是由大量性质相同的记录组成的集合,其中每一个记录由一个或多个数据项组成,数据项是数据的基本单位(数据项又称为域),在同一个记录中各个数据项可取不同的数据类型。文件扩充空间是指一个文件动态扩充已经超出了系统分配给它的空间,需要系统再给文件分配存储空间。文件扩充空间的原因有很多,例如数据动态增长;文件合并等。文件扩充空间一般与外存分配方式和文件存储空间有关。
外存分配方式
由于磁盘具有可直接访问的特性,故当利用磁盘来存放文件时,具有很大的灵活性。在为文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。目前,常用的外存分配方法有连续分配、链接分配和索引分配三种。通常,在一个系统中,仅采用其中的一种方法来为文件分配外存空间。
连续分配
连续分配方法要求每个文件在磁盘上占有一组连续的块。磁盘地址定义了磁盘上的一个线性排序。这种排序使作业访问磁盘时需要的寻道数和寻道时间最小。
文件的连续分配可以用第一块的磁盘地址和连续块的数量来定义。如果文件有n块长并从位置b开始,那么该文件将占有b,b+1,b+2……b+n-1.一个文件的目录条目包括开始块的地址和该文件所分配区域的长度。
连续分配支持顺序访问和直接访问。其优点是实现简单、存取速度快。缺点在于,文件长度不宜动态增加,因为一个文件末尾后的盘块可能已经分配给其他文件,一旦需要增加,就需要大量移动盘块。此外,反复增删文件后会产生外部碎片(与内存管理分配方式中的碎片相似),并且很难确定一个文件需要的空间大小,因而只适用于长度固定的文件。
链接分配
链接分配解决了连续分配的碎片和文件大小问题。采用链接分配,每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何地方,除最后一个盘块外,每个盘块都有指向下一个盘块的指针,这些指针对用户是透明的。目录包括文件第一块的指针和最后一块的指针。
创建新文件时,目录中增加一个新条目。链接分配中每个目录项都有一个指向文件首块的指针。该指针初始化为null以表示空文件,大小字段为0.写文件会通过空闲空间管理系统找到空闲块,将该块链接到文件的尾部,以便于写入。读文件则通过块到块的指针读块。
链接分配方式没有外部碎片,空闲空间列表上的任何块都可以用来满足请求。创建文件时并不需要说明文件大小。只要有空闲块文件就可以增大,也无需合并磁盘空间。
链接分配的缺点在于无法直接访问盘块,只能通过指针顺序访问文件,以及盘块指针消耗了一定的存储空间。链接分配方式的稳定性也是一个问题。系统在运行过程中由于软件或者硬件错误导致链表中的指针丢失或损坏,会导致文件数据的丢失。
索引分配
连接分配解决了连续分配的外部碎片和文件大小管理的问题。但是,链接分配不能有效支持直接访问(FAT除外)。索引分配解决了这个问题,他把每个文件的所有的盘块号都集中在一起构成索引块。
每个文件都有其索引块,这是一个磁盘块地址的数组。索引块的第i个条目指向文件的第i个块。目录条目包括索引块的地址。要读第i块,通过索引块的第i个条目的指针来查找和读入所需的块。
创建文件时,索引块的所有指针都设为空。当首次写入第i块时,先从空闲空间中取得一个块,再将其地址写到索引块的第i个条目。索引分配支持直接访问,且没有外部碎片问题。其缺点是由于索引块的分配,增加了系统存储空间的开销。索引块的大小是一个重要的问题,每个文件必须有一个索引块,因此索引块应尽可能小,但索引块太小就无法支持大文件。可以采用以下机制来处理这个问题。
链接方案:一个索引块通常为一个磁盘块,因此,他本身能直接读写。为了处理大文件,可以将多个索引块链接起来。
多层索引:多层索引使第一层索引块指向第二层的索引块,第二层的索引块再指向文件块。这种方法根据最大文件的大小的要求,可以继续到第三层或第四层。例如,4096B的块,能在索引块中存入1024个4B的指针。两层索引允许1048576个数据块,即允许最大文件为4G。