CN113495782B - 实现确定性执行目标的任务调度方法、装置及电子设备 - Google Patents
实现确定性执行目标的任务调度方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113495782B CN113495782B CN202110767022.0A CN202110767022A CN113495782B CN 113495782 B CN113495782 B CN 113495782B CN 202110767022 A CN202110767022 A CN 202110767022A CN 113495782 B CN113495782 B CN 113495782B
- Authority
- CN
- China
- Prior art keywords
- task
- thread
- scheduling
- current
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000003213 activating effect Effects 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 19
- 230000002159 abnormal effect Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种实现确定性执行目标的任务调度方法、装置及电子设备,应用于操作系统任务调度技术领域。在本发明提供的实现确定性执行目标的任务调度方法中,包括三个步骤,分别为:步骤一,将至少一个任务组组成任务链,其中,每个任务组包括至少一个任务;步骤二,根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由;步骤三,根据所述任务组的路由调度信息,激活并运行线程池中被所述任务路由路由到的线程池线程,以执行所述任务组对应的任务。本发明提供的实现确定性执行目标的任务调度方法、装置及电子设备,能够在部分任务运行异常的情况下,仍然保证其他任务继续正常运行。
Description
技术领域
本发明涉及一种操作系统任务调度技术领域,尤其是一种实现确定性执行目标的任务调度方法、装置及电子设备。
背景技术
近年来,自动驾驶行业发展带来了许多新的变化,软件在汽车行业中正扮演着越来越重要的角色。调度又是软件中基础功能,重中之重。而自动驾驶的调度又有他独特的要求:不仅要满足基本的调度功能,对安全的要求、以及面对更复杂场景的调度,都有新的要求,同时也是挑战。
自动驾驶执行任务有实时性要求,不仅对任务执行时间有要求,其起始时间点和结束时间点,以及整个执行链路的端到端时延都有要求,而且会根据安全等级不同,要求也不一样。自动驾驶多数场景下希望,当某些功能异常时,车辆仍然能保证安全相关的功能正常运行,及时被调用到。然而,目前传统的调度,例如LINUX这样的非实时操作系统,以及RTOS,QNX等其他操作系统,其调度方式都是针对单个进程进行调度,任务运行时长可能会受外部环境变化,内部运行竞争等影响,导致运行时长波动。一旦某个任务出现了异常(波动超出预期),就会导致后续任务都会出现调度不可预期情况,导致整个系统出现运行异常对于整链任务不能提供保障,不能很好的解决上述问题。
因此,如何提供一种实现确定性执行目标的任务调度方法,以克服现有技术中存在的上述缺陷,日益成为本领域技术人员亟待解决的技术问题之一。
发明内容
本发明的目的在于针对现有操作系统对于任务链端到端调度存在的支持不足,受外部环境变化或内部竞争影响而导致任务运行时长超时,导致整个系统出现运行异常的问题,提出一种能够在部分任务运行异常的情况下,仍然保证其他任务继续正常运行的实现确定性执行目标的任务调度方法。
为了达到上述目的,本发明提供了一种实现确定性执行目标的任务调度方法,包括以下步骤:
步骤1:将至少一个任务组组成任务链,其中,每个任务组包括至少一个任务;
步骤2:根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由;
步骤3:根据所述任务组的路由调度信息,激活并运行线程池中被所述任务路由路由到的线程池线程,以执行所述任务组对应的任务。
可选的,所述任务组的路由调度信息包括起始调用时间和运行时间;
所述将至少一个任务组组成任务链,包括:所述任务链中的任务组按照所述任务组的起始调用时间的先后顺序排列。
可选的,每个所述任务组包括至少一个任务回调函数;所述每个任务组包括至少一个任务,包括:所述任务组中的任务按照所述回调函数执行的先后顺序排列。
可选的,所述任务路由包括超时任务列表、超时线程列表、当前线程和当前超时线程;
所述线程池包括若干个线程池线程和若干个线程池超时线程;其中,各个所述线程池线程具有不同的执行优先级,各个所述线程池超时线程具有不同的超时优先级。
根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由,包括,在预设任务编排周期,执行以下步骤:
步骤A:将所述当前线程指向优先级最低的所述线程池线程,将所述当前超时线程指向优先级最高的所述线程池超时线程,获取所述任务链上所有所述任务组的任务调度起始时间;
步骤B:根据所述任务组的任务调度起始时间,获取当前待调用的所述任务组;
步骤C:判断所述当前线程是否有任务在执行,若是,执行步骤D,若否,执行步骤E;
步骤D:将当前线程指向的所述线程池线程加入到超时线程列表中,所述超时任务列表中的任务将会在所述当前超时线程上调度运行,将当前任务组的上一任务组加入到超时任务列表中,并将所述当前线程指向更高执行优先级的所述线程池线程;
步骤E:将待执行任务路由到所述当前线程中进行执行,所述当前线程指向所述优先级最低的所述线程池线程,所述任务组上的任务将会被顺序执行;
步骤F:判断所述当前待调用的所述任务组是否是所述任务链上的最后一个任务组,若是,更新所述任务路由,重新开始新一轮的调度;若否,执行步骤B。
可选的,所述更新所述任务路由的方法,包括,
更新所述超时任务列表,如果该任务连续M个调度周期都正常,那么将该任务从所述超时任务列表中移除,其中,M为调度周期次数,由用户自定义数值,M≥1,M为整数;
更新所述超时线程列表:如果所述超时线程列表中所述线程池线程没有任务正在调度,那么将所述线程池线程从所述超时线程列表中移除;
更新所述当前线程:如果所述超时线程列表中有所述线程池线程,那么取在所述超时线程列表中最高执行优先级线程池线程作为所述当前线程的指向对象,否则所述当前线程指向所述执行优先级最低的所述线程池线程;
更新所述当前超时线程:当所述周期调度完毕时,超时任务仍在运行中,此时需要将超时任务直接删掉;当所述周期调度完毕时,超时任务已经运行完成,将所述超时任务置换到更低优先级的调度任务上进行调度,更新所述当前超时线程指向调度的超时线程。
可选的,所述不同执行优先级的线程池线程在没有任务被执行时,都处于挂起状态,一旦某个所述任务被路由到对应的所述线程池线程上,所述线程池线程立即被激活,并执行所述任务。
可选的,所述任务链由n个所述任务组组成,其中n≥2。
可选的,第n-1个所述任务组起始调用时间TSn-1,运行时间TRn-1,其中,TRn-1<所述起始调用时间TSn-TSn-1。
为了实现上述技术目的,根据本发明,还提供了一种利用上述实现确定性执行目标的任务调度装置,包括,任务链模块、任务路由模块、线程池模块,其中:
任务链模块:被配置为将至少一个任务组组成任务链,其中,每个任务组包括至少一个任务;
任务路由模块:被配置为根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由;
线程池模块:被配置为根据所述任务组的路由调度信息,激活并运行线程池中被所述任务路由路由到的线程,以执行所述任务组对应的任务。
为了实现上述目的,本发明还提供了一种电子设备,所述电子设备包括处理器以及存储器,所述处理器适于实现各指令,所述存储器适于存储多条指令,所述指令适于由处理器加载并执行上述任一项所述的任务调度方法的步骤。
与现有技术相比,本发明提供的实现确定性执行目标的任务调度方法具有如下有益效果:
本发明提供的实现确定性执行目标的任务调度方法中,通过所述任务路由根据所述任务组以及所述线程池线程的运行情况,将所述任务组根据一定规则路由到对应的所述线程池线程上,并记录当前运行信息。当所述任务正常调度时,所有编排任务将在优先级最低的所述线程池线程上调度,任务链上的任务将会被顺序执行。如果发生超时,即任务出现异常,将所述当前线程指向的所述线程池线程加入到所述超时线程列表中,将当前任务组的上一任务组加入到所述超时任务列表中,并将所述当前线程指向更高优先级的所述线程池线程。确保了在部分任务出现异常的情况下,系统仍然能够正常运行,执行后续任务。
附图说明
图1示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度方法的流程示意图;
图2示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度方法所有模块,任务流向图;
图3示意性的示出了图1中步骤2的具体流程示意图;
图4示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度方法所涉及的任务链TaskChain组成示意图;
图5示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度方法涉及的任务路由TaskSwitch组成示意图;
图6示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度方法涉及的线程池Workpool组成示意图;
图7示意性的示出了本发明一实施方式提供的实现确定性执行目标的任务调度装置的结构框图;
图8示意性的示出了本发明提出的调度方法与基于LINUX操作系统直接调度方法的仿真结果对比图;
图9示意性的示出了通用线程池Normal调度方式与本发明IPDS调度方式的时延均值对比图;
图10示意性的示出了通用线程池Normal调度方式与本发明IPDS调度方式的方差值对比图;
图11示意性的示出了通用线程池Normal调度方式的极值;
图12示意性的示出了本发明IPDS调度方式的极值;
其中,
图7中:
10-任务链模块、20-任务路由模块、30-线程池模块;
图8中:
圆圈指定的任务D11、D12和D21为本次测试添加的干扰任务。
具体实施方式
下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。应当了解,说明书附图并不一定按比例的显示本发明的具体结构,并且在说明书附图中用于说明本发明某些原理的图示性特征也会采取略微简化的画法。本文所公开的本发明的具体设计特征包括例如具体尺寸、方向、位置和外形将部分地由具体所要应用和使用的环境来确定。以及,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
在适当情况下,如此使用的这些术语可替换。类似的,如果本文所述的方法包括一系列任务,且本文所呈现的这些任务的顺序并非必须是可执行这些任务的唯一顺序,且一些所述的任务可被省略和/或一些本文未描述的其他任务可被添加到该方法。
实施例一
本实施例提供了一种实现确定性执行目标的任务调度方法,参见图1-图6,其中,图1本发明涉及的实施步骤图,图2为实现确定性执行目标的任务调度方法的所有模块和任务流向图;图3为实现确定性执行目标的任务调度方法的实施流程图;图4至图6为每个模块的组成图。从图1可以看出,本实施例提供的实现确定性执行目标的任务调度方法包括以下步骤;
步骤S1:将至少一个任务组TaskGroup组成任务链TaskChain,其中,每个任务组TaskGroup包括至少一个任务。
具体地,在其中一个示例性实施方式中,如附图4所示,图4为本发明所涉及的任务链TaskChain组成示意图。在该实施例中,任务链TaskChain包括任务组TaskGrop_0至任务组TaskGroup_N共N+1个任务组,以任务组TaskGroup_0为例,任务组TaskGroup_0包括任务回调函数TaskCB_0至任务回调函数TaskCB_M共M个任务。
优选地,所述任务链中包含至少一个所述任务组TaskGroup,所述任务组TaskGroup按照起始调用时间的先后顺序存储在所述任务链TaskChain中。所述任务组TaskGroup中包含至少一个所述任务回调函数TaskCB,任务回调函数TaskCB根据被执行的先后顺序存储在所述任务组TaskGroup中。本领域的技术人员可以理解地,应根据实际情况与操作系统要求选择由不同数量所述任务回调函数TaskCB组成的所述任务组TaskGroup,以及不同数量所述任务组TaskGroup组成的所述任务链TaskChain,本发明对此不作任何限制。
步骤S2:根据所述任务组TaskGroup的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链TaskChain上的任务组TaskGroup调度至任务路由TaskSwitch。
具体地,如附图5所示,图5为任务路由TaskSwitch组成示意图,所述任务路由TaskSwitch包括超时任务列表Timeout Task List、超时线程列表Timeout Worker List、当前线程Current Worker和当前超时线程Current Timeout Worker;所述任务组TaskGroup的路由调度信息包括任务调度起始时间和运行时间。优选地,所述任务链TaskChain由n个所述任务组TaskGroup组成,其中n≥2,第n个所述任务组TaskGroup的所述起始调用时间为TSn,所述运行时间为TRn,TRn-1<TSn-TSn-1。
具体地,如附图6所示,图6为实现确定性执行目标的任务调度方法涉及的线程池Workpool组成示意图。所述线程池Workpool包括若干个所述线程池线程Worker和若干个所述线程池超时线程Timeout Worker;其中,各个所述线程池线程Worker具有不同的执行优先级,Worker_0~Worker_K的执行优先级依次递增,所述Worker_0为执行优先级最低线程池线程Worker。各个所述线程池超时线程Timeout Worker具有不同的超时优先级,TimeoutWorker_0~Timeout Worker_L的超时优先级依次递减,所述Timeout Worker_0为超时优先级最高的所述线程池超时线程Timeout Worker。
根据所述任务组TaskGroup的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链TaskChain上的所述任务组TaskGroup调度至所述任务路由TaskSwitch,包括,在预设任务编排周期,执行以下步骤,具体地,请参见图3,图3为本发明的实施流程图。从图3可以看出:
步骤A:将所述当前线程Current Worker指向Worker_0,将所述当前超时线程Current Timeout Worker指向Timeout Worker_0,获取所述任务链TaskChain上所有所述任务组TaskGroup的任务调度起始时间。
步骤B:根据所述任务组TaskGroup的任务调度起始时间,获取当前待调用的所述任务组TaskGroup。
步骤C:判断所述当前线程Current Worker是否有任务在执行,若是,执行步骤D,若否,执行步骤E。
步骤D:将所述当前线程Current Worker指向的所述线程池线程Worker加入到所述超时线程列表Timeout Worker List中,所述超时任务列表Timeout Task List中的任务将会在所述当前超时线程Current Timeout Worker上调度运行,将TaskGroup_N-1加入到所述超时任务列表Timeout Task List中,并将所述当前线程Current Worker指向更高执行优先级的所述线程池线程Worker。
步骤E:将待执行任务路由到所述当前线程Current Worker中进行执行,所述当前线程Current Worker指向Worker_0,所述任务链TaskChain上的任务将会被顺序执行。
步骤F:判断所述当前待调用的所述任务组TaskGroup是否是所述任务链TaskChain上的最后一个任务组TaskGroup,若是,更新所述任务路由TaskSwitch,重新开始新一轮的调度;若否,执行步骤B。
在步骤F中所述更新所述任务路由TaskSwitch的方法,包括:
更新所述超时任务列表Timeout Task List,如果该任务连续M个调度周期都正常,那么将该任务从所述超时任务列表Timeout Task List中移除,其中,由用户自定义数值M,所述M为调度周期次数,M≥1,M为整数。
更新所述超时线程列表Timeout Worker List:如果所述超时线程列表TimeoutWorker List中所述线程池线程Worker没有任务正在调度,那么将所述线程池线程Worker从所述超时线程列表Timeout Worker List中移除;
更新所述当前线程Current Worker:如果所述超时线程列表Timeout WorkerList中有所述线程池线程,那么取在所述超时线程列表Timeout Worker List中最高执行优先级线程池线程Worker作为所述当前线程Current Worker的指向对象,否则所述当前线程Current Worker指向所述Worker_0。
更新所述当前超时线程Current Timeout Worker:当所述周期调度完毕时,超时任务仍在运行中,此时需要将超时任务直接删掉;当所述周期调度完毕时,超时任务已经运行完成,将所述超时任务置换到更低优先级的调度任务上进行调度,更新所述当前超时线程Current Timeout Worker指向调度的线程池超时线程Timeout Worker。
步骤S3:根据所述任务组TaskGroup的路由调度信息,激活并运行线程池WorkerPool中被所述任务路由TaskSwitch路由到的线程池线程Worker,以执行所述任务组TaskGroup对应的任务。
具体地,参照附图6,图6为本发明涉及的线程池Workpool组成示意图。所述线程池Workpool由一组不同执行优先级的线程池线程Worker和不同超时优先级的线程池超时线程TimeoutWorker组成。其中,所述不同优先级的线程池线程Worker在没有任务被执行时,都处于挂起状态,一旦某个所述任务被路由到对应的所述线程池线程Worker上,所述线程池线程Worker立即被激活,并执行所述任务。所述线程池超时线程TimeoutWorker执行所述当前超时线程Current Timeout Worker指向的任务。
本发明的另一实施例还提供了一种实现确定性执行目标的任务调度的装置,请参见图7,图7为实施例提供的装置组成图,该装置包括,任务链模块10、任务路由模块20、线程池模块30。其中:所述任务链模块10:被配置为将至少一个所述任务组TaskGroup组成所述任务链TaskChain,其中,每个所述任务组TaskGroup包括至少一个任务;所述任务路由模块20:被配置为根据所述任务组TaskGroup的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链TaskChain上的任务组TaskGroup调度至任务路由TaskSwitch;所述线程池模块30:被配置为根据所述任务组TaskGroup的路由调度信息,激活并运行所述线程池Workpool中被所述任务路由TaskSwitch路由到的线程池线程Worker,以执行所述任务组TaskGroup对应的任务。
本发明的又一实施例还提供了一种实现确定性执行目标的任务调度的电子设备,所述电子设备包括处理器以及存储器,所述处理器适于实现各指令,所述存储器适于存储多条指令,所述指令适于由处理器加载并实施例一中所述的任务调度方法的步骤。
由于上述实施例提供的一种实现确定性执行目标的任务调度的装置及所述电子设备,与所述用于实现确定性执行目标的任务调度方法属于同一发明构思,至少具有与所述实现确定性执行目标的任务调度方法相同的有益效果,其有益效果可以参见上述一种实现确定性执行目标的任务调度方法的有益效果,在此,不再一一赘述。
将上述实施例提供的实施方法与传统的通用线程池Normal调度方式作对比,参见图8,图8为基于LINUX操作系统本发明所提出的调度方法与通用线程池Normal调度方式的仿真结果对比图。在有干扰任务D11、D12和D21存在的相同情况下,分别对调度运行时长的最大值、运行时长的最小值等相关调度数据进行了统计,具体请参见下述表格一和表格二:其中,表一为通用线程池Normal调度方式的调度数据,表二为本发明方法调度方式的调度数据。
表一:通用线程池Normal调度方式的调度数据
表二:本发明方法调度方式的调度数据
根据表一和表二的数据可以明显的看出,采用本发明方法调度方式在运行时长最大值、运行时长最小值和运行时长均值都具有明显降低。
具体地,参见图9,图9为通用线程池Normal调度方式与本发明IPDS调度方式的时延均值对比图,其中,本发明实现确定性执行目标的任务调度方法简称为IPDS,从图中可以明显的看出,采用所述IPDS方法与通用线程池Normal的方法相比,所述IPDS方法在运行时延均值上明显降低。参见图10,图10为通用线程池Normal调度方式与本发明IPDS调度方式的方差值对比图,所述IPDS方法在所述干扰任务后,相比所述通用线程池Normal,所述IPDS方法的方差更小,更稳定。对比图11通用线程池Normal调度方式的极值和图12中IPDS调度方式的极值,在所述相同干扰任务出现后,所述IPDS方法相比所述通用线程池Normal的极值之间更趋于接近,受干扰任务的影响更小。
应当注意的是,在本文的实施方式中所揭露的系统和方法,也可以通过其他的方式实现。以上所描述的装置实施方式仅仅是示意性的,例如,附图中的流程图和框图显示了根据本文的多个实施方式的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用于执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本文各个实施方式中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。此外,需要说明的是,除非特别说明或者指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明说中的各个组件。元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
综上,在本发明实施例提供的实施例中,所述任务路由TaskSwitch根据所述任务组TaskGroup以及所述线程池线程Worker的运行情况,将所述任务组TaskGroup根据一定规则路由到对应的所述线程池线程Worker上,并记录当前运行信息。当所述任务正常调度时,所有编排任务将在Worker_0上调度,所述任务链TaskChain上的任务将会被顺序执行。如果发生超时,即任务出现异常,将超时状态下,当前线程Current Worker指向的线程池线程Worker加入到超时线程列表Timeout Worker List中,将TaskGroup_N-1加入到所述超时任务列表Timeout Task List中,并将当前线程Current Worker指向更高优先级的线程池线程Worker。确保了在部分任务出现异常的情况下,系统仍然能够正常运行,执行后续任务。
上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
Claims (9)
1.一种实现确定性执行目标的任务调度方法,其特征在于,包括,
将至少一个任务组组成任务链,其中,每个任务组包括至少一个任务;
根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由;
根据所述任务组的路由调度信息,激活并运行线程池中被所述任务路由路由到的线程池线程,以执行所述任务组对应的任务;
所述任务路由包括超时任务列表、超时线程列表、当前线程和当前超时线程;
所述线程池包括若干个线程池线程和若干个线程池超时线程;其中,各个所述线程池线程具有不同的执行优先级,各个所述线程池超时线程具有不同的超时优先级;
根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由,包括,在预设任务编排周期,执行以下步骤:
步骤A:将所述当前线程指向优先级最低的所述线程池线程,将所述当前超时线程指向优先级最高的所述线程池超时线程,获取所述任务链上所有所述任务组的任务调度起始时间;
步骤B:根据所述任务组的任务调度起始时间,获取当前待调用的所述任务组;
步骤C:判断所述当前线程是否有任务在执行,若是,执行步骤D,若否,执行步骤E;
步骤D:将当前线程指向的所述线程池线程加入到超时线程列表中,所述超时任务列表中的任务将会在所述当前超时线程上调度运行,将当前任务组的上一任务组加入到超时任务列表中,并将所述当前线程指向更高执行优先级的所述线程池线程;
步骤E:将待执行任务路由到所述当前线程中进行执行,所述当前线程指向所述优先级最低的所述线程池线程,所述任务组上的任务将会被顺序执行;
步骤F:判断所述当前待调用的所述任务组是否是所述任务链上的最后一个任务组,若是,更新所述任务路由,重新开始新一轮的调度;若否,执行步骤B。
2.如权利要求1所述的一种实现确定性执行目标的任务调度方法,其特征在于,所述任务组的路由调度信息包括起始调用时间和运行时间;
所述将至少一个任务组组成任务链,包括:所述任务链中的任务组按照所述任务组的起始调用时间的先后顺序排列。
3.如权利要求1所述实现确定性执行目标的任务调度方法,其特征在于,每个所述任务组包括至少一个任务回调函数;所述每个任务组包括至少一个任务,包括:所述任务组中的任务按照所述回调函数执行的先后顺序排列。
4.根据权利要求1所述的实现确定性执行目标的任务调度方法,其特征在于,所述更新所述任务路由的方法,包括,
更新所述超时任务列表,如果该任务连续M个调度周期都正常,那么将该任务从所述超时任务列表中移除,其中,M为调度周期次数,由用户自定义数值,M≥1,M为整数;
更新所述超时线程列表:如果所述超时线程列表中所述线程池线程没有任务正在调度,那么将所述线程池线程从所述超时线程列表中移除;
更新所述当前线程:如果所述超时线程列表中有所述线程池线程,那么取在所述超时线程列表中最高执行优先级线程池线程作为所述当前线程的指向对象,否则所述当前线程指向所述执行优先级最低的所述线程池线程;
更新所述当前超时线程:当所述周期调度完毕时,超时任务仍在运行中,此时需要将超时任务直接删掉;当所述周期调度完毕时,超时任务已经运行完成,将所述超时任务置换到更低优先级的调度任务上进行调度,更新所述当前超时线程指向调度的线程池超时线程。
5.如权利要求1所述的实现确定性执行目标的任务调度方法,其特征在于,所述不同执行优先级的线程池线程在没有任务被执行时,都处于挂起状态,一旦某个所述任务被路由到对应的所述线程池线程上,所述线程池线程立即被激活,并执行所述任务。
6.如权利要求1所述的实现确定性执行目标的任务调度方法,其特征在于,所述任务链由n个所述任务组组成,其中n≥2。
7.如权利要求6所述的实现确定性执行目标的任务调度方法,其特征在于,第n-1个所述任务组起始调用时间TSn-1,运行时间TRn-1,其中,TRn-1<所述起始调用时间TSn-TSn-1。
8.一种实现确定性执行目标的任务调度的装置,其特征在于,包括,任务链模块、任务路由模块、线程池模块,其中:
任务链模块:被配置为将至少一个所述任务组组成所述任务链,其中,每个所述任务组包括至少一个任务;
任务路由模块:被配置为根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由;
线程池模块:被配置为根据所述任务组的路由调度信息,激活并运行所述线程池中被所述任务路由路由到的所述线程池线程,以执行所述任务组对应的任务;
所述任务路由包括超时任务列表、超时线程列表、当前线程和当前超时线程;
所述线程池包括若干个线程池线程和若干个线程池超时线程;其中,各个所述线程池线程具有不同的执行优先级,各个所述线程池超时线程具有不同的超时优先级;
根据所述任务组的路由调度信息和所述任务的运行状态,按照预设路由规则,将所述任务链上的任务组调度至任务路由,包括,在预设任务编排周期,执行以下步骤:
步骤A:将所述当前线程指向优先级最低的所述线程池线程,将所述当前超时线程指向优先级最高的所述线程池超时线程,获取所述任务链上所有所述任务组的任务调度起始时间;
步骤B:根据所述任务组的任务调度起始时间,获取当前待调用的所述任务组;
步骤C:判断所述当前线程是否有任务在执行,若是,执行步骤D,若否,执行步骤E;
步骤D:将当前线程指向的所述线程池线程加入到超时线程列表中,所述超时任务列表中的任务将会在所述当前超时线程上调度运行,将当前任务组的上一任务组加入到超时任务列表中,并将所述当前线程指向更高执行优先级的所述线程池线程;
步骤E:将待执行任务路由到所述当前线程中进行执行,所述当前线程指向所述优先级最低的所述线程池线程,所述任务组上的任务将会被顺序执行;
步骤F:判断所述当前待调用的所述任务组是否是所述任务链上的最后一个任务组,若是,更新所述任务路由,重新开始新一轮的调度;若否,执行步骤B。
9.一种电子设备,其特征在于,所述电子设备包括处理器以及存储器,所述处理器适于实现各指令,所述存储器适于存储多条指令,所述指令适于由处理器加载并执行权利要求1-7任一项所述的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110767022.0A CN113495782B (zh) | 2021-07-07 | 2021-07-07 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110767022.0A CN113495782B (zh) | 2021-07-07 | 2021-07-07 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113495782A CN113495782A (zh) | 2021-10-12 |
CN113495782B true CN113495782B (zh) | 2024-02-02 |
Family
ID=77995857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110767022.0A Active CN113495782B (zh) | 2021-07-07 | 2021-07-07 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113495782B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010145429A1 (zh) * | 2009-06-30 | 2010-12-23 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN105653365A (zh) * | 2016-02-22 | 2016-06-08 | 青岛海尔智能家电科技有限公司 | 任务处理方法及装置 |
CN105760234A (zh) * | 2016-03-17 | 2016-07-13 | 联动优势科技有限公司 | 一种线程池管理方法及装置 |
CN106708618A (zh) * | 2017-01-20 | 2017-05-24 | 郑州云海信息技术有限公司 | 一种进程调度方法及装置 |
CN112181627A (zh) * | 2020-10-26 | 2021-01-05 | 深圳前海微众银行股份有限公司 | 定时任务调度方法、装置及系统 |
-
2021
- 2021-07-07 CN CN202110767022.0A patent/CN113495782B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010145429A1 (zh) * | 2009-06-30 | 2010-12-23 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN105653365A (zh) * | 2016-02-22 | 2016-06-08 | 青岛海尔智能家电科技有限公司 | 任务处理方法及装置 |
CN105760234A (zh) * | 2016-03-17 | 2016-07-13 | 联动优势科技有限公司 | 一种线程池管理方法及装置 |
CN106708618A (zh) * | 2017-01-20 | 2017-05-24 | 郑州云海信息技术有限公司 | 一种进程调度方法及装置 |
CN112181627A (zh) * | 2020-10-26 | 2021-01-05 | 深圳前海微众银行股份有限公司 | 定时任务调度方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113495782A (zh) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103778009A (zh) | 中断处理方法及装置 | |
JP2000347883A (ja) | 仮想計算機装置 | |
WO2006043040A1 (en) | Interrupt control function adapted to control the execution of interrupt requests of differing criticality | |
JP2008508626A (ja) | コンピュータプログラムを処理する方法、オペレーティングシステムおよび計算装置 | |
CN109558227B (zh) | 一种基于任务执行预算的单调速率任务调度方法 | |
CN113495782B (zh) | 实现确定性执行目标的任务调度方法、装置及电子设备 | |
EP0955581A1 (en) | Software interrupt mechanism | |
CN109669767B (zh) | 一种面向多类型上下文依赖的任务封装和调度方法及系统 | |
US7082607B2 (en) | Reduced-overhead context-saving in static priority scheduled operating systems | |
CN110968448A (zh) | 一种多任务运行状态的监视方法 | |
CN110908794A (zh) | 基于任务窃取算法的任务窃取方法及系统 | |
US20200310870A1 (en) | Method for managing a plurality of tasks by a multicore motor vehicle processor | |
CN116126491A (zh) | 一种嵌入式软件任务分时调度方法 | |
US7739438B2 (en) | Method for priority-encoding interrupts and vectoring to interrupt code | |
US20140344818A1 (en) | Task scheduler, microprocessor, and task scheduling method | |
CN110109743B (zh) | 一种实时进程调度方法 | |
CN112578744B (zh) | 在工业控制器上调度一或多个控制应用的方法及配置工具 | |
RU2239228C2 (ru) | Способ распределения времени центрального процессора между задачами в автоматизированных системах управления технологическими процессами | |
US10339063B2 (en) | Scheduling independent and dependent operations for processing | |
JPH11237995A (ja) | イベント制御装置 | |
Park et al. | Real-time scheduler for Middleware of Industrial Robot | |
CN113806025B (zh) | 数据处理方法、系统、电子装置及存储介质 | |
US20230409001A1 (en) | Method and device for controlling the sequence of program parts, programming method, programming device | |
KR100302566B1 (ko) | 제어기에서의 에스에프씨 해석장치 | |
Gupta et al. | Support for Nested Preemption in nxtOSEK |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |