【若存在错误或不当之处,及时评论或者与我联系】
使用最低松弛度优先调度算法,实时系统中存在三个周期性实时任务: 任务1周期10ms处理5ms,任务2周期20ms,处理10ms,任务3周期50ms处理15ms。请分析系统调度情况,若能正常调度,请给出调度顺序,否则说明原因。
解:
其实很明显,调度不过来,不能正常调度。原因如下:
首先,任务图如下:
那么,有了这个任务图之后,任务如何执行呢?
在t0=0时,第一周期的任务1、2、3都到达战场,这个时候,需要计算松弛度:
1期任务1松弛度 = 10 - 5 - 0 = 5
1期任务2松弛度 = 20 - 10 - 0 = 10
1期任务3松弛度 = 50 - 15 - 0 = 35
所以执行1期任务1,并且这个任务直到执行结束也没有被抢占。
在t1=5时,此时有第一周期任务2、3就位,这个时候,需要计算松弛度:
1期任务2松弛度 = 20 - 10 -5 = 5
1期任务3松弛度 = 50 - 15 - 5 =30
所以执行1期任务2,并且这个任务直到执行结束也没有被抢占。
在t2=15时,此时正在等待的任务有1期任务3,2期任务1,需要计算松弛度:
1期任务3松弛度 = 50 - 15 - 15 = 20
2期任务1松弛度 = 20 - 15 - 5 = 0
所以需要执行2期任务1,并且可以直接执行完毕也没有被抢占。
在t3=20时,此时正在等待的任务有3期任务1、2期任务2、1期任务3,需要计算松弛度:
3期任务1松弛度 = 30 - 20 - 5 = 5
2期任务2松弛度 = 40 - 20 -10 =10
1期任务3松弛度 = 50 - 20 -15 = 15
所以执行3期任务1,并且可以直接执行完毕也没有被抢占。
在t4=25时,此时正在等待的任务有2期任务2、1期任务3,需要计算松弛度:
2期任务2松弛度 = 40 - 25 -10 = 5
1期任务3松弛度 = 50 -25 - 15 =10
所以执行2期任务2,花费10 ms时间,并且可以直接执行完毕也没有被抢占。
在t5=35时,此时正在等待的任务有4期任务1、1期任务3,需要计算松弛度:
4期任务1松弛度 = 40 - 35 - 5 = 0
1期任务3松弛度 = 50 - 35 - 15 =0
所以这个时候两个任务都需要立刻执行,这里将导致必须错过一个任务,此周期任务无法正常调度,此时的正在进行的任务图如下: