我正在研究任务调度程序,我想使用EDF调度。我需要安排的任务集只包含截止日期等于其期限的任务,并且必须定期安排任务。我遇到的问题是,一旦开始执行任务就无法中断。
我知道EDF是一种最优的调度算法,只有当任务被预先安排在单个处理器上时,我才想知道是否可能会对任务进行任何测试或约束,以验证我的任务集可以是使用非先发制人的EDF安排。
非常感谢任何帮助。谢谢
答案 0 :(得分:1)
设e_i任务i的执行时间,P_i为其周期,e_m = max_i(e_i)。然后,您可以保证您的任务集是可行的,如果
U = sum_i((e_i + e_m)/ P_i)< = 1
理由:您可能知道Liu / Layland标准sum_i(e_1 / P_i)< = 1.不可预先执行的任务可被视为对更高优先级任务的阻止。阻止时间可以被视为额外的执行时间。最糟糕的情况是,在最长(较低优先级)任务开始后,更高优先级的任务会立即就绪。
修改强> 我已经得出了临时的条件。但是,它只是一个足够的。为了更精确的分析,必须考虑任务只能被具有较大相对期限的另一个任务阻止,即,对于所使用的模型,具有较长周期的任务,例如。例如,[JL00] *,定理6.18。
因此,对于具有任务T_1,...,T_n的任务集,周期P_1 <1。 P_2&lt; ......&lt; P_N, 一个人可以计算
L'_i = e_i + max_{j=i...n}(e_j).
然后,任务集对于
是可行的sum_i L'_i/P_i <= 1.
C.f。 [JL00],关于非抢占性关键部分的第8.3节。
* [JL00] Jane W.S. Liu,Real-Time Systems,Prentice Hall,2000