- 在实时系统中,可能存在着两类不同性质的实时任务,即HRT任务和SRT任务,它们都联系着一个截止时间。
- 为保证系统能正常工作,实时调度必须能满足实时任务对截止时间的要求。
- 实现实时调度应具备一定的条件。
实现实时调度的基本条件
提供必要的信息:
- 就绪时间,是指某任务成为就绪状态的起始时间,在周期任务的情况下,它是事先预知的一串时间序列。
- 开始截止时间和完成截止时间,对于典型的实时应用,只须知道开始截止时间,或者完成截止时间。
- 处理时间,一个任务从开始执行,直至完成时所需的时间。
- 资源要求,任务执行时所需的一组资源。
- 优先级,如果某任务的开始截止时间错过,势必引起故障,则应为该任务赋予“绝对”优先级;如果其开始截止时间的错过,对任务的继续运行无重大影响,则可为其赋予“相对”优先级,供调度程序参考。
系统处理能力强:
- 在实时系统中,若处理机的处理能力不够强,则有可能因处理机忙不过,而致使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。
- 假定系统中有m个周期性的硬实时任务HRT,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件系统才是可调度的:
- 提高系统处理能力的途径有二:一是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:
采用抢占式调度机制:
- 剥夺方式:一般都采用此
- 非剥夺方式(实现简单):一般应使实时任务较小,以及时放弃CPU。
具有快速切换机制:
- 对中断的快速响应能力。对紧迫的外部事件请求中断能及时响应,要- 求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。
- 快速的任务分派能力。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当的小,以减少任务切换的时间开销。
实时调度算法的分类
- 非抢占式调度算法
- 时间片轮转 秒级
- 非抢占优先权(协同) 秒~毫秒级
- 抢占式调度算法
- 只要不在临界区即抢占(中断引发)
- 基于抢占点抢占
- 时钟中断抢占优先权 毫秒级
- 立即抢占immediate preemption 毫秒~微秒级
最早截止时间优先 EDF调度算法
- 根据任务的截止时间来确定任务的优先级
- 截止时间越早,优先级越高
- 可以是抢占式或非抢占式
非抢占式调度方式用于非周期实时任务
抢占式调度方式用于周期实时任务
- 任务A和任务B的周期时间分别为20 ms和50 ms,每个周期的处理时间分别为10ms和25ms。
最低松弛度优先LLF(Least Laxity First)算法
该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。
任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。
主要用于可抢占调度方式中。
实用于周期性的调度任务。
系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。
松弛度也是一种优先级,它反映的是任务的紧急程度。
松弛度=必须完成时间-其本身运行时间-当前时间