成组链接法(盘的分配和回收)

在学习成组链接法时,不太明白这个回收和分配的原理。书上讲的不太明白,之后找了一个例题就明白了,特此来分享一下。

例题:
某个系统采用成组链接法来管理磁盘的空闲空间,目前磁盘的状态如图1所示。

(1) 该磁盘中目前还有多少个空闲盘块?

(2) 请简述磁盘块的分配过程,在为某个文件分配3个盘块后磁盘情况。

(3) 系统要删除另一文件,并回收它所占的5个盘块,它们的盘块号依次为700、711、703、788、701,请画出回收后的盘块链接情况。

图1

1.磁盘中有301块磁盘块,空闲盘块号栈,N=2,表示有两个空闲盘块299、300,而盘块300号上面又写着有100个空闲盘块:301-400,它还有下一个链接的盘块400;在盘块400中,记录有100个空闲盘块401-500;然后又链接到500号盘块,在500号盘块中,虽然N=100,但是第一个是0,它表示空闲盘块链的结尾。因此,总共的空闲盘块有:299、300、301-400、401-500、501-599;2+100+100+99=301块空闲磁盘块。
2、分盘3个磁盘块,先后分配了299 300 301三块空闲磁盘块
请添加图片描述请添加图片描述
请添加图片描述
3、回收700、711、703、788、701号盘块
回收的过程也是从栈顶开始的,首先看N=99,然后回收700,会将700放在S.free[N]的位置,然后将N加1变成100:

然后回收711号盘块,因为此时空闲栈的N=100,已经满了,如果再回收,需要将空闲盘块栈的内容移动到711号盘块上,然后将空闲盘块栈的S.free[0]设置为711,N设置为1:

回收700号盘块
请添加图片描述
请添加图片描述

请添加图片描述


参考:https://blog.csdn.net/qq_37579082/article/details/85996897
https://blog.csdn.net/ajay666/article/details/73569654

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值