DJ4-3 动态分区分配算法

news2024/11/16 23:38:23

目录

一、基于顺序搜索的分配算法

1、最佳适应算法(BF)

2、最坏适应算法(Worst fit,WF)

3、首次适应算法(First Fit,FF)

4、下次适应算法(Next fit,NF)

二、基于索引搜索的分配算法

5、快速适应算法(Quik fit,QF)

6、伙伴系统

7、哈希算法


一、基于顺序搜索的分配算法

1、最佳适应算法(BF)

算法内容:

  • 选择:能满足要求的、最小的空闲分区分配给作业。
  • 要求:将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。
  • 注意:没有把整个分区都分配给作业,作业只能切割下自己需要的大小。

实现效果:

  • 选择 => 把作业放入这样的分区后剩下的内零头最小
  • 要求 => 第一次找到的能满足要求的空闲区必定是最小的

举例说明:

优点:选中合适的分区,不会随意对大分区进行切割,保留的大分区可以满足大作业的需求。

缺点:

① 在每次分配时,总是产生最小的空白分区。因此经过一段时期后,存储空间中可能有许多这样的空白分区,由于其太小而无法使用,即产生了大量的外零头。

② 在回收一个分区时,为了把它插入到空白分区链中合适的位置上也颇为费时。

所以,这种算法乍看起来是最佳的,其实则不然,实际上没有被应用过。

2、最坏适应算法(Worst fit,WF)

恰恰与最佳适应算法 BF 相反

算法内容:

  • 选择:最大的空闲分区分配给作业。
  • 要求:将所有的空闲分区按其容量以从大到小的顺序形成一空闲分区链。
  • 注意:没有把整个分区都分配给作业,作业只能切割下自己需要的大小。

优点:切割后剩下的空白分区是最大的,因而很可能对以后的分配也是有用的。

缺点:由于最大的空白分区总是首先被切割,因此可能满足不了大作业的需求。

3、首次适应算法(First Fit,FF)

算法内容:

  • 选择:第一个满足请求的空白分区分配给作业。
  • 要求:将所有的空白分区按其在存储空间中地址递增的顺序链在一起。
  • 注意:没有把整个分区都分配给作业,作业只能切割下自己需要的大小。

算法倾向于优先利用存储空间中低址部分的空白区

优点:

  • 算法简单,查找速度快
  • 高址部分的大空白分区被划分的机会较少,能满足大作业的要求

缺点:

  • 常利用大分区满足小作业的要求,从而产生外零头,存储空间利用率不高
  • 小而无用的分区在头部,大而有用的分区在尾部,导致找到合适分区的速度降低

外零头就是头部小而无用的分区

4、下次适应算法(Next fit,NF)

是首次适应算法 FF 的一种变形

算法内容:

  • 选择:第一个满足请求的空白分区分配给作业。
  • 要求:将所有的空白分区按其在存储空间中地址递增的顺序链在一起。
  • 注意:没有把整个分区都分配给作业,作业只能切割下自己需要的大小。
  • 区别:FF 每次从链首开始查找,NF 每次从上一次找到的分区的下一个分区开始查找。

把存储空间中空白区构成一个循环链,到最后一个都不满足就回到第一个

优点:存储空间的利用更加均衡,不再使小的空白分区集中在存储器的低址部分。

缺点:存储器的高址部分不再能保留大的空白分区,可能满足不了大作业的要求。

二、基于索引搜索的分配算法

5、快速适应算法(Quik fit,QF)

算法内容:

  • 选择:索引表中能容纳作业的最小空白分区链表中的第一块。
  • 要求:将所有的空白分区按其容量大小进行分类。
  • 注意:该算法不会对分区进行分割。

具体做法:

  • 对具有相同容量的所有空白分区,单独设立一个空白分区链表。
  • 在内存中设立一张索引表,每个表项记录了对应类型空白分区链表的表头指针。

优点:

  • 查找效率高
  • 由于不会对分区进行分割,因此能保留大分区,满足大作业的要求
  • 由于不会对分区进行分割,因此也不会产生外零头

缺点:

  • 将分区归还给主存的算法复杂,系统开销较大
  • 分配时以进程为单位,一个分区只属于一个进程,因此或多或少存在浪费
  • 空闲分区划分越细,浪费则越严重

6、伙伴系统

Q:固定分区和动态分区方案存在的问题?

  • 内零头影响内存利用率
  • 算法复杂,回收分区时系统开销大
  • 并发执行的进程数量受到限制

Solution:伙伴系统

 

7、哈希算法

利用哈希快速查找的优点,以及空闲分区在可利用空间表中的分布规律:

  1. 建立哈希函数
  2. 构造一张哈希表,以空闲分区大小为关键字,每个表项记录对应空闲分区链表的表头指针
  3. 分配时根据所需空闲分区大小,通过哈希函数计算,即得到在哈希表中的位置
  4. 从中得到相应的空闲分区链表,实现最佳分配策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人技术在 PCB 制造中的关键优势

原创 | 文 BFT机器人 印刷电路板或 PCB 相当于神经系统的计算机。它是连接微型电子元件(电阻器、微芯片、连接器和电容器)的基础。它极其复杂,有些部分非常微小,只能在显微镜下才能看到。 机器人技术是 PCB 制造的核心。没有人能…

从事软件测试行业的你是“摆烂”还是“内卷”?

工作几年后,你还在持续地学习吗? 很多人可能在工作本身上已经耗掉了所有的精力,尤其是在软件行业,加班是常态,空余时间再想集中精力学习某方面的知识会很吃力。 如果像我一样,开始几年做的是基本的功能测…

API自动化测试:如何构建高效的测试流程

一、引言 在当前的软件开发环境中,API(Application Programming Interface)扮演了极为重要的角色,连接着应用的各个部分。对API进行自动化测试能够提高测试效率,降低错误,确保软件产品的质量。本文将通过实…

IT安全解决方案保护企业网络安全

全球每年报告数以万计的网络安全事件,云解决方案和远程工作的大规模采用意味着大多数组织的攻击面呈指数级增长。采用正确的网络安全解决方案是保护企业免受这些攻击的唯一方法。使用正确IT安全解决方案企业网络安全。 IT安全解决方案 ManageEngine IT安全解决方案…

5 月 Web3 游戏月报:增长有迹可循,但困局仍在

作者:lesleyfootprint.network 5 月 13 日,Line 旗下 NFT 子公司计划将于 2023 年发布五款 NFT 游戏。越来越多的游戏开发者和项目开始涌现,web3 游戏不再仅仅是投机的象征,而是真正有越来越多的项目方深耕与此。然而&#xff0c…

2023-6-13-IP配置知识补充学习

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

大数据分析平台释疑专用帖第二弹

不管是想要快速了解BI大数据分析平台,还是想要了解BI和自己的需求匹配度,都可关注我们的释疑专用贴。 1、可以分析直播数据吗? 严格来说,只要能够提供数据,就可以做数据可视化分析,直播数据也同理。 如果…

活动新闻稿为什么有企业采访,权威专家表述更容易被央媒报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 最近有很多新闻稿想让胡老师来同步一些央媒,或者地方头部媒体,因为媒体的权重都比较高,有些稿子写的比较平,缺乏亮点和新闻性,…

接口测试工具Postman学习之常用断言

目录 什么是断言? Postman常见断言方法介绍: 总结: 什么是断言? 断言——就是结果中的特定属性或值与预期做对比,如果一致,则用例通过,如果不一致,断言失败,用例失败。…

Java实训日志02

文章目录 八、项目开发实现步骤(二)创建项目1、创建Java项目2、创建目录,添加素材(1)创建help目录添加帮助文档(2)创建images目录添加图像素材(3)创建lib目录添加数据库驱…

直播预告 | 博睿学院:AIOps利器-混沌工程实践

混沌工程是通过应用一些经验探索的原则,来学习观察系统是如何反应的。应用混沌工程可以对系统抵抗扰动并保持正常运作的能力(稳定性)进行校验和评估,提前识别未知隐患并进行修复,进而保障系统更好地抵御生产环境中的失…

window Cmake开发环境搭建

背景 最近的项目需要从linux转战至Windows。因为之前的项目都是在linux环境下开发的,代码也是通过CMAKE编译。攻欲善其事,必先利其器。首先要考虑的是如何在Windows环境下使用cmake编译代码。 另外一个就是IDE的选择了,相比于动辄 好几个G的…

小程序中半屏打开其他小程序,开发者工具调试半屏

前言: 有需要是在当前小程序中,点击操作时,如果他没有注册会员,则强制去另一个小程序去注册会员,注册成功在返回,在这期间,打开另一个小程序是半屏来展示的。 实现效果: 在a小程序中…

Python七彩花朵

目录 前言 小海龟 花朵类 移动函数 画花朵 尾声 前言 来啦来啦来啦,小伙伴们快快来领取七彩花瓣雨吧!! 小海龟 老生常谈啦,在用python画樱花树前,我们先来了解一下turtle吧! 小海龟(Turtle)是P…

19c ASM命令

发现19c和11g有些asm命令参数不完全一致,这里记录下,持续更新 ###kfod命令 查看asm磁盘 #kfod disksall 查看asm磁盘组 #kfod opgroups 特定diskgroup情况 #kfod statustrue gdata 查看磁盘与磁盘组的对应关系# kfod disksall groupdiskgroup ds…

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

问题背景: 将服务注册到多个Eureka出现有点的服务只注册到一个Eureka有点的服务可以注册到多个Eureka的问题,有的注册不上,报错:registration status: 204 Eureka界面: Eureka1: Eureka2: 从…

是德DSOX3014T MSOX3014T数字逻辑示波器

概述: keysight是德DSOX3014T MSOX3014T数字逻辑示波器8.5 英寸电容触摸屏让操作和归档变得更加简单,可以加速您的测试,独有的区域触控触发技术支持您在几秒钟内轻松隔离信号,独有的区域触控触发技术支持您在几秒钟内轻松隔…

Java Swing界面 示例代码+效果

1.Swing 轻量级组件,由java编写 2.常用窗口 2.1 JFrame JFrame是一个容器,是一个顶层窗口 常用方法: setSize(int width, int height); setLocation(int x, int y);//窗口距离屏幕左上角位置,默认(0,0…

进行兼容性测试需要注意什么?

兼容性测试是一项非常重要的软件测试过程,它确保软件能够在各种不同的操作系统、浏览器和设备上正常运行,那进行兼容性测试需要注意什么? 1、确定测试范围 在进行兼容性测试之前,首先需要确定测试的范围。这包括要测试的操作系统、…

我收集的一些与学习相关的自用网站

目录 前言 一、学习教程网站 廖雪峰的官方网站 菜鸟教程网站 W3school网站 BEJSON校验网站 C语言中文网站 码农教程网站 JavaScript中文网站 CSS参考网站 Htmlcheatsheet 网站 练习CSS选择器网站 练习CSS Fiex网站 css自动生成流行布局和模式的集合的网站 交互式…