博主本周学习了动态分区分配算法,故写下这篇笔记,用于以后复习!!
一、什么是顺序搜索:
顺序搜索就是指一次搜索空闲分区链上的空闲分区,寻找一个其大小能满足要求的分区。
二、顺序搜索动态分区分配算法:
1. FF(首次适应算法)
知识点:
FF算法要求空闲分区链以地址递增的次序链接。
分配内存时,每次都从链首 开始查找,直到找到一个大小能满足要求的空闲分区即可。
如果找不到这样的一个分区分配给该进程,则分配失败。
2.NF(循环首次适应算法)
知识点:
和FF算法类似,不同点在于:该算法不是每次都从链首开始查找。而是从
上次找到的空闲分区的下一个分区开始查找
3.BF(最佳适应算法)
知识点:
每次分配内存时,选择能满足要求的、又是最小的的空闲分区分配。
BF算法要求所有的空闲分区连按其容量从小到大的顺序形成一个空闲分区链。
4.WF(最坏适应算法)
知识点:
与BF算法相反,WF算法总是选择最大的空闲分区,从中分割一部分存储空间进行分配。
WF算法要求,所有空闲分区按容量从大到小的顺序形成一空闲分区链。
三、练习:
假设系统空闲分区链如下图所示:
当用户先后申请7.5K、4K的内存空间时,试用FF、BF、NF、WF算法为该用户分配空间。求出分配块。
1.FF算法:
1.首先按照地址递增进行排序:
这里题目中默认的就是地址递增排序,所以,不用我们再去手动排序了。
2.每次从头开始查找。符合条件的空闲块。
7.5K 很明显分配到c空闲块。分配后,c空闲块剩余2.5K空闲空间
4K 分配到a空闲块,分配后,a空闲空块剩余3K
分配后的空闲分区l链:
2.NF算法:
注意:
NF算法是在上次找到的空闲分区的下一个空闲分区开始查找,而不是和FF一样:每次从头开始查找
7.5K分配到C
4K分配到d:
3.BF算法:
1.BF算法要求空闲分区链,按照容量从小到大排序。
1.首先对空闲分区链进行变化:
- 很明显 7.5K 分配到d,这时候,d剩余空间为0.5K。
3.再开启下一轮前,需要判断空闲链是否满足按容量从小到大排列。如果不是,要进行变化。
4.4k分配到a。此时a中剩余空间为3
4. WF算法:
wf算法需要满足按容量从大到小排序,每次选择最大的空闲区分配给用户
1.首先对空闲分区链进行变化:
2.进行分配:
1.7.5K和4K都分配到了e块中,此时,e块剩余空间为:8.5K.
故改变后空闲分区链为:
总结:
本次学习只是进行了基础的了解+练习。很多原理理解的还不是很透彻。需要后期多多请教老师和同学。
(若有错误,欢迎指出!!)