操作系统——成组链接法

操作系统——成组链接法

成组链接法是结合了空闲表和空闲链表法的,UNIX系统采用的就是成组链接法。成组链接法中保存的是当前可用的存储盘块的地址,具体的我们以一个简单的例子来阐述他的结构和分配回收原理。

前提假设

假设一个空闲的盘块可以存储另外5个盘块的地址和一个当前盘块可以用来存储盘块地址的变量N,结构如下:

成组链接的基本结构

每一个该结构中的盘块存储的都是可用盘块的地址,如下图,盘块25为空闲的盘块,可以用来存储数据,在盘块0中空间0存储的是下一个类似于盘块0结构的盘块1的地址,空间14存储的则是可以用来存储数据的盘块2~盘块5的地址,盘块1中的结构和盘块1中的结构一致,整个结构将所有的可用盘块按照类似的结构全部链接起来。

例子

初始状态假设为上图所示,现在系统要申请5个盘块用来存储数据data,其中data可以分为(data_1,data_2,data_3,data_4,data_5)5个部分存储在5个盘块中

存储data_1

首先查盘块0,N=5,说明还有可以用的盘块,直接选择盘块5存储data_1数据段,将数据data_1写入盘块5中,将盘块0中空间4清空。

存储data_2到data_4

同理,可以将数据段data_2~data_4一次存入盘块4、盘块3、盘块2中

存储data_5

到此时,盘块0中存储的只有盘块1的地址,盘块1不能用来存储数据,此时应该将盘块1的内容复制到盘块0中来:让盘块1可以用来存储数据:

此时将data_5写入盘块1中

到此,一个数据的存储过程就结束了,当然实际情况一个盘块可以存储的地址肯定不止5个,这里只是以5个为例子,展示流程。

回收data_5(盘块1)

讲完分配,现在讲讲回收,现在系统需要回收data_5数据段,释放盘块1,将盘块1放入到可用表中,流程如下:

此时,系统观察到盘块0中已经没有空余的空间可以存储盘块1的地址,此时采取的策略是:

将现在盘块0中的内容复制到盘块1中:

然后将盘块0的内容更新,空间0存储盘块1的地址,其他空间空闲:

回收data_4data_1(盘块2盘块5)

此时盘块中空闲的空间有5-1=4个,现在回收data_4:

将盘块2的地址写入到盘块0的空闲空间1中,然后清空盘块2的内容:

其他盘块按照如此逻辑,一次回收:

到此,有关成组链接的具体分配和回收流程就结束了。

  • 118
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值