1)可调度性判断:

  • RM算法:根据RM算法的充分调度条件,计算每个任务的周期T=Tk,然后按照周期从小到大排序,得到任务执行顺序为T1-T2-T3。计算任务的CPU利用率:U=Σ(ei/pi)=0.44+0.33+0.33=1.1>1,因此该任务集不可调度。
  • EDF算法:根据EDF算法的充分调度条件,计算每个任务的相对截止时间D=Dk,然后按照截止时间从小到大排序,得到任务执行顺序为T1-T2-T3。计算任务的CPU利用率:U=Σ(ei/pi)=0.44+0.33+0.33=1.1>1,因此该任务集不可调度。

2)LLF算法情况下各任务执行情况:

  • LLF算法:按照LLF算法的调度规则,选择剩余利用率最小的任务进行调度。在时间0时刻,三个任务都可以开始执行,因此选择剩余利用率最小的T1开始执行。执行完T1后,T2和T3都可以开始执行,但此时剩余利用率最小的是T3,因此选择执行T3。最后执行T2。根据这个规则,继续执行下去,可以得到如下的执行情况图:

LLF算法下的任务执行情况

  • 时间0-4:T1开始执行,执行完后剩余利用率为0.75。T2和T3都可以开始执行,但T3的剩余利用率最小,选择执行T3。
  • 时间4-10:T3执行完后,剩余利用率最小的是T2,因此选择执行T2。执行完后,剩余利用率为0.25。
  • 时间10-12:T1开始新一轮执行,执行完后剩余利用率为0.5。
  • 时间12-18:T3开始新一轮执行,执行完后剩余利用率为0.17。
  • 时间18-24:T2开始新一轮执行,执行完后剩余利用率为0.25。
  • 时间24-28:T1开始新一轮执行,执行完后剩余利用率为0。
  • 时间28-30:T3开始新一轮执行,执行完后剩余利用率为0.17。
  • 时间30-36:T2开始新一轮执行,执行完后剩余利用率为0。
  • 时间36-40:T1开始新一轮执行,执行完后剩余利用率为0。
  • 时间40-42:T3开始新一轮执行,执行完后剩余利用率为0。
  • 时间42-44:T2开始新一轮执行,执行完后剩余利用率为0。

可以看到,在LLF算法下,所有任务都可以得到调度,且没有任务错过截止时间。

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

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

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