开篇:润墨网以专业的文秘视角,为您筛选了一篇抢占式动态优先级实时调度算法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:在嵌入式系统中,任务调度器的好坏很大程度上决定了系统的性能。该文分析了实时系统中具有代表性的静态和动态调度算法,结合剩余时间和EDF算法以及中断时抢占策略,结合各自的优点,提出一种新的动态调度算法——抢占式剩余时间算法。
关键词:截止期限 EDF 周期任务 实时调度
一、基于优先级的实时调度算法
在实时任务调度中,大量研究都集中于对调度策略的应用。基于优先级的实时调度算法是一种常见的调度算法,这类算法主要包括速率单调算法(Rate.Monotonic,RM)、最早截止期优先算法(Earliest Deadline First,EDF)。
RM算法具有简单的实现机制和较低的调度开销,被广泛应用于实时调度领域。然而仅以任务的周期作为优先级的判定条件,忽视了某些对于用户来说比较重要而周期长的任务,对一些周期负载较重的情况是不合适的。
最早截止期限优先算法(EDF),是一种动态调度算法。该算法的优先级根据他们的截止期限(Deadline)确定,具有最近的截止期限的任务具有最高的优先级。
如参考文献[3]中提到了一种RM改进的动态调度剩余时间算法,在每一次任务调度前,计算每一个等待任务的剩余时间,并按照各任务的剩余时间的长短为每一个任务分配或重新分配一个优先级,剩余时间越短,优先级越高。
二、抢占式剩余时间算法
1.算法描述
该算法对剩余时间算法的剩余时间计算方式做出改进,按照改进后的剩余时间为每一个任务分配或重新分配优先级,根据新的优先级采用抢占式任务调度策略。其中剩余时间Ts=Td-Tw,Td为任务截止期限,Tw为任务等待时间。
该算法按以下几种情况讨论。
(1)按任务的剩余时间大小对任务的优先级进行设定,剩余时间越短优先级越高。
(2)如果当前优先级队列中优先级最高的任务的剩余时间大于该任务需要运行的时问,则该任务被调用执行,否则不予执行。
(3)在优先级队列中,如果优先级相同,则考虑截止时间,截止时间小的优先执行。
(4)采用中断式抢占方式,不必等待当前执行任务结束,每个任务有一个独立的任务堆栈。
2.算法流程
算法步骤如下,在这里,时间单位被看作是某个假定时间基的滴答(tick)数。
步骤一:初始化TCB,设置时钟的初始时间。
步骤二:任务等待时间初始化为0,计算剩余时间,设置任务静态优先级。
步骤三:更新计数器。
步骤四:每隔一定时钟周期更新一次剩余时间,根据剩余时间重新设置任务优先级。
步骤五:若优先级队列中当前最高优先级高于当前执行任务优先级或当前任务执行完毕。
步骤六:产生中断,但前执行任务执行参数压入相应任务对战,当前状态改为就绪状态。
步骤七:调度优先级最高的任务执行,判断该任务的剩余时间和它执行时需要运行的时间,如果剩余时间小于执行时间,则该任务不被执行。将其暂时从优先队列里删除。继续从优先队列里调度下一个任务来进行相同的判断。检查任务当前状态,若堆栈内有执行参数信息,则恢复参数信息继续执行。
步骤八:返回步骤三,在此调度。
3.算法假设条件
为了简化分析,对任务集特征做出如下假设:
(1)所有的任务都是周期性的,并且具有已知的周期。
(2)各个任务彼此相互独立。
(3)所有系统开销、中断处理、调度和上下文切换的时间被忽略(即假设开销为零)。
(4)任务之间在任意位置都是可抢占的,不存在临界区。
(5)所有任务的调度都是在单处理器上进行。
三、结束语
通过对实时系统中的经典调度算法进行分析、比较,在周期性任务组成的实时系统中,结合静态算法具有较小运行开销和动态EDF算法具有较小调度开销的特点以及剩余时间算法的及时性,对任务调度算法进行了改进,是对嵌入式系统调度策略的一次有益探索。
参考文献:
[1]董吉文,张阳.嵌入式实时操作系统任务调度算法的改进与应用[J].计算机应用,2009(29).
[2]李孝杰等.不确定环境下的嵌入式实时系统EDF调度算法研究与分析[J].西南民族大学学报(自然科学版),2009(35).
[3]宋杰等. 一种新型的实时调度算法[J]. 计算机技术与发展,2010(20).
(作者单位:淄博市技师学院)