实时调度算法之EDF算法

最早截止时间优先即EDF(Earliest Deadline First)算法

该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。最早截止时间优先算法既可用于抢占式调度,也可用于非抢占式调度方式中。

(1)非抢占式调度方式用于非周期实时任务

下图示出了将该算法用于非抢占式调度方式之例。该例子中具有四个非周期任务,它们先后到达。系统首先调度任务1执行,在任务1执行期间,任务2、3又先后到达。由于任务3的开始截止时间早于任务2,故系统在任务1后将调度任务3执行。在次期间又到达作业4,其开始截止时间仍是早于任务2的,故在任务3执行完后,系统又调度任务4执行,最后才调度任务2执行。
在这里插入图片描述

(2)抢占式调度方式用于周期实时任务

下图示出了将最早截止时间优先算法用于抢占式调度方式之例。在该例中有两个周期性任务,任务A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的处理时间为25ms。图中的每一行示出了两个任务的到达时间、最后期限和执行时间图。其中任务A的到达时间为0,20,40,···;任务A的最后期限为20,40,60,···;任务B的到达时间为0,50,100,···;任务B的最后期限为50,100,150,···。
在这里插入图片描述
为了说明通常的优先级调度不能适用于实时系统,该图特增加了第二和第三行。在第二行中假定任务A具有较高的优先级,所以在t=0ms 时,先调度A1执行,在A1完成后(t=10ms)才调度B1执行;在t=20ms时,调度A2执行;在t=30ms时,A2完成,又调度B1执行;在t=40ms时,调度A3执行;在t=50ms时,虽然A3已完成,但B1已错过了它的最后期限,这说明了利用通常的优先级调度已经失败,第三行与第二行类似,只是假定任务B具有较高的优先级。
第四行是采用最早截止时间优先算法的时间图。在t=0时,A1和B1同时到达,由于A1的截止时间比B1早,故调度A1执行;在t=10时,A1完成,又调度B1执行;在t=20时,A2到达,由于A2的截止时间比B2早,B1的截止时间要比A3早,仍应让B1继续执行直到完成(t=45),然后再调度A3执行;在t=55时,A3完成,又调度B2执行。在该例中利用最早截止时间优先算法可以满足系统的要求。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值