原文链接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:好久没碰操作系统了,今天看到这三个算法的第一反应居然有点懵,还是好记性不如烂笔头啊,本文中的定义来自百度百科,实例题目来自老师布置的作业,答案分析为笔者按自己的理解写的,若有不对,欢迎指出~~

内存分配之动态分区分配的三种算法相关推荐

  1. 内存分配---FF、BF、WF三种算法

    动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...

  2. 【学习笔记】第三章——内存 I(交换技术、进程七状态模型、动态分区分配、动态分区算法)

    文章目录 一. 交换状态.进程七状态模型 二. 内存的分配方式 三. 动态分配算法 一. 交换状态.进程七状态模型 交换技术:内存空间紧张,把某些进程暂时换出外存.(进程在内存与磁盘间动态调度) 进程 ...

  3. 内存动态分区分配算法

    动态分区分配 所谓动态分区分配,就是指内存在初始时不会划分区域,而是会在进程装入时,根据所要装入的进程大小动态地对内存空间进行划分,以提高内存空间利用率,降低碎片的大小 动态分区分配算法有以下四种: ...

  4. (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)

    文章目录 一:首次适应算法(First Fit) 二:最佳适应算法(Best Fit) 三:最坏适应算法(Worst Fit) 四:邻近适应算法(Next Fit) 总结 动态分区分配算法:用于研究当 ...

  5. (王道408考研操作系统)第三章内存管理-第一节4:连续分配管理方式(单一连续、固定分区和动态分区分配)

    文章目录 一:单一连续分配 二:固定分区分配 (1)分区大小相等与分区大小不等 (2)分区说明表 三:动态分区分配 (1)采用的数据结构(主要有两种) (2)动态分配分区算法 (3)如何进行分配与回收 ...

  6. 基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)

    BF算法.男朋友算法,哈哈 要实现动态分区分配,需要考虑三个方面的问题.分别是数据结构.分区分配算法.分区的分配与回收操作. 首数据结构 这里我们使用的是空闲分区链,采用双向链表表示空闲分区. 具体实 ...

  7. 动态分区分配存储管理方式的内存分配回收

    在动态分区分配存储管理方式的内存分配中,当有作业请求装入时,根据作业的需要内存空间的大小查询内存各个空闲区,从中找到一个大于或等于该作业大小的内存空闲区,然后按作业需求量划出一个分区装入该作业.作业执 ...

  8. 模拟实现内存动态分区分配与回收

    一.目的 四个动态分区分配算法:最佳适应算法,循环首次适应算法,最坏适应算法,首次适应算法: 四种回收情况:上邻不下邻,上不邻下邻,上下都邻,上下都不邻: 要求有录入界面,动态初始化内存使用情况,动态 ...

  9. 操作系统(三十六)动态分区分配算法

    3.5 动态分区分配算法 上节讲述了连续分区分配方式中有动态分区分配的方式,如果在动态分区分配算法中有许多空闲分区都满足需求的时候,那该如何分配空间呢,今天来介绍四种分配方法解决这个问题. 目录 3. ...

最新文章

  1. iPhone因安全漏洞上热搜,苹果:暂时无法修复,法国总统也中招
  2. 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
  3. Java 并发编程—有锁互斥机制及AQS理论
  4. 【java设计模式之Command(菜单命令) 】
  5. redis 配置文件参数详解
  6. python录制生成自动化脚本_懒人做自动化测试之二--自动化脚本录制
  7. 主板24pin接口详图_24Pin接口再见!华擎推出首款ATX12VO标准的Z490主板
  8. 说说 SpringMVC 工作原理
  9. 架构设计 - 架构师必读书单
  10. 51.RNN训练难题--梯度弥散与梯度爆炸、详解机器学习中的梯度消失、爆炸原因及其解决方法;RNN网络的梯度推导公式(学习笔记,学习整理)
  11. c语言负数左移右移_C语言负数的移位运算
  12. 2007年12月25日至2008年1月1日百宝箱游戏下载排行榜
  13. finecms V5 会员头像任意文件上传漏洞 附修复代码
  14. 面试题汇总-大牛的Java170
  15. Window Server 2012许可证过期解决方法
  16. 数据结构之SWUSTOJ954: 单链表的链接
  17. 基于Hi3516DV300rtmp交叉编译移植
  18. 优化算法—人工蜂群算法(ABC)
  19. linux webmail发送邮件,C# 邮件发送方法【webMail方式】
  20. 【Pygame小游戏】一发超人:弓箭手佛系射鸟休闲小游戏,你能射中几只?(源码白嫖)

热门文章

  1. 老毛桃电脑重装linux系统,如何简单快速用U盘装Win10系统,小白也能变装系统达人...
  2. 【建议收藏】MySQL中的自增id超出上限的问题
  3. 2023年全网最新取图小程序源码搭建,带达人流量主会员专题模板功能
  4. golang的Once研究
  5. python接口学习记录
  6. 推荐用于学习RN原生模块开发的开源库—react-native-ble-manager
  7. 英语语法第三节(长难句分析)
  8. 从Robotaxi到智慧公交,长沙给智慧交通打了一个样
  9. 韦东山鸿蒙开发教程02 - 资料下载方法
  10. 类与类之间的关系和耦合度