掌桥专利:专业的专利平台
掌桥专利
首页

任务调度控制方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及任务调度规划领域,尤其涉及一种任务调度控制方法、装置、设备及可读存储介质。

背景技术

目前,单线程无操作系统电子控制单元软件的任务调度方法是在循环内依次查询不同任务组是否满足执行条件,满足执行条件的任务组被调度执行一次,不满足执行条件的任务组被跳过,直至所有任务从上到下检查完毕。由于任务周期短的任务优先级高于任务周期长的任务,而这种任务调度方法,是用同一任务组的任务周期对应的时长作为同一任务组相邻两次调用时间间隔,而任务周期长的任务正在被调度执行时,任务周期短的任务即使相邻两次调用时间间隔到了,也不会被调度执行,导致任务执行先后顺序与任务优先级需求倒置,使得任务优先级高的任务数据丢失,任务功能失效。

发明内容

为解决上述技术问题,本发明提供一种任务调度控制方法、装置、设备及可读存储介质。

第一方面,本发明提供一种任务调度控制方法,所述任务调度控制方法包括:

获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;

启动计时器;

每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;

当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。

可选的,在所述每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数之后,包括:

当不存在前一次未执行完成的任务时,按照新的目标任务的优先级依次执行新的目标任务。

可选的,在所述启动计时器之后,包括:

当计时器的计时时长为单位时长的倍数时,中断正在执行的任务并保存断点以及未执行的任务,得到前一次未执行完成的任务的上下文环境。

可选的,所述任务的优先级根据各个任务的任务周期确定。

可选的,在所述启动计时器之后,包括:

当计时器开始计时设置任务执行标志位初始状态为第一常量,当计时器的计时时长第一次为单位时长的倍数时,控制任务执行标志位由第一常量变为第二常量;

当任务周期最长的任务被执行完毕后,控制任务执行标志位由第二常量变为第一常量。

第二方面,本发明还提供一种任务调度控制装置,所述任务调度控制装置包括:

获取模块,用于获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;

启动模块,用于启动计时器;

选取模块,用于每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;

执行模块,用于当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。

可选的,所述执行模块,还用于:

当不存在前一次未执行完成的任务时,按照新的目标任务的优先级依次执行新的目标任务。

可选的,所述任务调度控制装置,还包括中断模块,用于:

当计时器的计时时长为单位时长的倍数时,中断正在执行的任务并保存断点以及未执行的任务,得到前一次未执行完成的任务的上下文环境。

第三方面,本发明还提供一种任务调度控制设备,所述任务调度控制设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的任务调度控制程序,其中所述任务调度控制程序被所述处理器执行时,实现如上所述的任务调度控制方法的步骤。

第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有任务调度控制程序,其中所述任务调度控制程序被处理器执行时,实现如上所述的任务调度控制方法的步骤。

本发明中,获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;启动计时器;每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。通过本发明,以各个任务的任务周期的最大公约数作为单位时长,再根据计时器的计时时长选取新的目标任务,当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务,其中,当优先级高的任务满足任务执行条件时,中断正在执行的任务的执行进程,得到前一次未执行完成的任务,如此,就不会出现任务优先级高的任务比任务优先级低的任务后执行的情况,解决了现有技术中任务执行先后顺序与任务优先级需求倒置,导致任务优先级高的任务数据丢失,功能失效的问题。

附图说明

图1为本发明实施例方案中涉及的任务调度控制设备的硬件结构示意图;

图2为本发明任务调度控制方法第一实施例的流程示意图;

图3为本发明任务调度控制方法第二实施例的流程示意图;

图4为本发明任务调度控制方法第三实施例的流程示意图;

图5为本发明任务调度控制装置一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

第一方面,本发明实施例提供一种任务调度控制设备。

参照图1,图1为本发明实施例方案中涉及的任务调度控制设备的硬件结构示意图。本发明实施例中,任务调度控制设备可以包括处理器1001(例如中央处理器CentralProcessingUnit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真WIreless-FIdelity,WI-FI接口);存储器1005可以是高速随机存取存储器(random access memory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及任务调度控制程序。其中,处理器1001可以调用存储器1005中存储的任务调度控制程序,并执行本发明实施例提供的任务调度控制方法。

第二方面,本发明实施例提供了一种任务调度控制方法。

一实施例中,参照图2,图2为本发明任务调度控制方法第一实施例的流程示意图。如图2所示,任务调度控制方法,包括:

步骤S10,获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;

本实施例中,若各个任务的任务周期分别是1ms、2ms、3ms、5ms、10ms以及100ms,则各个任务的任务周期的最大公约数为1ms,则单位时长为1ms。若各个任务的任务周期分别是2ms、4ms以及6ms,则各个任务的任务周期的最大公约数为2ms,则单位时长为2ms。容易想到的是,本实施例中的各个任务的任务周期仅供参考,在此不做限制。

步骤S20,启动计时器;

本实施例中,确定单位时长后,启动计时器开始计时。

步骤S30,每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;

本实施例中,若单位时长为1ms,则每过1ms就重新从各个任务中选取新的目标任务,当计时器的计时时长为3ms时,重新从各个任务中选取新的目标任务,此时,新的目标任务包括任务的任务周期为1ms的任务以及任务的任务周期为3ms的任务,即任务的任务周期为1ms的任务以及任务的任务周期为3ms的任务满足任务执行条件。

当计时器的计时时长为5ms时,重新从各个任务中选取新的目标任务,此时,新的目标任务包括任务的任务周期为1ms的任务以及任务的任务周期为5ms的任务,即任务的任务周期为1ms的任务以及任务的任务周期为5ms的任务满足任务执行条件。

当计时器的计时时长为6ms时,重新从各个任务中选取新的目标任务,此时,新的目标任务包括任务的任务周期为1ms的任务、任务的任务周期为2ms的任务、任务的任务周期为3ms的任务以及任务的任务周期为6ms的任务,即任务的任务周期为1ms的任务、任务的任务周期为2ms的任务、任务的任务周期为3ms的任务以及任务的任务周期为6ms的任务满足任务执行条件。容易想到的是,本实施例中的参数仅供参考,在此不做限制。

步骤S40,当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。

本实施例中,若前一次未执行完成的任务为任务周期为2ms的任务且任务周期为2ms的任务还剩0.1ms的执行时长未被执行,由于当计时器的计时时长为3ms时,新的目标任务包括任务的任务周期为1ms的任务以及任务的任务周期为3ms的任务,又由于任务周期为1ms的任务的优先级高于任务周期为2ms的任务的优先级,任务周期为2ms的任务的优先级高于任务周期为3ms的任务的优先级,所以当计时器的计时时长为3ms时,先占用0.3ms执行任务周期为1ms的任务,再占用0.1ms执行前一次未执行完成的任务周期为2ms的任务,最后再执行任务周期为3ms的任务,从而保证了优先级高的任务不会被漏执行。容易想到的是,本实施例中的参数仅供参考,在此不做限制。

本实施例中,获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;启动计时器;每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。通过本实施例,以各个任务的任务周期的最大公约数作为单位时长,再根据计时器的计时时长选取新的目标任务,当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务,其中,当优先级高的任务满足任务执行条件时,中断正在执行的任务的执行进程,得到前一次未执行完成的任务,如此,就不会出现任务优先级高的任务比任务优先级低的任务后执行的情况,解决了现有技术中任务执行先后顺序与任务优先级需求倒置,导致任务优先级高的任务数据丢失,功能失效的问题。

进一步地,一实施例中,在步骤S30之后,包括:

步骤S50,当不存在前一次未执行完成的任务时,按照新的目标任务的优先级依次执行新的目标任务。

本实施例中,参照图3,图3为本发明任务调度控制方法第二实施例的流程示意图。如图3所示,获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;启动计时器;每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。

当不存在前一次未执行完成的任务时,按照新的目标任务的优先级依次执行新的目标任务,具体地,以1ms的任务的执行时长为0.3ms,2ms的任务的执行时长为0.4ms为例,当计时器的计时时长为2ms时,会先占用0.3ms执行任务周期为1ms的任务,再占用0.4ms执行任务周期为2ms的任务,所以当计时器的计时时长为3ms时,任务周期为1ms的任务和任务周期为2ms的任务均执行完毕,没有正在执行的任务被打断,所以就不存在前一次未执行完成的任务。由于计时器的计时时长为3ms时,新的目标任务包括任务的任务周期为1ms的任务以及任务的任务周期为3ms的任务,而任务周期为1ms的任务的优先级比任务周期为3ms的任务的优先级高,所以先执行任务周期为1ms的任务,再执行任务周期为3ms的任务。容易想到的是,本实施例中的参数仅供参考,在此不做限制。

进一步地,一实施例中,在步骤S20之后,包括:

步骤S60,当计时器的计时时长为单位时长的倍数时,中断正在执行的任务并保存断点以及未执行的任务,得到前一次未执行完成的任务的上下文环境。

本实施例中,参照图4,图4为本发明任务调度控制方法第三实施例的流程示意图。如图4所示,获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;启动计时器;当计时器的计时时长为单位时长的倍数时,从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;

当计时器的计时时长为单位时长的倍数时,中断正在执行的任务并保存断点以及未执行的任务,得到前一次未执行完成的任务的上下文环境,具体地,由于当计时器的计时时长为2ms时,新的目标任务包括任务的任务周期为1ms的任务以及任务的任务周期为2ms的任务。以任务的任务周期为1ms的任务的执行时长为0.3ms,任务的任务周期为2ms的任务的执行时长为0.8ms为例,当计时器的计时时长为2ms时,会先占用0.3ms执行任务周期为1ms的任务,再占用0.8ms执行任务周期为2ms的任务,但是当计时器的计时时长为3ms时,任务周期为1ms的任务和任务周期为3ms的任务满足执行条件,而任务周期为1ms的任务优先级比任务周期为2ms的任务优先级高,所以当计时器的计时时长为3ms时,任务周期为2ms的任务还有0.1ms的执行时长未被执行就会被中断,因为当计时器的计时时长为3ms时没有未执行的任务,所以只保存中断任务周期为2ms的任务的断点即可,得到前一次未执行完成的任务周期为2ms的任务的上下文环境。

进一步地,若任务的任务周期为3ms的任务的执行时长为1.2ms,当计时器的计时时长为3ms时,会先占用0.3ms执行任务周期为1ms的任务,再占用0.1ms执行前一次未执行完成的任务周期为2ms的任务,在当计时器的计时时长为4ms之前,再占用0.6ms执行任务周期为3ms的任务,当计时器的计时时长为4ms时,任务周期为3ms的任务还有0.6ms的执行时长未被执行就会被中断。当计时器的计时时长为4ms时,前一次未执行完成的任务的上下文环境包括还有0.6ms的执行时长未被执行的任务周期为3ms的任务以及未执行的任务周期为4ms的任务。

当计时器的计时时长为4ms时,先占用0.3ms执行任务周期为1ms的任务,再占用0.7ms执行任务周期为2ms的任务,所以当计时器的计时时长为5ms时,中断正在执行的任务周期为2ms的任务,保存中断任务周期为2ms的任务的断点以及当计时器的计时时长为5ms时需要执行但还未执行的任务,得到的前一次未执行完成的任务的上下文环境包括还有0.1ms的执行时长未被执行的任务周期为2ms的任务、还有0.6ms的执行时长未被执行的任务周期为3ms的任务、未执行的任务周期为4ms的任务以及未执行的任务周期为5ms的任务。

当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。容易想到的是,本实施例中的参数仅供参考,在此不做限制。

进一步地,一实施例中,所述任务的优先级根据各个任务的任务周期确定。

本实施例中,任务的优先级根据各个任务的任务周期确定,任务周期最长的任务的优先级最低,任务周期最短的任务的优先级最高。

进一步地,一实施例中,在步骤S20之后,包括:

当计时器开始计时设置任务执行标志位初始状态为第一常量,当计时器的计时时长第一次为单位时长的倍数时,控制任务执行标志位由第一常量变为第二常量;

当任务周期最长的任务被执行完毕后,控制任务执行标志位由第二常量变为第一常量。

本实施例中,适用对象为无操作系统的电子控制单元程序,电子控制单元程序的结构为上电启动后跳到main函数,main函数中执行完初始化函数后,使用一个判断条件永真的死循环结构,一直循环执行。在循环体中分别查询电子控制单元程序包括的各个任务是否满足执行条件,按照任务的优先级依次执行满足执行条件的任务,然后继续查询,直到各个任务都执行完毕,再执行下一轮查询。

具体地,标志位为第一常量时,表示标志位无效,标志位为第二常量时表示标志位有效,以第一常量为0,第二常量为1为例,各个任务分别是任务周期为1ms的任务、任务周期为2ms的任务、任务周期为3ms的任务、任务周期为5ms的任务、任务周期为10ms的任务以及任务周期为100ms的任务则当计时器开始计时设置任务执行标志位初始状态为0,当计时器的计时时长第一次为单位时长的倍数时,控制任务执行标志位由0变为1,表示本轮查询任务开始,当任务周期为100ms的任务执行完毕,即,当任务周期最长的任务被执行完毕后,控制任务执行标志位由1变为0,表示本轮查询任务结束,以免影响下一轮查询。进一步地,第一常量还可为非1的任一常量。容易想到的是,本实施例中的参数仅供参考,在此不做限制。

第三方面,本发明实施例还提供一种任务调度控制装置。

一实施例中,参照图5,图5为本发明任务调度控制装置一实施例的功能模块示意图。如图5所示,任务调度控制装置,包括:

获取模块10,用于获取各个任务的任务周期的最大公约数,并根据最大公约数确定单位时长;

启动模块20,用于启动计时器;

选取模块30,用于每当计时器的计时时长为单位时长的倍数时,重新从各个任务中选取新的目标任务,计时时长为新的目标任务的任务周期的倍数;

执行模块40,用于当存在前一次未执行完成的任务时,按照新的目标任务和前一次未执行完成的任务的优先级依次执行新的目标任务和前一次未执行完成的任务。

进一步地,一实施例中,执行模块40,还用于:

当不存在前一次未执行完成的任务时,按照新的目标任务的优先级依次执行新的目标任务。

进一步地,一实施例中,任务调度控制装置,还包括中断模块,用于:

当计时器的计时时长为单位时长的倍数时,中断正在执行的任务并保存断点以及未执行的任务,得到前一次未执行完成的任务的上下文环境。

进一步地,一实施例中,所述任务的优先级根据各个任务的任务周期确定。

进一步地,一实施例中,任务调度控制装置,还包括控制模块,用于:

当计时器开始计时设置任务执行标志位初始状态为第一常量,当计时器的计时时长第一次为单位时长的倍数时,控制任务执行标志位由第一常量变为第二常量;

当任务周期最长的任务被执行完毕后,控制任务执行标志位由第二常量变为第一常量。

其中,上述任务调度控制装置中各个模块的功能实现与上述任务调度控制方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。

第四方面,本发明实施例还提供一种可读存储介质。

本发明可读存储介质上存储有任务调度控制程序,其中所述任务调度控制程序被处理器执行时,实现如上述的任务调度控制方法的步骤。

其中,任务调度控制程序被执行时所实现的方法可参照本发明任务调度控制方法的各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 任务调度控制方法、装置、设备及可读存储介质
  • 一种任务调度方法、任务调度设备和计算机可读存储介质
技术分类

06120114702165