文章目录

  • 首次适应算法(First Fit)
  • 最佳适应算法(Best Fit)
  • 最坏适应算法(Worst Fit)
  • 临近适应算法(Nest Fit)

首次适应算法(First Fit)

算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。

如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

空闲分区以地址递增的次序排列,1、2、3。

假设要分配为5大小的内存,首先从链头开始查找,第一个满足,分配,修改相应的内存,再分配一个为9大小的内存,从链头开始查找,第二个满足,分配。则:

最佳适应算法(Best Fit)

算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区,即,优先使用更小的空闲区。

如何实现:空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

空闲分区按容量递增次序链接:

假设要分配7大小的内存,从链头开始查找,第一个满足分配,修改相应内存,再分配8大小的内存,从链头开始查找,第二个满足分配,修改相应内存。则:

最坏适应算法(Worst Fit)

又称 最大适应算法(Largest Fit)
算法思想:为了解决最佳适应算法的问题——即留下太多难以利用的小碎片,可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。

如何实现:空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

空闲分区按容量递减次序链接:

依次分配10、6大小的内存,都是从链头开始查找,修改相应内存后,则:

临近适应算法(Nest Fit)

算法思想:首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。

如何实现:空闲分区以地址递增的顺序排列(可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。


假设先要分配一个9大小的内存,从链头开始查找,第二个满足分配,修改相应内存,再分派一个7大小的内存,这时,从第二个开始查找,不是从链头(注意与首次适应算法区别),第三个满足,分配。
则:

【比较】

算法 算法思想 优点 缺点
首次适应 从头到尾找适合的分区 综合看性能最好。算法开销小,回收分区后一般不需要对空闲分区队列重新排序
最佳适应 优先使用更小的分区,以保留更多大分区 会有更多的大分区被保留下来,更能满足大进程需求 会产生很多太小的、难以利用的碎片;算法开销大,回收分区后可需要对空闲分区队列重新排序
最坏适应 优先使用更大的分区,以防止产生太小的不可用的碎片 可以减少难以利用的小碎片 大分区容易被用完,不利于大进程;算法开销大(原因同上)
邻近适应 由首次适应演变而来,每次从上次查找结束位置开始查找 不用每次都从低地址的小分区开始检索。算法开销小(原因同首次适应算法) 会使高地址的大分区也被用完

【操作系统】动态分区分配算法相关推荐

  1. java动态分区分配_操作系统 动态分区分配算法课程设计 java版.pdf

    操作系统 动态分区分配算法课程设计 java版 湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班 ...

  2. java动态分区分配_操作系统动态分区分配算法课程设计java版解析.doc

    湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班级.学号 13101 18 同组者姓名 实验日期 ...

  3. 七、操作系统——动态分区分配算法(详解)

    一.引入 动态分区分配算法:在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配? 二.首次适应算法(First Fit) 算法思想:每次都从低地址开始查找,找到第一个能满足 ...

  4. java动态分区分配算法,操作系统_动态分区分配算法课程设计_java版

    <操作系统_动态分区分配算法课程设计_java版>由会员分享,可在线阅读,更多相关<操作系统_动态分区分配算法课程设计_java版(13页珍藏版)>请在人人文库网上搜索. 1. ...

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

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

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

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

  7. 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】

    学习地址(哔哩哔哩网站--王道论坛):https://www.bilibili.com/video/BV1YE411D7nH?p=37 目录 1.首次适应算法(First Fit) 2.最佳适应算法( ...

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

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

  9. 3.1_ 5_动态分区分配算法

    3.1_ 5_动态分区分配算法 文章目录 3.1_ 5_动态分区分配算法 知识总览 首次适应算法 最佳适应算法 最坏适应算法 邻近适应算法 知识总览 首次适应算法 最佳适应算法 最坏适应算法 邻近适应 ...

  10. 连续分配管理方式的动态分区分配算法(首次适应、最佳适应、最坏适应、邻接适应算法)

    一.动态分区分配算法(连续分配管理方式) 动态分区分配算法:在动态分区分配方式中, 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配? (一)首次适应算法 算法思想:每次都从低地址开始查找,找 ...

最新文章

  1. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)
  2. [密码学] 高级加密标准AES
  3. TOC之关键链项目管理遇到软件工程7原则
  4. 异步请求时有时会让js不起作用,那么重新加载js
  5. timestamp 字段
  6. vSwitch报文转发分析
  7. html时间自动,编辑自动结束时间.html
  8. 串口(USART)通信-串口通讯协议简介
  9. 判断一个js对象是否是Array
  10. 使用Python删除Windows中只读文件
  11. CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context/Not a GL2 implementation
  12. 【SpringBoot系列】最详细demo--集成JWT实现接口权限认证
  13. 关于打印机驱动无法装载的问题
  14. Mac电脑怎样关闭sip,苹果电脑关闭系统完整性保护SIP的方法
  15. 云时代的阡陌纵横”的数据网络?
  16. java web简单的网上名片管理系统
  17. Cox 比例风险模型中HR和置信区间
  18. 【前后端分离】前台多表联查
  19. python会员折扣_Python骚操作 | 用python爆破某会员网站
  20. 护肤品行业竞争格局:2022年外资品牌护肤品占据主导地位

热门文章

  1. GAN在SAR图像仿真中的应用
  2. 【渝粤题库】广东开放大学物业管理基本制度与政策 形成性考核
  3. 【Linux应用层】防火墙iptables命令
  4. 看视频用这个太爽了!自动实时翻译英语视频
  5. 【Java框架】CSFramework框架的应用——简易聊天室
  6. Win7各正式版下载地址和SHA验证
  7. spa文件转换html,spa.html
  8. cass坡度土方计算案例_四面放坡且坡度不同的工程土方,CASS怎么算?
  9. 科研画图——流程图软件draw.io
  10. macOS:删除 MDM 配置描述文件