存储空间的划分与初始化
文件卷可以由多个文件磁盘组成
空闲表法
记录了每一个空闲区局的起始地址和结束地址
分配:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间,同样可以有首次适应,最佳适应,最坏适应算法来决定问文件分配的区间
回收:与内存管理中的动态分区分配很类似,当回首某个存储区的时候:
前后不空
前后都空
前空
后空
空闲链表法
空闲盘块链
以盘块【一个个的小单元】为单位组成一条空闲链
系统保存着链头,链尾指针
分配:若文件申请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块,还需要再回收一块,需要将超级快中的数据复制到新回收的块中,并修改超级快的内容,让新回收的块称为第一个分组
新的分组称为新的超级快