5. 空闲分区管理
Last updated
Last updated
划分:将物理磁盘划分为一个个的文件卷(逻辑卷、逻辑盘),如 C 盘、D 盘等
初始化:把每个文件卷划分为目录区、文件区
目录区:存放文件目录信息(FCB)、用于磁盘存储空间管理的信息
文件区:用于存放文件数据
适用于连续分配方式
与内存管理中动态分区分配类似,为一个文件分配连续的存储空间。同样可采用首次适用、最佳适应、最坏适应等算法来决定要为文件分配哪个区间
与内存管理中动态分区分配类似,当回收某个存储区时需要有四种情况:
回收区前后都没有空闲区
回收区前面有空闲区
回收区后面有空闲区
回收区前后都有空闲区
注意:合并
以盘块为单位组成一条链
操作系统保存着链头、链尾指针
分配方法:若某文件申请 K 个盘块,则从链头依次摘下 K 个盘块分配,并修改空闲链的链头指针
回收方法:回收的盘块依次挂到链尾,并修改空闲链的链尾指针(适用于离散分配的物理结构)
以盘区为单位组成一条链
操作系统保存着链头、链尾指针
分配方法:若某文件申请K 个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据
回收方法:若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。若回收区没有和任何空闲区相邻,将回收区作为单独的一个空闲盘区挂到链尾(离散分配、连续分配都适用)
每个二进制位对应一个盘块。在下图中,“0” 代表盘块空闲, “1” 代表盘块已分配。位示图一般用连续的“字”来表示,如本例中一个字的字长是 16 位,字中的每一位对应一个盘块。因此可以用(字号,位号)对应一个盘块号
(字号,位号)= (i,j)的二进制对应的 盘块号 b = n * i + j
分配方法:若文件需要 K 个文件
顺序扫描位示图,找到 K 个相邻或不相邻的 “0”
根据字号、位号算出对应的盘块号,将相应盘块分配给文件
将相应位设置为 “1”
回收方法:
根据回收的盘块号计算出对应的字号、位号
将相应二进制位设为 “0”