非抢占式调度方式用于非周期实时任务
- 任务1最早到达最早开始执行
- 任务1执行过程当中任务二、任务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;
- 以此类推,每一个任务有序无错过进行,能知足系统的要求。
- 周期性任务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;
- 以此类推,可得下图: