文件存储空间管理

存储空间的划分与初始化

文件卷可以由多个文件磁盘组成

空闲表法

记录了每一个空闲区局的起始地址和结束地址

分配:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间,同样可以有首次适应,最佳适应,最坏适应算法来决定问文件分配的区间

回收:与内存管理中的动态分区分配很类似,当回首某个存储区的时候:

前后不空

前后都空

前空

后空

空闲链表法

空闲盘块链

以盘块【一个个的小单元】为单位组成一条空闲链

系统保存着链头,链尾指针

分配:若文件申请K个盘块,则从链头开始一次摘下K个盘块分配,并修改空闲链头指针

回收:回收盘块依次挂到链尾,修改空闲链的链尾指针

适用于离散分配的物理结构

空闲盘区链

以盘区【一组组的小单元】为单位组成一条空闲链

分配:若某文件申请K个盘块,则可以采用首次适应,最佳食用等算法,从链头开始检索,按照算法规则找到一个大小合适的空闲盘区,如果没有合适的联系空闲块,就将不同盘区的盘块同时分配给一个文件

回收:和空闲表法一样

适合连续和离散分配

位示图法

位示图:每个二进制位对应一个盘块,0代表盘块空闲,1代表以及分配,位示图一般用连续的字来表示,比如本鲤中一个字长度是16位,字宗每一位对应一个盘块

需要注意盘块号/字号/位号从0开始还是从1开始

(字号,位号)=(i,j)的二进制对应盘块号b=ni+j

b号盘块对应的字号i=b/n ,位号j=b%n

分配:若文件需要K个块

1.顺序扫描位示图,找到K个相邻或不相邻的0,

2.根据字号,位号酸楚对应的盘块号,将相应盘块分配给文件

3.将相应位设置为1

回收

1.根据回收的盘块号计算出对应的字号,位号

2.将相应的二进制位设置为0

成组链接法

unix系统用的

文件目录区中设置一个超级快,系统启动时,超级快读如内存

分配:需要一个空闲块

1.检查第一个分组的块数是否足够

2.分配第一个分组中的1个空闲块,并修改对应数据

分配:需要分配100个空闲块

1.检查分组的块数是否足够

2.分配第一个分组中的100个空闲块,但是由于300号块内存放了再下一组的信息,因此300号块的数据需要复制到超级快中

回收:假设每个分组最多100个空闲块,此时第一个分组有99个块,还需要再回收一个块

那么就把后一个的空闲块插入到第一个分组当中

回收:假设每个分组最多100个空闲块,此时第一个分组有100块,还需要再回收一块,需要将超级快中的数据复制到新回收的块中,并修改超级快的内容,让新回收的块称为第一个分组

新的分组称为新的超级快

posted @ 2025-10-06 19:22  是我,米老鼠  阅读(9)  评论(0)    收藏  举报