1. RM算法下,计算每个任务的周期时间P和执行时间e的比值U,即U = e/P,得到: U1 = 0.25, U2 = 0.33, U3 = 0.33 因为U1 + U2 + U3 = 0.91 < 1,所以该任务集在RM算法下可调度。

EDF算法下,计算每个任务的截止时间D,得到: D1 = 4, D2 = 14, D3 = 23 按照D从小到大排序,得到执行顺序为T1-T2-T3,因此该任务集在EDF算法下可调度。

  1. LLF算法是一种动态优先级算法,每个任务的优先级在执行过程中不断调整。首先,计算每个任务的松弛度,即剩余时间与截止时间之差,得到: Slack1 = 3, Slack2 = 2, Slack3 = -1 因为Slack3为负数,所以T3的优先级最高,执行T3。执行T3时,T1和T2的松弛度分别为2和11,因此T1的优先级更高,执行T1。执行T1时,T2的松弛度为7,因此执行T2。执行完T2后,T3的松弛度变为17,比T1的松弛度更高,因此执行T3。执行T3时,T1和T2的松弛度分别为16和5,因此执行T2。执行T2后,T1的松弛度为12,比T3的松弛度更高,因此执行T1。执行T1时,T3的松弛度为24,比T2的松弛度更高,因此执行T3。执行T3后,T1和T2的松弛度分别为20和9,因此执行T2。执行T2时,T1的松弛度为16,比T3的松弛度更高,因此执行T1。执行T1后,T3的松弛度变为31,比T2的松弛度更高,因此执行T3。执行T3时,T1的松弛度为28,比T2的松弛度更高,因此执行T1。执行T1后,T2的松弛度为23,比T3的松弛度更高,因此执行T2。执行T2时,T3的松弛度为34,比T1的松弛度更高,因此执行T3。执行T3后,T1和T2的松弛度分别为32和21,因此执行T2。执行T2时,T1的松弛度为28,比T3的松弛度更高,因此执行T1。执行T1后,T3的松弛度变为45,比T2的松弛度更高,因此执行T3。执行T3时,T1和T2的松弛度分别为44和33,因此执行T2。执行T2后,时间到达44,任务执行情况如下图所示:

     T3      T1      T2
    

0 | | | 4 | | | 8 | | | 12 | | | 16 | | | 20 | | | 24 | | | 28 | | | 32 | | |
36 | | |
40 | | |
44 | | |

其中,每个任务的执行时间和松弛度情况如下表所示:

时间 任务 执行时间 松弛度 0 T3 6 -1 1 T1 1 2 2 T2 4 11 3 T2 1 10 4 T3 6 17 5 T1 1 16 6 T2 4 7 7 T2 1 6 8 T3 6 24 9 T1 1 23 10 T2 4 15 11 T2 1 14 12 T3 6 31 13 T1 1 28 14 T2 4 23 15 T2 1 22 16 T3 6 34 17 T1 1 32 18 T2 4 21 19 T2 1 20 20 T3 6 45 21 T1 1 44 22 T2 4 33 23 T2 1 32 24 T3 6 56

可以看出,LLF算法下,任务执行顺序为T3-T1-T2-T2-T3-T1-T2-T2-T3-T1-T2-T2-T3-T1-T2-T2-T3-T1-T2-T2-T3,直到时间到达44时,所有任务均执行完毕。

任务调度算法分析:RM、EDF和LLF算法

原文地址: https://www.cveoy.top/t/topic/nAoH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录