文件外存分配方式

目前,常用的外存分配方法有连续分配链接分配索引分配三种。采用不同的分配方式时,将形成不同的文件物理结构。

连续分配方式对应顺序式文件结构,链接分配方式形成链接式文件结构,索引分配方式将形成索引式文件结构。有的系统(如DOS操作系统)对三种方法都支持,但是更普遍的是一个系统只提供一种方法的支持

1 连续分配

连续分配方法要求每个文件在磁盘上占有一组连续的块,如图所示。这样所形成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。这种分配方式保证了逻辑文件中的的记录顺序与存储器中的文件占用盘块的顺序是一致的

优点

优点是实现简单、存取速度快,支持顺序访问和直接访问,作业访问磁盘时需要的寻道数和寻道时间最短。

缺点

缺点在于,文件长度不宜动态增加,因为一个文件末尾后的盘块可能已经分配给其他文件,一旦需要增加, 就需要大量移动盘块。在外存上使用紧凑技术所花费的时间远比内存紧凑一次所花费的时间多得多。

此外,反复增删文件后会产生外部碎片(与内存管理分配方式中的碎 片相似),并且很难确定一个文件需要的空间大小,因而只适用于长度固定的文件。

2 链接分配

链接分配是釆取离散分配的方式,消除了外部碎片,故而显著地提高了磁盘空间的利用率;又因为是根据文件的当前需求,为它分配必需的盘块,当文件动态增长时,可以动态地再为它分配盘块,故而无需事先知道文件的大小。此外,对文件的增、删、改也非常方便

链接分配又可以分为隐式链接和显式链接两种形式。

2.1 隐式链接

文件,目录中每个目录项都包括指向链接文件第一盘块和最后一个盘块的指针。磁盘块分布在磁盘的任何地方,除最后一个盘块外,每一个盘块都有指向下一个盘块的指针,这些指针对用户是透明的。

缺点

  • 隐式链接只适用于顺序访问,对随机访问时极其低效的。

  • 隐式链接可靠性差,只要其中任一指针出错,都将导致整个链断开。

为了提高检索速度和减小指针所占存储空间,可以将几个盘块组成一个簇(cluster),虽然成倍减少了访问时间,以及指针存储空间,但却增大了内部碎片,改进很有限

这种朴素的链接分配思想有一个致命的问题,就是一旦出现断链,后续物理块无法访问,并且我们需要的物理块不在链的前方时,顺序寻找花费大量读磁盘时间(读磁盘时间远远大于读内存时间)。所以需要对这种朴素的链接分配思想进行改造。


于是出现了显式链接分配(朴素的链接分配也是隐式链接分配),即把所有的物理块中的指针收集在一起统一放在内存的一张FAT表中(请注意是内存),这样就大大减轻了朴素链接分配思想上述致命缺点,由于地址存放在一起,所以不太容易出现丢失个别地址现象,而且内存访问速度快。但是这本质上仍然是链接分配,即进程给出文件物理块起始地址等信息,然后根据内存FAT中地址的链接情况进行查找,得到所需物理块。在查找过程中仍然是一个一个的顺序查找。

2.2 显式链接

显式链接把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置一张。

表的序号从0开始,直至N-1,N为盘块总数,在每个表项中存放链接指针,即下一个盘块号。

在该表中,凡是属于某一文件的第一个盘块号(链首指针所对应的盘块号)均作为文件地址被填入相应的文件的FCB的物理地址字段中。

由于查找记录的过程是在内存中进行的,因而提高了检索速度,减少了访问磁盘的次数。由于分配给文件的所有盘块号都在该表中,故把该表称为文件分配表FAT(File Allocation Table)。

在显示链接中,磁盘上有多少块,这个FAT表就有多少项,磁盘上的块和FAT中的项一一对应,而每项中的内容就是磁盘中对应块的下一块地址。

缺点

  • 不能支持高效的直接存储(要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找很多盘块号);

  • FAT需要占用较大的内存空间(由于一个文件所占用的盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证FAT中找到一个文件的所有盘块号,当磁盘容量较大时,FAT占用的容量更大)

3 索引分配

在打开某个文件时,只需把该文件占用的盘块号的编号调入内存即可,无需把整个FAT调入内存。为此,将每个文件所对应的盘块号集中地放在一起,索引分配方式就是基于此想法所形成的一种分配方式。

3.1 单级索引

其为每个文件分配一个索引表,再把分配给该文件的所有盘块号都记录在该索引块中,因而该索引块就是一个含有许多磁盘块号的数组。在建立一个文件时,只需要在为之建立的目录项中填上指向该索引块的指针。

3.2 多级索引

当文件太大时,索引块太多,单级索引是低效的。此时,为这些索引块再建立一级索引,称为第一级索引,还可再建立索引,称为第二级索引等等。称为多级索引分配。

在二级索引分配方式下,若每个盘块的大小为1KB,每个盘块号占4个字节,在一个索引块可以存放256个盘块号。则,在两级索引时,最多可以包括存放文件的盘块号总数为64K(256 * 256)个盘块号,所允许文件最大长度为64MB。

若盘块号为4KB,则一级索引的最大文件大小为4MB,二级索引的最大文件大小为4GB。

3.3 混合索引分配

多种索引分配方式相结合而形成的一种分配方式,如直接地址,一次间接地址,多次间接地址。

Unix SystemV的分配采用了三级索引分配方式。共设置了13个索引地址项。前10个:iaddr(0)~iaddr(9)为直接地址项,iaddr(10)为一次间接地址项,iaddr(11)为二次间接地址项,iaddr(12)为三次间接地址项。

4 分配方式比较

猜你喜欢

转载自blog.csdn.net/william_munch/article/details/82869956