一种多任务调度方法及装置与流程

    专利查询2024-03-16  91



    1.本发明涉及计算机技术领域,具体而言,涉及一种多任务调度方法及装置。


    背景技术:

    2.随着计算机技术的深入发展,多任务操作系统应用越来越普遍,多任务操作系统例如windows、linux、qnx(quick unix)等,在多任务操作系统中往往会同时运行着多个任务进程。现有技术中多个任务通常是独立启动和独立运行,例如,当需要启动多个任务时,无论是通过手动方式,还是命令脚本方式,都需要逐一启动每个任务执行,操作比较费时,特别是需要同时启动大量任务时,给维护人员带来了不便。另外各任务之间无法进行协调,若某一任务出现异常,不能及时调整和控制其他相关任务的执行状态。如何在多任务操作系统中对多个任务进行统一调配和管理,是多任务操作系统应用领域需要解决的问题。


    技术实现要素:

    3.本发明提供了一种多任务调度方法及装置,以实现对多任务的统一调度。具体的技术方案如下:
    4.第一方面,本发明实施例提供了一种多任务调度方法,方法包括:
    5.获取任务配置文件,其中,任务配置文件包含多个目标任务的配置信息,配置信息包括任务调度周期、任务调度顺序;
    6.基于任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,守护进程的任务调度时钟根据任务调度周期和任务调度顺序确定,每一目标任务对应一个任务调度时钟,守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。
    7.可选的,基于任务配置文件,利用守护进程对多个目标任务进行调度和监控之前,包括:
    8.针对每一目标任务,根据每一目标任务的任务调度周期和关联目标任务的任务调度顺序,确定任务调度时钟,其中,多个目标任务对应的多个任务调度时钟具有同一时钟源;
    9.根据任务间数据信息和第二任务状态信息,确定共享内存,共享内存的容量对应任务间数据信息和第二任务状态信息容量的总和;
    10.针对每一目标任务,根据每一目标任务对应的配置信息确定任务进程,且将初始化后的任务进程关联至共享内存。
    11.可选的,针对每一目标任务,根据每一目标任务的任务调度周期和关联目标任务的任务调度顺序,确定任务调度时钟,包括:
    12.根据多个目标任务的任务调度周期,确定任务调度基准时钟,其中,任务调度基准时钟对应多个目标任务的任务调度周期的最大公约数;
    13.根据任务调度基准时钟和每一目标任务的任务调度周期,确定该目标任务的调度周期计数值,其中,调度周期计数值为任务调度基准时钟对应的n个基准时间,n为正整数;
    14.根据任务调度顺序,确定每一目标任务的计数偏移值;
    15.根据任务调度顺序,确定每一目标任务的任务执行方式,其中,
    16.当目标任务的任务执行方式为串行执行时,则该目标任务的任务调度时钟对应该目标任务的周期计数值与该目标任务的计数偏移值之和;
    17.当目标任务的任务执行方式为并行执行时,则并行执行的多个目标任务的任务调度时钟相同,并行执行的多个目标任务的任务调度时钟对应并行执行任务中每一目标任务的周期计数值与自身目标任务的计数偏移值之和。
    18.可选的,针对每一目标任务,根据每一目标任务的任务调度周期和关联目标任务的任务调度顺序,确定任务调度时钟,还包括:
    19.根据任务调度基准时钟,确定系统定时器,系统定时器为所有任务调度的最小时钟片,定时器用于实现多个目标任务基于同一时钟源的同步调度。
    20.可选的,共享内存基于系统进程锁进行数据读写。
    21.可选的,基于任务配置文件,利用目标守护进程对多个目标任务进行调度和监控,包括:
    22.根据目标任务的任务调度时钟触发该目标任务;
    23.基于每一关联目标任务的数据偏移地址,获取存储于共享内存中关联目标任务的第一数据,其中,第一数据是关联目标任务待发送给目标任务的数据;
    24.基于第一数据,执行目标任务,并确定第二数据,其中,第二数据与目标任务执行结果相对应,第二数据包括第三数据和第四数据,第三数据是关联目标任务待接收的数据,第四数据是目标任务执行任务后确定的状态信息数据;
    25.根据第四数据,对目标任务及其关联目标任务进行监控。
    26.可选的,根据第四数据,对目标任务及其关联目标任务进行监控,包括:
    27.获取第四数据;
    28.根据第四数据,判断目标任务执行结果是否报错和/或目标任务是否异常退出;
    29.响应于目标任务执行结果报错和/或目标任务异常退出,根据预先设置的错误等级向关联目标任务下发相应控制指令。
    30.可选的,任务配置信息还包括任务名称、任务核绑定信息、任务优先级、第二任务状态信息、任务间数据信息中的至少一种,其中,第二任务状态信息为每一目标任务原始的任务状态信息。
    31.第二方面,本发明实施例提供了一种多任务调度装置,装置包括;
    32.获取模块,用于获取任务配置文件,其中,任务配置文件包含多个目标任务的配置信息,配置信息包括任务调度周期、任务调度顺序;
    33.调度模块,用于基于任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,守护进程的任务调度时钟根据任务调度周期和任务调度顺序确定,每一目标任务对应一个任务调度时钟,守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。
    34.可选的,装置还包括:
    35.第一确定模块,用于针对每一目标任务,根据每一目标任务的任务调度周期和关联目标任务的任务调度顺序,确定任务调度时钟,其中,多个目标任务对应的多个任务调度时钟具有同一时钟源。
    36.第二确定模块,用于根据任务间数据信息和第二任务状态信息,确定共享内存,共享内存的容量对应任务间数据信息和第二任务状态信息容量的总和。
    37.第三确定模块,用于针对每一目标任务,根据每一目标任务对应的配置信息确定任务进程,且将初始化后的任务进程关联至共享内存。
    38.可选的,第一确定模块,还可以包括:
    39.第一确定单元,用于根据多个目标任务的任务调度周期,确定任务调度基准时钟,其中,任务调度基准时钟对应多个目标任务的任务调度周期的最大公约数。
    40.第二确定单元,用于根据任务调度基准时钟和每一目标任务的任务调度周期,确定该目标任务的调度周期计数值,其中,调度周期计数值为任务调度基准时钟对应的n个基准时间,n为正整数。
    41.第三确定单元,用于根据任务调度顺序,确定每一目标任务的计数偏移值。
    42.第四确定单元,用于根据任务调度顺序,确定每一目标任务的任务执行方式,其中,当目标任务的任务执行方式为串行执行时,则该目标任务的任务调度时钟对应该目标任务的周期计数值与该目标任务的计数偏移值之和;当目标任务的任务执行方式为并行执行时,则并行执行的多个目标任务的任务调度时钟相同,并行执行的多个目标任务的任务调度时钟对应并行执行任务中每一目标任务的周期计数值与自身目标任务的计数偏移值之和。
    43.可选的,第一确定模块,还可以包括:
    44.第二确定单元,用于根据任务调度基准时钟,确定系统定时器,系统定时器为所有任务调度的最小时钟片,定时器用于实现多个目标任务基于同一时钟源的同步调度。
    45.在一个可选的实施例中,共享内存基于系统进程锁进行数据读写。
    46.在一个可选的实施例中,任务配置信息还包括任务名称、任务核绑定信息、任务优先级、第二任务状态信息、任务间数据信息中的至少一种,其中,第二任务状态信息为每一目标任务原始的任务状态信息。
    47.可选的,调度模块,可以包括:
    48.第一触发单元,用于根据目标任务的任务调度时钟触发该目标任务。
    49.第一获取单元,用于基于每一关联目标任务的数据偏移地址,获取存储于共享内存中关联目标任务的第一数据,其中,第一数据是关联目标任务待发送给目标任务的数据。
    50.第一确定单元,用于基于第一数据,执行目标任务,并确定第二数据,其中,第二数据与目标任务执行结果相对应,第二数据包括第三数据和第四数据,第三数据是关联目标任务待接收的数据,第四数据是目标任务执行任务后确定的状态信息数据。
    51.第一监控单元,用于根据第四数据,对目标任务及其关联目标任务进行监控。
    52.可选的,第一监控单元,可以包括:
    53.第一获取子单元,用于获取第四数据。
    54.第一判断子单元,用于根据第四数据,判断目标任务执行结果是否报错和/或目标
    任务是否异常退出。
    55.第一响应子单元,用于响应于目标任务执行结果报错和/或目标任务异常退出,根据预先设置的错误等级向关联目标任务下发相应控制指令。
    56.由上述内容可知,本发明实施例提供的一种多任务调度方法及装置,获取任务配置文件,其中,任务配置文件包含多个目标任务的配置信息,配置信息包括任务调度周期、任务调度顺序;基于任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,守护进程的任务调度时钟根据任务调度周期和任务调度顺序确定,每一目标任务对应一个任务调度时钟,守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。
    57.应用本发明实施例,可以对多任务进行统一调度和实时监控。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
    58.本发明实施例的技术效果包括:
    59.1、现有技术中在多任务操作系统中各任务是分别启动,并独立运行的,本发明实施例利用守护进程对多任务进行统一调度,可以提高多任务启动效率,实时调控多个任务。本发明实施例在多任务操作系统中增加了统一调配和管理多任务的角色。
    60.2、本发明实施例通过守护进程可配置的方式对多个任务进行调度,守护进程根据获取到的任务配置文件中的各目标任务配置信息,生成基于同一时钟源的各目标任务对应的任务调度时钟,通过任务调度时钟触发相应目标任务,实现了各目标任务间的时钟同步。
    61.3、在复杂工程应用中,多任务之间需要协同作业,例如多核分布式系统应用,各任务之间需要数据通信,本发明实施例中的目标任务与关联目标任务利用共享内存进行数据交换,实现了工程应用中各目标任务的联合应用。
    62.4、本发明实施例中的目标任务每执行一次任务调度,将生成的任务状态信息写入共享内存相应的位置,守护进程可通过获取目标任务存储在共享内存中的任务状态信息,对目标任务进行监控,并根据目标任务的任务状态信息实时控制相应的关联目标任务,以实现各目标任务的实时监控和管理。
    附图说明
    63.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    64.图1为本发明实施例提供的多任务调度方法的一种流程示意图;
    65.图2为本发明实施例提供的多任务调度方法的另一种流程示意图;
    66.图3为本发明实施例提供的多任务调度方法的又一种流程示意图;
    67.图4为本发明实施例提供的多任务调度方法的又一种流程示意图;
    68.图5为本发明实施例提供的多任务调度装置的一种结构示意图。
    具体实施方式
    69.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    70.需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
    71.本发明提供了一种多任务调度方法及装置。下面对本发明实施例进行详细说明。
    72.图1为本发明实施例提供的多任务调度方法的一种流程示意图。该方法可以包括如下步骤:
    73.s101:获取任务配置文件,其中,所述任务配置文件包含多个目标任务的配置信息,所述配置信息包括任务调度周期、任务调度顺序。
    74.任务配置文件是一个预先定义的配置文件,任务配置文件中描述了各个工程应用中各个任务的进程配置信息。其中,每一个工程应用中可以包括多个任务,每一个任务可以和其他多个任务存在关联。
    75.任务调度周期是指各个目标任务的调度周期,也就是触发调度一次目标任务的时间间隔,每个目标任务对应着一个任务调度周期。任务调度顺序是指调度各个目标任务的顺序,任务调度顺序分为两类,一类是并行调度,一类是串行调度,并行调度的各个任务调度顺序相同,串行调度的各个任务调度顺序有先后。
    76.s102:基于所述任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,所述守护进程的任务调度时钟根据所述任务调度周期和所述任务调度顺序确定,每一目标任务对应一个任务调度时钟,所述守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,所述第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。
    77.本发明实施例利用守护进程对每一个目标任务进行动态调度和实时任务状态的监控,守护进程在多任务操作系统启动时自动启动,在操作系统关闭时自动退出。在每次启动守护进程后,可以读取一次任务配置文件,根据读取到的任务配置文件,调度多个目标任务。本发明实施例中的守护进程是基于任务配置文件创建的,所以守护进程的任务调度时钟可以根据任务配置文件中每个目标任务的任务调度周期和任务调度顺序创建,串行调度的每个目标任务的任务调度时钟不同,并行调度的多个任务的任务调度时钟相同。与守护进程相对应的还设有共享内存,共享内存用于储存各目标任务执行任务后,生成的数据通信信息和第一任务状态信息,并且利用共享内存进行各目标任务之间的数据交换。
    78.现有技术中,多任务操作系统中缺少一个任务配置和管理监控的角色,很难做到多个任务间的协调和同步,应用本发明实施例可以实现多任务的统一调度,可以在守护进程启动后,同时挂起多个任务,等待任务调度时钟的触发,可以根据触发目标任务后生成的任务执行结果,实时监控自身目标任务和控制关联目标任务。
    79.在一个可选的实施例中,所述任务配置信息还包括任务名称、任务核绑定信息、任
    务优先级、第二任务状态信息、任务间数据信息中的至少一种,其中,所述第二任务状态信息为每一目标任务原始的任务状态信息。
    80.任务名称是指各个工程应用中各个目标任务的名称。任务核绑定信息是指定每个目标任务绑定到处理器的某一个核上执行的信息,本发明实施例中,可以将目标任务指定到具体核,也可以缺省不指定,由操作系统自动分配,这都是可以的。任务优先级是指定各目标任务进程的优先级。可以指定到操作系统进程优先级0-255范围内,也可以缺省不指定,继承守护进程优先级,在此不做限定。第二任务状态信息是指在应用本发明实施例中的守护进行调度各个目标任务之前,各目标任务对应的任务状态反馈信息,包括但不限于原始的状态数据的偏移地址等。任务间数据信息表示各个目标任务之间交互的数据信息,包括但不限于读写的数据偏移地址,数据长度等。
    81.图2为本发明实施例提供的多任务调度方法的另一种流程示意图。在上述实施例的基础上,所述基于所述任务配置文件,利用守护进程对多个目标任务进行调度和监控之前,如图2所示,还可以包括:
    82.s201:针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,其中,多个目标任务对应的多个所述任务调度时钟具有同一时钟源。
    83.每一个目标任务有一个与自身对应的任务调度时钟,所有的任务调度时钟都基于同一时钟源,所以实现了各个目标任务之间的时钟同步。需要说明的是目标任务的任务调度时钟的生成,不但依据目标任务的任务调度周期和关联目标任务的任务调度顺序,同时还依据目标任务的任务调度顺序。本发明实施例中的关联目标任务指的是一个或多个与目标任务相关联的任务。
    84.s202:根据所述任务间数据信息和所述第二任务状态信息,确定所述共享内存,所述共享内存的容量对应所述任务间数据信息和所述第二任务状态信息容量的总和。。
    85.本发明实施例中需要创建一块各个目标任务共用的共享内存,以便各个目标任务根据共享内存中的偏移地址进行数据交换,同时,也用于守护进程监控和管理各个目标任务的运行状态信息。所以共享内存的大小可以根据任务配置文件中的任务间数据信息和第二任务状态信息的容量大小总和确定。
    86.s203:针对每一目标任务,根据每一目标任务对应的所述配置信息确定任务进程,且将初始化后的所述任务进程关联至所述共享内存。
    87.在对各目标任务进行调度之前,需要创建各目标任务的进程。可以根据任务配置文件中每个目标任务的配置信息创建对应的任务进程。在一种可实现的方式中,首先根据配置信息中的任务名称,找到目标任务对应的任务可执行文件;接着,根据配置信息中的核绑定信息,调用系统命令绑定目标任务到处理器核;然后根据配置信息中任务优先级,设置任务进程运行的优先级,在任务创建完成后,进行任务内部初始化,并连接到创建的共享内存上,挂起目标任务等待时钟触发信号。当收到守护进程发过来的时钟触发信号后,执行一次调度,执行完成后,又处于挂起等待状态,等待守护进程下一次时钟触发信号的到来,以此来实现守护进程对各个目标任务调度的控制。
    88.在一个可选的实施例中,所述共享内存基于系统进程锁进行数据读写。
    89.本发明实施例中应用系统进程锁协调各个目标任务的数据读写操作,防止共享内
    存数据读写冲突,从而保障数据的一致性。
    90.守护进程的创建主要包括三方面,任务调度时钟的创建、对应共享内存的创建以及各个目标任务进程的创建,守护进程在初始化阶段,读取已生成的任务配置文件,将各个目标任务的配置信息读取到内存结构数组中存储,以便后续使用。根据存储的任务配置信息,创建任务调度时钟、共享内存及创建各目标任务进行。在运行过程中,当守护进程启动后,各目标任务通过相应的任务进程挂起各目标任务等待触发,在通过任务调度时钟触发后,将执行结果存储与共享内存中,并且通过共享内存进行各目标任务之间的数据交换,最后根据存储在共享内存中的任务状态信息,监控和控制各目标任务。
    91.应用本发明实施例创建的守护进程可以对多任务进行统一调度,实时监控各目标任务,根据各目标任务的状态信息,管理控制各目标任务,并且实现了各目标任务之间的时钟同步,更有利于对关联目标任务的实时控制。
    92.图3为本发明实施例提供的多任务调度方法的又一种流程示意图。在上述实施例的基础上,具体的,所述针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,生成所述任务调度时钟,如图3所示,还可以包括:
    93.s301:根据多个目标任务的所述任务调度周期,确定任务调度基准时钟,其中,所述任务调度基准时钟对应多个目标任务的所述任务调度周期的最大公约数。
    94.在确定每个目标任务的任务调度时钟之前,首先要确定任务调度基准时钟,任务调度基准时钟可以为所有目标任务的任务调度周期的最大公约数,取最大公约数而不是任意一个公约数,更有利于简化计时程序。
    95.s302:根据所述任务调度基准时钟和每一目标任务的所述任务调度周期,确定该目标任务的调度周期计数值,其中,所述调度周期计数值为所述任务调度基准时钟对应的n个基准时间,n为正整数。
    96.因为目标任务的一个任务调度周期为基准时钟对应的n个基准时间,而任务调度周期计数值是单个任务调度周期的数值,所以调度周期计数值为n个基准时间。
    97.s303:根据所述任务调度顺序,确定每一目标任务的计数偏移值。
    98.根据各个目标任务的调度顺序要求不同,计算计数偏移值。计数偏移值用于区分每一目标任务在单次任务调度触发循环中的顺序位置。每个目标任务的任务调度时钟是由在该目标任务的任务调度周期的基础上加上该目标任务的调度顺序对应的计数偏移值得到的。例如三个串行任务(a/b/c)都是10ms调度一次,但a任务的计数偏移值是1ms,b任务的计数偏移值是3ms,c任务的计数偏移值是7ms,则a/b/c任务调度时钟分别可以是11ms/13ms/17ms、21ms/23ms/27ms、31ms/33ms/37ms
    ……
    ;又如三个并行任务(d/e/f)都是10ms调度一次,d/e/f任务计数偏移值都是5ms,则d/e/f任务调度时钟都分别可以是15ms/15ms/15ms、25ms/25ms/25ms、35ms/35ms/35ms
    ……

    99.s304:根据所述任务调度顺序,确定每一目标任务的任务执行方式,其中,当目标任务的任务执行方式为串行执行时,则该目标任务的任务调度时钟对应该目标任务的所述周期计数值与该目标任务的计数偏移值之和;当目标任务的任务执行方式为并行执行时,则并行执行的多个目标任务的所述任务调度时钟相同,所述并行执行的多个目标任务的所述任务调度时钟对应并行执行任务中每一目标任务的所述周期计数值与自身目标任务的所述计数偏移值之和。
    100.任务调度顺序分为两种串行调度、并行调度。如果某几个目标任务有串行执行要求,那么在需要在各个目标任务的任务周期计数值上加相应的计数偏移值。从而根据周期计数值+计数偏移值来控制时钟触发信号的发送时机,也就控制了任务执行的顺序,实现多任务的串行执行;如果某几个目标任务是并行执行的,那么这几个目标任务的周期计数值+计数偏移值是相同的,即并行执行的多个任务的任务触发时钟是相同的。上述中的时钟触发信号也是在创建任务调度时钟过程中定义的,任务配置文件中的配置信息也还可以包括任务序号,根据任务序号定义每个目标任务的时钟触发信号。根据每个目标任务的任务调度时钟,发送相应的时钟触发信号给目标任务,唤醒目标任务执行一次任务。每个目标任务的时钟触发信号都不相同。
    101.在一个可选的实施例中,所述针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,生成所述任务调度时钟,还可以包括:
    102.根据所述任务调度基准时钟,生成系统定时器,所述系统定时器为所有任务调度的最小时钟片,所述定时器用于实现多个目标任务基于同一时钟源的同步调度。
    103.守护进程调度的所有目标任务都基于同一个时钟源,即所有目标任务依托同一个系统定时器计时,当达到某一目标任务的周期计数值时,再加上相应的计数偏移值的时间,触发一次该目标任务时钟触发信号,发送给响应的任务。各个目标任务进程创建并启动后,目标任务处于挂起等待触发信号的状态,当某一目标任务收到守护进程发送来的时钟触发信号时,执行一次任务调度。
    104.图4为本发明实施例提供的多任务调度方法的又一种流程示意图。在上述实施例的基础上,具体的,所述基于所述任务配置文件,利用目标守护进程对多个目标任务进行调度和监控,如图4所示,还可以包括:
    105.s401:根据目标任务的所述任务调度时钟触发该目标任务。
    106.守护进程周期性的调度每一个目标任务,在每一次调度中,首先守护进程根据目标任务的任务调度时钟向目标任务发出时钟触发信号,以便触发该目标任务。
    107.s402:基于每一关联目标任务的数据偏移地址,获取存储于所述共享内存中关联目标任务的第一数据,其中,所述第一数据是关联目标任务待发送给目标任务的数据。
    108.当目标任务接收到触发信号后,首先从共享内存中读取其关联任务存储在共享内存中第一数据。每一目标任务在执行任务后,将需要关联目标任务读取的数据存储在共享内存中,需要关联目标任务读取的这部分数据为第一数据,即各关联目标任务之间通信数据。第一数据存储在每个关联目标任务对应的位置,可以通过每个关联目标任务相应的数据偏移地址获取第一数据。
    109.s403:基于所述第一数据,执行目标任务,并确定第二数据,其中,所述第二数据与目标任务执行结果相对应,所述第二数据包括第三数据和第四数据,所述第三数据是关联目标任务待接收的数据,第四数据是目标任务执行任务后确定的状态信息数据。
    110.在获取各关联目标任务通信数据之后,执行目标任务,并生成执行结果的数据,即第二数据。第三数据为需要关联目标任务在下次触发后,在执行任务之前,读取的与目标任务有关的通信数据。本发明实施例中利用共享内存进行各目标任务之间的数据交换,提高了各目标任务间数据交换效率。
    111.s404:根据所述第四数据,对目标任务及其关联目标任务进行监控。
    112.守护进程通过获取存储在共享内存中的第四数据,可以监控目标任务的实时状态,并针对获取到的目标任务的实时状态信息,确定目标任务相关联的多个任务的控制指令。
    113.在一个可选的实施例中,所述根据所述第四数据,对目标任务及其关联目标任务进行监控,还可以包括:
    114.s501:获取所述第四数据。
    115.每执行一次任务调度,各个目标任务把自己的执行状态写入到共享内存中相应的位置。守护进程可以从共享内存中获取各个目标任务的实时执行状态信息,以便监控各个目标任务。
    116.s502:根据所述第四数据,判断目标任务执行结果是否报错和/或目标任务是否异常退出。
    117.守护进程可以从获取到任务状态信息中得知执行结果是否报错,任务执行中断,异常退出等情况。
    118.s503:响应于目标任务执行结果报错和/或目标任务异常退出,根据预先设置的错误等级向关联目标任务下发相应控制指令。
    119.守护进程可以根据预先定义的错误等级控制与目标任务关联的其它目标任务的执行。例如,需要串行执行的a任务和b任务,串行执行方式为先执行a任务,再执行b任务,如果在调度a任务后,a任务的执行结果显示a任务异常退出,这时若再接着触发b任务则没有意义,所以守护进程可以下发指令,停止触发b任务。本发明实施例中的守护进程实现了多任务之间的协同管理。
    120.相应于上述方法实施例,本发明实施例提供了一种多任务调度装置。
    121.图5为本发明实施例提供的多任务调度装置的一种结构示意图,如图5所示,所述装置可以包括:
    122.获取模块501,用于获取任务配置文件,其中,所述任务配置文件包含多个目标任务的配置信息,所述配置信息包括任务调度周期、任务调度顺序;
    123.调度模块502,用于基于所述任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,所述守护进程的任务调度时钟根据所述任务调度周期和所述任务调度顺序确定,每一目标任务对应一个任务调度时钟,所述守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,所述第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。
    124.在一个可选的实施例中,所述任务配置信息还包括任务名称、任务核绑定信息、任务优先级、第二任务状态信息、任务间数据信息中的至少一种,其中,所述第二任务状态信息为每一目标任务原始的任务状态信息。
    125.在一个可选的实施例中,所述装置还包括:
    126.第一确定模块,用于针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,其中,多个目标任务对应的多个所述任务调度时钟具有同一时钟源。
    127.第二确定模块,用于根据所述任务间数据信息和所述第二任务状态信息,确定所述共享内存,所述共享内存的容量对应所述任务间数据信息和所述第二任务状态信息容量
    的总和。
    128.第三确定模块,用于针对每一目标任务,根据每一目标任务对应的所述配置信息确定任务进程,且将初始化后的所述任务进程关联至所述共享内存。
    129.在一个可选的实施例中,所述第一确定模块,还可以包括:
    130.第一确定单元,用于根据多个目标任务的所述任务调度周期,确定任务调度基准时钟,其中,所述任务调度基准时钟对应多个目标任务的所述任务调度周期的最大公约数。
    131.第二确定单元,用于根据所述任务调度基准时钟和每一目标任务的所述任务调度周期,确定该目标任务的调度周期计数值,其中,所述调度周期计数值为所述任务调度基准时钟对应的n个基准时间,n为正整数。
    132.第三确定单元,用于根据所述任务调度顺序,确定每一目标任务的计数偏移值。
    133.第四确定单元,用于根据所述任务调度顺序,确定每一目标任务的任务执行方式,其中,当目标任务的任务执行方式为串行执行时,则该目标任务的任务调度时钟对应该目标任务的所述周期计数值与该目标任务的计数偏移值之和;当目标任务的任务执行方式为并行执行时,则并行执行的多个目标任务的所述任务调度时钟相同,所述并行执行的多个目标任务的所述任务调度时钟对应并行执行任务中每一目标任务的所述周期计数值与自身目标任务的所述计数偏移值之和。
    134.在一个可选的实施例中,所述第一确定模块,还可以包括:
    135.第二确定单元,用于根据所述任务调度基准时钟,确定系统定时器,所述系统定时器为所有任务调度的最小时钟片,所述定时器用于实现多个目标任务基于同一时钟源的同步调度。
    136.在一个可选的实施例中,所述共享内存基于系统进程锁进行数据读写。
    137.在一个可选的实施例中,所述调度模块,可以包括:
    138.第一触发单元,用于根据目标任务的所述任务调度时钟触发该目标任务。
    139.第一获取单元,用于基于每一关联目标任务的数据偏移地址,获取存储于所述共享内存中关联目标任务的第一数据,其中,所述第一数据是关联目标任务待发送给目标任务的数据。
    140.第一确定单元,用于基于所述第一数据,执行目标任务,并确定第二数据,其中,所述第二数据与目标任务执行结果相对应,所述第二数据包括第三数据和第四数据,所述第三数据是关联目标任务待接收的数据,第四数据是目标任务执行任务后确定的状态信息数据。
    141.第一监控单元,用于根据所述第四数据,对目标任务及其关联目标任务进行监控。
    142.在一个可选的实施例中,所述第一监控单元,可以包括:
    143.第一获取子单元,用于获取所述第四数据。
    144.第一判断子单元,用于根据所述第四数据,判断目标任务执行结果是否报错和/或目标任务是否异常退出。
    145.第一响应子单元,用于响应于目标任务执行结果报错和/或目标任务异常退出,根据预先设置的错误等级向关联目标任务下发相应控制指令。
    146.相应于上述方法实施例,本发明实施例提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如上述方法实施例中的多任务
    调度方法。
    147.上述系统、装置实施例与系统实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
    148.本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
    149.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

    技术特征:
    1.一种多任务调度方法,其特征在于,所述方法包括:获取任务配置文件,其中,所述任务配置文件包含多个目标任务的配置信息,所述配置信息包括任务调度周期、任务调度顺序;基于所述任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,所述守护进程的任务调度时钟根据所述任务调度周期和所述任务调度顺序确定,每一目标任务对应一个任务调度时钟,所述守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,所述第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。2.如权利要求1所述的方法,其特征在于,所述任务配置信息还包括任务名称、任务核绑定信息、任务优先级、第二任务状态信息、任务间数据信息中的至少一种,其中,所述第二任务状态信息为每一目标任务原始的任务状态信息。3.如权利要求2所述的方法,其特征在于,所述基于所述任务配置文件,利用守护进程对多个目标任务进行调度和监控之前,包括:针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,其中,多个目标任务对应的多个所述任务调度时钟具有同一时钟源;根据所述任务间数据信息和所述第二任务状态信息,确定所述共享内存,所述共享内存的容量对应所述任务间数据信息和所述第二任务状态信息容量的总和。针对每一目标任务,根据每一目标任务对应的所述配置信息确定任务进程,且将初始化后的所述任务进程关联至所述共享内存。4.如权利要求3所述的方法,其特征在于,所述针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,包括:根据多个目标任务的所述任务调度周期,确定任务调度基准时钟,其中,所述任务调度基准时钟对应多个目标任务的所述任务调度周期的最大公约数;根据所述任务调度基准时钟和每一目标任务的所述任务调度周期,确定该目标任务的调度周期计数值,其中,所述调度周期计数值为所述任务调度基准时钟对应的n个基准时间,n为正整数;根据所述任务调度顺序,确定每一目标任务的计数偏移值;根据所述任务调度顺序,确定每一目标任务的任务执行方式,其中,当目标任务的任务执行方式为串行执行时,则该目标任务的任务调度时钟对应该目标任务的所述周期计数值与该目标任务的计数偏移值之和;当目标任务的任务执行方式为并行执行时,则并行执行的多个目标任务的所述任务调度时钟相同,所述并行执行的多个目标任务的所述任务调度时钟对应并行执行任务中每一目标任务的所述周期计数值与自身目标任务的所述计数偏移值之和。5.如权利要求3所述的方法,其特征在于,所述针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,还包括:根据所述任务调度基准时钟,确定系统定时器,所述系统定时器为所有任务调度的最小时钟片,所述定时器用于实现多个目标任务基于同一时钟源的同步调度。
    6.如权利要求3所述的方法,其特征在于,所述共享内存基于系统进程锁进行数据读写。7.如权利要求1所述的方法,其特征在于,所述基于所述任务配置文件,利用目标守护进程对多个目标任务进行调度和监控,包括:根据目标任务的所述任务调度时钟触发该目标任务;基于每一关联目标任务的数据偏移地址,获取存储于所述共享内存中关联目标任务的第一数据,其中,所述第一数据是关联目标任务待发送给目标任务的数据;基于所述第一数据,执行目标任务,并确定第二数据,其中,所述第二数据与目标任务执行结果相对应,所述第二数据包括第三数据和第四数据,所述第三数据是关联目标任务待接收的数据,第四数据是目标任务执行任务后确定的状态信息数据;根据所述第四数据,对目标任务及其关联目标任务进行监控。8.如权利要求7所述的方法,其特征在于,所述根据所述第四数据,对目标任务及其关联目标任务进行监控,包括:获取所述第四数据;根据所述第四数据,判断目标任务执行结果是否报错和/或目标任务是否异常退出;响应于目标任务执行结果报错和/或目标任务异常退出,根据预先设置的错误等级向关联目标任务下发相应控制指令。9.一种多任务调度装置,其特征在于,所述装置包括:获取模块,用于获取任务配置文件,其中,所述任务配置文件包含多个目标任务的配置信息,所述配置信息包括任务调度周期、任务调度顺序;调度模块,用于基于所述任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,所述守护进程的任务调度时钟根据所述任务调度周期和所述任务调度顺序确定,每一目标任务对应一个任务调度时钟,所述守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,所述第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。10.如权利要求9所述的装置,其特征在于,所述装置还包括:第一确定模块,用于针对每一目标任务,根据每一目标任务的所述任务调度周期和关联目标任务的所述任务调度顺序,确定所述任务调度时钟,其中,多个目标任务对应的多个所述任务调度时钟具有同一时钟源;第一确定模块,用于根据所述任务间数据信息和所述第二任务状态信息,确定所述共享内存,所述共享内存的容量对应所述任务间数据信息和所述第二任务状态信息容量的总和;第一确定模块,用于针对每一目标任务,根据每一目标任务对应的所述配置信息确定任务进程,且将初始化后的所述任务进程关联至所述共享内存。

    技术总结
    本发明实施例公开一种多任务调度方法及装置,该方法包括:获取任务配置文件,其中,任务配置文件包含多个目标任务的配置信息,配置信息包括任务调度周期、任务调度顺序;基于任务配置文件,利用守护进程对多个目标任务进行调度和任务状态监控,其中,守护进程的任务调度时钟根据任务调度周期和任务调度顺序创建,每一目标任务对应一个任务调度时钟,守护进程对应的共享内存用于各目标任务之间的数据交换以及用于存储第一任务状态信息,所述第一任务状态信息是各目标任务在执行调度过程中,生成的任务状态信息。应用本公开实现了对多任务的统一调度。的统一调度。的统一调度。


    技术研发人员:李新桥 余江森
    受保护的技术使用者:上海仁童电子科技有限公司
    技术研发日:2022.02.07
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-21393.html

    最新回复(0)