Preemption-Threshold Scheduling是实时系统调度算法中的一种,本文主要分析Preemption-Threshold Scheduling(PTS)的可调度性,怎样在实时系统中应用PTS进行调度,在最坏条件下PTS如何较传统方法改进efficiency等。
实时分析技术让我们知道一个任务集合是否可调度——也就是所有任务在其deadline内都完成了。这需要每个任务的属性{Ti, Ci, Di}, Ti-执行周期(minimum execution period), Ci-执行时间,Di-deadline。
实时系统内核典型采用优先级驱动的调度算法,调度策略可以是静态or动态的。在fixed-priority调度策略中,运行期内不改变任务优先级,经典静态优先级算法是Rate Monotonic (RM), Deadline Monotonic (DM), 和Audsley的 optimal priority assignment algorithms. 而dynamic-priority策略中,相同task的不同jobs(different jobs belonging to same task)可以设置不同优先级,最典型的就是Earliest deadline first (EDF)算法,该算法中,每个job的优先级与其绝对deadline(剩余期限时间)成反比,下面我们讨论这些调度方法的基本可调度试验。
Fixed-priority策略的可调度性分析可以应用level-i busy period分析。定义bound是模拟一个task中所有jobs进行调度的最坏情形,这样的bound产生该task的worst-case response time(WCRT),用Wi表示,如果每个task的WCRT都不大于其各自的deadline,那么我们可以说整个workload是可调度的。那么一个task的WCRT如何得到呢?
一项任务的WCRT可以考虑成最坏情形下单个job从到达到执行的响应时间。它由两部分组成,①相同or高优先级任务创造中断,②低优先级任务导致它阻塞。在动态优先调度策略中,我们只需要保证cpu的的utilization<=1.
刚才说到WCRT的两部分,①相同or高优先级任务造成中断,②低优先级任务导致它阻塞;
为什么会有第二项呢 ?
•Tau1 can preempt Tau2 onlyif priority of Tau1 isstrictly greater than preemption threshold of Tau2
如上图所示,每个task有两个priority,one priority to enqueue (nominal priority) , another for preempt (threshold priority),nominal priority是对自己超越别人而言的,而threshold priority是对别人超越自己而言的。所以只要high priority 的任务的 threshold priority 设置的够低,低优先级任务就可以导致高优先级任务的阻塞。
一项任务Ti的WCRT在这种情况下出现:低优先级任务Tj拥有高preemption-threshold,而Tj出现在Ti之前。这将影响一项任务的最坏开始时间,最坏完成时间和最坏响应时间。
总结:
PTS可以在减少抢占的条件下满足实时系统的deadline,这可以使系统跑得更快,在内容转换上浪费更少时间(比如Cache置换cost更小,工作更effectively),在空间少消耗更少的栈空间,可以让系统共享更快存储。而且可以进行power optimization.
Reference:
How PTS benefits embedded systems designs
关于实时系统任务调度策略的讨论与交流,敬请关注本博客和新浪微博Sophia_qing。