📜  实时系统中的最小松弛时间 (LST) 调度算法

📅  最后修改于: 2022-05-13 01:56:11.807000             🧑  作者: Mango

实时系统中的最小松弛时间 (LST) 调度算法

最小松弛时间 (LST)是一种用于实时系统的动态优先级驱动的调度算法。

在 LST 中,系统中的所有任务都根据它们的松弛时间分配了一些优先级。具有最少空闲时间的任务具有最高优先级,反之亦然。

任务的优先级是动态分配的。

可以使用以下公式计算松弛时间:

slack_time = ( D - t - e' )

这里D :任务的截止日期
t :循环开始时的实时时间。
e' :任务的剩余执行时间。



具有最小松弛时间的任务被分派到 CPU 执行,因为它具有最高优先级。

超级周期(HP)是甘特图的时间周期,它等于系统中所有任务周期的 LCM。

在时间 t,任务的松弛度等于 (dt) 减去完成任务剩余部分所需的时间。

这是一个复杂的算法,这就是为什么它需要额外的信息,如执行时间和截止日期。仅当允许抢占时,最少空闲时间调度算法才能最佳地工作。当且仅当一组可运行的任务存在可行的调度时,它才能产生一个可行的调度。

它与最早的截止日期优先不同,因为它需要要调度的任务的执行时间。因此,由于实时系统中任务的突发时间难以预测,因此有时实现最小松弛时间调度算法是不切实际的。

与 EDF(Earliest Deadline First)调度算法不同,LST 可能未充分利用 CPU,从而降低效率和吞吐量。

如果在 LST 中准备好执行的两个或多个任务,并且任务具有相同的松弛时间或松弛值,则根据 FCFS(先来先服务)原则将它们分派到处理器。

例子:

  • 在时间 t=0:只有任务 T1 已经到达。 T1 一直执行到时间 t=4。
  • 在时间 t=4:T2 已到达。
    T1的松弛时间:33-4-6=23
    T2的松弛时间:28-4-3=21
    因此,T2 开始执行,直到 T3 到达时的时间 t=5。
  • 在时间 t=5:
    T1的松弛时间:33-5-6=22
    T2的松弛时间:28-5-2=21
    T3的松弛时间:29-5-10=12
    因此 T3 开始执行直到时间 t=13
  • 在时间 t=13:
    T1的松弛时间:33-13-6=14
    T2的松弛时间:28-13-2=13
    T3的松弛时间:29-13-2=14
    因此 T2 开始执行直到时间 t=15
  • 在时间 t=15:
    T1的松弛时间:33-15-6=12
    T3的松弛时间:29-15-2=12
    因此 T3 开始执行直到时间 t=16
  • 在时间 t=16:
    T1的松弛时间:33-16-6=11
    T3的松弛时间:29-16-=12
    因此 T1 开始执行直到时间 t=18,依此类推。