动态分区分配算法

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

1.首次适应算法(FF):所谓的首次的意思以地址递增链接。因此在分配内存的时候,从链首开始查找,直到找到一个大小能满足要求的空闲分区为之。
2.循环首次适应算法(NF):和首次适应算法的区别就是,在为进程分配内存空间的时候,不再是都从链首开始查找, 而是从上次找到的空闲的分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区。
3.最佳适应算法(BF):将所有的空闲空间按其容量从小到大的顺序形成一空闲分区链,然后进行分配。
4.最坏适应算法(WF):将所有的空闲空间按其容量从大到小的顺序形成一空闲分区链,然后进行分配。

当系统很大的时候,基于顺序搜索的动态分区分配算法可能会很慢,所以有:

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

1.快速适应算法:将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有分区,单独设立一个空闲分区链表,这样系统中存在多个空闲分区链表。同时,在内存中设立一张管理索引表,其中的每一个索引表项对应了一种空闲分区类型。
在搜索可分配空闲分区时,第一步根据进程的长度,从索引表中去寻找能容纳它的最小空闲区链表;第二步是从链表中取下第一块进行分配即可。
优先是查找效率高,缺点是,该算法在分配空闲分区时,是以进程为单位的,一个分区只属于一个进程,因此在为进程所分配的一个分区中,或多或少存在一定的浪费。
2.伙伴系统:在伙伴系统中,对于一个大小为2^k,地址为x的内存块,其伙伴快的地址则用buddy表示,通式为:
动态分区分配算法_第1张图片
3.哈希算法:顾名思义,就是根据哈希函数进行查找…

下面句子例子:
某系统采用动态分区分配方式管理内存,内存空间为640K,高端40K用来存放操作系统。在内存分配时,系统优先使用空闲区低端的空间。对下列的请求序列:作业1申请130K、作业2申请60K、作业3申请100K、作业2释放60K、作业4申请200K、作业3释放100K、作业1释放130K、作业5申请140K、作业6申请60K、作业7申请50K、作业6释放60K,请分别画图表示出使用首次适应算法和最佳适应算法进行内存分配和回收后内存的实际使用情况。
理解首次适应算法和最佳适应算法概念后,题目会很容易理解,
下面是解答:
动态分区分配算法_第2张图片
动态分区分配算法_第3张图片

所以两个方式所求的是对应使用情况:
动态分区分配算法_第4张图片

动态分区分配算法_第5张图片

你可能感兴趣的:(操作系统->存储器管理)