最早截止日期优先 (EDF) CPU 调度算法
最早截止日期优先 (EDF)是一种用于实时系统的最佳动态优先级调度算法。
它可用于静态和动态实时调度。
EDF 使用作业的优先级进行调度。它根据绝对截止日期为任务分配优先级。最接近截止日期的任务获得最高优先级。优先级以动态方式分配和更改。与实时系统中的其他调度算法相比,EDF 非常高效。它可以使 CPU 利用率达到 100% 左右,同时仍然保证所有任务的期限。
EDF 包括内核重载。在 EDF 中,如果 CPU 使用率小于 100%,则表示所有任务都已达到期限。 EDF 找到了一个最优可行的时间表。可行调度是指系统中的所有任务都在截止日期内执行的调度。如果 EDF 不能为实时系统中的所有任务找到一个可行的调度,那么就意味着实时系统中没有其他任务调度算法可以给出一个可行的调度。当任务变得可运行时,所有准备好执行的任务都应该向 EDF 宣布它们的截止日期。
EDF 调度算法不需要任务或进程是周期性的,并且任务或进程需要固定的 CPU 突发时间。在 EDF 中,如果任何其他具有较早截止日期的周期性实例准备好执行并变为活动状态,则任何正在执行的任务都可以被抢占。最早截止日期优先调度算法中允许抢占。
例子:
考虑两个进程 P1 和 P2。
设 P1 的周期为 p 1 = 50
令P1的处理时间为t 1 = 25
设 P2 的周期为周期2 = 75
令P2的处理时间为t 2 = 30
解决步骤:
- Deadline pf P1 较早,所以 P1>P2 的优先级。
- 最初 P1 运行并完成其执行 25 次。
- 25 次后,P2 开始执行,直到 50 次,此时 P1 才能执行。
- 现在,比较(P1, P2) = (100, 75)的deadline,P2继续执行。
- P2 在时间 55 完成其处理。
- P1 开始执行,直到时间 75,此时 P2 才能执行。
- 现在,再次比较(P1, P2) = (100, 150)的deadline,P1继续执行。
- 重复以上步骤...
- 最后在时间 150,P1 和 P2 具有相同的截止时间,因此 P2 将继续执行,直到其处理时间之后 P1 开始执行。
EDF调度算法的局限性:
- 瞬态过载问题
- 资源共享问题
- 高效实现问题