4、某个系统采用成组空闲块链法管理磁盘的空闲空间,目前磁盘的状态如下图所示:(1)该磁盘块中目前还有多少个空闲块由图可知,专用表还有 2 个空闲块(299、300),300#块还有 100 个空闲块(301-400),400#块还有 100 个空闲块(401-500),500#块还有 99 个空闲块(501-599)。所以该磁盘块中目前还有 301 个空闲块。
(2)在为某个文件分配 3 个盘块后,请画出分配后的盘块链接情况。为某文件分配 3 个盘块,先分配当前专用表中剩余的 2 个盘块,再将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,分配一相应的缓冲区。然后将新的专用表分配出 1 个空闲盘块,某文件需要的 3 个盘块分配完毕。
(3)系统要删除另一个文件,并回收它所占用的 4 个盘块,它们的盘块号依次为 700、711、703、701,请画出回收后的盘块链接情况。回收的过程是从栈顶开始的,首先看 N=99,然后回收 700,会将 700 放在 S.free[N] 的位置,然后将 N 加 1 变成 100;然后回收 711 号盘块,因为此时空闲栈的 N=100,已经满了,如果再回收,需要将空闲盘块栈的内容移动到 711 号盘块上,然后将空闲盘块栈的 S.free[0] 设置为 711,N 设置为 1;最后回收 703/701 也是同理。