一种综合嵌入式实时周期任务调度方法

文档序号:6607332阅读:243来源:国知局
专利名称:一种综合嵌入式实时周期任务调度方法
技术领域
本发明主要涉及计算机嵌入式实时系统领域,特别是一种适合嵌入式实时周期任 务调度方法。
背景技术
嵌入式实时系统是目前计算机领域最重要的应用和研究方向,如何合理地进行任 务调度是整个嵌入式应用系统的关键。好的任务调度方法既可以保证关键任务得到及时运 行,又不至于让其他任务盲等。嵌入式实时系统中运行的任务,一般都对应一个必须完成的时间期限,该时间期 限称为为截止期限。从对错过截止期限造成后果的严重程度来看,嵌入式实时任务又可分 为硬实时任务与软实时任务。硬实时任务错过截止期限可能会造成系统严重或致命的后 果,如有关航空航天、军事、核工业等应用领域的嵌入式实时系统中的一些关键任务;而软 实时任务错过截止期限则可能仅会在一定程度上造成系统性能的下降或任务结果意义的 递减,如消费电子类嵌入实时系统中运行的任务。由于很多嵌入式实时系统处于无人值守的环境,运行系统主要由周期任务组成, 即任务每隔一段时间重新启动或就绪。一个具有截止期限的周期任务、可简单描述如 下τ i = (Si, Ri, Ci, Di, Ti),0 < Ci 彡 Di,0 < Ti,0 ^ Si其中,Si为任务的到达时间氓为任务有资格参与竞争计算机处理器的初始就绪 时间,一般而言,Si = Ri而为任务的执行时间,通常以最坏情形下的估计执行时间代替讽 为任务的相对截止期限Ji为任务的周期。对于周期任务τ i的第k次执行(k彡1),其重新就绪的时间为氏+(1^-1)*1\,截止 期限为!^+(k-lhTi+Di。周期任务的一次执行称为该周期任务的一个实例或一次执行请求。一个周期任务的处理器利用率定义为Ui = CiZti,—个周期任务集中所有任务的 处理器利用率之和为该周期任务集的处理器利用率。为了尽可能地保证重要任务不错过截止期限,嵌入式实时系统的任务调度一般采 用优先级驱动的方式。每一个有资格参与调度的任务都对应一个惟一的调度优先级别,调 度发生时,总是选取调度优先级别最高的任务投入运行。因此,如何合理确定嵌入式实时系 统中各任务的优先级成为影响整个嵌入式实时系统性能的关键。对于硬实时周期任务集,一般采用单调速率调度方法。该方法为每一个硬实时周 期任务指定一固定优先级,该优先级与任务周期的长短紧密相关,周期越短,优先级越高, 调度总是最先运行周期最短的任务。如果嵌入式实时系统中任务满足以下理想条件1)所有具有硬实时的任务均为周期任务,且周期等于其截止期限;2)所有硬实时任务必须在其时限到来前结束;3)任务之间都是独立的,每个任务的请求不依赖于其它任务请求的开始或完成;4)所有具有硬时限的任务均具有恒定的运行时间,即假定任务运行在无中断的情形下;5)调度和任务切换的时间忽略不计。则该调度方法具有如下一些性质1)单调速率调度方法是最优的。即在同样条件下,对某一周期任务集只要别的固 定优先级调度方法能使所有任务不错过截止期限,则使用单调速率调度方法肯定也能调度 成功。2)使用该调度方法的周期任务集可调度的处理器利用率的有一最小上界为 0. 693,即只要周期任务集处理器利用率小于该值,则该任务集一定可调度。对于软实时任务集,最小空闲时间优先为传统的常用动态优先级调度方法。该调 度方法是结合任务执行的缓急程度给任务分配优先级的一种动态调度方法。一个任务的空 闲时间定义为从当前时刻至其截止期限的时间距离与其剩余尚未执行时间之间的差值。在 调度时刻,任务的优先级根据任务的空闲时间动态分配。空闲时间越短,任务的优先级越 高。使用该调度方法能充分利用处理机,在理想条件下,只要任务集的处理器利用率小于1, 这些任务均可顺利得到调度,不会错过截止期限。由于在一个实际的嵌入式实时系统中,硬实时任务、软实时任务与非实时任务往 往是并存的,传统的使用单一的调度方法无法有效完成所有类型任务的调度,因此需要设 计一种综合的调度方法。

发明内容
本发明为解决上述技术问题,提出了一种采用多队列多调度方式的综合嵌入式实 时周期任务调度方法,该方法一方面优先确保系统中的硬实时任务的截止期限得到满足; 另一方面尽量保证关键的软实时任务不错过截止期限;同时,在资源许可的情形下,也不至 于使低优先级的任务长时间等待,从而提高整个处理器的利用率。本发明的技术方案如下一种综合嵌入式实时周期任务调度方法,其特征在于将任务就绪队列分为三个 一级就绪队列硬实时任务就绪队列、软实时任务就绪队列与非实时任务就绪队列,对于三 个一级就绪队列调度的优先规则为首先调度执行硬实时任务就绪队列中的任务,其次调 度执行软实时就绪队列中的任务,最后调度执行非实时就绪任务队列中的任务;在任务调 度时,当前面的一级就绪队列中没有就绪任务时才执行后一级就绪队列中任务的调度。硬实时任务就绪队列按照就绪任务的周期长短有序,周期越短在队列中越靠前, 周期相同的任务则按照估计执行时间有序,估计执行时间越短的任务越靠前;对硬实时任 务就绪队列中就绪任务的调度选取队首任务,队首任务的周期是最短的,即对该任务队列 的调度实际上采用了单调速率调度方法。单调速率调度方法是一种适用于硬实时周期性任务的静态优先级调度算法,使用 该方法进行调度时,为每一个周期任务指定一固定优先级,该优先级与任务周期的长短紧 密相关,周期越短,优先级越高,调度总是最先运行周期最短的任务。在理想条件下,该调度 方法有如下两个特性1)如果一个任务集存在静态优先级下的可调度方法,则单调速率法是最优的。所 谓最优是指在同样条件下,对某一任务集只要别的方法能调度成功,则使用单调速率法肯定也能调度成功。2)具有固定优先级的周期任务集可调度的处理器利用率的最小上界为L(n)= η(2ιΛΜ)。即只要该任务集的处理器利用率小于等于该上界值,则该任务集使用单调速率法 是可调度的。最小上界L(n)与任务的周期和最坏执行时间无关。L(n)随η单调递减。当 η —⑴时,L(n) = 1η2 ^ 0. 693。软实时任务就绪队列按照就绪任务的关键程度分为三个二级就绪子队列关键软 实任务就绪子队列、一般软实时任务就绪子队列和非关键软实时任务就绪子队列;各个软 实时任务的关键程度在任务产生时指定,采取确定或模糊的方式进行赋值或分类。每个二 级就绪子队列按空闲时间有序,任务空闲时间定义为SLi = Si+(k-l)*Ti+Di-(t+Ci-ei)其中t为系统当前时间,Si为任务τ 达到或初次就绪时间(如果所有任务在 系统初始时均同时就绪,该值为0)且当前为周期任务h的第k次执行,Ci为任务Ti的 估算执行时间,e,为任务τ i实际已执行时间,Di为任务τ ,的相对截止期时间,Ti为任务 ^的周期。对于软实时任务就绪队列的任务调度为Α、首先调度关键软实时任务二级就绪子队列中的任务空闲时间为0的任务,若没 有空闲时间为0的任务,则转到步骤B ;B、当一般软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进行 调度,否则转到步骤C;C、当非关键软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进 行调度,否则转到步骤D ;D、选取关键程度最高的就绪任务进行调度执行,即以关键软实时任务二级就绪子 队列、一般软实时任务二级就绪子队列、非关键软实时任务二级就绪子队列的优先顺序选 取对应的非空二级就绪子队列的队首任务投入运行。该调度方法实际上是空闲时间优先与任务关键程度相结合的一种调度方式。当任 务的空闲时间为0时,当然必须进行调度,否则会错过截止期限。当有多个不同关键程度的 任务都可能错过截止期限时,首先保障最关键的任务尽可能不错过截止期限。当没有就绪 任务的空闲时间为0时,优先调度关键程度最高的任务。因此,该调度方式既考虑了任务的 空闲时间,也考虑到了任务的关键程度。所有非实时任务均进入非实时任务就绪队列中,调度时采用时间片轮转调度方 式。所述时间片轮转调度方法的实现思想为给就绪队列中的每个任务分配一个相同的 (当然也可不同的)处理器执行时间(该时长称为时间片),调度时取就绪队列队头任务 投入运行,当前运行的任务用完自己的时间片但整个任务尚未结束,则把该任务重新放入 就绪队列的尾部等待下一个时间片的到来,系统继续选择就绪队列队头任务占有处理器运 行。本发明的有益效果如下本发明主要通过把嵌入式实时系统中的任务分为硬实时周期任务,软实时周期任 务和非实时任务三类,根据任务实时性的不同分别采用多级就绪队列与不同的调度方法,与传统的单一任务调度方法相比有着很好的灵活性,适用于绝大多数嵌入式实时系统领 域;当系统负载较高时,该方法能确保硬实时任务不错过截止期限的同时降低关键软实时 任务的截止时间错失率,也大大提高了处理器利用率。


图1为本发明的就绪队列及调度流程示意图
具体实施例方式如图1所示,一种综合嵌入式实时周期任务调度方法,根据就绪任务的实时属性 将任务就绪队列分为三个一级就绪队列硬实时任务就绪队列、软实时任务就绪队列与非 实时任务就绪队列,对于三个一级就绪队列调度的优先规则为首先调度执行硬实时任务 就绪队列中的任务,其次调度执行软实时就绪队列中的任务,最后调度执行非实时就绪任 务队列中的任务;在任务调度时,当前面的一级就绪队列中没有就绪任务时才执行后一级 就绪队列中任务的调度。硬实时任务就绪队列按照就绪任务的周期长短有序,周期越短在队列中越靠前, 周期相同的任务则按照估计执行时间有序,估计执行时间越短的任务越靠前;对硬实时任 务就绪队列中就绪任务的调度选取队首任务,队首任务的周期是最短的,即对该任务队列 的调度实际上采用了单调速率调度方法。软实时任务就绪队列按照就绪任务的关键程度分为三个二级就绪子队列关键软 实任务就绪子队列、一般软实时任务就绪子队列和非关键软实时任务就绪子队列;各个软 实时任务的关键程度在任务产生时指定,采取确定或模糊的方式进行赋值或分类。每个二 级就绪子队列按空闲时间有序,任务空闲时间定义为SLi = Si+(k-l)*Ti+Di-(t+Ci-ei)其中t为系统当前时间,Si为任务τ i的达到或初次就绪时间(如果所有任务在 系统初始时均同时就绪,该值为0)且当前为周期任务h的第k次执行,Ci为任务Ti的 估算执行时间,e,为任务τ i实际已执行时间,Di为任务τ ,的相对截止期时间,Ti为任务 ^的周期。对于软实时任务就绪队列的任务调度为Α、首先调度关键软实时任务二级就绪子队列中的任务空闲时间为0的任务,若没 有空闲时间为0的任务,则转到步骤B ;B、当一般软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进行 调度,否则转到步骤C;C、当非关键软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进 行调度,否则转到步骤D ;D、选取关键程度最高的就绪任务进行调度执行,即以关键软实时任务二级就绪子 队列、一般软实时任务二级就绪子队列、非关键软实时任务二级就绪子队列的优先顺序选 取对应的非空二级就绪子队列的队首任务投入运行。该调度方法实际上是空闲时间优先与任务关键程度相结合的一种调度方式。当任 务的空闲时间为0时,当然必须进行调度,否则会错过截止期限。当有多个不同关键程度的任务都可能错过截止期限时,首先保障最关键的任务尽可能不错过截止期限。当没有就绪 任务的空闲时间为0时,优先调度关键程度最高的任务。因此,该调度方式既考虑了任务的 空闲时间,也考虑到了任务的关键程度。所有非实时任务均进入非实时任务就绪队列中,调度时采用时间片轮转调度方 式;调度时给每个任务分配一个相同的时间片,如果该时间片内未执行完,任务进入就绪队 列尾部,等待下一个时间片的到来。本方法具体实施的过程如下为了适应嵌入式实时周期任务的调度,标识任务的数据结构一任务控制块(Task Control Block, TCB)中需添加如下一些信息域任务当前状态主要有就绪、阻塞、执行三种状态;任务的类别主要分为硬实时、软实时与非实时三类;任务的重要程度该属性对软实时有用,分为关键,一般和非关键三类;任务的周期任务实例重新就绪的时间间隔;任务的执行时间估计的任务最坏情形下的执行时间,以时钟滴答为单位;任务已执行时间对于实时任务,指在系统某一时刻,该任务在某周期内已经使用 处理器的时间;对于非实时任务,指时间片内的已执行时间统计,当时间片用完时,重新归 0 ;任务的空闲时间用于统计在系统某一时刻任务的空闲时间;任务的相对截止期限任务实例在某次请求中必须完成的时间点;任务所处队列信息包括任务在当前队列中的前一个任务与后一任务控制块连接 fn息;任务的时间片信息分配给任务的执行时间片,主要用于非实时任务。一、系统初始化1、创建硬实时、软实时和非实时三个任务就绪一级队列,软实时任务就绪队列包 括用于存放关键、一般和非关键三类任务的二级就绪子队列。2、对要创建的硬实时任务,根据任务的处理器利用率判断可调度性,确保所创建 的硬实时任务能够使用单调速率法成功得到调度,不会错过截止期限。二、任务创建初始化任务创建时需指定任务的周期、估计执行时间、相对截止期限、任务的类别。如果 为软实时任务,还需指定其关键程度。系统根据任务的创建时指定的信息初始化任务控制 块相应的值域。任务创建时的任务控制块中的当前状态初始化为就绪,任务的已执行时间初始化 为0,任务的空闲时间初始化为起始就绪时间+相对截止期限_估计执行时间根据任务的类别进入不同的一级就绪队列,如果为软实时任务,则还需根据不同 的关键程度进入不同的二级就绪子队列并按空闲时间有序。当创建的任务为非实时任务时,根据系统设定的时间片参数初始化任务控制块中 的时间片信息值域,任务按创建的先后顺序进入非实时任务就绪一级子队列。三、任务调度方法
7
当任务调度时机到来时,采用的调度方法可描述如下步骤1 如果硬实时任务一级就绪队列中有任务存在,选择该任务占有处理器;否 则转步骤2 ;步骤2 如果软实时任务一级就绪队列不为空转步骤3 ;否则转步骤7 ;步骤3 如果关键软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任 务进行调度;否则,转步骤4;步骤4 如果一般软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任 务进行调度;否则,转步骤5;步骤5 如果非关键软实时任务二级就绪子队列中有空闲时间为0的任务,则选该 任务进行调度;否则,转步骤6;步骤6 选取关键程度最高的就绪任务进行调度执行。即以关键软实时任务二级 就绪子队列、一般软实时任务二级就绪子队列、非关键软实时任务二级就绪子队列的优先 顺序选取相应的非空二级子队列的队首任务投入调度运行;步骤7 如果非实时任务列就绪一级队列中有任务存在,选择队首任务占有处理
ο四、实时时钟处理方法在嵌入式实时系统中,实时时钟是整个系统的脉动,一切计时均是以实时时钟为 基准的,每一次实时时钟中断称为一个时钟滴答。实时时钟发生时要做的工作主要如下1、如果当前运行任务为软实时任务,该任务的已执行时间加1 ;如果任务运行完 成而新的周期未到来则阻塞自己;2、重新计算所有的软实时任务就绪子队列中任务的空闲时间并,如果有空闲时间 域值为0的任务出现,重新引起调度;如果有空闲时间小于0的,则阻塞该任务,等待下一周 期重新就绪;调整该就绪队列使之按空闲时间有序。3、如果当前运行的任务为非实时任务,该任务的已执行时间加1,如果达到该任务 的时间片值,该任务放入对应就绪队列尾部,重新引起调度;4、如果有任务新的周期到来,唤醒该任务使之就绪,重新调度。
权利要求
一种综合嵌入式实时周期任务调度方法,其特征在于将任务就绪队列分为三个一级就绪队列硬实时任务就绪队列、软实时任务就绪队列与非实时任务就绪队列,对于三个一级就绪队列调度的优先规则为首先调度执行硬实时任务就绪队列中的任务,其次调度执行软实时就绪队列中的任务,最后调度执行非实时就绪任务队列中的任务;在任务调度时,当前面的一级就绪队列中没有就绪任务时才执行后一级就绪队列中任务的调度。
2.根据权利要求1所述的一种综合嵌入式实时周期任务调度方法,其特征在于硬实 时任务就绪队列按照就绪任务的周期长短有序,周期越短在队列中越靠前,周期相同的任 务则按照估计执行时间有序,估计执行时间越短的任务越靠前;对硬实时任务就绪队列中 就绪任务的调度选取队首任务,队首任务的周期是最短的,即对该任务队列的调度实际上 采用了单调速率调度方法。
3.根据权利要求1或2所述的一种综合嵌入式实时周期任务调度方法,其特征在于 软实时任务就绪队列按照就绪任务的关键程度分为三个二级就绪子队列关键软实任务就 绪子队列、一般软实时任务就绪子队列和非关键软实时任务就绪子队列;各个软实时任务 的关键程度在任务产生时指定,采取确定或模糊的方式进行赋值或分类。每个二级就绪子 队列按空闲时间有序,任务空闲时间定义为SLi = Si+(k-l)*Ti+Di-(t+Ci-ei)其中t为系统当前时间,Si为任务τ i的达到或初次就绪时间(如果所有任务在系统 初始时均同时就绪,该值为0)且当前为周期任务h的第k次执行,Ci为任务^的估算执 行时间,ei为任务τ i实际已执行时间,Di为任务τ i的相对截止期时间,Ti为任务τ ,的周期。
4.根据权利要求3所述的一种综合嵌入式实时周期任务调度方法,其特征在于对于 软实时任务就绪队列的任务调度为Α、首先调度关键软实时任务二级就绪子队列中的任务空闲时间为0的任务,若没有空 闲时间为0的任务,则转到步骤B ;B、当一般软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进行调 度,否则转到步骤C;C、当非关键软实时任务二级就绪子队列中有空闲时间为0的任务,则选该任务进行调 度,否则转到步骤D ;D、选取关键程度最高的就绪任务进行调度执行,即以关键软实时任务二级就绪子队 列、一般软实时任务二级就绪子队列、非关键软实时任务二级就绪子队列的优先顺序选取 对应的非空二级就绪子队列的队首任务投入运行。
5.根据权利要求1或2或4所述的一种综合嵌入式实时周期任务调度方法,其特征 在于将所有非实时任务均进入非实时任务就绪队列中,调度时采用时间片轮转调度方式; 调度时给每个任务分配一个相同的时间片,如果该时间片内未执行完,任务进入就绪队列 尾部,等待下一个时间片的到来。
全文摘要
本发明公开了一种综合嵌入式实时周期任务调度方法,将任务就绪队列分为硬实时任务就绪队列、软实时任务就绪队列与非实时任务就绪队列,对于三个队列调度的规则为首先调度执行硬实时任务就绪队列中的任务,其次调度执行软实时就绪队列中的任务,最后调度执行非实时就绪任务队列中的任务;在任务调度时,当前面的一级就绪队列中没有就绪任务时才执行后一级就绪队列中任务的调度;本发明通过对任务进行分类,根据任务实时性不同分别采用多级就绪队列与不同的调度方法,有很好的灵活性,适用于绝大多数嵌入式实时系统;当系统负载较高时,能确保硬实时任务不错过截止期限的同时降低关键软实时任务的截止时间错失率,也大大提高了处理器利用率。
文档编号G06F9/46GK101923487SQ201010247159
公开日2010年12月22日 申请日期2010年8月6日 优先权日2010年8月6日
发明者何先波, 李明东, 杨莉 申请人:西华师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1