发明名称 基于VxWorks操作系统的混合任务集调度方法
摘要 本发明公开了一种基于VxWorks操作系统的混合任务集调度方法,主要克服了许多混合调度方法中非周期任务实时性差,CPU利用率低的问题。其步骤为:创建混合任务集并创建一个特殊周期任务,为该特殊周期任务创建一个信号量;进行任务调度前用改进后的时间需求算法判断混合任务集的可调度性;周期任务根据VxWorks所提供的基于优先级的抢占式调度算法进行调度;在特殊周期任务的运行过程中依次判断非周期任务的运行条件,若满足某非周期任务的运行条件则释放相应信号量使该非周期任务运行,该非周期任务运行完毕后释放信号量使特殊周期任务运行。本发明提高了CPU的利用率,减小了调度非周期任务时的响应时间,可用于对非周期任务较多的混合任务集的调度。
申请公布号 CN101609417B 申请公布日期 2012.07.04
申请号 CN200910023361.7 申请日期 2009.07.17
申请人 西安电子科技大学 发明人 相征;万娟;汤书苑;苑峰;任鹏;赵楠
分类号 G06F9/48(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华;朱红星
主权项 1.一种基于VxWorks操作系统的混合任务集调度方法,包括以下步骤:(1)在操作系统VxWorks的编程环境下调用库函数taskSpawn( )创建混合任务集中各任务,并设定各任务的优先级,该混合任务集包含若干周期任务、若干非周期任务和一个特殊周期任务,同时为特殊周期任务创建信号量semIdT,信号量semIdT初始值为满;(2)对创建的混合任务集进行如下可调度性判断:2a)求出所有非周期任务的最大执行时间和到来的最小周期;2b)根据最大执行时间和到来的最小周期,计算各任务的最大响应时间:<maths num="0001"><![CDATA[<math><mrow><msubsup><mi>t</mi><mi>i</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msub><mi>C</mi><mi>i</mi></msub><mo>+</mo><munder><mi>&Sigma;</mi><mrow><msub><mi>&tau;</mi><mi>k</mi></msub><mo>&Element;</mo><msub><mi>H</mi><mi>i</mi></msub></mrow></munder><mo>[</mo><msubsup><mi>t</mi><mi>i</mi><mi>n</mi></msubsup><mo>/</mo><msub><mi>T</mi><mi>k</mi></msub><mo>]</mo><mo>&CenterDot;</mo><msub><mi>C</mi><mi>k</mi></msub><mo>+</mo><munder><mi>&Sigma;</mi><mrow><msub><mi>&tau;</mi><mi>j</mi></msub><mo>&Element;</mo><msub><mi>&psi;</mi><mi>i</mi></msub></mrow></munder><msup><msub><mi>C</mi><mi>j</mi></msub><mo>&prime;</mo></msup><mo>&CenterDot;</mo><mo>[</mo><msubsup><mi>t</mi><mi>i</mi><mi>n</mi></msubsup><mo>/</mo><msup><msub><mi>T</mi><mi>j</mi></msub><mo>&prime;</mo></msup><mo>]</mo></mrow></math>]]></maths>其中,i表示混合任务集中的一个任务,k表示混合任务集中周期任务的个数,<img file="FSB00000657938700012.GIF" wi="63" he="58" />和<img file="FSB00000657938700013.GIF" wi="36" he="53" />分别表示迭代到第n+1和第n次时的最大响应时间,H<sub>i</sub>表示在时间t<sub>i</sub>内优先级高于τ<sub>i</sub>并且已就绪的周期任务集,τ<sub>k</sub>为H<sub>i</sub>中的任务,T<sub>k</sub>和C<sub>k</sub>分别是τ<sub>k</sub>的周期和最大执行时间,ψ<sub>i</sub>表示在时间t<sub>i</sub>内已就绪的非周期任务集,j表示混合任务集中非周期任务的个数,τ<sub>j</sub>为ψ<sub>i</sub>中的任务,T<sub>j</sub>′和C<sub>j</sub>′分别是τ<sub>j</sub>的最小周期和最大执行时间。2c)将步骤2b)中求出的各个任务的最大响应时间与其任务时限相比较,若所有任务的最大响应时间均小于其任务时限,则系统可调度,否则系统不可调度;2d)若任务集不可调度,适当延长特殊周期任务的周期,跳回步骤2b);若任务集可调度,在保证可调度性的条件下,根据系统的实时性要求调节特殊周期任务的周期;(3)对混合任务集中的周期任务进行如下调度:3a)各个周期任务在每一次运行前调用操作系统中VxWorks的库函数taskDelay(T)延迟一段时间,T表示任务被延迟的Tick数;3b)根据操作系统VxWorks所提供的基于优先级的抢占式调度算法调度所有周期任务;(4)对混合任务集中的非周期任务进行如下调度:4a)分别为各个非周期任务创建信号量,初始值为空;4b)执行特殊周期任务,首先判断是否满足第一个非周期任务设定的运行条件,若满足,则释放第一个非周期任务所对应的信号量使该非周期任务运行,第一个非周期任务运行完毕后将再次阻塞,特殊周期任务将继续往下运行;若不满足,则继续判断下一个非周期任务的运行条件,依次类推,直至判断完所有的运行条件,然后跳回步骤(3)。
地址 710071 陕西省西安市太白路2号