-
最早截止时间优先算法(Earliest Deadline First,EDF)
- 定义:EDF算法是指根据任务的截止时间来确定任务的优先级的算法,任务截止时间越早,其优先级愈高。
- 作用对象:即可用于抢占式调度方式中,也可以用于非抢占式调度方式中。
-
非抢占式调度方式用于非周期实时任务
- 任务1最先到达最先开始执行
- 任务1执行过程中任务2、任务3到达,由于任务3截止时间更早,其优先级愈高,所以执行完任务1后执行任务3
- 任务3执行过程中任务4到达,由于任务4截止时间更早优先级愈高,任务3执行完后执行任务4,
- 最后执行任务2
-
抢占式调度方式用于周期实时任务
- 周期任务A,周期时间20ms,处理时间10ms
- 周期任务B,周期时间50ms,处理时间25ms
- 为了说明通常的优先级调度不能适用于实时系统,该图增加了固定优先级调度的第二行和第三行
- 第二行中
- 固定A,B优先级,且优先级A>B;
- 先执行A1,A1执行完后执行B1;
- B1执行了10ms后被A2抢占;
- A2执行完后继续执行B2;
- B2执行10ms后被A3抢占;
- A3执行完后已经到达B2的截止时间了,但B2总共执行了20ms,很明显低于所需处理时间25ms。
- 第三行中
- 固定A,B优先级,且优先级B>A;
- 先执行B1,B1执行完后已经过了A1的截止时间,可知A1根本就没能执行到。
- 第四行中
- A1截止时间早于B1截止时间,先执行A1;
- A1执行完执行B1,B1执行10ms后A2到达;
- A2截止时间早于B1截止时间,先执行A2;
- A2执行完执行B1,B1执行10ms后A3到达;
- B1截止时间早于A3截止时间,继续执行B3;
- 以此类推,每个任务有序无错过进行,能满足系统的要求。
-
-
最低松弛度优先算法(Least Laxity First,LLF)
- 定义:LLF算法是指根据任务的紧急(或松弛)程度来确定任务的优先级的算法,任务紧急程度愈高,其优先级就愈高。
- 作用对象:主要用于可抢占式调度方式中。
- 任务松弛度计算公式:任务的松弛度=必须完成时间-其本身的运行时间-当前时间
- 周期性任务A,要求每20ms执行一次,执行时间为10ms;
- 周期性任务B,要求每50ms执行一次,执行时间为25ms;
- t=0s时,A1的松弛度=20ms-10ms-0ms=15ms,B1的松弛度=50ms-25ms-0=25ms,先执行A1;
- A1执行完后,B1的松弛度=50ms-25ms-10ms=15ms,A2的松弛度=40ms-10ms-10ms=20ms,执行B1;
- B1执行10ms后,B1的松弛度=50ms-25ms-20ms=5ms,A2的松弛度=40ms-10ms-20ms=10ms,继续执行B1;
- 以此类推,可得下图: