• 在实时系统中,可能存在着两类不同性质的实时任务,即HRT任务和SRT任务,它们都联系着一个截止时间。
  • 为保证系统能正常工作,实时调度必须能满足实时任务对截止时间的要求。
  • 实现实时调度应具备一定的条件。

实现实时调度的基本条件

  • 提供必要的信息:

    • 就绪时间,是指某任务成为就绪状态的起始时间,在周期任务的情况下,它是事先预知的一串时间序列。
    • 开始截止时间和完成截止时间,对于典型的实时应用,只须知道开始截止时间,或者完成截止时间。
    • 处理时间,一个任务从开始执行,直至完成时所需的时间。
    • 资源要求,任务执行时所需的一组资源。
    • 优先级,如果某任务的开始截止时间错过,势必引起故障,则应为该任务赋予“绝对”优先级;如果其开始截止时间的错过,对任务的继续运行无重大影响,则可为其赋予“相对”优先级,供调度程序参考。
  • 系统处理能力强:

    • 在实时系统中,若处理机的处理能力不够强,则有可能因处理机忙不过,而致使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。
    • 假定系统中有m个周期性的硬实时任务HRT,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件系统才是可调度的:
      操作系统  实时调度_操作系统
    • 提高系统处理能力的途径有二:一是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:
      操作系统  实时调度_操作系统_02
  • 采用抢占式调度机制:

    • 剥夺方式:一般都采用此
    • 非剥夺方式(实现简单):一般应使实时任务较小,以及时放弃CPU。
  • 具有快速切换机制:

    • 对中断的快速响应能力。对紧迫的外部事件请求中断能及时响应,要- 求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。
    • 快速的任务分派能力。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当的小,以减少任务切换的时间开销。

实时调度算法的分类

  • 非抢占式调度算法
    • 时间片轮转 秒级
    • 非抢占优先权(协同) 秒~毫秒级
  • 抢占式调度算法
    • 只要不在临界区即抢占(中断引发)
    • 基于抢占点抢占
    • 时钟中断抢占优先权 毫秒级
    • 立即抢占immediate preemption 毫秒~微秒级

操作系统  实时调度_操作系统_03

操作系统  实时调度_操作系统_04

最早截止时间优先 EDF调度算法

  • 根据任务的截止时间来确定任务的优先级
  • 截止时间越早,优先级越高
  • 可以是抢占式或非抢占式

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

操作系统  实时调度_操作系统_05

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

  • 任务A和任务B的周期时间分别为20 ms和50 ms,每个周期的处理时间分别为10ms和25ms。

最低松弛度优先LLF(Least Laxity First)算法

  • 该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。

  • 任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。

  • 主要用于可抢占调度方式中。

  • 实用于周期性的调度任务。

  • 系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。

  • 松弛度也是一种优先级,它反映的是任务的紧急程度。

  • 松弛度=必须完成时间-其本身运行时间-当前时间
    操作系统  实时调度_操作系统_06