基于索引搜索的动态分区分配算法

本文探讨了在中大型系统中提高内存分区分配效率的策略,主要介绍了哈希算法、快速适应算法和伙伴系统。哈希算法利用空闲分区大小构建哈希表,实现快速查找;快速适应算法通过分区分类和索引表减少搜索时间,但归还分区时系统开销大;伙伴系统以2的幂次方为分区大小,通过索引搜索和合并空闲分区提高空间利用率。
摘要由CSDN通过智能技术生成

由于当一个系统很大时,系统内的内存分区可能会很多,相应的空闲分区链就可能很长,这时采用顺序搜索分区的方法可能会很慢。为了提高搜索空间的分区的速度,在中大型系统中往往会采用基于索引搜索的动态分区分配算法,比如我们所熟知的哈希算法、快速适应算法以及伙伴系统。

1)哈希算法

由于分类搜索算法和伙伴系统算法中,都是将空闲分区根据分区大小进行分类,对于每一类具有相同大小的空闲分区,单独设立一个空闲分区链表。在为进程分配空间时,需要在每一张管理索引表中查找到所需要的空间大小所对应的表项,从中得到对应的空间内分区链表表头指针,从而通过查找一个空闲分区。如果对空闲分区分类比较细,则相应索引表的表项也就较多,因此会显著的增加搜索索引表的表项的时间开销。

哈希算法就是利用哈希快速查找的优点,以及空闲分区在可利用空闲分区表中的分布规律,建立哈希函数,构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项记录了一个对应的空闲分区链表表头指针。

当进行空闲分区分配时,根据所需要的空闲 分区大小,通过哈希函数计算,即得到在哈希表中的位置,从中得到相应的空闲分区链表,实现最佳分配策略。

2)快速适应算法(分类搜索法)

该算法就是将空闲分区根据容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,这样的系统中存在多个空闲分区链表。同时,在内存总设立一张管理索引表,其中的每一个索引表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分的。

该算法在搜索可分配的空闲分区时分为两步:第一步是根据进程的长度,从索引表中寻找到能容纳它的最

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值