机器调度算法RMS和EDF

来源:互联网 发布:sql group by count 编辑:程序博客网 时间:2024/05/29 19:27


        任务按单调速率优先级分配(RMPA)的调度算法,称为单调速率调度(RMS)。RMPA是指任务的优先级按任务周期T来分配。它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级,周期长的任务优先级低。

       RMS算法厉害的地方,是证明了在所有静态的多任务调度算法中:

           1.如果存在一种静态调度算法可以完成调度,那么RMS算法一定可以调度。

           2.如果RMS算法不能调度,那么所有的静态算法都不能调度。

这貌似就说明了RMS算法是最优的调度方法,证明过程参考百度百科,过程如下:

        假设一个任务集S采用其他优先级算法可以调度,在该调度方案中,一定存在优先级相邻的任务i和任务j,满足一下两个条件:

                           1.Ti > Tj,任务i的处理时间大于任务j.

                           2.Pi>Pj,i的优先级大于j。

       很显然,如果不存在上述假设,它就已经是RMS。

         把Ti和Tj的优先级Pi和Pj互换,明显可以看出这时S仍然可以调度,因为在所有任务同时请求的情况下,交换这两个任务不会影响其它任务的完成时间,同时这两个任务都可以在各自期限内完成.按照这样的方法,其他任何静态优先级调度最终都可以转换成RMS。

同理如果,RMS不可调度,用同样的思路也可以证明。

         与之相比,EDF是一种动态的调度算法。EDF全称Earliest Deadline First。EDF在调度时,任务的优先级根据任务的截止时间动态分配。截止时间越短,优先级越高。这种调度策略是最优的,已被证明所有负载小于等与1的任务集使用EDF都是是可调度的。

        比较一下这两种算法。EDF是最优的,调度能力最强,同时,处理器的利用率可达100%,而RMS只能到80%。而且,RMS上下文切换更加频繁。看上RMS一无是处,其实不然。RMS的一个优点就是简单,优先级确定后,直接根据优先级调度。同时,当任务集瞬间过载时,RMS会临危不乱,严格按照优先级工作,我们也可以分析出任务的丢失情况。而EDF,系统行为不可预测, 可能发生多米诺骨牌现象, 一个任务丢失时会引起一连串的任务接连丢失。

      下面是一个简单的例子,展示了两种调度算法的工作情况。


0 0