一种多个周期任务的调度方法

文档序号:8380795阅读:862来源:国知局
一种多个周期任务的调度方法
【技术领域】
[0001] 本发明属于计算机控制领域,具体涉及一种多个周期任务的调度方法。
【背景技术】
[0002] 在嵌入式实时系统中,周期任务的调度一直是研究的热点,周期任务的调度好坏 是影响系统运行效率的重要因素。关于周期任务调度方法的研究层出不穷,产生了许多实 时调度方法:例如经典的FCFS算法,RM算法,优先级继承、反转,静态的速率单调调度方法 RMS和时限单调调度方法DMS以及动态的最后期限驱动算法DD和最短处理时间有限算法 SPTF等,还有很多的改进算法。以往的调度方法侧重主要研究调度任务的选择依据以及如 何进行调度任务周期的确定,未考虑在已有多个周期任务的情况下,如何根据任务的周期 和调度时机进行调度。

【发明内容】

[0003] 本发明的目的是:设计实现一种针对不同调度周期和调度时机的多个周期任务调 度方法,实现在嵌入式实时系统中多个周期任务的调度,在占用CPU时间和资源较少的情 况下保证周期任务的正确调度。
[0004] 本发明的技术方案是:
[0005] -种多个周期任务的调度方法,其特殊之处在于:包括以下步骤:
[0006] 1】根据多个周期任务的调度周期和调度时机,求取由所有的调度周期和调度时机 组成的一组数的最大公约数pnum ;
[0007] 2】求取每个周期任务的调度周期和调度时机分别相对于pnum的倍数,并将每个 周期任务的*function、At_period、At_turn组成一个字段依序存储在缓冲区;*fuction代 表周期任务入口,At_period代表(调度周期/pnum)、At_turn代表(调度时机/pnum+1);
[0008] 3】设置时钟中断的时间值为pnum ;
[0009] 4】在时钟中断触发后,按照存储顺序对缓冲区中的每一个周期任务信息进行查 询,判断每一个周期任务的At_turn的值是否达到周期任务执行条件;如果某一个周期任 务的At_turn的值达到周期任务执行条件,则进入该周期任务指定的周期任务入口,执行 周期任务;如果某一个周期任务的At_turn的值未达到周期任务执行条件,则不执行周期 任务,等待下一次时钟中断触发。
[0010] 上述步骤4】具体为:判断当前周期任务的At_turn的值是否为1,如果当前周期任 务的At_turn的值为1,则进入当前周期任务指定的周期任务入口 *function,执行周期任 务,并将At_period的值赋值给At_tum ;如果当前周期任务的At_turn的值不为1,则At_ turn减1,不执行当前周期任务,等待下一次时钟中断触发。
[0011] 本发明的优点是:将所有周期任务各自的周期时间的最大公约数设置为时钟中断 的触发时间间隔值,在周期时间值倍数关系明显即最大公约数的值比较大的情况下,CPU可 以间隔较长时间对周期任务进行一次处理,工作效率大大提高;周期任务的调度周期和调 度时机各数据之间倍数关系越明显,则方法效率越高,在时钟中断中对周期任务进行查询 处理,可以有效保证周期任务按照自己的调度时机和调度周期正确执行且各周期任务执行 互不干扰。本方法易于实现,计算量少,采用的数据结构和软件结构易于修改和扩展,任务 调度方式灵活,适用面广。
【具体实施方式】
[0012] 本发明侧重研究在已知周期任务周期和调度时机的情况下,如何根据周期任务的 调度周期和调度时机进行多个周期任务实时调度的方法。即在一次调度中,对所有周期到 达的任务进行调度,周期任务之间的调度互不干扰同时不占用CPU太多的时间和资源。
[0013] 本发明周期任务调度主要关注调度时机和调度周期,不同的周期任务一般都会采 用不同的调度时机和调度周期。本发明设计一种采用时钟中断和查询方式的周期任务调度 方法,使得每个周期任务能够按照任务本身的调度时机和调度周期进行调度,而不受别的 周期任务的干扰。
[0014] 本发明的具体方法步骤是:
[0015] 1】根据多个周期任务的调度周期和调度时机,求取由所有的调度周期和调度时机 组成的一组数的最大公约数pnum ;每一个周期任务都会对应一个调度周期和一个调度时 机,则η个周期任务就会有η个调度周期和η个调度时机,针对η个调度周期和η个调度时 机组成的一组数,求取最大公约数pnum ;
[0016] 2】求取每个周期任务的调度周期和调度时机分别相对于pnum的倍数,并将每个 周期任务的*function、At_period、At_turn组成一个字段依序存储在缓冲区;*fuction代 表周期任务入口,At_period代表(调度周期/pnum)、At_turn代表(调度时机/pnum+1);
[0017] 3】设置时钟中断的时间值为pnum ;
[0018] 4】在时钟中断触发后,按照存储顺序对缓冲区中的每一个周期任务信息进行查 询,判断每一个周期任务的At_turn的值是否达到周期任务执行条件;如果某一个周期任 务的At_turn的值达到周期任务执行条件,则进入该周期任务指定的周期任务入口,执行 周期任务;如果某一个周期任务的At_turn的值未达到周期任务执行条件,则不执行周期 任务,等待下一次时钟中断触发。
[0019] 步骤4】具体可以采用以下方式:判断当前周期任务的At_turn的值是否为1,如果 当前周期任务的At_turn的值为1,则进入当前周期任务指定的周期任务入口 *function, 执行周期任务,并将At_period的值赋值给At_tum ;如果当前周期任务的At_turn的值不 为1,则At_turn减1,不执行当前周期任务,等待下一次时钟中断触发。
[0020] 伪代码如下:
[0021]
【主权项】
1. 一种多个周期任务的调度方法,其特征在于:包括以下步骤: 1】根据多个周期任务的调度周期和调度时机,求取由所有的调度周期和调度时机组成 的一组数的最大公约数pnum ; 2】求取每个周期任务的调度周期和调度时机分别相对于pnum的倍数,并将每个周期 任务的*function、At_period、At_turn组成一个字段依序存储在缓冲区;*fuction代表周 期任务入口,At_period代表(调度周期/pnum)、At_turn代表(调度时机/pnum+1); 3】设置时钟中断的时间值为pnum ; 4】在时钟中断触发后,按照存储顺序对缓冲区中的每一个周期任务信息进行查询,判 断每一个周期任务的At_turn的值是否达到周期任务执行条件;如果某一个周期任务的 At_turn的值达到周期任务执行条件,则进入该周期任务指定的周期任务入口,执行周期任 务;如果某一个周期任务的At_turn的值未达到周期任务执行条件,则不执行周期任务,等 待下一次时钟中断触发。
2. 根据权利要求1所述的多个周期任务的调度方法,其特征在于:步骤4】具体为:判 断当前周期任务的At_turn的值是否为1,如果当前周期任务的At_turn的值为1,则进入 当前周期任务指定的周期任务入口 *function,执行周期任务,并将At_period的值赋值给 At_tum ;如果当前周期任务的At_turn的值不为1,则At_turn减1,不执行当前周期任务, 等待下一次时钟中断触发。
【专利摘要】本发明提供一种多个周期任务的调度方法,求取由所有的调度周期和调度时机组成的一组数的最大公约数pnum;设置时钟中断的时间值为pnum;在时钟中断触发后,对每一个周期任务信息进行查询,判断每一个周期任务的是否达到周期任务执行条件;如果达到周期任务执行条件,则进入该周期任务指定的周期任务入口;如果未达到周期任务执行条件,则不执行周期任务,等待下一次时钟中断触发。可以有效保证周期任务按照自己的调度时机和调度周期正确执行且各周期任务执行互不干扰。易于实现,计算量少,采用的数据结构和软件结构易于修改和扩展,任务调度方式灵活,适用面广。
【IPC分类】G06F9-48
【公开号】CN104699533
【申请号】CN201310664716
【发明人】刘明, 李娟 , 王瑞, 张鹏仙
【申请人】中国航空工业集团公司第六三一研究所
【公开日】2015年6月10日
【申请日】2013年12月9日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1