任务调度方法、装置和电子设备与流程

文档序号:24081251发布日期:2021-02-26 18:05阅读:144来源:国知局
任务调度方法、装置和电子设备与流程

[0001]
本发明涉及任务处理技术领域,尤其是涉及一种任务调度方法、装置和电子设备。


背景技术:

[0002]
随着自动驾驶技术的发展,越来越多的大数据量、高频率的传感器接入到系统中,更加复杂、智能的算法部署到车载平台。如何高效、合理的进行多任务调度从而最大化利用系统性能变得尤为关键。
[0003]
一般来说,有些技术方案可以利用ros(robot operating system,机器人操作系统)来搭建自动驾驶系统框架,但ros本身并没有提供系统任务调度控制模块,任务何时运行、在哪个cpu(central processing unit,中央处理器)运行依赖操作系统本身的调度算法,具有不确定性。有些技术方案还可以利用简单的线程池配合线程优先级来实现任务执行器,保证任务的执行,但是如果考虑到任务间的逻辑关系、执行时长、调度延迟等因素,这种通用线程池未必是最佳的策略。
[0004]
综上,上述几种技术方案依赖操作系统本身的调度算法,具有不确定性;或者没有考虑到任务间的逻辑关系、执行时长、调度延迟等因素,并发性和实时性较差。


技术实现要素:

[0005]
有鉴于此,本发明的目的在于提供一种任务调度方法、装置和电子设备,可以综合该考虑并发性和实时性,具有较好的并发性和实时性。
[0006]
第一方面,本发明实施例提供了一种任务调度方法,操作系统包括至少一个实时域和至少一个非实时域;方法包括:接收目标任务;如果目标任务为实时任务,在实时域中执行目标任务;如果目标任务为非实时任务,在非实时域中执行目标任务。
[0007]
在本发明较佳的实施例中,上述实时域中包括至少一个任务组;上述在实时域中执行目标任务的步骤,包括:如果实时域的目标任务组中的任务与目标任务相互关联,将目标任务添加到目标任务组中;按照目标任务组的任务顺序执行目标任务。
[0008]
在本发明较佳的实施例中,上述实时域中包括目标线程,目标线程与目标任务组对应;上述按照目标任务组的任务顺序执行目标任务的步骤,包括:按照目标任务组的任务顺序,通过目标线程执行目标任务。
[0009]
在本发明较佳的实施例中,上述实时域中的目标线程与目标中央处理器绑定;上述通过目标线程执行目标任务的步骤,包括:目标线程在目标中央处理器中执行目标任务。
[0010]
在本发明较佳的实施例中,上述在实时域中执行目标任务的步骤,还包括:如果实时域的任务组中的任务均与目标任务不相互关联,在实时域中建立目标任务对应的任务组,将目标任务添加到目标任务对应的任务组中;在目标任务对应的任务组中执行目标任务。
[0011]
在本发明较佳的实施例中,上述非实时域中包括至少一个任务队列;任务队列配置有对应的优先级;上述在非实时域中执行目标任务的步骤,包括:确定目标任务的优先
级;将目标任务添加到目标任务的优先级对应的目标任务队列中;在目标任务队列中执行目标任务。
[0012]
在本发明较佳的实施例中,上述非实时域中包括至少一个线程;上述在目标任务队列中执行目标任务的步骤,包括:从非实时域中选择一个不处于使用状态的中央处理器;通过不处于使用状态的中央处理器执行目标任务。
[0013]
第二方面,本发明实施例还提供一种任务调度装置,操作系统包括至少一个实时域和至少一个非实时域;装置包括:目标任务接收模块,用于接收目标任务;实时域任务执行模块,用于如果目标任务为实时任务,在实时域中执行目标任务;非实时域任务执行模块,用于如果目标任务为非实时任务,在非实时域中执行目标任务。
[0014]
第三方面,本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述的任务调度方法的步骤。
[0015]
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述的任务调度方法的步骤。
[0016]
本发明实施例带来了以下有益效果:
[0017]
本发明实施例提供的一种任务调度方法、装置和电子设备,如果目标任务为实时任务,在操作系统的实时域中执行目标任务;如果目标任务为非实时任务,在操作系统的非实时域中执行目标任务。该方式中提供了一种兼顾实时性和并发性的设计框架,为计算资源的分配,任务的调度提供了高效的平台;其中,实时域具有较好的实时性,非实时域具有较好的并发性,本实施例中二者互补,可以综合该考虑并发性和实时性,具有较好的并发性和实时性。
[0018]
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
[0019]
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
[0020]
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0021]
图1为本发明实施例提供的一种操作系统的示意图;
[0022]
图2为本发明实施例提供的一种任务调度方法的流程图;
[0023]
图3为本发明实施例提供的另一种任务调度方法的流程图;
[0024]
图4为本发明实施例提供的一种实时域中进程的任务调度方式的示意图;
[0025]
图5为本发明实施例提供的另一种任务调度方法的流程图;
[0026]
图6为本发明实施例提供的一种非实时域中进程的任务调度方式的示意图;
[0027]
图7为本发明实施例提供的一种任务调度装置的结构示意图;
[0028]
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0029]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]
目前,任务调度方法一般依赖操作系统本身的调度算法,具有不确定性;或者没有考虑到任务间的逻辑关系、执行时长、调度延迟等因素,并发性和实时性较差。基于此,本发明实施例提供的一种任务调度方法、装置和电子设备,属于车辆自动驾驶领域,尤其涉及自动驾驶车辆软件系统中多任务的调度执行。本发明实施例基于linux系统,采用容器、用户空间调度等技术,实现了一套效率、安全得到提升的软件框架。
[0031]
为便于对本实施例进行理解,首先对本发明实施例所公开的一种任务调度方法进行详细介绍。
[0032]
实施例1
[0033]
本发明实施提供一种任务调度方法,操作系统包括至少一个实时域和至少一个非实时域。本实施例中的操作系统可以为linux操作系统,基于linux容器技术,可以将操作系统划分为两种类型,即实时域和非实时域,并且操作系统中每种类型的控制域可以有多个。参见图1所示的一种操作系统的示意图,图1中的操作系统包含1个实时域和2个非实时域,实时域和非实时域中均包含了3个进程。
[0034]
基于上述描述,参见图2所示的一种任务调度方法的流程图,该任务调度方法包括如下步骤:
[0035]
步骤s202,接收目标任务。
[0036]
目标任务为待进行调度的任务,操作系统接收到目标任务后可以确定该目标任务的属性,根据目标任务的属性确定在实时域或者非实时域中执行该目标任务。
[0037]
本实施例中将目标任务的属性划分为实时任务和非实时任务,其中,实时任务可以是高实时性任务,具有很强的时效性要求;非实时任务可以具有计算量大、耗时长的特点。如果将两种任务不加以区分,而进行“一视同仁”的调度,那么安全类、控制类等实时任务有可能被低实时性任务阻塞。如果不对两种任务加以区分并进行隔离,假如某些任务持续消耗内存,会导致整个系统失效。
[0038]
步骤s204,如果目标任务为实时任务,在实时域中执行目标任务。
[0039]
实时任务可以是具有很强的时效性要求的任务,例如:如果一个目标任务时要求用户在十分钟内读取数据,则该目标任务可以为实时任务,此时该目标任务可以在实时域中执行。
[0040]
除此以外,同一组功能的任务可以放置到同一个实时域中运行,通常他们具有逻辑关系,方便实现后面的任务编排,降低上下文切换开销。例如对于车身底盘控制来说,底盘信息读取任务和底盘控制任务都放到同一个实时域中运行。
[0041]
步骤s206,如果目标任务为非实时任务,在非实时域中执行目标任务。
[0042]
非实时任务可以是计算量大、耗时长,并且不具有很强实时性的任务。例如,目标
任务如果是每天统计一次耗油量,则该任务不具有很强实时性,并且需要较长的时间在,则该任务可以为非实时任务,在非实时域中执行。
[0043]
综上,本实施例提供的方法可以在实时域中运行实时任务,非实时域中运行非实时任务。此外,本实施例还可以(3)对不同域根据实时性、计算量、安全性等进行评估,基于容器技术,例如lxc(linux container,内核虚拟化)、docker(应用容器引擎)等,对cpu配额、内存配额、磁盘io(input output,输入输出)配额、网络io配额等资源进行配置。
[0044]
实施例2
[0045]
本发明实施例还提供另一种任务调度方法;该方法在上述实施例方法的基础上实现;该方法重点描述在实时域中执行目标任务的具体实现方式。
[0046]
如图3所示的另一种任务调度方法的流程图,该任务调度方法包括如下步骤:
[0047]
步骤s302,接收目标任务。
[0048]
步骤s304,如果目标任务为实时任务,实时域的目标任务组中的任务与目标任务相互关联,将目标任务添加到目标任务组中。
[0049]
操作系统已经按照任务类型完成了整体划分,下面对每个域中的调度策略进行描述。如果目标任务为实时任务,则需要在实时域中执行任务。参见图4所示的一种实时域中进程的任务调度方式的示意图,图4中的虚线框代表实时域包含了2个任务组,分别是group1和group2。每个任务组中包含了一个一个任务队列,分别是t1-t5和t1-t5。
[0050]
每个任务队列中的任务可以认为是具有一定的关联的任务,例如:t1-t5是针对底盘的测量任务,t1-t5是自动驾驶导航相关的任务等。
[0051]
如果目标任务为实时任务,首先可以确定实时域中是否有已经存在的,与该目标任务相关的任务或任务组。例如:目标任务为底盘信息读取任务,任务组group1中的任务t1为底盘控制任务,任务组group1为车身底盘控制的任务组。即可以认为任务组group1中的任务t1与目标任务相互关联,任务组group1与目标任务相互关联,可以将任务组group1作为目标任务组。
[0052]
此时,可以将目标任务添加到目标任务组中,例如:将底盘信息读取任务添加到车身底盘控制的任务组中,作为t6。
[0053]
步骤s306,按照目标任务组的任务顺序执行目标任务。
[0054]
将目标任务添加到目标任务组中,可以在按照目标任务组的任务顺序执行目标任务。例如,如果目标任务组group1包含任务t1-t5,目标任务添加到目标任务组group1中,作为t6,则可以先执行任务t1-t5,后执行目标任务t6。
[0055]
然而,如果目标任务是比较重要、优先级较高的任务,可以将目标任务放置在目标任务组的前端,以尽快执行该目标任务,例如:如果目标任务组group1包含任务t1-t5,目标任务添加到目标任务组group1中,作为t1,原先的任务t1-t5依次向后移动,作为t2-t6,则可以优先执行目标任务t1。
[0056]
本发明实施例提供的上述方法,同一个任务组中的各个任务通常是有数据或者执行逻辑依赖的,保证缓存命中率。目标任务添加到具有数据或者执行逻辑依赖的目标任务组,也可以保证添加到了一个相互关联的任务组中,从而保证缓存命中率。
[0057]
如图4所示,每个任务组中均只有一个线程thread,如任务组group1中包含线程thread1,任务组group2中包含线程thread2。因此,需要通过1个线程执行任务组中的所有
任务,对于目标任务则可以通过目标任务组中的目标线程执行(实时域中包括目标线程,目标线程与目标任务组对应),例如:按照目标任务组的任务顺序,通过目标线程执行目标任务。
[0058]
例如,目标任务group1中包含任务t1-t5和目标任务t6。则目标任务group1中的所有任务均通过目标线程执行,这样可以减少上下文切换带来的性能损失。
[0059]
更进一步地,如图4所示,任务组中的线程绑定到一个cpu核心,例如任务组group1中的线程thread1绑定核心cpu1,任务组group2中的线程thread2绑定核心cpu2。因此,一个任务组中的所有任务对应1个线程,该线程只在一个cpu核心中进行调度。
[0060]
对于目标任务和目标任务组,则可以通过与目标线程绑定目标中央处理器进行调度,可以通过下述步骤执行:目标线程在目标中央处理器中执行目标任务。
[0061]
例如,目标任务group1中包含任务t1-t5和目标任务t6。目标任务group1包含线程thread1和核心cpu1,线程thread1绑定核心cpu1。因此,线程thread1可以在核心cpu1中进行任务调度,目标任务组中的所有任务(包含目标任务)均可以在核心cpu1中执行。
[0062]
本发明实施例提供的上述方法,每个任务组中只有一个线程,绑定到一个cpu核心(独占),这样可以保证线程只在该cpu进行调度,减少上下文切换带来的性能损失。
[0063]
如果实时域的任务组中的任务均与目标任务不相互关联,则可以在实时域中新建一个任务组,将目标任务添加到新建的任务组中,例如:如果实时域的任务组中的任务均与目标任务不相互关联,在实时域中建立目标任务对应的任务组,将目标任务添加到目标任务对应的任务组中;在目标任务对应的任务组中执行目标任务。
[0064]
如图4所示,如果任务组gruop1是关于车身底盘控制相关的任务组,任务组gruop2是关于车辆导航相关的任务组,而目标任务是查询车辆周围区域的天气,则目标任务既与任务组gruop1无关,又与任务组gruop2无关。此时,可以在实时域中新建一个新的任务组gruop3,将目标任务添加到任务组gruop3中,在任务组gruop3中执行目标任务。
[0065]
本发明实施例提供的上述方法,每一个任务组包含一个任务队列。同一个任务组中的各个任务通常是有数据或者执行逻辑依赖的,可以保证缓存命中率。每个任务组中只有一个线程,绑定到一个cpu核心(独占),这样可以保证线程只在该cpu进行调度,减少上下文切换带来的性能损失。本实施例基于linux系统的协程技术,可以实现在用户空间的任务调度,减少系统调用带来的性能损失。并且,在实时调度域中适合安全、控制等时效强的任务运行。
[0066]
实施例3
[0067]
本发明实施例还提供另一种任务调度方法;该方法在上述实施例方法的基础上实现;该方法重点描述在非实时域中执行目标任务的具体实现方式。
[0068]
如图5所示的另一种任务调度方法的流程图,该任务调度方法包括如下步骤:
[0069]
步骤s502,接收目标任务;
[0070]
步骤s504,如果目标任务为非实时任务,确定目标任务的优先级。
[0071]
如果目标任务为实时任务,则需要在非实时域中执行任务。参见图6所示的一种非实时域中进程的任务调度方式的示意图,图6中的非实时域包含3个任务队列t1-t5,3个线程thread,2个核心cpu(cpu3、cpu4)。
[0072]
步骤s506,将目标任务添加到目标任务的优先级对应的目标任务队列中。
[0073]
图6中创建了多个线程thread,绑定到了多个cpu(不可绑定到实时域中已经使用的cpu),包含多个任务队列,任务队列具有优先级属性。
[0074]
目标任务也具有优先级,可以根据目标任务的优先级将目标任务添加到目标任务队列中。例如:任务队列有3个优先级,分别是低、中、高。任务也可以有低、中、高3个优先级。其中,如果目标任务是高优先级,则可以将该目标任务放置在高优先级的任务队列中。
[0075]
步骤s508,在目标任务队列中执行目标任务。
[0076]
线程thread在绑定核心cpu时,不能绑定处于使用状态的cpu,因此,可以通过下述步骤在目标任务队列中执行目标任务:从非实时域中选择一个不处于使用状态的中央处理器;通过不处于使用状态的中央处理器执行目标任务。
[0077]
如图6所示,如果核心cpu3处于使用状态,cpu4没有处于使用状态,则线程不能绑定处于使用状态的核心cpu3,只可以绑定不处于使用状态的核心cpu4。
[0078]
本发明实施例提供的上述方法,在目标任务队列执行任务的过程中,所有的线程thread可以优先从优先级最高的任务队列中的头部获得任务并执行,执行完毕后重新放回队列。
[0079]
该方式中,每个任务队列中的任务也具备优先级属性,并且每次线程执行完任务,会统计消耗时间,并结合任务本身优先级调整任务在队列中的位置。这样短小任务、高优先级可以得到更快执行,降低所有任务的平均等待时间。
[0080]
综上,在非实时调度域中适合彼此无逻辑关系,可并发执行的任务,更关注整体的吞吐量。
[0081]
本发明实施例提供的上述方法,首先基于linux容器技术按照实时域和非实时域两种类型,对系统全局资源进行划分;针对实时域采用线程+cpu独占绑定、用户空间调度方式达到最大实时性保证;针对非实时域采用线程池+动态优先级任务队列方式,达到高的并行性。
[0082]
本发明实施例提供了一种兼顾实时性和并发性的设计框架,为计算资源的分配,任务的调度提供了高效的平台。实时域实时性高、并发低;非实时域并发高、实时性差。二者互补可以达到更好的效果。
[0083]
实施例4
[0084]
对应于上述方法实施例,本发明实施例提供了一种任务调度装置,操作系统包括至少一个实时域和至少一个非实时域;如图7示的一种任务调度装置的结构示意图,该任务调度装置包括:
[0085]
目标任务接收模块71,用于接收目标任务;
[0086]
实时域任务执行模块72,用于如果目标任务为实时任务,在实时域中执行目标任务;
[0087]
非实时域任务执行模块73,用于如果目标任务为非实时任务,在非实时域中执行目标任务。
[0088]
本发明实施例提供的一种任务调度装置,如果目标任务为实时任务,在操作系统的实时域中执行目标任务;如果目标任务为非实时任务,在操作系统的非实时域中执行目标任务。该方式中提供了一种兼顾实时性和并发性的设计框架,为计算资源的分配,任务的调度提供了高效的平台;其中,实时域具有较好的实时性,非实时域具有较好的并发性,本
实施例中二者互补,可以综合该考虑并发性和实时性,具有较好的并发性和实时性。
[0089]
上述实时域中包括至少一个任务组;上述实时域任务执行模块,用于如果实时域的目标任务组中的任务与目标任务相互关联,将目标任务添加到目标任务组中;按照目标任务组的任务顺序执行目标任务。
[0090]
上述实时域中包括目标线程,目标线程与目标任务组对应;上述实时域任务执行模块,用于按照目标任务组的任务顺序,通过目标线程执行目标任务。
[0091]
上述实时域中的目标线程与目标中央处理器绑定;上述实时域任务执行模块,用于目标线程在目标中央处理器中执行目标任务。
[0092]
上述实时域任务执行模块,还用于如果实时域的任务组中的任务均与目标任务不相互关联,在实时域中建立目标任务对应的任务组,将目标任务添加到目标任务对应的任务组中;在目标任务对应的任务组中执行目标任务。
[0093]
上述非实时域中包括至少一个任务队列;任务队列配置有对应的优先级;上述非实时域任务执行模块,用于确定目标任务的优先级;将目标任务添加到目标任务的优先级对应的目标任务队列中;在目标任务队列中执行目标任务。
[0094]
上述非实时域任务执行模块,用于从非实时域中选择一个不处于使用状态的中央处理器;通过不处于使用状态的中央处理器执行目标任务。
[0095]
本发明实施例提供的任务调度装置,与上述实施例提供的任务调度方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
[0096]
实施例5
[0097]
本发明实施例还提供了一种电子设备,用于运行上述任务调度方法;参见图8所示的一种电子设备的结构示意图,该电子设备包括存储器100和处理器101,其中,存储器100用于存储一条或多条计算机指令,一条或多条计算机指令被处理器101执行,以实现上述任务调度方法。
[0098]
进一步地,图8所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
[0099]
其中,存储器100可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0100]
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理
器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
[0101]
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述任务调度方法,具体实现可参见方法实施例,在此不再赘述。
[0102]
本发明实施例所提供的任务调度方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
[0103]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0104]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1