操作系统——EDL和LLF算法详解

实时调度的算法分类

分类:

  • 根据实时任务性质的不同,分为硬实时调度算法和软实时调度算法;
  • 按调度方式的不同,分为非抢占调度算法和抢占调度算法;
  • 根据调度程序调度时间的不同,分为静态调度算法和动态调度算法。
  • 多处理机环境下,可分为集中式调度和分布式调度两种算法

最早截止时间优先EDF算法

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

在这里插入图片描述
抢占式调度方式用于周期实时任务
下图中有两个周期性任务,任务A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的处理时间为25ms
在这里插入图片描述

解:
在t=0时,A1和B1同时到达A1的开始截止时间为10,B1为25,所以A1执行,当A1执行完后,只有B1了,所以让B1执行10,然后A2到达,此时B1开始截止时间为35,A2为30,所以A2执行10,然后只有B1了,所以让B1继续执行10,此时A3到达,A3开始截止时间为50,B1为45,所以B1继续执行5(B1全部执行完),后只有A3了,所以让A3执行5,此时B2到了,但是B2开始截止时间为75,A3为55,所以A3继续执行5,然后只剩下了B2,所以让B2执行5,此时A4又到了,A4的开始截止时间为70,B2为80,所以A4执行10,然后又是只有B2了,所以B2执行执行10,然后A5到了,A5的开始截止时间为90,B2的也是90,为了符合实际和节省资源,所以让B2继续执行10,然后A5执行10。

最低松弛度优先LLF算法

该算法是根据任务紧急(或松弛)的程度,来确定任务的先级。任务的紧急程度越高,为之赋予的优先级就越高。
例如,任务A在200ms时必须完成,本身运行时间100ms,则必须在100ms之前调度执行,A任务的紧急(松弛)程度为100ms,又如任务B在400ms是必须完成,需运行150ms,其松弛程度为250ms.

该算法主要用于抢占调度方式中

假如在一个实时系统中,有两个周期型实时任务A,B,任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为25ms;由此可得知A,B任务每次必须完成的时间分别为A1、A2、A3…和B1、B2、B3…

在这里插入图片描述

解:
做此题需要明白:松弛度 = 完成 截止时间 - 需要运行时间 - 当前时刻
当某一时刻算出某一进程的松弛度为0,代表着这个进程必须马上执行!!!!!
在t=0时,A1的松弛度为:20-10-0=10,B1的松弛度为50-25-0=25,所以让A1执行,然后剩下了B1,因为没得选所以让B1执行,在t=20时,B1的松弛度为50-25-20=15,A2到了,A2的松弛度为:40-10-20=10不为0,没有到达必须要运行的地步,所以B1继续运行,当t=30时,A2的松弛度为0,需要马上执行A2,然后A3到了,A3松弛度为10,B1松弛度为50-5-40=5,切换B1运行,后只剩下A3,运行A3,当t=50时B2到了,B2松弛度为100-25-50=25,A3松弛度为60-5-50=5,所以继续执行A3,然后只剩下B2了,所以执行B2, 当t=60时A4到了,A4松弛度为10,B2的松弛度为100-20-60=20,而A4的松弛度并未达到0,所以继续运行B2,当t=70时,A4的松弛度为0,所以运行A4,之后A5到达,A5的松弛度为10,B2的松弛度为100-10-80=10,两者相等,但是为了符合实际和节省资源,所以让B2继续执行10,然后A5执行10。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值