单处理机:
m: 实时任务数目,ci: 每次处理时间,pi: 周期时间
例如:有 6 个硬实时任务,周期时间都是 50 ms,每次的处理时间为 10 ms,则系统是不可调度的。
多处理机:(N: 处理机数目)
非抢占式调度算法
非抢占式轮转调度算法:用于工业生产的群控系统中。非抢占式优先调度算法:用于有一定时间要求的实时控制系统之中。抢占式调度算法 (按抢占发生的时间)
基于时钟中断抢占的优先权调度算法立即抢占的优先权调度算法算法是根据任务的开始截止时间和完成截止时间来确定任务的优先级。截止时间越早,其优先级越高。就绪队列中任务按其截止时间排列,队首任务先分配处理机。
非抢占式调度方式用于非周期实时任务 抢占式调度方式用于周期实时任务
有两个周期性任务,任务 A 的周期时间为 20ms,每个周期处理时间为 10ms;任务 B 的周期时间为 50ms,每个周期处理时间为 25ms。两个任务的到达时间,最后期限和执行时间如下图:
固定优先级调度(A 有较高优先级)
固定优先级调度(B 有较高优先级)
最早截止完成时间优先算法
最低松弛度优先算法(LLF,Least Laxity First) 低松弛 = 高紧急
算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急度越高,其优先级越高,并使之优先执行。
算法采用抢占调度方式,可用于调度具有完成截止时间的周期性实时任务。
松弛度 = 必须完成时间 - 本身剩余运行时间 - 当前时间
例如:
在一个实时系统中,有两个周期性实时任务 A 和 B,任务 A 要求每 20ms 执行一次,执行时间为 10ms;任务B 只要求每 50ms 执行,执行时间为 25ms。试按最低松弛度优先算法进行调度。
优先级倒置现象 高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
例如:有三个完全独立的进程 Task A、Task B 和 TaskC,Task A 的优先级最高,Task B 次之,Task C 最低。Task A 和 Task C 共享同一个临界资源 X。
根据优先级原则,高优先级进程优先执行。但此例中Task A 和 Task C 共享同一个临界资源,出现了不合理的现象。
高优先级进程 Task A 因低优先进程 Task C 被阻塞,又因为低优先进程 Task B 的存在延长了被阻塞的时间。
Priority Ceiling
进程 Task C 在进入临界区后,Task C 所占用的处理机就不允许被抢占。这种情况下,Task C 具有最高优先级(Priority Ceiling) 。
如果系统中的临界区都较短且不多,该方法是可行的。反之,如果 Task C 临界区非常长,则高优先级进程Task A 仍会等待很长的时间,其效果无法令人满意。
Priority Inheritance
当高优先级进程 Task A 要进入临界区使用临界资源 X时,如果已经有一个低优先级进程 Task C 正在使用该资源,可以采用优先级继(Priority Inheritance)的方法。
此时一方面 Task A 被阻塞,另一方面由 Task C 继承Task A 的优先级,并一直保持到 Task C 退出临界区。
