外存空间分配常采用以下两种办法。
(1)连续分配
文件被存放在辅存空间连续存储区中,在建立文件时,用户必须给出文件大小,然后,查找到能满足的连续存储区供使用,否则文件不能建立。
连续分配的优点是文件查找速度快,管理较为简单,但为了获得足够大的连续存储区。需定时进行‘碎片’收集。因而,不适宜于文件频繁进行动态扩充和缩小的情况,用户事先不知道文件长度也无法进行分配。
(2)非连续分配
一种非连续分配方法是以块(或扇区)为单位,按文件动态要求分配给它若干扇区,这些扇区不一定要连续。
另一种非连续分配方法是以簇为单位,簇是由若干个连续扇区组成的分配单位;实质上是连续分配和非连续分配的结合。各个簇可以用链指针、索引表,位示图来管理。非连续分配的优点是辅存空间管理效率高,访问文件执行速度快,特别是以簇为单位的分配方法已被广泛使用。
常见的文件存储空间管理数据结构包括:
空闲块表
将文件存储设备上的每个连续空闲区看作一个空白文件,系统为所有空白文件单独建立一个目录,每个空白文件在这个目录中占一个表项,表项的内容包括第一个空白块的物理地址,空白块的数目。空闲区表的搜索算法借鉴存储管理中的分区分配算法。
空闲块链
把所有空闲块链成一个链。Unix采用成组链法:把文件存储设备中的所有空闲块按50块(每块512字节)一组分组。组的划分是从后往前进行的。其中,每组的第一块用来存放前一组中各块的块号和总块数。第一组49块,最后一组的块号和数目另外存放在文件资源表中。
位示图
系统从内存中划出若干字节,为文件存储空间建立一张位示图,以反映整个存储空间的分配情况。在位示图中,每一个二进制位都对应一个物理块,当某位为1时表示该块已经分配,当某位为0时表示该块空闲。
其主要优点是,它可以全部或部分保存在主存中,故可实现高速分配。
本节资料

