操作系统---基于顺序搜索的动态分区分配算法

博主本周学习了动态分区分配算法,故写下这篇笔记,用于以后复习!!

一、什么是顺序搜索:

顺序搜索就是指一次搜索空闲分区链上的空闲分区,寻找一个其大小能满足要求的分区。

二、顺序搜索动态分区分配算法:

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链:
FF

2.NF算法:

注意:

NF算法是在上次找到的空闲分区的下一个空闲分区开始查找,而不是和FF一样:每次从头开始查找

7.5K分配到C
NF
4K分配到d:
在这里插入图片描述

3.BF算法:

1.BF算法要求空闲分区链,按照容量从小到大排序。

1.首先对空闲分区链进行变化:

在这里插入图片描述

  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.

故改变后空闲分区链为:
变化后

总结:

本次学习只是进行了基础的了解+练习。很多原理理解的还不是很透彻。需要后期多多请教老师和同学。

(若有错误,欢迎指出!!)

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实验内容: 编写一个动态分区分配算法模拟程序,加深对动态分区存储管理方式及其实现过程的理解。 要求: 1.空闲分区通过空闲区链进行管理,在内存分配时,优先考虑低地址部分的空闲区。 2.分别采用首次适应算法、最佳适应算法和最坏适应算法模拟内存空间的动态分配与回收,每次分配和回收后显示出空闲区链的详细情况(说明:在申请不成功时,需要打印当前内存的占用情况信息)。 3.进程对内存空间的申请和释放可由用户自定义输入。 4.参考请求序列如下: (1) 初始状态下可用内存空间为640KB; (2) 进程1申请130KB; (3) 进程2申请60KB; (4) 进程3申请100KB; (5) 进程2释放60KB; (6) 进程4申请200KB; (7) 进程3释放100KB; (8) 进程1释放130KB; (9) 进程5申请140KB; (10) 进程6申请60KB; (11) 进程7申请50KB; (12) 进程6释放60KB。 测试用例格式如下: 输入: 动态分区分配算法选择 可用内存空间容量 序号/进程号/申请或释放操作/申请或释放的容量 其中: (1) 动态分区分配算法:1----首次适应,2----最佳适应,3----最坏适应 (2) 申请或释放操作: 1----申请操作,2----释放操作 输出: 序号/内存空间状态1/内存空间状态2...... 内存空间状态表示分为两种情况: (1) 内存空间被占用: 内存空间起始地址-内存空间结束地址.1.占用的进程号 (2) 内存空间空闲 内存空间起始地址-内存空间结束地址.0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值