一种任务调度方法及装置
文献发布时间:2023-06-19 09:30:39
技术领域
本发明涉及计算机技术领域,特别涉及一种任务调度方法及装置。
背景技术
嵌入式系统支持多任务,例如各类基础任务、耗时任务、空闲任务等。嵌入式系统任务调度主要是协调嵌入式系统中各项任务对系统资源的争夺使用,现有的嵌入式系统任务调度机制主要有任务轮询机制和优先级抢占机制。当采用任务轮询机制进行任务调度时,在系统任务执行时间总时间固定的情况下,各项任务可以轮流使用系统资源,但由于耗时任务执行时间较长,耗时任务长时间占用系统资源,将会直接影响到基础任务的执行效率。当采用优先级抢占机制进行任务调度时,系统会始终选择优先级最高的就绪任务执行,但由于外部事件的不可预知性,在诸如汽车系统等功能安全领域,较难满足功能安全对任务执行可预期的要求。
发明内容
本发明实施例公开了一种任务调度方法、装置、电子设备及计算机可读存储介质,以提升基础任务执行的可预期性和系统资源的利用合理性。
为达到上述目的,本发明实施例公开了一种任务调度方法,所述方法包括:
按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态;
在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
可选的,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间或者剩余计划执行时间。
可选的,所述各基础任务的计划执行时间大于实际执行时间。
可选的,所述任务调度为基于汽车电子功能安全要求的任务调度。
可选的,所述各基础任务所在的基础任务链表与所述耗时任务所在的耗时任务链表为两个不同的任务链表;
所述在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务包括:
在当前基础任务的实际执行时间小于计划执行时间的情况下,在所述当前基础任务执行完成后,调度执行所述耗时任务链表中所述就绪状态的耗时任务;
在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务。
可选的,所述当前基础任务的实际执行时间小于计划执行时间的情况包括所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况;或者
所述在当前基础任务的实际执行时间小于计划执行时间的情况下,在所述当前基础任务执行完成后,调度执行所述耗时任务链表中所述就绪状态的耗时任务之前,所述方法还包括:在当前基础任务执行完成后,比较所述当前基础任务的实际执行时间与计划执行时间的大小关系。
可选的,所述在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务之前,所述方法还包括:
以所述各基础任务的计划执行时间的最小单位时间为周期,判断是否到达所述下一基础任务执行时刻;或者
在当前基础任务开始执行时开启计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻;或者
在当前基础任务执行完成后开启计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻。
可选的,所述在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务包括:
在到达下一基础任务执行时刻的情况下,判断当前执行任务是否为所述耗时任务链表中的任务;
在当前执行任务为所述耗时任务链表中的任务的情况下,保存所述耗时任务链表的链表信息,调度执行所述基础任务链表中所述下一基础任务。
为达到上述目的,本发明实施例公开了一种任务调度装置,所述装置包括:
基础任务执行模块,用于按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态;
耗时任务执行模块,用于在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
可选的,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间或者剩余计划执行时间。
可选的,所述各基础任务的计划执行时间大于实际执行时间。
可选的,所述任务调度为基于汽车电子功能安全要求的任务调度。
可选的,所述各基础任务所在的基础任务链表与所述耗时任务所在的耗时任务链表为两个不同的任务链表;
所述耗时任务执行模块,用于在当前基础任务的实际执行时间小于计划执行时间的情况下,在所述当前基础任务执行完成后,调度执行所述耗时任务链表中所述就绪状态的耗时任务;
所述基础任务执行模块,还用于在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务。
可选的,所述当前基础任务的实际执行时间小于计划执行时间的情况包括所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况;或者
所述装置还包括:比较模块,用于在当前基础任务执行完成后,比较所述当前基础任务的实际执行时间与计划执行时间的大小关系。
可选的,所述装置还包括:
基础任务执行时刻到达确定模块,用于以所述各基础任务的计划执行时间的最小单位时间为周期,判断是否到达所述下一基础任务执行时刻;或者
定时器,用于在当前基础任务开始执行时开启计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻;或者
定时器,用于在当前基础任务执行完成后开启计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻。
可选的,所述基础任务执行模块,还用于在到达下一基础任务执行时刻的情况下,判断当前执行任务是否为所述耗时任务链表中的任务;用于在当前执行任务为所述耗时任务链表中的任务的情况下,保存所述耗时任务链表的链表信息,调度执行所述基础任务链表中所述下一基础任务。
为达到上述目的,本发明实施例还公开了一种电子设备,包括处理器、存储器,其中,
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本发明实施例所提供的一种任务调度方法的步骤。
为达到上述目的,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的一种任务调度方法的步骤。
为达到上述目的,本发明实施例还公开了一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行实现本发明实施例所提供的一种任务调度方法的步骤。
本发明实施例提供了一种任务调度方法、装置、电子设备及计算机可读存储介质,按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态;在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务调度方法的流程示意图;
图2为本发明实施例提供的另一种任务调度方法的流程示意图;
图2-1为本发明实施例提供的一种系统运行周期内任务调度过程的示意图;
图3为本发明实施例提供的再一种任务调度方法的流程示意图;
图4为本发明实施例提供的一种任务调度装置的结构示意图;
图5为本发明实施例提供的另一种任务调度装置的结构示意图;
图6为本发明实施例提供的再一种任务调度装置的结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,图1为本发明实施例提供的一种任务调度方法的流程示意图,该方法包括:
S101:按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态。
具体地,在系统运行之前,用户可以根据需要配置系统周期时间,并且对各任务进行配置:可以将需严格按照计划执行时间执行的任务配置为基础任务,例如信号采集任务,配置系统周期内各基础任务的计划执行时间,并将各基础任务状态配置为就绪状态;可以将执行时间较长、需要满足一定条件时才能执行且对执行结束时刻并不严格要求的任务配置为耗时任务,例如需要在采集到一定数量的信号后才能执行的算法任务,在配置阶段,将所述耗时任务状态配置为未就绪状态,在所述各基础任务中至少一个基础任务的执行过程中,系统环境会达到所述耗时任务执行所需要的条件,所述耗时任务状态会被触发为就绪状态。在系统运行后,按照各基础任务的计划执行时间执行所述各基础任务。
需要说明的是,当系统具备冗余通道进行表决处理的需要时,例如,通过多个通道并行处理并承担相同的任务,各通道进行任务级表决或者周期级表决,系统根据多个通道表决处理的结果确定结论,从而进一步提高系统的可靠性,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此,在配置阶段,通过将基础任务的计划执行时间与所述基础任务所触发的任务的理想执行时间比较,当所述基础任务所触发的任务的理想执行时间大于所述基础任务的计划执行时间时,将所述基础任务所触发的任务配置为耗时任务,从而使得在正常系统运行环境下,当任务满足实际执行时间大于触发所述任务的基础任务的计划执行时间时,所述任务被配置为耗时任务,减少了因将所述任务配置为基础任务,所述任务在执行时长时间占用系统资源而影响到其他基础任务的执行效率的情况发生的概率。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的剩余计划执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此在配置阶段,通过计算基础任务的计划执行时间与理想执行时间的差值,将所述差值与所述基础任务所触发的任务的理想执行时间比较,当所述基础任务所触发的任务的理想执行时间大于所述差值时,将所述基础任务所触发的任务配置为耗时任务,从而使得在正常系统运行环境下,当任务满足实际执行时间大于触发所述任务的基础任务的剩余计划执行时间时,所述任务被配置为耗时任务,减少了因将所述任务配置为基础任务,将所述任务在触发所述任务的基础任务后执行而使后续基础任务无法按计划执行时间执行的情况发生的概率。
在本发明的一个实施例中,所述各基础任务的计划执行时间大于实际执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此,在配置阶段,配置系统周期内各基础任务的计划执行时间大于理想实际执行时间,从而使得在正常系统运行环境下,各基础任务的计划执行时间能够大于实际执行时间,这样,各基础任务都存在剩余计划执行时间,所述剩余计划执行时间可以作为系统调度时间片调度其他任务的执行,在保证各基础任务严格按照计划执行时间执行的同时,在各基础任务的计划执行时间内都为调度其他任务预留了时间,提升了系统资源的利用合理性。
S102:在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
这样,所述耗时任务可以通过有限个实际执行时间小于计划执行时间的基础任务的剩余计划执行时间执行完成。在所述耗时任务执行完成后,可以将所述耗时任务的执行结果直接提供给需要调用所述执行结果的基础任务,使得所述基础任务在后续执行时可以直接调用所述执行结果;也可以利用固定的存储位置来存储所述耗时任务的执行结果,所述需要调用所述执行结果的基础任务在每个系统周期内执行时都会读取所述存储位置中的数据,当所述耗时任务执行完成时将执行结果存储至所述存储位置,所述基础任务在读取到所述执行结果时可以调用所述执行结果。
通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,一方面,保证各基础任务严格按照计划执行时间执行,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率;另一方面,合理地利用了基础任务的剩余计划执行时间,为耗时任务提供了执行时间,提升了系统资源的利用合理性。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。由于汽车电子产品中任务执行系统周期一般为几十毫秒,在系统周期内执行的如倒车信号采集或者雷达信号采集等基础任务的执行时间一般为几毫秒或者十几毫秒,而耗时任务如规划倒车路径等算法任务的执行时间一般为系统周期的几十倍,若耗时任务长时间执行将直接影响到基础任务的执行效率,无法保证功能安全。在汽车电子产品的嵌入式系统中应用本发明实施例所提供的任务调度方法,保证了道路车辆功能安全国际标准ISO26262对任务执行可预期的要求,使多个基础任务按照预期的时刻和时间段执行。
本发明实施例提供了一种任务调度方法,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图2,图2为本发明实施例提供的另一种任务调度方法的流程示意图,该方法包括:
S201:生成基础任务链表和耗时任务链表。
具体地,在系统运行之前,用户可以根据需要配置系统周期时间,并且对各任务进行配置:可以将需按照计划执行时间执行的任务配置为基础任务,例如信号采集任务,配置各基础任务的计划执行时间,并将各基础任务状态配置为就绪状态;可以将执行时间较长、需要满足一定条件时才能执行且对执行结束时刻并不严格要求的任务配置为耗时任务,例如需要在采集到一定数量的信号后才能执行的算法任务,在配置阶段,将所述耗时任务状态配置为未就绪状态,在所述各基础任务中至少一个基础任务的执行过程中,系统环境会达到所述耗时任务执行所需要的条件,所述耗时任务状态会被触发为就绪状态,也就是说,所述各基础任务中至少一个基础任务在执行过程中会将所述耗时任务状态触发为就绪状态。用户可以将所述各基础任务所在的基础任务链表与所述耗时任务所在的耗时任务链表配置为两个不同的任务链表。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此,在配置阶段,通过将基础任务的计划执行时间与所述基础任务所触发的任务的理想执行时间比较,当所述基础任务所触发的任务的理想执行时间大于所述基础任务的计划执行时间时,将所述基础任务所触发的任务配置为耗时任务,从而使得在正常系统运行环境下,当任务满足实际执行时间大于触发所述任务的基础任务的计划执行时间时,所述任务被配置为耗时任务,减少了因将所述任务配置为基础任务,所述任务在执行时长时间占用系统资源而影响到其他基础任务的执行效率的情况发生的概率。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的剩余计划执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此在配置阶段,通过计算基础任务的计划执行时间与理想执行时间的差值,将所述差值与所述基础任务所触发的任务的理想执行时间比较,当所述基础任务所触发的任务的理想执行时间大于所述差值时,将所述基础任务所触发的任务配置为耗时任务,从而使得在正常系统运行环境下,当任务满足实际执行时间大于触发所述任务的基础任务的剩余计划执行时间时,所述任务被配置为耗时任务,减少了因将所述任务配置为基础任务,将所述任务在触发所述任务的基础任务后执行而使后续基础任务无法按计划执行时间执行的情况发生的概率。
在本发明的一个实施例中,所述各基础任务的计划执行时间大于实际执行时间。
具体地,可以预先对各任务执行多次得到各任务的多个实际执行时间,所述各任务的多个实际执行时间的平均值为各任务的理想执行时间。由于在正常系统运行环境下,各任务的理想执行时间和实际执行时间之间的误差较小,因此,在配置阶段,配置系统周期内各基础任务的计划执行时间大于理想实际执行时间,从而使得在正常系统运行环境下,各基础任务的计划执行时间能够大于实际执行时间,这样,各基础任务都存在剩余计划执行时间,所述剩余计划执行时间可以作为系统调度时间片调度其他任务的执行,在保证各基础任务严格按照计划执行时间执行的同时,在各基础任务的计划执行时间内都为调度其他任务预留了时间,提升了系统资源的利用合理性。
在用户对系统周期时间及各任务配置完毕后,系统运行时解析配置信息,生成基础任务链表和耗时任务链表。
具体地,所述基础任务链表中所述各基础任务可以按照计划执行时间依次排列,所述基础任务链表中的基础任务栈空间可以为系统栈空间。所述耗时任务链表中所述各耗时任务可以按照配置顺序依次排列,所述耗时任务链表中的任务需要独立申请任务栈空间,这里,利用所述耗时任务链表中任务栈作为用户唯一定义栈,减少了实时操作系统对任务单独定义栈的风险。
在本发明的一个实施例中,可以将空闲任务配置到耗时任务链表中,所述空闲任务为执行结果不影响系统运行、对是否执行完成不严格要求的任务,将所述空闲任务状态配置为就绪状态,所述耗时任务链表中所述耗时任务和空闲任务可以按照配置顺序依次排列,进一步地,还可以对所述耗时任务和空闲任务进行优先级配置。
S202:执行所述基础任务链表中的当前基础任务。
执行所述基础任务链表中符合当前执行时刻的当前基础任务,使得系统周期内各基础任务能够按照各基础任务的计划执行时间执行。在步骤S202执行完成后,即所述当前基础任务执行完成后,执行步骤S203。
这里,由于需要使得系统周期内各基础任务能够按照各基础任务的计划执行时间执行,因此,在系统执行任务的同时,需要确定是否到达下一基础任务执行时刻,从而在到达下一基础任务执行时刻时执行相应操作,具体步骤可以为步骤S21至S23。
S21:确定到达下一基础任务执行时刻。
具体地,可以在所述当前基础任务开始执行时,从所述已配置的信息中读取所述当前基础任务的计划执行时间,在当前基础任务开始执行时开启定时器计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,从而通过所述定时器触发中断事件,来确定已到达下一基础任务执行时刻。
也可以在当前基础任务执行完成后开启定时器计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,从而通过所述定时器触发中断事件,来确定已到达下一基础任务执行时刻。需要说明的是,这里,可以通过在当前基础任务开始执行时读取系统时钟作为当前基础任务开始执行时刻,在当前基础任务执行完成时读取系统时钟作为当前基础任务执行完成时刻,将所述当前基础任务执行完成时刻与所述当前基础任务开始执行时刻相减来得到所述当前基础任务的实际执行时间。
较优地,可以通过以所述各基础任务的计划执行时间的最小单位时间为固定周期,在开始执行所述基础任务链表中的基础任务后,定期判断是否到达下一基础任务执行时刻,以实现在到达所述下一基础任务执行时刻时,调度所述下一基础任务的执行。具体地,可以在启动基础任务的执行时开启系统毫秒定时器,所述系统毫秒定时器每毫秒触发中断事件后,根据所述已配置的信息中所述各基础任务的计划执行时间,判断是否到达所述下一基础任务执行时刻。通过毫秒定时器触发中断事件来判断是否到达下一基础任务执行时刻,在配置定时器阶段更加简单,且定时器时间统一,减少了因多次更新定时器的中断时间而造成定时器出现累积误差的风险。
S22:判断当前执行任务的任务属性,在当前执行任务为所述基础任务链表中的任务的情况下,执行步骤S203;在当前执行任务为所述耗时任务链表中的任务的情况下,执行步骤S23。
在通过定时器发生中断事件来确定是否到达下一基础任务执行时刻时,由于在到达下一基础任务执行时刻时,正在执行的任务有可能为所述基础任务链表中的任务,例如在到达下一基础任务执行时刻时所述当前基础任务还未执行完成或正好执行完成;正在执行的任务也有可能不为所述基础任务链表中的任务,例如正在执行的任务有可能为所述耗时任务链表中的任务,因此,需要判断当前执行任务的任务属性,在当前执行任务为所述基础任务链表中的任务的情况下,执行步骤S203;在当前执行任务为所述耗时任务链表中的任务的情况下,执行步骤S23。
S23:保存所述耗时任务链表的链表信息,调度所述基础任务链表中下一基础任务的执行,执行所述步骤S202。
由于需要按照计划执行时间执行下一基础任务,因此,在到达下一基础任务执行时刻的情况下,需要调度至所述基础任务链表执行所述下一基础任务。具体地,可以在到达下一基础任务执行时刻时,通过触发中断来实现任务切换。需要说明的是,在到达下一基础任务执行时刻时,当前执行任务有可能是所述耗时任务链表中的任务,那么就需要保存此时所述耗时任务链表的链表信息,读取所述基础任务链表的链表信息,所述链表信息包括链表中任务的堆栈信息,根据所述基础任务链表的链表信息调度至所述基础任务链表的当前任务调度点,调度所述基础任务链表中所述下一基础任务的执行,执行所述步骤S202。
如此,通过步骤S21至S23,系统在执行任务的同时还会确定是否到达下一基础任务执行时刻,并在到达下一基础任务执行时刻时执行相应操作。
S203:在所述当前基础任务执行完成后,比较所述当前基础任务的实际执行时间与计划执行时间的大小关系,若所述当前基础任务的实际执行时间大于计划执行时间,执行步骤S204;若所述当前基础任务的实际执行时间等于计划执行时间,执行步骤S205;若所述当前基础任务的实际执行时间小于计划执行时间,执行步骤S206。
具体地,可以在当前基础任务开始执行时读取系统时钟作为当前基础任务开始执行时刻,在当前基础任务执行完成时读取系统时钟作为当前基础任务执行完成时刻,将所述当前基础任务执行完成时刻与所述当前基础任务开始执行时刻相减得到所述当前基础任务的实际执行时间,在已配置的信息中获取所述当前基础任务的计划执行时间,比较所述当前基础任务的实际执行时间与计划执行时间的大小关系,若所述当前基础任务的实际执行时间大于计划执行时间,执行步骤S204;若所述当前基础任务的实际执行时间等于计划执行时间,执行步骤S205;若所述当前基础任务的实际执行时间小于计划执行时间,执行步骤S206。
S204:系统进入安全状态。
在所述当前基础任务的实际执行时间大于计划执行时间的情况下,所述当前基础任务出现超时故障,所述各基础任务不能按照计划执行时间执行,此时系统进入安全状态,这里,系统可以直接结束执行任务并发出故障信号,例如控制指示灯点亮或者蜂鸣器响铃,以提示用户进行相应处理;系统也可以重新启动,在重新启动后执行任务的过程中若还出现超时故障,再结束执行任务并发出故障信号,从而提高系统的安全可靠性。
S205:继续所述基础任务链表中下一基础任务的执行,执行步骤S202。
由于所述当前基础任务的实际执行时间等于计划执行时间,因此所述当前基础任务的执行完成时刻即为所述下一基础任务的计划执行开始时刻,由于需要按照计划执行时间执行下一基础任务,因此,需要继续所述基础任务链表中下一基础任务的执行,执行步骤S202。
S206:在所述当前基础任务执行完成后,调度至所述耗时任务链表以执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
由于所述当前基础任务的实际执行时间小于计划执行时间,因此在所述当前基础任务执行结束后,还存在剩余计划执行时间,在所述剩余计划执行时间内调度执行所述耗时任务链表中就绪状态的耗时任务。具体地,可以在所述当前基础任务执行完成后,通过触发中断来实现任务切换。在中断发生后,可以对所述基础任务链表的链表信息进行保存,读取所述耗时任务链表的链表信息,所述链表信息包括链表中任务的堆栈信息,根据所述耗时任务链表的链表信息调度至所述耗时任务链表的当前任务调度点。所述耗时任务链表中所述各耗时任务可以按照配置顺序依次排列,在调度至所述耗时任务链表后,可以以所述当前任务调度点为起点,循环地在所述耗时任务链表中依次查询是否存在就绪状态的耗时任务,若存在,即执行所述就绪状态的耗时任务。
在本发明的一个实施例中,可以将空闲任务配置到耗时任务链表中,将所述空闲任务状态配置为就绪状态,所述耗时任务链表中所述耗时任务和空闲任务可以按照配置顺序依次排列,在调度至所述耗时任务链表后,可以以所述当前任务调度点为起点,循环地在所述耗时任务链表中依次查询是否存在就绪状态的任务,若存在,即执行所述就绪状态的任务,也就是说,若所述耗时任务链表中所述就绪状态的空闲任务在所述就绪状态的耗时任务之前,可以先执行所述就绪状态的空闲任务,在所述就绪状态的空闲任务执行结束后,再执行所述就绪状态的耗时任务。进一步地,还可以对所述耗时任务和空闲任务进行优先级配置,例如,可以将所述耗时任务的优先级配置为高于所述空闲任务,这样,在调度至所述耗时任务链表后,可以根据优先级,执行所述耗时任务链表中的就绪状态的任务。
需要说明的是,在所述耗时任务执行完成后,可以将所述耗时任务的执行结果直接提供给需要调用所述执行结果的基础任务,使得所述基础任务在后续执行时可以直接调用所述执行结果;也可以利用固定的存储位置来存储所述耗时任务的执行结果,所述需要调用所述执行结果的基础任务在每个系统周期内执行时都会读取所述存储位置中的数据,当所述耗时任务执行完成时将执行结果存储至所述存储位置,所述基础任务在读取到所述执行结果时可以调用所述执行结果。
这里,由于在所述当前基础任务执行完成后,已调度至所述耗时任务链表以执行就绪状态的耗时任务,因此在到达下一基础任务执行时刻的情况下,当前执行任务为所述耗时任务链表中的任务。根据步骤S23,在判断得到当前执行任务为所述耗时任务链表中的任务的情况下,将保存所述耗时任务链表的链表信息,调度所述基础任务链表中所述下一基础任务的执行,执行所述步骤S202。
这样,在系统运行过程中,就可以实现在各基础任务的剩余计划执行时间内,调度至所述耗时任务链表执行就绪状态的任务。例如,可参考图2-1,图2-1为本发明实施例提供的一种系统运行周期内任务调度过程的示意图。由图2-1可见,基础任务1的计划执行时间为10ms,实际执行时间为5ms,在基础任务1执行完成后,调度至所述耗时任务链表执行就绪状态的任务,在执行5ms所述耗时任务链表执行就绪状态的任务后,由于已到达下一基础任务即基础任务2的开始执行时刻,又调度执行所述基础任务链表中基础任务2。基础任务2的计划执行时间为15ms,实际执行时间为8ms,在基础任务2执行完成后,再次调度至所述耗时任务链表执行就绪状态的任务,在到达下一基础任务即基础任务3的开始执行时刻后,又调度执行所述基础任务链表中基础任务3。
这样,在系统运行过程中,对各基础任务的实际执行时间和计划执行时间进行比较,在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,调度至所述耗时任务链表执行就绪状态的任务,由于所述耗时任务链表中的耗时任务状态会被基础任务触发为就绪状态,因此,所述耗时任务在被触发为就绪状态后,会在有限个实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内被调度执行,且所述耗时任务可以通过有限个实际执行时间小于计划执行时间的基础任务的剩余计划执行时间执行完成。一方面,保证各基础任务严格按照计划执行时间执行,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率;另一方面,合理地利用了基础任务的剩余计划执行时间,为耗时任务提供了执行时间,提升了系统资源的利用合理性。
需要说明的是,当系统具备冗余通道进行表决处理的需要时,例如,通过多个通道并行处理并承担相同的任务,各通道进行任务级表决或者周期级表决,系统根据多个通道表决处理的结果确定结论,从而进一步提高系统的可靠性,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。由于汽车电子产品中任务执行系统周期一般为几十毫秒,在系统周期内执行的如倒车信号采集或者雷达信号采集等基础任务的执行时间一般为几毫秒或者十几毫秒,而耗时任务如规划倒车路径等算法任务的执行时间一般为系统周期的几十倍,若耗时任务长时间执行将直接影响到基础任务的执行效率,无法保证功能安全。在汽车电子产品的嵌入式系统中应用本发明实施例所提供的任务调度方法,保证了道路车辆功能安全国际标准ISO26262对任务执行可预期的要求,使多个基础任务按照预期的时刻和时间段执行。
本发明实施例提供了另一种任务调度方法,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图3,图3为本发明实施例提供的再一种任务调度方法的流程示意图,该方法包括:
S301:生成基础任务链表和耗时任务链表。
步骤S301的具体说明详见S201,本发明实施例在此不再赘述。
S302:执行所述基础任务链表中的当前基础任务,在所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况下,执行步骤S303;在产生到达下一基础任务执行时刻的信号时所述当前基础任务正好完成的情况下,执行步骤S304;在所述当前基础任务还未完成但已产生到达下一基础任务执行时刻的信号的情况下,执行步骤S305。
执行所述基础任务链表中符合当前执行时刻的当前基础任务,使得系统周期内各基础任务能够按照各基础任务的计划执行时间执行。这里,由于需要使得系统周期内各基础任务能够按照各基础任务的计划执行时间执行,因此,在系统执行任务的同时,系统会产生到达下一基础任务执行时刻的信号。在所述当前基础任务还未完成但已产生到达下一基础任务执行时刻的信号的情况下,执行步骤S303;在产生到达下一基础任务执行时刻的信号时所述当前基础任务正好完成的情况下,执行步骤S304;在所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况下,执行步骤S305。
具体地,系统产生到达下一基础任务执行时刻的信号的步骤以及在产生到达下一基础任务执行时刻的信号后执行相应操作的步骤可以为步骤S31至S34。
S31:产生到达下一基础任务执行时刻的信号。
具体地,可以在当前基础任务开始执行时,从已配置的信息中读取所述当前基础任务的计划执行时间,在当前基础任务开始执行时开启定时器计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,所述定时器触发中断事件,即为产生到达下一基础任务执行时刻的信号。
也可以在当前基础任务执行完成后开启定时器计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,所述当前定时器触发中断事件,即为产生到达下一基础任务执行时刻的信号。需要说明的是,这里,可以通过在当前基础任务开始执行时读取系统时钟作为当前基础任务开始执行时刻,在当前基础任务执行完成时读取系统时钟作为当前基础任务执行完成时刻,将所述当前基础任务执行完成时刻与所述当前基础任务开始执行时刻相减来得到所述当前基础任务的实际执行时间。
较优地,可以通过以所述各基础任务的计划执行时间的最小单位时间为固定周期,在开始执行所述基础任务链表中的基础任务后,定期判断是否到达下一基础任务执行时刻。具体地,可以在启动基础任务的执行时开启系统毫秒定时器,所述系统毫秒定时器每毫秒触发中断事件后,根据所述已配置的信息中所述各基础任务的计划执行时间,判断是否到达所述下一基础任务执行时刻。在判断结果为到达所述下一基础任务执行时刻时,所述判断结果即为产生的到达下一基础任务执行时刻的信号。通过毫秒定时器触发中断事件来判断是否到达下一基础任务执行时刻,在配置定时器阶段更加简单,且定时器时间统一,减少了因多次更新定时器的中断时间而造成定时器出现累积误差的风险。
S32:判断当前执行任务的任务属性,在当前执行任务为所述基础任务链表中的任务的情况下,执行步骤S33;在当前执行任务为所述耗时任务链表中的任务的情况下,执行步骤S34。
在通过定时器发生中断事件来确定是否到达下一基础任务执行时刻时,由于在到达下一基础任务执行时刻时,正在执行的任务有可能为所述基础任务链表中的任务,例如在到达下一基础任务执行时刻时所述当前基础任务还未执行完成或正好执行完成;正在执行的任务也有可能不为所述基础任务链表中的任务,例如正在执行的任务有可能为所述耗时任务链表中的任务,因此,需要判断当前执行任务的任务属性,在当前执行任务为所述基础任务链表中的任务的情况下,执行步骤S33;在当前执行任务为所述耗时任务链表中的任务的情况下,执行步骤S34。
S33:判断当前执行任务的执行状态,在当前执行任务的执行状态为已完成时,执行步骤S304;在当前执行任务的执行状态为正在执行中时,执行步骤S305。
S34:保存所述耗时任务链表的链表信息,调度所述基础任务链表中所述下一基础任务的执行,执行所述步骤S302。
由于需要按照计划执行时间执行下一基础任务,因此,在到达下一基础任务执行时刻的情况下,需要调度至所述基础任务链表执行所述下一基础任务。具体地,可以在到达下一基础任务执行时刻时,通过触发中断来实现任务切换。需要说明的是,在到达下一基础任务执行时刻时,当前执行任务有可能是所述耗时任务链表中的任务,那么就需要保存此时所述耗时任务链表的链表信息,读取所述基础任务链表的链表信息,所述链表信息包括链表中任务的堆栈信息,根据所述基础任务链表的链表信息调度至所述基础任务链表的当前任务调度点,调度所述基础任务链表中所述下一基础任务的执行,执行所述步骤S302。
如此,通过步骤S31至S34,系统在执行任务的同时还会根据基础任务的计划执行时间产生到达下一基础任务执行时刻的信号,并在产生到达下一基础任务执行时刻的信号时执行相应操作。
S303:在所述当前基础任务执行完成后,调度至所述耗时任务链表以执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
具体地,在所述当前基础任务执行完成后,且未产生到达下一基础任务执行时刻的信号的情况下,可以通过触发中断来实现任务切换。在中断发生后,可以对所述基础任务链表的链表信息进行保存,读取所述耗时任务链表的链表信息,所述链表信息包括所述链表中任务的堆栈信息,根据所述链表信息调度至所述耗时任务链表的当前任务调度点。所述耗时任务链表中所述各耗时任务可以按照配置顺序依次排列,在调度至所述耗时任务链表后,可以以所述当前任务调度点为起点,循环地在所述耗时任务链表中依次查询是否存在就绪状态的耗时任务,若存在,即执行所述就绪状态的耗时任务。
在本发明的一个实施例中,可以将空闲任务配置到耗时任务链表中,将所述空闲任务状态配置为就绪状态,所述耗时任务链表中所述耗时任务和空闲任务可以按照配置顺序依次排列,在调度至所述耗时任务链表后,可以以所述当前任务调度点为起点,循环地在所述耗时任务链表中依次查询是否存在就绪状态的任务,若存在,即执行所述就绪状态的任务,也就是说,若所述耗时任务链表中所述就绪状态的空闲任务在所述就绪状态的耗时任务之前,可以先执行所述就绪状态的空闲任务,在所述就绪状态的空闲任务执行结束后,再执行所述就绪状态的耗时任务。进一步地,还可以对所述耗时任务和空闲任务进行优先级配置,例如,可以将所述耗时任务的优先级配置为高于所述空闲任务,这样,在调度至所述耗时任务链表后,可以根据优先级,执行所述耗时任务链表中的就绪状态的任务。
需要说明的是,在所述耗时任务执行完成后,可以将所述耗时任务的执行结果直接提供给需要调用所述执行结果的基础任务,使得所述基础任务在后续执行时可以直接调用所述执行结果;也可以利用固定的存储位置来存储所述耗时任务的执行结果,所述需要调用所述执行结果的基础任务在每个系统周期内执行时都会读取所述存储位置中的数据,当所述耗时任务执行完成时将执行结果存储至所述存储位置,所述基础任务在读取到所述执行结果时可以调用所述执行结果。
这里,由于在所述当前基础任务执行完成后,已调度至所述耗时任务链表以执行就绪状态的耗时任务,因此在到达下一基础任务执行时刻的情况下,当前执行任务为所述耗时任务链表中的任务。根据步骤S34,在判断得到当前执行任务为所述耗时任务链表中的任务的情况下,会将保存所述耗时任务链表的链表信息,调度所述基础任务链表中所述下一基础任务的执行,执行所述步骤S302。
S304:继续所述基础任务链表中下一基础任务的执行,执行步骤S302。
由于步骤S303中,在所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况下,在所述当前基础任务执行完成后,会调度至所述耗时任务链表以执行就绪状态的耗时任务,因此,在产生到达下一基础任务执行时刻的信号的情况下,若判断得到当前执行任务为所述基础任务链表中的任务,且所述当前执行任务的任务状态为已完成,则此时为在产生到达下一基础任务执行时刻的信号时所述当前基础任务正好完成的情况。
由于在产生到达下一基础任务执行时刻的信号时所述当前基础任务正好完成,因此所述当前基础任务的执行完成时刻即为所述下一基础任务的计划执行开始时刻,由于需要按照计划执行时间执行下一基础任务,因此,需要继续所述基础任务链表中下一基础任务的执行,执行步骤S302。
S305:系统进入安全状态。
在产生到达下一基础任务执行时刻的信号的情况下,若判断得到当前执行任务为所述基础任务链表中的任务,且所述当前执行任务的任务状态为正在执行中,则此时为在所述当前基础任务还未完成但已产生到达下一基础任务执行时刻的信号的情况。
在所述当前基础任务还未完成但已产生到达下一基础任务执行时刻的信号的情况下,所述当前基础任务出现超时故障,所述各基础任务不能按照计划执行时间执行,此时系统进入安全状态,这里,系统可以直接结束执行任务并发出故障信号,例如控制指示灯点亮或者蜂鸣器响铃,以提示用户进行相应处理;系统也可以重新启动,在重新启动后执行任务的过程中若还出现超时故障,再结束执行任务并发出故障信号,从而提高系统的安全可靠性。
这样,在系统运行过程中,实现了在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,调度至所述耗时任务链表执行就绪状态的任务,由于所述耗时任务链表中的耗时任务状态会被基础任务触发为就绪状态,因此,所述耗时任务在被触发为就绪状态后,会在有限个实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内被调度执行,且所述耗时任务可以通过有限个实际执行时间小于计划执行时间的基础任务的剩余计划执行时间执行完成。一方面,保证各基础任务严格按照计划执行时间执行,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率;另一方面,合理地利用了基础任务的剩余计划执行时间,为耗时任务提供了执行时间,提升了系统资源的利用合理性。
需要说明的是,当系统具备冗余通道进行表决处理的需要时,例如,通过多个通道并行处理并承担相同的任务,各通道进行任务级表决或者周期级表决,系统根据多个通道表决处理的结果确定结论,从而进一步提高系统的可靠性,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。由于汽车电子产品中任务执行系统周期一般为几十毫秒,在系统周期内执行的如倒车信号采集或者雷达信号采集等基础任务的执行时间一般为几毫秒或者十几毫秒,而耗时任务如规划倒车路径等算法任务的执行时间一般为系统周期的几十倍,若耗时任务长时间执行将直接影响到基础任务的执行效率,无法保证功能安全。在汽车电子产品的嵌入式系统中应用本发明实施例所提供的任务调度方法,保证了道路车辆功能安全国际标准ISO26262对任务执行可预期的要求,使多个基础任务按照预期的时刻和时间段执行。
本发明实施例提供了再一种任务调度方法,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图4,图4为本发明实施例提供的一种任务调度装置的结构示意图,该装置包括:
基础任务执行模块401,用于按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态。
耗时任务执行模块402,用于在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的剩余计划执行时间。
在本发明的一个实施例中,所述各基础任务的计划执行时间大于实际执行时间。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。
本发明实施例提供了一种任务调度装置,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图5,图5为本发明实施例提供的另一种任务调度装置的结构示意图,该装置包括:
任务链表生成模块501,用于生成基础任务链表和耗时任务链表,所述基础任务链表和耗时任务链表为两个不同的任务链表。
基础任务执行模块502,用于按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态;用于在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务。
比较模块503,用于在当前基础任务执行完成后,比较所述当前基础任务的实际执行时间与计划执行时间的大小关系。
耗时任务执行模块504,用于在当前基础任务的实际执行时间小于计划执行时间的情况下,在所述当前基础任务执行完成后,调度执行所述耗时任务链表中所述就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
在本发明的一个实施例中,所述基础任务执行模块,还用于在到达下一基础任务执行时刻的情况下,判断当前执行任务是否为所述耗时任务链表中的任务;用于在当前执行任务为所述耗时任务链表中的任务的情况下,保存所述耗时任务链表的链表信息,调度执行所述基础任务链表中所述下一基础任务。
在本发明的一个实施例中,所述装置还包括:
基础任务执行时刻到达确定模块,用于以所述各基础任务的计划执行时间的最小单位时间为周期,判断是否到达所述下一基础任务执行时刻;或者
定时器,用于在当前基础任务开始执行时开启计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻;或者
定时器,用于在当前基础任务执行完成后开启计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的剩余计划执行时间。
在本发明的一个实施例中,所述各基础任务的计划执行时间大于实际执行时间。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。
本发明实施例提供了另一种任务调度装置,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图6,图6为本发明实施例提供的再一种任务调度装置的结构示意图,该装置包括:
任务链表生成模块601,用于生成基础任务链表和耗时任务链表,所述基础任务链表和耗时任务链表为两个不同的任务链表。
基础任务执行模块602,用于按照各基础任务的计划执行时间执行所述各基础任务,所述各基础任务中至少一个基础任务在执行过程中将耗时任务状态触发为就绪状态;用于在到达下一基础任务执行时刻的情况下,调度执行所述基础任务链表中所述下一基础任务。
耗时任务执行模块603,用于在所述当前基础任务执行完成且未产生到达下一基础任务执行时刻的信号的情况下,在所述当前基础任务执行完成后,调度执行所述耗时任务链表中所述就绪状态的耗时任务,所述耗时任务的执行结果供需要调用所述执行结果的基础任务调用。
在本发明的一个实施例中,所述基础任务执行模块,还用于在到达下一基础任务执行时刻的情况下,判断当前执行任务是否为所述耗时任务链表中的任务;用于在当前执行任务为所述耗时任务链表中的任务的情况下,保存所述耗时任务链表的链表信息,调度执行所述基础任务链表中所述下一基础任务。
在本发明的一个实施例中,所述装置还包括:
基础任务执行时刻到达确定模块,用于以所述各基础任务的计划执行时间的最小单位时间为周期,判断是否到达所述下一基础任务执行时刻,在判断结果为到达所述下一基础任务执行时刻时,所述判断结果即为产生的到达下一基础任务执行时刻的信号;或者
定时器,用于在当前基础任务开始执行时开启计时,在计时时间达到所述当前基础任务的计划执行时间时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,所述定时器触发中断事件,即为产生到达下一基础任务执行时刻的信号;或者
定时器,用于在当前基础任务执行完成后开启计时,在计时时间达到所述当前基础任务的计划执行时间与实际执行时间之差时触发中断事件,所述中断事件表示到达所述下一基础任务执行时刻,所述定时器发生中断事件,即为产生到达下一基础任务执行时刻的信号。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的计划执行时间。
在本发明的一个实施例中,所述耗时任务的实际执行时间大于触发所述耗时任务的基础任务的剩余计划执行时间。
在本发明的一个实施例中,所述各基础任务的计划执行时间大于实际执行时间。
在本发明的一个实施例中,所述任务调度为基于汽车电子功能安全要求的任务调度。
本发明实施例提供了再一种任务调度装置,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
参考图7,图7为本发明实施例提供的一种电子设备的结构示意图,该设备包括:
存储器701,用于存放计算机程序;
处理器702,用于执行存储器上所存放的程序时,实现上述实施例所提供的一种任务调度方法的步骤。
在本发明一个实施例中,所述电子设备还可以包括通信接口、通信总线、输入输出接口和显示器,其中,存储器、处理器、输入输出接口、显示器和通信接口通过通信总线完成相互间的通信。
存储器可以包括高速随机存取存储器(作为缓存),还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件,相应地,存储器还可以包括存储器控制器,以提供处理器和输入输出接口对存储器的访问。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。输入输出接口转发用户通过输入输出设备(例如感应器、键盘、触摸屏)输入的命令或数据。显示器显示各种信息给用户。通信接口实现所述电子设备与其它设备之间的通信,例如,通信接口可以通过有线或无线连接到网络以连接到外部其它设备。通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等,通信总线可以分为地址总线、数据总线、控制总线等。
本发明实施例提供了一种电子设备,由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例所提供的一种任务调度方法的步骤,所述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random-Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
本发明实施例还提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行实现上述实施例所提供的一种任务调度方法的步骤。所述计算机程序产品可以包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。由于所述各基础任务是按照各基础任务的计划执行时间执行的,可以预知系统运行中各基础任务执行的起始时刻,提升了各基础任务执行的可预期性;当系统具备冗余通道进行表决处理的需要时,由于各通道中各基础任务都是按照计划执行时间执行的,只需要在上电过程中同步一次,即可使得各通道任务级同步,提升了通道表决信息在时间上的一致性,增加了在冗余通道同步表决方面的优势;通过在实际执行时间小于计划执行时间的基础任务的剩余计划执行时间内,执行就绪状态的耗时任务,减少了耗时任务长时间占用系统资源的可能性,提升了基础任务的执行效率,同时也为耗时任务提供了执行时间,耗时任务可以通过在有限个基础任务的剩余计划执行时间内执行而完成,且耗时任务执行完成之后,所述耗时任务的执行结果可以供需要调用所述执行结果的基础任务调用,所有任务都可以被执行完成,提升了系统资源的利用合理性。
对于装置、电子设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
- 任务调度方法、任务调度装置、任务调度设备及存储介质
- 一种任务调度方法、装置和用于任务调度的装置