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

智能汽车操作系统的任务调度方法、装置、设备及介质

文献发布时间:2024-04-18 19:58:26


智能汽车操作系统的任务调度方法、装置、设备及介质

技术领域

本说明书涉及操作系统技术领域,尤其涉及一种智能汽车操作系统的任务调度方法、装置、设备及介质。

背景技术

自动驾驶系统作为智能汽车操作系统的子系统,环境信息获取和智能决策控制等驾驶任务是其关键环节,具有极强的执行确定性要求。但在实际产品开发过程中受到硬件资源的限制,驾驶任务通常运行在高负载场景之下,由于内存、CPU等资源竞争等问题导致自动驾驶任务的运行出现不可避免的抖动,甚至出现任务执行超时,任务执行帧率下降等异常情况,从而导致自动驾驶系统无法按预期工作,极端情况甚至会带来车辆行驶安全的风险。

目前该部分能力通常由中间件进行支持,通过提供接口或配置文件支持自动驾驶任务的开发者对任务执行线程的调度策略进行配置,从而实现自动驾驶系统的关键任务能够优先获得系统资源,降低其执行抖动。然而,目前的中间件产品通常只提供了接口或配置能力对任务的调度策略进行配置,通过不断迭代调整获取满足确定性需求的调度策略。调试难度较高,其实际效果很大程度依赖开发者的经验。因此,无法保证自动驾驶任务的运行确定性。

发明内容

本说明书实施例提供了一种智能汽车操作系统的任务调度方法、装置、设备及介质,用以解决现有技术对自动驾驶任务的调度策略的配置方式无法保证自动驾驶任务的运行确定性的技术问题。

第一方面,本说明书实施例提供了一种智能汽车操作系统的任务调度方法,包括:获取自动驾驶系统的M个任务依赖链条,每个所述任务依赖链条上包括存在依赖关系的多个驾驶任务,所述自动驾驶系统为所述智能汽车操作系统的子系统,M为大于1的整数;通过编排工具对所述M个任务依赖链条上驾驶任务的调度策略进行静态编排,得到策略描述配置文件,所述策略描述配置文件用于描述所述自动驾驶系统中驾驶任务的调度策略;在所述自动驾驶系统的运行阶段,根据所述策略描述配置文件调度所述自动驾驶系统中驾驶任务,以使所述自动驾驶系统中驾驶任务按照预先静态编排的调度策略执行。

可选地,所述通过编排工具对所述M个任务依赖链条上驾驶任务的调度策略进行静态编排,得到策略描述配置文件,包括通过所述编排工具执行的如下步骤:根据所述M个任务依赖链条上每个驾驶任务的最坏执行时间和执行周期,对所述M个任务依赖链条上的驾驶任务进行分组为N个任务组,N为大于1的整数;根据所述N个任务组中每个任务组的第一最坏执行时间总时长和第一参考周期,将所述N个任务组分别编排到对应的CPU内核;根据编排结果生成并输出所述策略描述配置文件。

可选地,所述根据所述M个任务依赖链条上每个驾驶任务的最坏执行时间和执行周期,对所述M个任务依赖链条上的驾驶任务进行分组为N个任务组,包括:从所述M个任务依赖链条获取当前待编排的目标驾驶任务;根据所述目标驾驶任务的最坏执行时间和执行周期,将所述目标驾驶任务编排到一个任务组,以使该任务组的第一最坏执行时间总时长不超过该任务组的第一参考周期。

可选地,所述根据所述目标驾驶任务的最坏执行时间和执行周期,将所述目标驾驶任务编排到一个任务组,以使该任务组的第一最坏执行时间总时长不超过该任务组的第一参考周期,包括:确定当前任务组内已有驾驶任务和所述目标驾驶任务的第一最坏执行时间总时长;根据当前任务组内已有驾驶任务和所述目标驾驶任务中每个驾驶任务的执行周期,确定所述当前任务组的第一参考周期;如果所述当前任务组的第一最坏执行时间总时长不大于所述当前任务组的第一参考周期,将所述目标驾驶任务编排到所述当前任务组;如果所述当前任务组的第一最坏执行时间总时长大于所述当前任务组的第一参考周期,完成向所述当前任务组的驾驶任务编排,并将所述目标驾驶任务编排到新开的任务组。

可选地,在所述完成向所述当前任务组的驾驶任务编排之后,还包括:如果所述当前任务组中包含融合节点任务,获取与所述当前任务组包含相同融合节点任务的参照任务组;比对所述当前任务组的第一参考周期与所述参照任务组的第一参考周期,确定出目标任务组,所述目标任务组为所述当前任务组与所述参照任务组中第一参考周期较大的任务组;删除所述目标任务组中所述融合节点任务。

可选地,所述从所述M个任务依赖链条获取当前待编排的目标驾驶任务,包括:将所述M个任务依赖链条分别作为待遍历的目标任务依赖链条;遍历所述目标任务依赖链条,将遍历到的驾驶任务依次确定为当前待编排的目标驾驶任务。

可选地,所述根据所述N个任务组中每个任务组的第一最坏执行时间总时长和第一参考周期,将所述M个任务组分别编排到对应的CPU内核,包括:从所述N个任务组中获取当前待编排的目标任务组;根据所述目标任务组的第一最坏执行时间总时长和第一参考周期将所述目标任务组编排到一个CPU内核,以使该CPU内核所需执行任务组的总算力不超过该CPU内核的算力上限。

可选地,所述根据所述目标任务组的第一最坏执行时间总时长和第一参考周期将所述目标任务组编排到一个CPU内核,以使该CPU内核所需执行任务组的总算力不超过该CPU内核的算力上限,包括:根据当前CPU内核已有任务组和所述目标任务组中每个任务组的第一最坏执行时间总时长,确定当前CPU内核对应的第二最坏执行时间总时长;根据当前CPU内核已有任务组和所述目标任务组中每个任务组的第一参考周期,确定出当前CPU内核对应的第二参考周期;如果所述当前CPU内核的第二最坏执行时间总时长不大于当前CPU内核对应的第二参考周期,将所述目标任务组编排到所述当前CPU内核;如果所述当前CPU内核的第二最坏执行时间总时长大于当前CPU内核对应的执行,完成向所述当前CPU内核的任务组编排,将所述目标任务组编排到一个未被编排任务组的CPU内核。

可选地,所述从所述N个任务组中获取当前待编排的目标任务组,包括:将所述N个任务组分别作为待遍历的目标任务组;遍历所述目标任务组,将遍历到的任务组依次确定为当前待编排的目标任务组。

可选地,所述获取自动驾驶系统的M个任务依赖链条,包括:获取任务拓扑数据,所述任务拓扑数据表征所述自动驾驶系统中不同驾驶任务之间的拓扑关系;根据所述任务拓扑数据,构建所述M个任务依赖链条。

可选地,所述根据所述策略描述配置文件调度所述自动驾驶系统中驾驶任务,包括:通过中间件加载所述策略描述配置文件,对所述自动驾驶系统的驾驶任务进行调度策略的配置;按照配置结果调度并执行所述自动驾驶系统中驾驶任务。

第二方面,本说明书实施例提供一种智能汽车操作系统的任务调度装置,包括:链条获取单元,用于获取自动驾驶系统的M个任务依赖链条,每个所述任务依赖链条上包括存在依赖关系的多个驾驶任务,所述自动驾驶系统为所述智能汽车操作系统的子系统,M为大于1的整数;静态编排单元,用于通过编排工具对所述M个任务依赖链条上驾驶任务的调度策略进行静态编排,得到策略描述配置文件,所述策略描述配置文件用于描述所述自动驾驶系统中驾驶任务的调度策略;配置执行单元,用于在所述自动驾驶系统的运行阶段,根据所述策略描述配置文件调度所述自动驾驶系统中驾驶任务,以使所述自动驾驶系统中驾驶任务按照预先静态编排的调度策略执行。

第三方面,本说明实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面任一实施方式所述的智能汽车操作系统的任务调度方法。

第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面任一实施方式所述的智能汽车操作系统的任务调度方法。

本说明书实施例提供的一个或者多个技术方案,至少具有如下技术效果或者优点:

通过编排工具对智能汽车操作系统的自动驾驶系统中驾驶任务的调度策略预先进行静态编排并以此生成描述驾驶任务的调度策略的策略描述配置文件,以使在自动驾驶系统的运行阶段,能够通过加载该策略描述配置文件实现对驾驶任务的调度策略的配置。从而,在自动驾驶系统的运行时阶段,驾驶任务能够基于预先静态编排的调度策略执行,以此提升了自动驾驶系统的驾驶任务的运行确定性,减少了异常发生的概率。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本说明书的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本说明书实施例提供的智能汽车操作系统的任务调度方法的流程图;

图2为本说明书实施例提供的智能汽车操作系统的任务调度方法的应用场景示意图;

图3为本说明书实施例提供的智能汽车操作系统的任务调度装置的结构示意图;

图4为本说明书实施例提供的电子设备的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。

本说明实施例提供了一种智能汽车操作系统的任务调度方法。图1为本说明书实施例提供的智能汽车操作系统的任务调度方法的流程图。如图1所示,智能汽车操作系统的任务调度方法包括如下步骤S101~S103。

S101:获取自动驾驶系统的M个任务依赖链条,每个任务依赖链条上包括存在依赖关系的多个驾驶任务,自动驾驶系统为智能汽车操作系统的子系统,M为大于1的整数。

在步骤S101中,获取自动驾驶系统的任务拓扑数据,任务拓扑数据表征自动驾驶系统中不同驾驶任务之间的拓扑关系;根据任务拓扑数据,构建M个任务依赖链条。其中,在每个任务依赖链条上,驾驶任务是串行依赖的。

图2为本说明书实施例提供的智能汽车操作系统的任务调度方法的应用场景示意图。如图2所示,通过解析任务拓扑数据可以得到每个驾驶任务的运行参数信息。其中,每个驾驶任务的运行参数信息可以包括该驾驶任务的任务名称、WCET(Worst-case ExecutionTime,最坏执行时间)、执行周期、任务类型(表征是数据驱动任务还是时间驱动任务)以及该驾驶任务对其他驾驶任务的依赖关系。针对每个驾驶任务,根据该驾驶任务对其他驾驶任务的依赖关系,将其添加至对应的任务依赖链条,从而构建出M个任务依赖链条。

举例来讲,执行某一个驾驶任务B需要使用到三个摄像头采集的图像,一个摄像头采集对应图像就是一个感知类的驾驶任务,那么,三个摄像头采集的图像对应三个感知类的驾驶任务A1、A2、A3。在拓扑关系数据中,驾驶任务B需要根据驾驶任务A1、A3、A3的执行结果来执行,构建出的其中三个任务依赖链条:一个任务依赖链条是依次串行依赖的驾驶任务A1、驾驶任务B……;另一个任务依赖链条是依次串行依赖的驾驶任务A2、驾驶任务B……;另一个任务依赖链条是依次串行依赖的驾驶任务A3、驾驶任务B……。

S102:通过编排工具对M个任务依赖链条上驾驶任务的调度策略进行静态编排,得到策略描述配置文件,策略描述配置文件用于描述智能汽车操作系统中驾驶任务的调度策略。

参考图2所示,在执行步骤S102之前还包括:获取用于运行智能汽车操作系统的CPU的CPU内核数,将获取的CPU内核数和任务拓扑数据提供至编排工具,由编排工具解析CPU内核数和任务拓扑数据,得到M个任务依赖链条以及每个任务依赖链条上每个驾驶任务的运行参数信息,并根据CPU内核数据和M个任务依赖链条上每个驾驶任务的运行参数信息,对每个驾驶任务的调度策略预先进行静态编排。编排工具的核心算法是用于自动化完成对智能汽车操作系统中具有执行确定性要求的每个驾驶任务的调度策略的静态编排。

应当理解的是,需要对调度策略进行静态编排的驾驶任务主要包括感知、规划、控制等具有执行确定性要求的驾驶任务。具有执行确定性要求而言,又划分为时间驱动任务和数据驱动任务这两种类型的驾驶任务。时间驱动任务:是指任务执行由预定义的时间周期性触发执行。数据驱动任务:是指任务执行由任务的数据监听机制触发,任务订阅数据的到达事件触发任务执行。也就是说,本说明书实施例是针对时间驱动任务和数据驱动任务这两种类型的驾驶任务预先进行静态编排。

在一些实施方式中,通过编排工具对驾驶任务的调度策略进行静态编排可以包括由编排工具顺序执行的如下两个步骤S1021~S1023。

S1021:根据M个任务依赖链条上每个驾驶任务的最坏执行时间和执行周期,将M个任务依赖链条上的驾驶任务进行分组为N个任务组,以使每个任务组的第一最坏执行时间总时长不超过该任务组的第一参考周期,N为大于1的整数。

需要说明的是,N值的大小取决于M个任务依赖链条上驾驶任务的多少,并不是一个固定数值。

在一些实施方式中,根据M个任务依赖链条上每个驾驶任务的最坏执行时间和执行周期,将M个任务依赖链条上的驾驶任务进行分组为N个任务组,可以包括:从M个任务依赖链条获取当前待编排的目标驾驶任务;获取目标驾驶任务的最坏执行时间和执行周期,并根据目标驾驶任务的最坏执行时间和执行周期将目标驾驶任务编排到一个任务组,以使该任务组的第一最坏执行时间总时长不超过该任务组的第一参考周期。

在一些实施方式中,可以从M个任务依赖链条一一获取当前待编排的目标驾驶任务,可以采用遍历M个任务依赖链的方式实现,具体包括:将M个任务依赖链条分别作为待遍历的目标任务依赖链条;遍历目标任务依赖链条,将遍历到的驾驶任务依次确定为当前待编排的目标驾驶任务。

在一些实施方式中,为了在对M个任务依赖链条上驾驶任务进行分组时,实现完成编排的任务组的第一最坏执行时间总时长不超过该任务组的第一参考周期,可以包括:确定当前任务组内已有驾驶任务和目标驾驶任务的第一最坏执行时间总时长;根据当前任务组内已有驾驶任务的执行周期和目标驾驶任务中每个驾驶任务的执行周期,确定当前任务组的第一参考周期;如果当前任务组的第一最坏执行时间总时长不大于当前任务组的第一参考周期,将目标驾驶任务编排到当前任务组;如果当前任务组的第一最坏执行时间总时长大于当前任务组的第一参考周期,完成当前任务组的编排并将目标驾驶任务编排到新开的任务组。

通过这种对驾驶任务进行分组的方式,能够在一个任务组编排完成之后再新开一个任务组来容纳后续需要编排的驾驶任务。

需要说明的是,当前任务组内已有驾驶任务和目标驾驶任务的第一最坏执行时间总时长,可以是:当前任务组内每个驾驶任务和目标驾驶任务各自的最坏执行时间进行加和的结果。当前任务组的第一参考周期可以是:当前任务组内已有每个驾驶任务和目标驾驶任务各自的执行周期,进行取最小公倍数得到。其中,驾驶任务重复执行的周期称为执行周期。

当然,在具体实施过程中,也可以按照驾驶任务的数量多少预先创建N个空白的任务组,并轮流向N个任务组编排驾驶任务:第一个驾驶任务编排到任务组1,第二个驾驶任务编排到任务组2,……,第N个驾驶任务编排到任务组N,第N+1个驾驶任务编排到任务组1,以此规律进行下去,直至遍历到的最后一个驾驶任务编排到对应的任务组。

应当理解的是,自动驾驶系统的驾驶任务中可以包括一个或者多个融合节点任务。融合节点任务是指需要依赖于多个驾驶任务的执行结果进行执行的驾驶任务。比如,某个驾驶任务B需要同时依赖于驾驶任务A1、A2以及A3的执行结果来执行,那么驾驶任务B就是属于融合节点任务。由于在拓扑关系数据中,融合节点任务需要依赖于多个驾驶任务,同一融合节点任务就会存在于构建的多个任务依赖链条中。进而,导致在步骤S1021中,对任务依赖链条上的驾驶任务进行分组时,同一融合节点任务会被重复编排到不同的任务组中。因此,在一些实施方式中,在完成向当前任务组的驾驶任务编排之后,还可以包括:如果当前任务组中包含融合节点任务,获取与当前任务组包含相同融合节点任务的参照任务组,其中,参考任务组为在当前任务组之前已经完成驾驶任务编排的任务组;比对当前任务组的第一参考周期与参照任务组的第一参考周期,根据对比结果确定出目标任务组,目标任务组为当前任务组与参照任务组中第一参考周期较大的任务组;删除目标任务组中该融合节点任务,使得相同融合节点任务仅仅出现在一个任务组中,而不会重复出现在多个不同的任务组中,以此提高了对驾驶任务分组的可靠性。

S1022:根据N个任务组中每个任务组的第一最坏执行时间总时长和第一参考周期,将N个任务组分别编排到对应的CPU内核。

在步骤S1022中,针对N个任务组中每个任务组,根据该任务组的第一最坏执行时间总时长和第一参考周期,将该任务组编排到对应的CPU内核,可以包括:从N个任务组中获取当前待编排的目标任务组;根据目标任务组的第一最坏执行时间总时长和第一参考周期,将目标任务组编排到一个CPU内核,以使该CPU内核内已编排任务组的执行所需总算力不超过该CPU内核的算力上限。

在一些实施方式中,为了使CPU内核所需执行任务组的总算力不超过该CPU内核的算力上限,将目标任务组编排到一个CPU内核包括:根据当前CPU内核已有任务组和目标任务组中每个任务组的第一最坏执行时间总时长,确定当前CPU内核对应的第二最坏执行时间总时长;根据当前CPU内核已有任务组和目标任务组中每个任务组的第一参考周期,确定出当前CPU内核对应的第二参考周期;如果当前CPU内核的第二最坏执行时间总时长不大于当前CPU内核对应的第二参考周期,将目标任务组编排到当前CPU内核;如果当前CPU内核的第二最坏执行时间总时长大于当前CPU内核对应的第二参考周期,完成向当前CPU内核的任务组编排,将目标任务组编排到一个未被编排任意一个任务组的CPU内核。

需要说明的是,当前CPU内核对应的第二最坏执行时间总时长,是指:当前CPU内核已有每个任务组和目标任务组各自的第一最坏执行时间总时长进行加和的结果。当前CPU内核对应的第二参考周期,可以是:对已编排到当前CPU内核的每个任务组和目标任务组各自的第一参考周期,进行取最小公倍数所得到。

为了便于理解步骤S1021~S1022中通过编排工具对驾驶任务的调度策略预先进行静态编排的过程。下面,对通过编排工具对驾驶任务的调度策略进行静态编排的过程进行举例说明:

S1:检测是否存在未编排的任务依赖链条;若存在,进入S2;否则,表征完成对驾驶任务的分组,跳转至S6。

S2:对检测到的未编排的任务依赖链条进行遍历,如果遍历一个当前待编排的目标驾驶任务,进行步骤S3;否则,返回执行S1,以检测是否存在未编排的下一个任务依赖链条。

S3:计算当前任务组内已有每个驾驶任务和目标驾驶任务的执行周期的最小公倍数,作为第一参考周期(记为T)和当前任务组内已有每个驾驶任务的WCET之和,作为第一最坏执行时间总时长(记为E)。

S4:若E≤T,则当前任务组有效,当前任务组接受目标驾驶任务;若E>T,则当前任务组无效,当前任务组不接受目标驾驶任务,当前任务组完成编排,新开一个任务组用于接受目标驾驶任务。

在每次执行S4将遍历到的目标驾驶任务编排到某一个任务组之后,返回S2。并且,在当前任务组完成编排之后,还会触发执行S5。

S5:检测当前任务组内是否包含融合节点任务;若存在,则与其他包含相同融合节点任务的参考任务组进行比对,确定出执行周期最小公倍数T较大者作为目标任务组并删除目标任务组中该融合节点任务。

S6:检测是否存在未编排的目标任务组;若存在,执行步骤S7,否则,表征完成对任务组的编排。

S7:计算当前CPU内核中已有每个任务组和目标任务组的第一参考周期T的最小公倍数,作为第二参考周期(记为T’),和当前CPU内核中已有每个任务组和目标任务组的第一最坏执行时间总时长E之和,作为第二最坏执行时间总时长(记为E’);若E’≤T’,则当前CPU内核有接受目标任务组,并返回S6;若E’>T’,则当前CPU内核不接受目标任务组,完成向当前CPU内核的任务组编排,并将目标任务组编排至一个还未编入任何任务组的CPU内核之后返回S6。

在步骤S1021~S1022完成之后,执行步骤S1023:根据编排结果生成并输出策略描述配置文件。

基于S102~S1022的编排结果生成智能汽车操作系统中所有具有执行确定性要求的驾驶任务的调度策略。其中,调度策略包括每个驾驶任务与执行线程的绑定关系以及每个执行线程的调度策略。其中,每个执行线程的调度策略包括该执行线程的调度策略、优先级以及CPU亲和性。配置执行线程的CPU亲和性是指将执行线程绑定到对应驾驶任务被编排至的CPU内核。

S103:在自动驾驶系统的运行阶段,根据策略描述配置文件调度自动驾驶系统中驾驶任务,以使自动驾驶系统中驾驶任务按照预先静态编排的调度策略执行。

需要说明的是,步骤S101~S102是需要在自动驾驶系统运行之前通过编排工具完成的。参考图2所示,以使在自动驾驶系统的运行阶段通过中间件加载策略描述配置文件,自动完成对驾驶系统中驾驶任务的调度策略的配置;并按照配置结果在自动驾驶系统的运行阶段调度并执行自动驾驶系统中驾驶任务。

基于同一发明构思,本说明书实施例提供了一种智能汽车操作系统的任务调度装置。如图3所示,该任务调度装置包括如下功能单元:

链条获取单元301,用于获取自动驾驶系统的M个任务依赖链条,每个任务依赖链条上包括存在依赖关系的多个驾驶任务,自动驾驶系统为智能汽车操作系统的子系统,M为大于1的整数;

静态编排单元302,用于通过编排工具对M个任务依赖链条上驾驶任务的调度策略进行静态编排,得到策略描述配置文件,策略描述配置文件用于描述自动驾驶系统中驾驶任务的调度策略;

配置执行单元303,用于在自动驾驶系统的运行阶段,根据策略描述配置文件调度自动驾驶系统中驾驶任务,以使自动驾驶系统中驾驶任务按照预先静态编排的调度策略执行。

在一些实施方式中,静态编排单元302包括:第一编排子单元,用于根据M个任务依赖链条上每个驾驶任务的最坏执行时间和执行周期,对M个任务依赖链条上的驾驶任务进行分组为N个任务组,N为大于1的整数;第二编排子单元,用于根据N个任务组中每个任务组的第一最坏执行时间总时长和执行周期,将N个任务组分别编排到对应的CPU内核;文件生成单元,用于根据编排结果生成并输出策略描述配置文件。

在一些实施方式中,第一编排子单元包括:第一获取模块,用于从M个任务依赖链条获取当前待编排的目标驾驶任务;第一编排模块,用于根据目标驾驶任务的最坏执行时间和执行周期,将目标驾驶任务编排到一个任务组,以使该任务组的第一最坏执行时间总时长不超过该任务组的执行周期。

在一些实施方式中,第一编排模块,具体用于:确定当前任务组内已有驾驶任务和目标驾驶任务的第一最坏执行时间总时长;根据当前任务组内已有驾驶任务和目标驾驶任务中每个驾驶任务的执行周期,确定当前任务组的执行周期;如果当前任务组的第一最坏执行时间总时长不大于当前任务组的执行周期,将目标驾驶任务编排到当前任务组;如果当前任务组的第一最坏执行时间总时长大于当前任务组的执行周期,完成向当前任务组的驾驶任务编排,并将目标驾驶任务编排到新开的任务组。

在一些实施方式中,第一编排子单元,还用于:在完成向所述当前任务组的驾驶任务编排之后,如果所述当前任务组中包含融合节点任务,获取与当前任务组包含相同融合节点任务的参照任务组;比对所述当前任务组的执行周期与所述参照任务组的执行周期,确定出目标任务组,所述目标任务组为所述当前任务组与所述参照任务组中执行周期较大的任务组;删除所述目标任务组中该融合节点任务。

在一些实施方式中,第一获取模块具体用于:将所述M个任务依赖链条分别作为待遍历的目标任务依赖链条;遍历所述目标任务依赖链条,将遍历到的驾驶任务依次确定为当前待编排的目标驾驶任务。

在一些实施方式中,第二编排子单元包括:第二获取模块,用于从所述N个任务组中获取当前待编排的目标任务组;第二编码模块,用于根据所述目标任务组的第一最坏执行时间总时长和执行周期将所述目标任务组编排到一个CPU内核,以使该CPU内核所需执行任务组的总算力不超过该CPU内核的算力上限。

在一些实施方式中,第二编码模块具体用于:根据当前CPU内核已有任务组和所述目标任务组中每个任务组的第一最坏执行时间总时长,确定当前CPU内核对应的第一最坏执行时间总时长;根据当前CPU内核已有任务组和所述目标任务组中每个任务组的执行周期,确定出当前CPU内核对应的执行周期;如果所述当前CPU内核的第二最坏执行时间总时长不大于当前CPU内核对应的执行周期,将所述目标任务组编排到所述当前CPU内核;如果所述当前CPU内核的第二最坏执行时间总时长大于当前CPU内核对应的执行,完成向所述当前CPU内核的任务组编排,将所述目标任务组编排到一个未被编排任务组的CPU内核。

在一些实施方式中,第二获取模块具体用于:将所述N个任务组分别作为待遍历的目标任务组;遍历所述目标任务组,将遍历到的任务组依次确定为当前待编排的目标任务组。

在一些实施方式中,链条获取单元301具体用于:获取任务拓扑数据,所述任务拓扑数据表征所述自动驾驶系统中不同驾驶任务之间的拓扑关系;根据所述任务拓扑数据,构建所述M个任务依赖链条。

在一些实施方式中,配置执行单元303,具体用于:通过中间件加载所述策略描述配置文件,自动完成对所述自动驾驶系统中驾驶任务的调度策略的配置;按照配置结果调度并执行所述自动驾驶系统中驾驶任务。

关于上述装置,其中各个单元的具体功能已经在本说明书提供的智能汽车操作系统的任务调度方法实施例中进行了详细描述,此处将不做详细阐述说明。

基于同一发明构思,本说明书实施例还提供了一种电子设备。如图4所示,该电子设备包括存储器404、处理器402及存储在存储器404上并可在处理器402上运行的计算机程序,处理器402执行所述计算机程序时实现前述任一实施方式所述的智能汽车操作系统的任务调度方法。

其中,在图4中,总线架构(用总线400来代表),总线400可以包括任意数量的互联的总线和桥,总线400将包括由处理器402代表的一个或多个处理器和存储器404代表的存储器的各种电路衔接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路衔接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口405在总线400和接收器401和发送器403之间提供接口。接收器401和发送器403可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器402负责管理总线400和通常的处理,而存储器404可以被用于存储处理器402在执行操作时所使用的数据。

基于同一发明构思,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施方式所述的智能汽车操作系统的任务调度方法。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。

显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。

相关技术
  • 移动设备的界面处理方法、装置、设备、介质和操作系统
  • 一种汽车智能解锁方法、装置、设备及存储介质
  • 一种任务调度方法、装置、设备和存储介质
  • 一种任务调度方法、装置、电子设备及存储介质
  • 智能设备的交互方法、装置、智能设备和存储介质
  • 智能家居操作系统的任务调度方法及装置、存储介质
  • 基于智能物联网操作系统的任务调度方法、装置及设备
技术分类

06120116488895