【操作系统】动态分区分配算法
文章目录
- 首次适应算法(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大小的内存,这时,从第二个开始查找,不是从链头(注意与首次适应算法区别),第三个满足,分配。
则:
【比较】
算法 | 算法思想 | 优点 | 缺点 |
---|---|---|---|
首次适应 | 从头到尾找适合的分区 | 综合看性能最好。算法开销小,回收分区后一般不需要对空闲分区队列重新排序 | |
最佳适应 | 优先使用更小的分区,以保留更多大分区 | 会有更多的大分区被保留下来,更能满足大进程需求 | 会产生很多太小的、难以利用的碎片;算法开销大,回收分区后可需要对空闲分区队列重新排序 |
最坏适应 | 优先使用更大的分区,以防止产生太小的不可用的碎片 | 可以减少难以利用的小碎片 | 大分区容易被用完,不利于大进程;算法开销大(原因同上) |
邻近适应 | 由首次适应演变而来,每次从上次查找结束位置开始查找 | 不用每次都从低地址的小分区开始检索。算法开销小(原因同首次适应算法) | 会使高地址的大分区也被用完 |
【操作系统】动态分区分配算法相关推荐
- java动态分区分配_操作系统 动态分区分配算法课程设计 java版.pdf
操作系统 动态分区分配算法课程设计 java版 湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班 ...
- java动态分区分配_操作系统动态分区分配算法课程设计java版解析.doc
湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班级.学号 13101 18 同组者姓名 实验日期 ...
- 七、操作系统——动态分区分配算法(详解)
一.引入 动态分区分配算法:在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配? 二.首次适应算法(First Fit) 算法思想:每次都从低地址开始查找,找到第一个能满足 ...
- java动态分区分配算法,操作系统_动态分区分配算法课程设计_java版
<操作系统_动态分区分配算法课程设计_java版>由会员分享,可在线阅读,更多相关<操作系统_动态分区分配算法课程设计_java版(13页珍藏版)>请在人人文库网上搜索. 1. ...
- 操作系统(三十六)动态分区分配算法
3.5 动态分区分配算法 上节讲述了连续分区分配方式中有动态分区分配的方式,如果在动态分区分配算法中有许多空闲分区都满足需求的时候,那该如何分配空间呢,今天来介绍四种分配方法解决这个问题. 目录 3. ...
- (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)
文章目录 一:首次适应算法(First Fit) 二:最佳适应算法(Best Fit) 三:最坏适应算法(Worst Fit) 四:邻近适应算法(Next Fit) 总结 动态分区分配算法:用于研究当 ...
- 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】
学习地址(哔哩哔哩网站--王道论坛):https://www.bilibili.com/video/BV1YE411D7nH?p=37 目录 1.首次适应算法(First Fit) 2.最佳适应算法( ...
- 基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)
BF算法.男朋友算法,哈哈 要实现动态分区分配,需要考虑三个方面的问题.分别是数据结构.分区分配算法.分区的分配与回收操作. 首数据结构 这里我们使用的是空闲分区链,采用双向链表表示空闲分区. 具体实 ...
- 3.1_ 5_动态分区分配算法
3.1_ 5_动态分区分配算法 文章目录 3.1_ 5_动态分区分配算法 知识总览 首次适应算法 最佳适应算法 最坏适应算法 邻近适应算法 知识总览 首次适应算法 最佳适应算法 最坏适应算法 邻近适应 ...
- 连续分配管理方式的动态分区分配算法(首次适应、最佳适应、最坏适应、邻接适应算法)
一.动态分区分配算法(连续分配管理方式) 动态分区分配算法:在动态分区分配方式中, 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配? (一)首次适应算法 算法思想:每次都从低地址开始查找,找 ...
最新文章
- iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)
- [密码学] 高级加密标准AES
- TOC之关键链项目管理遇到软件工程7原则
- 异步请求时有时会让js不起作用,那么重新加载js
- timestamp 字段
- vSwitch报文转发分析
- html时间自动,编辑自动结束时间.html
- 串口(USART)通信-串口通讯协议简介
- 判断一个js对象是否是Array
- 使用Python删除Windows中只读文件
- CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context/Not a GL2 implementation
- 【SpringBoot系列】最详细demo--集成JWT实现接口权限认证
- 关于打印机驱动无法装载的问题
- Mac电脑怎样关闭sip,苹果电脑关闭系统完整性保护SIP的方法
- 云时代的阡陌纵横”的数据网络?
- java web简单的网上名片管理系统
- Cox 比例风险模型中HR和置信区间
- 【前后端分离】前台多表联查
- python会员折扣_Python骚操作 | 用python爆破某会员网站
- 护肤品行业竞争格局:2022年外资品牌护肤品占据主导地位