实例分析首次适应算法、最佳适应算法、最差适应算法

关于首次适应算法、最佳适应算法和最差适应算法,先看一下百度百科的解释,已经说出了三者的最大区别。


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

  • 97
    点赞
  • 230
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值