内存分配之动态分区分配的三种算法
原文链接https://blog.csdn.net/u011070169/article/details/53177987?locationNum=5&fps=1
关于首次适应算法、最佳适应算法和最差适应算法,先看一下百度百科的解释,已经说出了三者的最大区别。
首次适应算法(first-fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。
最佳适应算法(best-fit):从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。
最差适应算法(worst-fit):它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的节点大小趋于均匀。
下面看一个实例:
Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, and 426 KB (in order)? Which algorithm makes the most efficient use of memory?
首次适应算法:
为212k分配空间:
依次找寻,找到第一个大于212k的空闲区;
找到第二个空闲区500k>212k,分配给212k,剩余288k空闲区;
为417k分配空间:
依次找寻,找到第一个大于417k的空闲区;
找到第五个空闲区600k>417k,分配给417k,剩余183k空闲区
为112k分配空间:
依次找寻,找到第一个大于112k的空闲区;
找到第二个空闲区288k>112k,分配给112k,剩余176k空闲区
为426k分配空间:
依次找寻,找到第一个大于426k的空闲区;
未找到,此作业将等待释放空间
最佳适应算法:
为212k分配空间:
找到第一个跟212k大小最接近的空闲区
找到第四个空闲区300>212k,剩余88k空闲区
为417k分配空间:
找到第一个跟417k大小最接近的空闲区
找到第二个空闲区500>417,剩余83k空闲区
为112k分配空间:
找到第一个跟112k大小最接近的空闲区
找到第三个空闲区200>112k,剩余88k空闲区
为426k分配空间:
找到第一个跟426大小最接近的空闲区
找到第五个空闲区600k>426,剩余74k空闲区
最坏适应算法:
为212k分配空间:
找到第一个大小最大的空闲区
找到第五个空闲区600>212k,剩余388k空闲区
为417k分配空间:
找到第一个大小最大的空闲区
找到第二个空闲区500>417,剩余83k空闲区
为112k分配空间:
找到第一个大小最大的空闲区
找到第三个空闲区388>112k,剩余276k空闲区
为426k分配空间:
找到第一个大小最大的空闲区
达到大小最大的空闲区300k<426k,所以不分配
Answer
Free partition |
100 |
500 |
200 |
300 |
600 |
Not satisfied |
First-fit |
212,112 |
417 |
426 |
|||
Best-fit |
417 |
112 |
212 |
426 |
||
Worst-fit |
417 |
212,112 |
426 |
ps:好久没碰操作系统了,今天看到这三个算法的第一反应居然有点懵,还是好记性不如烂笔头啊,本文中的定义来自百度百科,实例题目来自老师布置的作业,答案分析为笔者按自己的理解写的,若有不对,欢迎指出~~
内存分配之动态分区分配的三种算法相关推荐
- 内存分配---FF、BF、WF三种算法
动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...
- 【学习笔记】第三章——内存 I(交换技术、进程七状态模型、动态分区分配、动态分区算法)
文章目录 一. 交换状态.进程七状态模型 二. 内存的分配方式 三. 动态分配算法 一. 交换状态.进程七状态模型 交换技术:内存空间紧张,把某些进程暂时换出外存.(进程在内存与磁盘间动态调度) 进程 ...
- 内存动态分区分配算法
动态分区分配 所谓动态分区分配,就是指内存在初始时不会划分区域,而是会在进程装入时,根据所要装入的进程大小动态地对内存空间进行划分,以提高内存空间利用率,降低碎片的大小 动态分区分配算法有以下四种: ...
- (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)
文章目录 一:首次适应算法(First Fit) 二:最佳适应算法(Best Fit) 三:最坏适应算法(Worst Fit) 四:邻近适应算法(Next Fit) 总结 动态分区分配算法:用于研究当 ...
- (王道408考研操作系统)第三章内存管理-第一节4:连续分配管理方式(单一连续、固定分区和动态分区分配)
文章目录 一:单一连续分配 二:固定分区分配 (1)分区大小相等与分区大小不等 (2)分区说明表 三:动态分区分配 (1)采用的数据结构(主要有两种) (2)动态分配分区算法 (3)如何进行分配与回收 ...
- 基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)
BF算法.男朋友算法,哈哈 要实现动态分区分配,需要考虑三个方面的问题.分别是数据结构.分区分配算法.分区的分配与回收操作. 首数据结构 这里我们使用的是空闲分区链,采用双向链表表示空闲分区. 具体实 ...
- 动态分区分配存储管理方式的内存分配回收
在动态分区分配存储管理方式的内存分配中,当有作业请求装入时,根据作业的需要内存空间的大小查询内存各个空闲区,从中找到一个大于或等于该作业大小的内存空闲区,然后按作业需求量划出一个分区装入该作业.作业执 ...
- 模拟实现内存动态分区分配与回收
一.目的 四个动态分区分配算法:最佳适应算法,循环首次适应算法,最坏适应算法,首次适应算法: 四种回收情况:上邻不下邻,上不邻下邻,上下都邻,上下都不邻: 要求有录入界面,动态初始化内存使用情况,动态 ...
- 操作系统(三十六)动态分区分配算法
3.5 动态分区分配算法 上节讲述了连续分区分配方式中有动态分区分配的方式,如果在动态分区分配算法中有许多空闲分区都满足需求的时候,那该如何分配空间呢,今天来介绍四种分配方法解决这个问题. 目录 3. ...
最新文章
- iPhone因安全漏洞上热搜,苹果:暂时无法修复,法国总统也中招
- 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
- Java 并发编程—有锁互斥机制及AQS理论
- 【java设计模式之Command(菜单命令) 】
- redis 配置文件参数详解
- python录制生成自动化脚本_懒人做自动化测试之二--自动化脚本录制
- 主板24pin接口详图_24Pin接口再见!华擎推出首款ATX12VO标准的Z490主板
- 说说 SpringMVC 工作原理
- 架构设计 - 架构师必读书单
- 51.RNN训练难题--梯度弥散与梯度爆炸、详解机器学习中的梯度消失、爆炸原因及其解决方法;RNN网络的梯度推导公式(学习笔记,学习整理)
- c语言负数左移右移_C语言负数的移位运算
- 2007年12月25日至2008年1月1日百宝箱游戏下载排行榜
- finecms V5 会员头像任意文件上传漏洞 附修复代码
- 面试题汇总-大牛的Java170
- Window Server 2012许可证过期解决方法
- 数据结构之SWUSTOJ954: 单链表的链接
- 基于Hi3516DV300rtmp交叉编译移植
- 优化算法—人工蜂群算法(ABC)
- linux webmail发送邮件,C# 邮件发送方法【webMail方式】
- 【Pygame小游戏】一发超人:弓箭手佛系射鸟休闲小游戏,你能射中几只?(源码白嫖)