一种时间触发的嵌入式任务调度装置与方法与流程

文档序号:12363143阅读:386来源:国知局
一种时间触发的嵌入式任务调度装置与方法与流程
本发明属于安全关键计算机使用技术,具体涉及一种安全关键领域下基于时间触发的嵌入式任务调度方法。
背景技术
:在航空、航天等安全关键领域,由于其中部分的子系统功能如果失效,有可能造成机毁人亡的灾难性事故,因此对于这一类子系统,实现其功能的软硬件模块的确定性,必须满足非常高的标准。随着传感器技术、自动化控制技术、数字化技术的不断发展,航空、航天、汽车系统实现的功能越来越趋向智能化,让操作者更多的关注更高层面的控制,从而导致这些领域的安全关键系统也变得越来越复杂,往往需要多个计算机子系统组成分布式网络,协同工作,共同实现一个顶层系统级功能需求。在此要求下,传统的基于事件响应型的计算机任务处理架构就不能满足安全关键系统对于任务确定性的要求。传统的嵌入式系统,从追求实时响应性能出发,以特定事件的发生作为调度的触发源,其相关理论和思想已经得到广泛的研究与应用。然而,外部事件的不可预知性,将导致事件型调度的分析极为复杂,其应用场景的验证完备性很难达到。即使通过复杂的保护性设计,满足系统的可靠性要求,但对于复杂应用的功能改变或升级,其分析、验证和维护成本,都将随之上升。因此在安全关键领域提出了时间触发架构。时间触发架构以时间触发总线作为构建分布式系统的基础,各个分布式节点的任务执行,以及各节点之间的通讯都遵循一定的时间规划表,以一种静态离线规划的方式统筹定义系统功能的完成方式。在时间触发架构的要求下,基于事件的传统嵌入式操作系统,已经不能满足时间触发分布式节点的任务调度要求,必须设计一种新的任务调度方式来满足安全关键时间触发系统的确定性需求。技术实现要素:本发明的目的是:为解决基于时间触发架构的安全关键系统,对于分布式计算机节点中任务执行确定性要求,而设计一种嵌入式任务调度方法。提供一种基于时间触发的任务调度装置,其特征在于,包括:静态时间规划表存储模块,用来存储预先定义的静态时间规划表,任务的执行时序是按照所述的静态时间规划表来运行的;分布式总线时间中断模块,用来按小帧周期引发分布式节点的同步调度;计算机本地时钟中断模块,用来管理每一个任务本周期允许执行的时间;任务调度器模块,用于触发分布式总线时间中断、计算机本地时钟中断,并根据静态时间规划表选择当前应该运行的任务,监控任务的运行时间,并根据任务允许的执行时间调整计算机本地时钟中断的计数值。提供一种基于时间触发的任务调度方法,其特征在于,包括以下步骤:步骤一:在计算机系统执行之前,给出全局总线周期时间、根据计算机节点功能划分出各个任务、并得到每个任务执行周期、每个任务最差执行时间,其中全局总线的周期时间被称为小帧周期,执行每个任务的周期都为小帧周期的整数倍,在计算机系统运行过程中,由全局总线时间中断模块和计算机本地时钟中断模块作为计算机节点任务调度的中断源;步骤二:根据每个任务的执行周期以及每个任务的最差执行时间得到静态时间规划表,在静态时间规划表中,包括每个任务调度时刻点即将启动的任务名称、该任务本次启动后执行的时间、该任务调度时刻点是否为前一个任务死限点、该任务调度时刻点是否为下一个任务起始点;所有需要执行的任务在时间规划表中按照顺序排列步骤三:在系统运行开始后,使用全局总线时间中断模块来启动任务调度,在全局总线时间中断模块的响应函数中,按照时间规划表的第一个时刻点调度第一个任务的执行;步骤四:按照静态时间规划表中该时刻点的任务本次执行时间,设置计算机本地时钟中断的中断计时时间,启动计算机本地时钟中断的计时后,调度任务的执行;步骤五:在计算机本地时钟中断或全局总线时间中断到来时,判断被调度任务是否已经执行结束,若已结束则判定该任务未超时,该任务结束后调度器将该任务置为执行就绪状态,将静态时间规划表中下一个任务调度时刻点变为当前使用的任务调度时刻点后,进入步骤七,若未结束,则进入步骤六;步骤六:将静态时间规划表中下一个任务调度时刻点变为当前使用的任务调度时刻点,检查该任务调度时刻点是否为前一个任务死限点,若是则可以判定该任务超时,进行该任务相应的超时故障处理,以保证系统运行的确定性,若不是前一个任务死限点,将被调度任务置被抢占状态,进入步骤七;步骤七:检查当前调度时刻点是否为下一个任务起始点,若是则按照时间规划表的当前时刻点调度下一个任务的执行并返回到步骤四,若否进入步骤八;步骤八:判断当前任务的状态,若是被抢占状态,则按照时间规划表的当前时刻点调度下一个任务的执行并回到步骤四,若是执行就绪状态,则此时不按照静态时间规划表的当前时刻点进行下一个任务的调度,而将后台空闲任务作为即将调度的任务,返回到步骤四。进一步的,步骤五中当任务执行结束后,此时还未到时间规划表中下一个调度时刻,则调度器将选择后台空闲任务作为此时的调度任务,以保证应用任务确定的按照时间规划表定义的时刻启动执行;进一步的,在中断处理函数的任务调度过程中,若当前运行任务状态、即将运行任务状态以及时间规划表中当前调度任务时刻点属性,出现超出之前描述的状态组合时,认为当前的计算机运行故障;进一步的,步骤四中,判断按照静态时间规划表下一个任务执行时间结束后,是否达到全局总线时间中断模块的周期,若达到,则进行下一个任务调度时,不需要按照静态时间规划表设置计算机本地时钟中断的中断定时时间,不需要启动计算机本地时钟中断的计时,即进行下一任务调度;通过本调度方法,可以确定性的预知系统运行中的某一个时刻,各分布式节点内部应该运行的任务,从而保证任务在运行中若出现超时故障,能够最快时间得到上报并进行相应处理,从而提高系统的安全可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本调度装置的组成结构图。图2为本调度方法的基本功能流程图。图3为使用本调度方法的静态时间规划表,得到的理想的任务执行序列;图4为本调度方法处理过程中处理器资源使用的一种时序图,要来标明任务按照时间规划表被调度并及时结束的情况;图5为本调度方法处理过程中处理器资源使用的一种时序图,来标明任务按照时间规划表被抢占,并恢复运行的情况;图6为本调度方法处理过程中处理器资源使用的一种时序图,来标明被抢占任务提前执行结束,不需要恢复运行的情况;具体实施方式如图1所示,提供一种基于时间触发的任务调度装置,其特征在于,包括:静态时间规划表存储模块,用来存储预先定义的静态时间规划表,任务的执行时序是按照所述的静态时间规划表来运行的;分布式总线时间中断模块,用来按小帧周期引发分布式节点的同步调度,在本实施例中,可以为ARINC659总线中断,或者1394B总线中断;计算机本地时钟中断模块,用来管理每一个任务本周期允许执行的时间;任务调度器模块,用于触发分布式总线时间中断、计算机本地时钟中断,并根据静态时间规划表选择当前应该运行的任务,监控任务的运行时间,并根据任务允许的执行时间调整计算机本地时钟中断的计数值。如图2所示,提供一种基于时间触发的任务调度方法,其特征在于,包括以下步骤:步骤一:在计算机系统执行之前,给出全局总线周期时间、根据计算机节点功能划分出各个任务、并得到每个任务执行周期、每个任务最差执行时间,其中全局总线的周期时间被称为小帧周期,执行每个任务的周期都为小帧周期的整数倍,在计算机系统运行过程中,由全局总线时间中断模块和计算机本地时钟中断模块作为计算机节点任务调度的中断源;步骤二:根据每个任务的执行周期以及每个任务的最差执行时间得到静态时间规划表,在静态时间规划表中,包括每个任务调度时刻点即将启动的任务名称、该任务本次启动后执行的时间、该任务调度时刻点是否为前一个任务死限点、该任务调度时刻点是否为下一个任务起始点;所有需要执行的任务在时间规划表中按照顺序排列步骤三:在系统运行开始后,使用全局总线时间中断模块来启动任务调度,在全局总线时间中断模块的响应函数中,按照时间规划表的第一个时刻点调度第一个任务的执行;步骤四:按照静态时间规划表中该时刻点的任务本次执行时间,设置计算机本地时钟中断的中断计时时间,启动计算机本地时钟中断的计时后,调度任务的执行;步骤五:在计算机本地时钟中断或全局总线时间中断到来时,判断被调度任务是否已经执行结束,若已结束则判定该任务未超时,该任务结束后调度器将该任务置为执行就绪状态,将静态时间规划表中下一个任务调度时刻点变为当前使用的任务调度时刻点后,进入步骤七,若未结束,则进入步骤六;步骤六:将静态时间规划表中下一个任务调度时刻点变为当前使用的任务调度时刻点,检查该任务调度时刻点是否为前一个任务死限点,若是则可以判定该任务超时,进行该任务相应的超时故障处理,以保证系统运行的确定性,若不是前一个任务死限点,将被调度任务置被抢占状态,进入步骤七;步骤七:检查当前调度时刻点是否为下一个任务起始点,若是则按照时间规划表的当前时刻点调度下一个任务的执行并返回到步骤四,若否进入步骤八;步骤八:判断当前任务的状态,若是被抢占状态,则按照时间规划表的当前时刻点调度下一个任务的执行并回到步骤四,若是执行就绪状态,则此时不按照静态时间规划表的当前时刻点进行下一个任务的调度,而将后台空闲任务作为即将调度的任务,返回到步骤四。进一步的,步骤五中当任务执行结束后,此时还未到时间规划表中下一个调度时刻,则调度器将选择后台空闲任务作为此时的调度任务,以保证应用任务确定的按照时间规划表定义的时刻启动执行;进一步的,在中断处理函数的任务调度过程中,若当前运行任务状态、即将运行任务状态以及时间规划表中当前调度任务时刻点属性,出现超出之前描述的状态组合时,认为当前的计算机运行故障;进一步的,步骤四中,判断按照静态时间规划表下一个任务执行时间结束后,是否达到全局总线时间中断模块的周期,若达到,则进行下一个任务调度时,不需要按照静态时间规划表设置计算机本地时钟中断的中断定时时间,不需要启动计算机本地时钟中断的计时,即进行下一任务调度;结合附图,以一个实例详细描述技术方案如下:一个系统,其分布式总线传输周期为10ms。单个计算机节点,根据功能分配和性能要求,将运行其上的任务分为3个,任务各自的运行周期及最差运行时间如下表:任务名任务周期任务最差执行时间task110ms2task220ms6task350ms9其中可见,小帧周期等于总线传输周期10ms,三个任务的任务周期时间均为小帧周期时间的整数倍。调度周期为三个任务周期的最小公倍数,即100ms。三个任务的执行关系每100ms重复一次,因此仅需要完成100ms之内的静态时间规划。根据此任务开销,进行任务的静态时间规划。基于单调速率的调度方式,结合总线通讯时间,得到的静态时间规划表如下:如上表,除了应用层的3个任务之外,在剩余的时间规划空闲后台任务taskIdle。其中,“当前时刻点是否为前一个任务死限点”这一属性,标明当前时刻是否需要调度器进行任务的超时检查,“当前时刻点是否为下一个任务起始点”这一属性,标明当前时刻调度器是否需要按照时间规划表调度下一个任务。三个任务周期的最小公倍数为100ms,因此静态时间规划表需描述100ms内所有任务调度的时刻点,下一个100ms重复执行此调度序列。根据静态时间规划得到的任务执行序列如图3所示。作为本发明的嵌入式任务调度装置,除包括以上静态时间规划表之外,还包括一个总线时间中断A,该中断周期为10ms;还包括一个计算机内部时钟中断B,该时钟中断的精度能够达到1us,且可可在不打断时钟计数的情况下,随时读取该时钟当前的计数值;还包括一个任务调度模块,该模块运行在总线时间中断A和内部时钟中断B的中断响应函数中,完成任务调度。在用户完成各任务的创建后,各任务处于执行就绪状态。处理调度器开启总线时间中断A启动调度。在中断A的服务响应函数中,取出时间规划表中的调度点1,由于首次调度没有前一个任务,因此不进行前一个任务状态的检查,此时待调度任务task1处于执行就绪状态,满足任务起始时刻点的状态要求,因此可以调度。此时,将内部时钟中断B的定时时间设置为task1本次的任务规划执行时间2ms,开启定时器B计数,并调度task1启动执行。此为任务调度模块进行一次调度所需完成的工作。正常情况下,task1在其10ms周期内,应该在小于其最差执行时间,即2ms的时间内执行结束。此时将task1置为执行就绪状态,转而调度taskIdle后台空闲任务。若在内部时钟中断B的时间到达时,task1还没有执行结束,仍处于运行状态,则此时调度器检查调度点2的属性,发现其为上一个任务task1的执行截止时刻,由此判断task1任务超时,强制停止该任务执行,并转入该任务的超时处理过程中。此后,进行下一个任务的状态检查,task2任务处于执行就绪状态,因此可以调度。此时,将内部时钟中断B的定时时间设置为task1本次的任务规划执行时间6ms,开始定时器B计数,并调度task2启动执行。之上的调度过程是对于不存在任务抢占情况下的任务调度流程,其处理器资源占用时序如图4所示。在task2执行结束后,第8ms进入内部时钟中断B的处理函数,此时开始进行任务task3的调度。在任务task3开始执行2ms后,总线时间中断A的时间到,task3的执行过程被打断。在总线时间A的中断响应函数中,使用静态规划表中的调度点4,发现虽然此时task3未执行结束,但此时刻不是task3的执行死限点,因此不认为任务task3超时,将task3置为被抢占状态,继续正常的任务调度。按照时间规划表,选择task1作为下一个执行的任务,将内部时钟中断B的定时时间设为2ms,启动task1执行。在task1执行结束,进入内部时钟中断B的响应函数后,选择静态规划表的调度点5。其为下一个任务task3的任务恢复时刻,而当前task3位于被抢占状态,因此认为当前应该恢复task3的执行。将内部时钟中断B的定时时间设为7ms后,恢复task3执行。之上的调度过程是一次存在任务抢占的任务调度流程,其处理器资源占用时序如图5所示。对于以上的调度过程,另一种可能发生的情况,是任务task3在调度点3被第一次启动后,执行不到2ms即结束本周期工作,此时调度器置task3为执行就绪状态,转入taskIdle任务的执行。则当调度器进行调度点5的调度时,由于task3已经处于执行就绪状态,而未处于被抢占状态,因此调度器认为task3本周期的工作已经完成,不再进行task3的调度,转而进行taskIdle任务的调度。其处理器资源占用时序如图6所示。对于调度模块运行过程中的任务状态,有比较明确的定义,若某一调度时刻为下一个任务的启动执行时刻,而该任务当前处于被抢占状态或者运行状态,则认为运行故障;若某一调度时刻为下一个任务的恢复执行时刻,而该任务处于运行状态,则认为运行故障;若某一调度时刻,若前一个任务处于被抢占状态,则认为运行故障。对于时间规划表的调度点4,是由总线时钟中断触发进行的。由于之前时钟中断B的定时器计数值曾经被重置,存在一定的延迟,因此对于时间规划表的调度点4,时钟中断B的触发时刻应该比总线时钟中断A的触发要迟,此时本地时钟中断B的定时器仍在计数。可以通过检查本地时钟中断B的定时器的计数值,是否小于一定门限,来判断总线时钟中断的时间周期是否准确合理。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1