CN113495781B - 任务调度方法、装置、设备及可读存储介质 - Google Patents
任务调度方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113495781B CN113495781B CN202110735944.3A CN202110735944A CN113495781B CN 113495781 B CN113495781 B CN 113495781B CN 202110735944 A CN202110735944 A CN 202110735944A CN 113495781 B CN113495781 B CN 113495781B
- Authority
- CN
- China
- Prior art keywords
- kernel
- system clock
- count value
- real
- task
- 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 46
- 230000008859 change Effects 0.000 claims abstract description 29
- 238000004891 communication Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
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)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种任务调度方法、装置、设备及可读存储介质,任务调度方法包括:当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务;当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务;当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度。通过本发明能实现控制系统内核任务调度管理器兼容高实时性应用和高运算量任务,以适配严格实时应用场景和非实时场景,平衡系统延时和吞吐量,并且在此基础上实现了各个内核任务的有序执行,简化了不同内核任务之间的通信。
Description
技术领域
本发明涉及汽车控制器开发领域,尤其涉及一种任务调度方法、装置、设备及可读存储介质。
背景技术
随着汽车产业的不断发展,现有的车辆驾驶中对信息安全的要求是不断提高的,且新的驾驶功能是不断引入的,如与智能驾驶相关应用配套的新的功能要求。在传统嵌入式系统,如网关、发动机控制器等,需要增加这类信息安全、智能驾驶的相关应用,因为这类应用对处理器的计算要求有限,所以原有的多核微处理器是可以满足运行要求的。然而这类应用所需要执行的任务,如信息安全应用中的大量数据校验的计算或智能驾驶应用中的地图信息解算等的特性都是高运行量、执行时间长、低实时性。而现有的传统嵌入式系统的任务调度管理器是实时在根据激活任务列表中的优先级决定任务的执行,一般是启动高优先级任务,暂停低优先级任务,即通过硬实时的方式最大程度保障系统的低延时响应,但是高优先级任务一般为系统的输入输出控制,实际的执行时间短,但是触发频繁,会频繁打断正在运行的高运算量任务。如果使用现有的任务调度策略,一方面单核系统本身响应高优先级任务的实时性会降低,以及运行高运算量任务的效率也会降低,另一方面不同内核之间系统任务调度的同步开销会增大。
发明内容
本发明的主要目的在于提供一种任务调度方法、装置、设备及可读存储介质,旨在解决传统车载嵌入式系统对有效率地运行高运行量任务的需求与高实时地响应高实时任务的需求不能兼顾以及不同内核间的同步调度难以有序执行的技术问题。
第一方面,本发明提供一种任务调度方法,所述任务调度方法包括以下步骤:
当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。
可选的,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤包括:
当内核初始化完成,设置所述内核的系统时钟计数值为零。
可选的,所述当内核初始化完成,设置所述内核的系统时钟计数值为零的步骤包括:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零。
可选的,当所述内核为从核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤还包括:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和。
可选的,所述执行非实时任务列表中的非实时任务的步骤包括:
执行最先进入非实时任务列表的非实时任务;
当所述非实时任务执行完成时,若M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
可选的,所述任务调度方法还包括:
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
可选的,所述基于所述调整值设置第三计数值的步骤包括:
以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值。
第二方面,本发明还提供一种任务调度装置,所述任务调度装置包括:
计时模块,用于当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
任务切换模块,用于当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
周期切换模块,用于当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。
可选的,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值,所述计时模块,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为零。
可选的,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值为零,所述计时模块,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零。
可选的,当所述内核为从核时,所述当内核初始化完成,设置所述内核的系统时钟计数值,所述计时模块,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和。
可选的,所述执行非实时任务列表中的非实时任务,所述任务切换模块,还用于:
执行最先进入非实时任务列表的非实时任务;
当所述非实时任务执行完成时,若M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
可选的,所述任务调度方法,所述任务调度装置,还包括调整模块,用于:
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
可选的,所述基于所述调整值设置第三计数值,所述调整模块,还用于:
以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值。
第三方面,本发明还提供一种任务调度设备,所述任务调度设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的任务调度程序,其中所述任务调度程序被所述处理器执行时,实现如上所述的任务调度方法的步骤。
第四方面,本发明还提供一种可读存储介质,其特征在于,所述可读存储介质上存储有任务调度程序,其中所述任务调度程序被处理器执行时,实现如上所述的任务调度方法的步骤。
本发明中,当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。通过本发明能实现传统车载嵌入式系统内核任务调度管理器兼容高实时性应用和高运算量任务,以适配严格实时应用场景和非实时场景,平衡系统延时和吞吐量,并且在此基础上实现了各个内核任务的有序执行,简化了不同内核任务之间的通信。
附图说明
图1为本发明实施例方案中涉及的任务调度设备的硬件结构示意图;
图2为本发明任务调度方法第一实施例的流程示意图;
图3为本发明任务调度方法一实施例中误差调整示意图;
图4为本发明任务调度方法另一实施例中误差调整示意图;
图5为本发明任务调度方法又一实施例中误差调整示意图;
图6为本发明任务调度装置第一实施例的功能模块示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
第一方面,本发明实施例提供一种任务调度设备。
参照图1,图1为本发明实施例方案中涉及的任务调度设备的硬件结构示意图。本发明实施例中,任务调度设备可以包括处理器1001(例如中央处理器Central ProcessingUnit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真WIreless-FIdelity,WI-FI接口);存储器1005可以是高速随机存取存储器(random accessmemory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及任务调度程序。其中,处理器1001可以调用存储器1005中存储的任务调度程序,并执行本发明实施例提供的任务调度方法。
第二方面,本发明实施例提供了一种任务调度方法。
参照图2,图2为本发明任务调度方法一实施例的流程示意图。
在本发明任务调度方法一实施例中,任务调度方法包括:
步骤S10,当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
本实施例中,当每个内核上电完成后,则每个内核分别进入操作系统调度初始化,初始化过程中,设置所有的系统时钟的时钟频率和中断溢出值等,包括同步序列对应的全局系统时钟与每个内核对应的对应的系统时钟,并在启动调度前根据同步序列设置每个内核的系统时钟计数值,在每个内核的系统时钟计数值为零时,启动该内核第一个周期内的任务调度,执行实时任务列表中的实时任务,执行实时任务时,要按照任务的优先级从最高的优先级任务开始执行,当启动主核的任务调度的同时,要按照时钟频率来更新所有的系统时钟计数值,包括全局系统时钟和单个内核的系统时钟,且以后可以查询系统时钟计数值来判断是否进入一个新的任务调度切换周期以及当前内核处于一个任务调度切换周期内的实时任务执行时间还是非实时任务执行时间。
本实施例中,内核在初始化之前,首先需要确定嵌入式系统中的运行的内核数量X,由于考虑到多个内核的同步调度,在初始化之前也需要根据内核实时任务执行的要求确定不同内核之间启动的同步序列,实时任务要求比较高的内核作为主核,其他的内核为从核并按照实时任务的要求确定顺序,每个内核都有系统时钟的同时,同步序列也具有全局的系统时钟。根据每个内核的启动顺序确定每个内核的标识号,标识号的取值范围为(0,(X-1)),其中,X为正整数值。
步骤S20,当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
本实施例中,在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,此时可根据内核系统时钟的计数值从启动实时任务的执行后在一个周期内的变化次数判断当前是否仍属于实时任务的执行时间,此时设置内核系统时钟的计数值变化次数达到N次时,则应当进入非实时任务的执行时间,其中,N为正整数值。
其中,不同内核预设的一周期内系统时钟计数值变化次数的N值不同。
步骤S30,当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。
本实施例中,执行非实时任务列表中的非实时任务,且内核的系统时钟计数值在一个周期内变化次数达到M次时,启动本核下一个周期内的任务调度,即执行实时任务列表中的实时任务,且在下一个周期内内核的系统时钟计数值变化次数达到N次,执行非实时任务列表中的非实时任务,且内核的系统时钟计数值在下一个周期内变化次数达到M次时,启动本核下下一个周期内的任务调度,以此类推。
其中,M为正整数,M为内核的系统时钟计数值在一个周期内变化总次数。
其中不同内核预设的一周期内系统时钟计数值变化次数的M值是相同的,比如M为5时,则第一个周期对应的内核系统上时钟计数值为0~4,第二个对应的内核系统上时钟计数值为5~9,以此类推,当不同内核的系统时钟计数值处于此范围时,则此时内核处于同一周期内。
本实施例中,当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。通过本发明能实现传统车载嵌入式系统内核任务调度管理器兼容高实时性应用和高运算量任务,以适配严格实时应用场景和非实时场景,平衡系统延时和吞吐量,并且在此基础上实现了各个内核任务的有序执行,简化了不同内核任务之间的通信。
进一步,一实施例中,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤包括:
当内核初始化完成,设置所述内核的系统时钟计数值为零。
本实施例中,当所述内核为主核时,所述主核初始化完成后,设置所述内核的系统时钟计数值为0,在设置系统时钟计数值为0之前,要通知其他从核主核初始化完成,从核收到主核初始化完成的通知后和主核同时设置内核的系统时钟计数值,当主核设置系统时钟计数值为0时,启动主核第一个周期内的任务调度,执行本核实时任务列表中的实时任务,当内核的系统时钟计数值在一个周期内变化次数达到N0次,则执行非实时任务列表中的非实时任务,当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动主核下一个周期内的任务调度。
进一步,一实施例中,所述当内核初始化完成,设置所述内核的系统时钟计数值为零的步骤包括:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零。
本实施例中,当主核初始化完成,设置所述主核的系统时钟计数值为零,同时要设置同步序列对应的全局系统时钟的计数值为零,当全局系统时钟的计数值为0的同时,对应的主核系统时钟计数值也为0。
进一步,一实施例中,当所述内核为从核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤还包括:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和。
本实施例中,当所述内核为从核时,所述当从核初始化完成,在从核收到主核完成初始化的通知后,和主核同时设置内核的系统时钟计数值。为了实现同一周期内不同内核间在全局系统时钟上实时任务不间隔不堆叠,此时要设置内核的系统时钟计数值为一个负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和。如从核1,设置从核1的系统时钟计数值为一个负值,则其负值的绝对值为主核对应的N值,即此时全局系统时钟和主核系统时钟计数值都已变化了N次之后,此时主核的实时任务执行时间结束,对应从核1的系统时钟计数值也变化了N次后计数值由-N变化到0,当从核的系统时钟计数值更新到为0时,启动从核第一个周期内的任务调度,执行本核实时任务列表中的实时任务,这样在同一周期内不同内核的实时任务不会间隔从而影响系统的实时性或堆叠从而增加内核间的同步开销。
进一步,一实施例中,所述执行非实时任务列表中的非实时任务的步骤包括:
执行最先进入非实时任务列表的非实时任务;
当所述非实时任务执行完成时,若M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
本实施例中,执行非实时任务列表的非实时任务是基于先进先出的原则,因此在进入一个周期内执行实时任务的时候,最先执行先进入非实时任务列表的非实时任务,为了下一个周期能够在预设的系统时钟计数值对应的数值范围内按时开始,给每个周期的切换设置一个阈值,当所述每一周期的每一非实时任务执行完成时,要计算此时内核的系统时钟计数值在这一周期内的变化次数,若预设的周期切换的一周期内系统计数值变化次数M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
进一步,一实施例中,所述任务调度方法的步骤还包括:
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
本实施例中,考虑到每个内核实时任务切换到非实时任务可能会存在提前或延迟,以及不同内核系统时钟之间存在随机误差,上述误差会导致不同内核之间达不到同步的要求。因此在启动本核下一周期的任务调度之前,要计算本核这一周期内先于本核启动的前一个核的实时任务的结束时刻对应的全局系统时钟的计数值是否与预设的全局系统时钟的计数值相同。若相同,则按本核预设的这一周期内开始执行实时任务时对应的全局系统时钟计数值启动下一周期的任务调度;若不同,则要记录并获取这一周期内本核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;以所述第二计数值减第一计数值,得到调整值;并基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
进一步,一实施例中,所述基于所述调整值设置第三计数值的步骤包括:
以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值。
本实施例中,当得到一个调整值时,调整值可能为正值时,也可能为负值,无论是正值还是负值,都可以以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值,当全局系统时钟为第三计数值时,启动下一个周期内的任务调度。若是调整值为正值,则表明前一内核是延时或因内核系统时钟计时速度慢于全局系统时钟导致没有按时结束执行实时任务,此时第三计数值为本核预设的这一周期内开始执行实时任务时对应的全局系统时钟往后推移一个正值范围的计数值;若是调整值为负值,则表明前一内核是提前或因内核系统时钟计时速度快于全局系统时钟导致没有按时结束执行实时任务,此时第三计数值为本核预设的这一周期内开始执行实时任务时对应的全局系统时钟往前推移一个正值范围的计数值。
例如,设定一个周期内内核对应的系统时钟计数值变化了M=5次即切换到下一周期的任务执行。并设定一个周期内主核对应的系统时钟计数值,若变化了N0=3次,即切换到非实时任务的执行;一个周期内从核1对应的系统时钟计数值,若变化了N1=2次,即切换到非实时任务的执行;一个周期内从核2对应的系统时钟计数值,若变化了N2=1次,即切换到非实时任务的执行。
参照图3,图3为本发明任务调度方法一实施例中误差调整示意图。
如图3所示,此时主核在第一个周期内因为延迟1个计数值结束实时任务的执行导致产生误差,从核1计算出主核实时任务的切换时刻对应的全局系统时钟的计数值是否与预设的全局系统时钟的计数值不同,此时记录并获取这一周期内本核开始执行实时任务时全局系统时钟的第一计数值为3,以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值为4,以所述第二计数值减第一计数值,得到调整值为+1,以所述同一周期结束时从核1对应的全局系统时钟的计数值8以及所述调整值+1的和作为第三计数值9,即全局系统时钟计数值为9时,启动从核1下一个周期内的任务调度。同时从核2可以获得从核1得出的调整值+1,用于调整从核2当全局系统时钟计数值为11时,启动从核2一个周期内的任务调度。
参照图4,图4为本发明任务调度方法另一实施例中误差调整示意图。
如图4所示,此时从核1在第一个周期内因为提前1个计数值结束实时任务的执行导致产生误差,从核2计算出主核实时任务的切换时刻对应的全局系统时钟的计数值是否与预设的全局系统时钟的计数值不同,此时记录并获取这一周期内本核开始执行实时任务时全局系统时钟的第一计数值为5,以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值为4,以所述第二计数值减第一计数值,得到调整值为-1,以所述同一周期结束时从核2对应的全局系统时钟的计数值10以及所述调整值-1的和作为第三计数值9,即全局系统时钟计数值为9时,启动从核2下一个周期内的任务调度。同时,因为此时从核2第二个周期才调整开始执行的时间,所以在主核的第三个周期内,才获取从核2得到的调整值-1,此时可用于调整从核2第四周期内当全局系统时钟计数值为14时,启动从核2一个周期内的任务调度。
参照图5,图5为本发明任务调度方法又一实施例中误差调整示意图。
如图5所示,此时主核因为内核系统时钟快于全局系统时钟,误差累积导致此时主核在第一个周期内在全局系统时钟上提前1个计数值结束实时任务的执行导致产生误差,从核1计算出主核实时任务的切换时刻对应的全局系统时钟的计数值是否与预设的全局系统时钟的计数值不同,此时记录并获取这一周期内本核开始执行实时任务时全局系统时钟的第一计数值为3,以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值为2,以所述第二计数值减第一计数值,得到调整值为-1,以所述同一周期结束时从核1对应的全局系统时钟的计数值8以及所述调整值-1的和作为第三计数值7,即全局系统时钟计数值为7时,启动从核1下一个周期内的任务调度。同时从核2可以获得从核1得出的调整值-1,用于调整从核2当全局系统时钟计数值为9时,启动从核2下一个周期内的任务调度。
第三方面,本发明实施例还提供一种任务调度装置。
一实施例中,参照图6,图6为本发明任务调度装置一实施例的功能模块示意图。如图6所示,任务调度装置包括:
计时模块10,用于当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
任务切换模块20,用于当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
周期切换模块30,用于当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数。
进一步地,一实施例中,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值,所述计时模块10,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为零。
进一步地,一实施例中,当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值为零,所述计时模块10,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零。
进一步地,一实施例中,当所述内核为从核时,所述当内核初始化完成,设置所述内核的系统时钟计数值,所述计时模块10,还用于:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和。
进一步地,一实施例中,所述执行非实时任务列表中的非实时任务,所述任务切换模块20,还用于:
执行最先进入非实时任务列表的非实时任务;
当所述非实时任务执行完成时,若M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
进一步地,一实施例中,所述任务调度方法,所述任务调度装置,还包括调整模块,用于:
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
进一步地,一实施例中,所述基于所述调整值设置第三计数值,所述调整模块,还用于:
以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值。
其中,上述任务调度装置中各个模块的功能实现与上述任务调度方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
第四方面,本发明实施例还提供一种可读存储介质。
本发明可读存储介质上存储有任务调度程序,其中所述任务调度程序被处理器执行时,实现如上述的任务调度方法的步骤。
其中,任务调度程序被执行时所实现的方法可参照本发明任务调度方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种任务调度方法,其特征在于,所述任务调度方法包括:
当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数;
当所述内核为主核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤包括:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零;
当所述内核为从核时,所述当内核初始化完成,设置所述内核的系统时钟计数值的步骤还包括:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和;
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
2.如权利要求1所述的任务调度方法,其特征在于,所述执行非实时任务列表中的非实时任务的步骤包括:
执行最先进入非实时任务列表的非实时任务;
当所述非实时任务执行完成时,若M与内核的系统时钟计数值在一个周期内变化次数的差值小于或等于阈值,则停止执行次进入非实时任务列表的非实时任务。
3.如权利要求1所述的任务调度方法,其特征在于,所述基于所述调整值设置第三计数值的步骤包括:
以所述同一周期结束时本内核对应的全局系统时钟的计数值以及所述调整值的和作为第三计数值。
4.一种任务调度装置,其特征在于,控制系统任务调度装置包括:
计时模块,用于当内核初始化完成,设置所述内核的系统时钟计数值,并在内核的系统时钟计数值为零时,启动第一个周期内的任务调度,执行实时任务列表中的实时任务,其中,所述系统时钟计数值按照时钟频率进行更新;
任务切换模块,用于当内核的系统时钟计数值在一个周期内变化次数达到N次,则执行非实时任务列表中的非实时任务,其中,N为正整数值;
周期切换模块,用于当内核的系统时钟计数值在一个周期内变化次数达到M次,则启动本核下一个周期内的任务调度,其中,M为正整数值,其中,M为内核的系统时钟计数值在一个周期内变化总次数;
当所述内核为主核时,所述计时模块,具体用于:
当内核初始化完成,设置所述内核的系统时钟计数值为零,同时设置全局系统时钟的计数值为零;
当所述内核为从核时,所述计时模块,还具体用于:
当内核初始化完成,设置所述内核的系统时钟计数值为负值,且负值的绝对值为主核及所有先于本核启动的从核对应的N值之和;
所述控制系统任务调度装置还包括调整模块,用于:
获取同一周期内本内核开始执行实时任务时全局系统时钟的第一计数值以及先于本核启动的前一个内核结束执行实时任务时全局系统时钟的第二计数值;
以所述第二计数值减第一计数值,得到调整值;
基于所述调整值设置第三计数值,以供全局系统时钟为第三计数值时,启动下一个周期内的任务调度。
5.一种任务调度设备,其特征在于,所述任务调度设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的任务调度程序,其中所述任务调度程序被所述处理器执行时,实现如权利要求1至3中任一项所述的任务调度方法的步骤。
6.一种可读存储介质,其特征在于,所述可读存储介质上存储有任务调度程序,其中所述任务调度程序被处理器执行时,实现如权利要求1至3中任一项所述的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110735944.3A CN113495781B (zh) | 2021-06-30 | 2021-06-30 | 任务调度方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110735944.3A CN113495781B (zh) | 2021-06-30 | 2021-06-30 | 任务调度方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113495781A CN113495781A (zh) | 2021-10-12 |
CN113495781B true CN113495781B (zh) | 2023-03-03 |
Family
ID=77998024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110735944.3A Active CN113495781B (zh) | 2021-06-30 | 2021-06-30 | 任务调度方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113495781B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106773711A (zh) * | 2017-01-13 | 2017-05-31 | 清华大学 | 一种铁路机车运行操纵系统的混合任务调度方法及模型 |
CN110045992A (zh) * | 2019-04-24 | 2019-07-23 | 北京翼辉信息技术有限公司 | 一种适用于多核板卡的通用系统及方法 |
CN111796921A (zh) * | 2020-06-30 | 2020-10-20 | 西安微电子技术研究所 | 嵌入式多核操作系统调度方法、调度装置、电子设备及存储介质 |
CN112463342A (zh) * | 2020-12-14 | 2021-03-09 | 北京四方继保工程技术有限公司 | 一种多核cpu运行模式的平台架构设计方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101666395B1 (ko) * | 2013-10-14 | 2016-10-14 | 한국전자통신연구원 | 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법 |
ES2803235T3 (es) * | 2016-09-18 | 2021-01-25 | Esg Elektroniksystem Und Logistik Gmbh | Método y aparato para ejecutar tareas en tiempo real |
-
2021
- 2021-06-30 CN CN202110735944.3A patent/CN113495781B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106773711A (zh) * | 2017-01-13 | 2017-05-31 | 清华大学 | 一种铁路机车运行操纵系统的混合任务调度方法及模型 |
CN110045992A (zh) * | 2019-04-24 | 2019-07-23 | 北京翼辉信息技术有限公司 | 一种适用于多核板卡的通用系统及方法 |
CN111796921A (zh) * | 2020-06-30 | 2020-10-20 | 西安微电子技术研究所 | 嵌入式多核操作系统调度方法、调度装置、电子设备及存储介质 |
CN112463342A (zh) * | 2020-12-14 | 2021-03-09 | 北京四方继保工程技术有限公司 | 一种多核cpu运行模式的平台架构设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113495781A (zh) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6360243B1 (en) | Method, device and article of manufacture for implementing a real-time task scheduling accelerator | |
US6430593B1 (en) | Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system | |
US6128672A (en) | Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device | |
EP4209903A1 (en) | Task scheduling method and apparatus | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
KR20070083460A (ko) | 다중 커널을 동시에 실행하는 방법 및 시스템 | |
EP3799374A1 (en) | Method for transmitting data packets and apparatus for implementing the same | |
US10271326B2 (en) | Scheduling function calls | |
CN110928657B (zh) | 嵌入式系统确定性分析方法 | |
CN111488210A (zh) | 基于云计算的任务调度方法、装置和计算机设备 | |
CN109634812B (zh) | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 | |
US10613495B2 (en) | Motor drive system, motor control system, and self-propelled robot | |
Henderson et al. | Improving the accuracy of scheduling analysis applied to distributed systems computing minimal response times and reducing jitter | |
CN113495781B (zh) | 任务调度方法、装置、设备及可读存储介质 | |
CN116974728B (zh) | 单片机任务调度方法、单片机产品及存储介质 | |
CN114327929A (zh) | 基于amp架构的优先级处理方法、装置、调度器及多核系统 | |
Racu et al. | Improved response time analysis of tasks scheduled under preemptive round-robin | |
CN116880986A (zh) | 任务调度方法、装置、车载控制器、电子设备和存储介质 | |
Marinho et al. | Job phasing aware preemption deferral | |
US20140282533A1 (en) | Virtual computer system | |
CN115454592A (zh) | 任务调度方法及装置 | |
CN113296900A (zh) | 一种任务切换方法及装置 | |
CN118199782B (zh) | 以太网报文分时调度方法、系统、存储介质及智能设备 | |
CN112559054B (zh) | 用于同步指令的方法和计算系统 | |
US11048575B2 (en) | Method and device for error handling in a communication between distributed software components |
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 |