多任务系统中的任务确定性调度方法和任务诊断方法与流程

文档序号:28690339发布日期:2022-01-29 11:23阅读:112来源:国知局
多任务系统中的任务确定性调度方法和任务诊断方法与流程

1.本发明涉及工业控制技术领域,具体涉及一种多任务系统中的任务确定性调度方法和任务诊断方法。


背景技术:

2.在工控领域,保证微型计算机系统运行的正确性和确定性是最重要的,在微型计算器系统运行多任务调度过程中,低优先级的任务通常存在被高优先级的任务或者中断任务打断的情况,从而导致被打断的任务其任务执行情况不确定甚至在某一个任务监控周期中不执行。如果在这个任务监控周期,出现不正常的运行结果,需要该任务执行后去获取,但是由于该任务未被执行所以没有被系统获取,或者由于该任务未被执行所以造成了不正常的运行结果。这些情况在工控领域里是比较危险的。
3.一般任务调度方法如图1所示,多任务系统中根据优先级将任务排序,高优先级的任务先执行,低优先级的任务后执行,低优先级的任务在执行过程中如果遇到高优先级的任务会被挂起并保存现场,先执行完成高优先级的任务后,在中断处继续执行低优先级的任务。此方案的问题在于:(1)由于任务可以被打断,导致不能确定每一个系统任务周期的任务执行顺序、任务周期和任务执行时间。(2)由于任务可以被打断,导致不能确定系统任务周期内某一个任务是否能被执行完。(3)抢占式的任务调度机制,高优先级的任务会影响低优先级任务的执行。(4)缺少对任务调度的诊断,如果任务调度出现问题,不能及时执行相应的异常处理措施。
4.公开号为cn1038712a的专利公开了一种用于多任务操作环境的操作系统,该技术方案的任务调度系统主要用于用户程序的任务调度,设计了一个任务调度器,通过状态寄存器、计数器和优先级队列,根据优先级和资源可利用情况控制任务的执行,任务状态分为被锁和非被锁,非被锁状态的任务不能够保证任务确认完成不被其他高优先级任务打断,不能确保每一个任务在每次任务监控周期内的任务调度情况一致,所以不是确认性的调度。该专利的设计目的更多地是为了任务调度的有效处理性能最大化。
5.公开号为cn100485605c的专利公开了一种多任务实时操作系统的实现方法,该技术方案的任务调度系统主要用于单片机嵌入式实时操作系统,给每个任务设置了最大允许等待时间,如果有等待时间超过最大允许等待时间,则运行该任务;如果有优先级任务,则按照轮转法确认下一个就绪的优先级任务;如果没有优先级任务,则按照轮转法确认下一个就绪的一般任务,其每一个任务的优先级、属性、任务时间在运行过程可以被改变,可多任务并行处理,可被中断任务打断,不能确保每一个任务在每次任务监控周期的任务调度情况一致,所以不是确认性的调度。该专利的设计目的更多地是为了多任务并行处理,提高任务的执行速度。
6.公开号为cn100377091c的专利公开了嵌入式操作系统分组硬实时任务调度的实现方法,该方案的任务调度系统主要用于嵌入式操作系统,通过任务分组将所需资源和实时性要求分为不同的组,并且不同的组的任务调度算法是不一致的,该设计会在某一种资
源紧缺的时候,停止对该组的调度,虽然提高了系统效率,但是任务执行情况不确定,无法确定性的控制任务调度情况,所以不是确认性的调度。该专利的设计目的更多地是为了减少任务切换的事件和资源损耗,提高任务调度的效率。


技术实现要素:

7.针对“如何确定性的调度多任务中每一个任务,确保每一个任务按照确定的任务顺序和任务周期执行”的难题,提供了一种多任务系统中的任务确定性调度方法和任务诊断方法。
8.本发明的方法可以有效避免因中断任务打断其他任务,导致其他任务的调度不可确定的问题,并且可以确保每一个任务在每次任务监控周期内的任务调度情况一致,如一个任务监控周期内的任务执行次数、任务执行周期、任务执行顺序等,还可以直接有效地诊断任务系统中每个任务的调度情况,在诊断出任务调度异常的情况下执行相应的异常处理。
9.本发明克服其技术问题所采用的技术方案是:一种多任务系统中的任务确定性调度方法,包括如下步骤:s1、查询就绪任务列表中是否有任务:若有,则执行下一步;否则,则继续查询;s2、按照就绪任务列表中优先级进行调度,每执行完一个任务,查询下一个任务;s3、针对查询到的下一个待执行任务,设其为当前任务,在当前任务执行前,判断当前任务在任务最大执行时间内是否存在更高优先级的任务触发:若存在,则暂停当前任务执行,并返回步骤s2;否则,则执行当前任务。进一步地,步骤s1中,在查询就绪任务列表中是否有任务之前,预先配置任务调度器,所述任务调度器至少用于进行任务的查询、任务优先级的判断和任务的调度。
10.进一步地,步骤s2中,通过任务调度器按照就绪任务列表中优先级进行调度,调度的顺序具体是:高优先级的任务先执行,低优先级的任务后执行。
11.进一步地,步骤s2中,查询下一个任务具体包括:通过任务调度器查询就绪任务列表中是否有下一个任务:若有,则执行步骤s3;否则,则继续查询。
12.进一步地,步骤s3中,通过任务调度器判断当前任务在任务最大执行时间内是否存在更高优先级的任务触发,具体包括:在任务执行前,任务调度器获取当前任务的任务优先级和任务最大执行时间,并查询更高优先级任务的下一次任务执行启动时间,在当前任务的任务最大执行时间内,如果与更高优先级任务的下一次任务执行启动时间重叠,则判断为当前任务在任务最大执行时间内存在更高优先级的任务触发。
13.进一步地,步骤s3中,当前任务执行完毕后,返回步骤s1。
14.进一步地,执行步骤s1之前还包括步骤s0,步骤s0具体包括:预先分配好任务优先级、任务周期和任务最大执行时间。
15.更进一步地,将任务优先级进行排序,任务优先级从高到低依次为优先级1、优先级2、优先级3
……
优先级n,其中,n为正整数,设对应的任务依次为任务1、任务2、任务3
……
任务n;设任务监控周期为t,任务n的任务周期为tn,则任务n在该任务监控周期内的执行次数是t/tn。
16.本发明还公开了一种多任务系统中的任务诊断方法,通过看门狗诊断上述所述的多任务系统中的任务确定性调度方法执行的过程,当任何一个任务未达到预设的任务监控周期内的最小执行次数时,则判断为任务调度异常。
17.进一步地,当判断为任务调度异常时,则停止任务监控,使多任务系统复位。
18.本发明的有益效果是:1、本发明的任务确定性调度方法可以实现:(1)执行任务前,若任务执行时间内存在更高优先级的周期型任务触发,则会等待高优先级任务先执行完再开始执行当前任务;(2)任务执行安全性的保证:任何一个任务在任务执行过程中不能被其他任务打断,确保执行完毕,并且不允许任务并行,保证每一个任务执行的安全性;(3)任务执行确定性的保证:在一个任务监控周期内,任务的执行顺序和每一个任务的执行次数是确定的。
19.2、本发明的任务诊断方法通过看门狗能诊断任务调度异常,并及时执行相应的异常处理措施。
附图说明
20.图1为现有的任务调度方法的流程图。
21.图2为本发明实施例所述的多任务系统中的任务确定性调度方法的流程图。
22.图3为本发明实施例中任务优先级、任务周期和任务执行时间的示意图。
23.图4为本发明实施例中任务监控周期内的多个任务执行情况示意图。
24.图5为本发明实施例中任务执行前的两个任务的执行流程示意图。
具体实施方式
25.为了便于本领域人员更好的理解本发明,下面结合附图和具体实施例对本发明做进一步详细说明,下述仅是示例性的不限定本发明的保护范围。
26.如图2所示,在多任务系统中,本发明的实施例公开了一种任务确定性调度方法,具体包括如下步骤:s0、将任务分为周期型任务和中断触发型任务(事实上,这两种都是周期型任务,因为中断触发型任务中的中断也是周期型触发),中断触发型任务是通过电平中断的方式触发,触发的时候会将中断触发型任务准备就绪的标志位置位,等待当前任务执行完成后,由任务调度器根据任务优先级和任务最大执行时间决定中断触发型任务的执行顺序(仍然保持高优先级任务先执行的原则),当中断触发型任务执行完成后,清除中断触发型任务准备就绪的标志位(清除标志位后才能获取下一次中断,所以不存在连续中断导致任务调度异常的情况),等待下一次触发,由于中断触发信号为周期型触发,所以中断触发型任务也可以当作周期型任务。
27.针对不同的任务,各自分配任务优先级、任务周期和任务最大执行时间,其中,一般一个任务根据条件判断不同包括多个分支,不同的分支执行时需要不同的时间,任务最
大执行时间是指任务分支中执行时间最长的一个分支所需要的时间,故,实际上任务执行时间一般小于等于任务最大执行时间。将任务优先级进行排序,任务优先级从高到低依次为优先级1、优先级2、优先级3
……
优先级n,其中,n为正整数,设对应的任务依次为任务1、任务2、任务3
……
任务n,如图3所示,图中左侧示出了4个任务及其优先级,任务1对应优先级1、任务2对应优先级2、任务3对应优先级3、任务4对应优先级4,图中右侧还表示了任务周期和任务执行时间。
28.s1、预先配置任务调度器,通过任务调度器查询就绪任务列表中是否有任务:若有任务,则执行下一步,即步骤s2;若没有任务,则任务调度器继续查询。
29.s2、通过任务调度器按就绪任务列表中优先级进行调度:高优先级的任务先执行、低优先级的任务后执行;每执行完一个任务,任务调度器查询就绪任务列表中是否有下一个任务:若有,则执行下一步,即步骤s3;否则,则返回任务调度器继续查询。
30.s3、针对查询到的下一个待执行任务,设其为当前任务,在当前任务执行前,通过任务调度器判断当前任务在任务最大执行时间内是否存在更高优先级的任务触发,所述任务调度器不仅可以用于查询任务列表中是否有任务,还可以用于判断当前任务在执行时间内是否存在更高优先级的任务触发。本实施例公开了一种判断当前任务在任务最大执行时间内是否存在更高优先级的任务触发的方法,具体是,在任务执行前,任务调度器获取当前任务的任务优先级和任务最大执行时间,并查询更高优先级任务的下一次任务执行启动时间,在当前任务的任务最大执行时间内,如果与更高优先级任务的下一次任务执行启动时间重叠,则判断为当前任务在任务最大执行时间内存在更高优先级的任务触发。
31.针对当前任务在任务最大执行时间内是否存在更高优先级的任务触发,有两种结果:若存在更高优先级的任务触发,则暂停当前任务执行,并返回步骤s2,即等待更高优先级的任务先执行;若不存在更高优先级的任务触发,则执行当前任务,当前任务执行完毕后,则返回步骤s1,通过任务调度器继续查询。
32.本实施例的任务确定性调度方法中,任何一个任务在任务执行过程中,不会被其他任务打断,且任务不会并行执行,保证每一个任务执行的安全性。
33.按照上述所述的任务确定性调度方法,如图4所示,在一个任务监控周期t内,任务按照优先级顺序串行执行,任务1的优先级高于任务2、任务2的优先级高于任务3、任务3的优先级高于任务4,即,执行顺序是任务1、任务2、任务3、任务4,所以任务的执行顺序是确定的。设其中任务n的任务周期为tn,则任务n在该任务监控周期内的执行次数是t/tn,比如,任务1在该任务监控周期内的执行次数是t/t1,以此类推,每一个任务的执行次数是确定的,虽然会造成调度效率的降低和资源的损耗,但是可以保证任务调度的确定性,这一点是非常关键的。
34.本实施例中,如图5所示,结合一个示例说明一下任务1和任务2的执行先后情况。任务执行前,若待执行的当前任务在任务最大任务执行时间内存在更高优先级的周期型任务触发,则会等待高优先级的任务先执行完,再开始执行当前任务,所以该任务调度机制既不会影响高优先级任务的优先执行逻辑,也能确保低优先级任务的正常执行。图5中,以任务1和任务2为例,示出了任务1的任务周期t1和任务2的任务周期t2,最左侧用虚线表示的
任务2是待执行的当前任务,实线表示的任务1和任务2是实际执行的任务;任务2在t时刻待执行前发现任务1会在任务2的任务最大执行时间内触发,则在执行任务2之前,暂停执行任务2,先执行任务1,等优先级高的任务1执行完毕后马上执行任务2,以此来确保高优先级的任务先执行。
35.通过本实施例所述的多任务系统中的任务确定性调度方法,任务调度过程是可控的,在一个任务监控周期内,任务的执行顺序和每一个任务的执行次数是确定的;安全性强,任务执行过程中不会被其他任务干扰。
36.本发明的实施例还公开了一种多任务系统中的任务诊断方法,通过看门狗诊断上述所述的多任务系统中的任务确定性调度方法执行的过程,若在一个任务监控周期(即看门狗的喂狗周期)内,当任何一个任务未达到预设的任务监控周期内最小执行次数时,则判断为任务调度异常,则停止任务监控(停止喂狗),使多任务系统复位,重新开始任务的调度,其中,当判断为任务调度异常时,一般是某个任务的执行时间超出了任务最大执行时间,导致留给其他任务的时间就不够了,使得其他任务达不到任务监控周期内的最小执行次数。此外,本实施例所述的最小执行次数一般略小于执行次数,不过最小执行次数也根据系统具体的任务情况而定,假如,某一任务n在任务监控周期t内的执行次数是t/tn=10次,假设该任务是比较重要的任务,在任务执行前,设定该任务的最小执行次数为9次;假设该任务不是很重要的任务,可以设定该任务的最小执行次数为7次甚至更少,具体根据实际情况预设最小执行次数。
37.通过本实施例所述的多任务系统中的任务诊断方法,任务调度异常的情况可以及时被诊断并执行相应的措施,避免造成不安全的运行结果。
38.下面以工业控制领域的模拟量输入卡中多任务系统为例详细说明一下本实施例所述的多任务系统中的任务确定性调度方法和任务诊断方法。其任务类型、任务优先级、任务周期、任务最大执行时间的设计如表1所示,表1中所列的七个任务的优先级从高到低依次是采样任务、通讯任务、看门狗监控任务、系统诊断任务、数据解析任务、指示灯刷新任务、时间同步任务。
39.表1 多任务系统中多个任务的参数设定情况其中,看门狗监控任务每执行10次,即任务监控周期为1s,会在任务中诊断其他任
务的执行情况,如果任务调度异常,则执行异常处理措施。
40.按照本实施例的设计,会有如下任务调度结果:1)最高优先级的任务的任务周期为2ms,所有任务的任务最大执行时间之和为1.65ms,也就是说,即使所有任务都满负荷运作,该多任务系统依旧预留了0.35ms的空闲时间用于应对异常情况,保证系统的可靠性。
41.2)显而易见,该实施例所述的多任务系统,其每一个任务监控周期(1s)内,会执行采样任务500次,通讯任务200次,看门狗监控任务10次,系统诊断任务50次,数据解析任务100次,指示灯刷新任务2次,时间同步任务2次。
42.根据以上任务调度结果,设计了一种如表2所示的诊断措施:表2 多任务系统中多个任务的最小执行次数设定情况对于采样任务和通信任务等高优先级的任务,其要求较高,所以其最小执行次数只能略低于其正常执行次数,否则,即,在一个任务监控周期内,比较重要的任务未达到预设的最小执行次数时,则判断为任务调度异常。而对于指示灯刷新任务和时间同步任务等低优先级的任务,其要求较低(意思是,即使偶尔执行不到,也不会影响系统的主要功能),所以其最小执行次数可以设置的比较低,本实施例的表2中将指示灯刷新任务和时间同步任务的最小执行次数均预设为了1次。
43.本实施例中,虽然设置了最小执行次数,但是按照我们的设计,99.9%以上都是按照正常执行次数执行的,因为还预留了空闲时间,所以任务是确定性的调度。
44.以上仅描述了本发明的基本原理和优选实施方式,本领域人员可以根据上述描述做出许多变化和改进,这些变化和改进应该属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1