用于使用滑动时间窗口调度任务的系统和方法与流程

文档序号:12469703阅读:494来源:国知局
用于使用滑动时间窗口调度任务的系统和方法与流程

本发明涉及用于使用滑动时间窗口调度任务的系统和方法。



背景技术:

航空航天应用中的实时操作系统(RTOS)可以依靠时间划分的概念以便保证该RTOS在识别的最坏情况的执行时间内执行任务。例如,一种RTOS使用静态固定的时间窗口调度。一种替换方法使用速率单调的(RM)调度和空闲时间调度以向动态任务执行提供更高的灵活性同时仍维持时间确定性。

在多核平台中,表征并限制跨内核干扰在确定该最坏情况执行时间以及由此的预算方面是关键的,其中预算形成时间划分的基础。然而,在多核平台中,并不总能保证多线程的可调度性。因此,在多核RTOS中,提供在不同内核上执行的任务集合借此被限制为满足时间确定性然而也允许灵活性和动态性的多核RTOS机制并不总是可以的。



技术实现要素:

提供了用于使用滑动时间窗口调度任务的系统和方法。在某些实施例中,用于调度任务执行的系统包括被配置成执行多个任务的至少一个处理单元,其中该多个任务中的每个任务被调度成在多个调度器实例中的一个调度器实例内执行,该多个调度器实例中的每个调度器实例被与多个时间窗口中的一组时间窗口相关联并在每个时间窗口中被与至少一个处理单元中的一组处理单元相关联,该多个时间窗口中的一个或多个时间窗口具有开始时间和所分配的持续时间并且与该一个或多个时间窗口相关联的调度器实例不早于该开始时间开始执行相关联的任务并且执行不长于所分配的持续时间,并且其中该开始时间可滑动至时间上较早的时刻。

附图说明

要理解的是,附图仅描绘示例性实施例并因此不应被视为对范围进行限制,将通过使用附图采用额外的特异性和细节来描述示例性实施例,其中:

图1是在本公开中描述的一个实施例中用于在至少一个处理单元上执行任务的系统的框图;

图2是在本公开中描述的一个实施例中所调度的任务的时间线的图;

图3A是在本公开中描述的一个实施例中在单个处理单元上的滑动时间窗口内调度的任务的时间线的一部分的图;

图3B是在本公开中描述的一个实施例中在多核处理单元上的滑动时间窗口内调度的任务的时间线的一部分的图;

图4是图解在本公开中描述的一个实施例中滑动时间窗口和固定时间窗口的组合的时间线的图;

图5A是图解在本公开中描述的一个实施例中在单个处理单元上的中断服务例程时间窗口的调度的时间线的图;

图5B是图解在本公开中描述的一个实施例中在多个处理单元上的中断服务例程时间窗口的调度的时间线的图;

图6A-6C是图解针对由中断服务抢占时间窗口的不同实施例的时间线的一部分的图;

图7是图解在本公开中描述的一个实施例中用于多个时间窗口的最早开始时间的定义的时间线的图;

图8是图解在本公开中描述的一个实施例中时间窗口空闲时间的累积的时间线的图;

图9A-9D是图解在本公开中描述的一个实施例中在滑动时间窗口的情况下识别和使用空闲时间的时间线的图;

图10是图解在本公开中描述的一个实施例中不同时间窗口使用时间窗口空闲时间的时间线的图;以及

图11是在本公开中描述的一个实施例中用于实现滑动时间窗口的方法的流程图。

依据惯例,各种描述的特征并不按比例绘制而是绘制以强调与示例性实施例相关的具体特征。

具体实施方式

在以下详细描述中,参考形成本文一部分的附图,并且其中借助图解的方式示出了具体的例证性实施例。然而,要理解的是,可以利用其它实施例并且可以进行逻辑、机械、和电的改变。此外,附图和说明书中介绍的方法不应被解释为限制其中可以执行单独的步骤的顺序。因此,以下详细描述不应被视为限制性意义。

为了提供灵活性以容纳期望的动态性同时仍保持时间保证,提供了用于使用滑动时间窗口调度任务的系统和方法。为了实现滑动时间窗口,使用时间划分将任务调度到时间窗口中。时间划分有助于满足任务级别以及时间窗口级别的时间保证。另外,如本文所描述的,时间窗口是滑动时间窗口。滑动时间窗口能够调整时间窗口的开始时间使得任务在时间上较早的时刻处执行同时仍维持时间确定性。当实施例实现滑动时间窗口时,系统还可以为中断服务例程的执行保留时间。另外,还可以执行空闲时间调度以允许所有内核上的充分的CPU利用。

根据某些实施例,图1图解能够实现滑动时间窗口的系统100,滑动时间窗口在上文被简要地提及并在下文被更详细地描述。系统100一般地可以被实现在嵌入式系统、标准计算系统、以及本领域技术人员已知的其它实现中。在至少一个实施例中,系统100使用操作系统(诸如实时操作系统),其中该操作系统具有调度需求。如图所示,系统100包括被耦合至调度器104、存储器106、和其它资源108的处理实体102。处理实体102可以被通信地耦合至调度器104、存储器106、以及其它资源108。处理实体102可以是单个处理单元或多个处理单元。如本文所使用的,术语“处理单元”一般是指能够如程序指令所指示的那样接受数据并执行数学和逻辑运算的计算设备。在实施例中,其中处理实体102包括多个处理单元,该多个处理单元可以为多CPU系统的一部分、多核CPU中的一组内核、或者超线程处理单元内的一组超线程。在一个另外的示例中,多个处理单元可以是多CPU系统,其中该多CPU系统中的不同CPU具有多个内核。另外,每个内核可以操作为超线程处理单元。如本文所使用的,术语“多核”在下文将被用于指如上文所述的具有多个处理单元的实现。

在图1中示出的示例性实施例中,程序指令被存储(或以其它方式被收录)在适当的非暂时性存储媒体或存储器106(诸如闪存或其它非易失性存储器、磁盘驱动器、和/或光盘驱动器)上或中。程序指令的至少一部分由处理实体102从存储器106读出以在处理实体102上执行。程序指令在本文还被称为“软件”。其上或其中收录有程序指令的存储器106这里还可以被称为“程序产品”。虽然图1中将存储器106示出为对于各处理实体102来说本地的,但要理解也可以使用远程存储器106(例如,通过网络或通过云可访问的存储媒体)和/或可移除媒体。在由处理实体102执行期间,存储器106还可以存储程序指令(和任何相关数据)。在一个实现中,存储器106包括目前已知或后来开发的任何适当形式的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)。在其它实施例中,使用其它类型的存储器。另外,在某些示例性实现中,其中处理实体102包括多个处理单元,每个处理单元具有专用于在相关联的处理单元上的执行期间存储程序指令的分离的存储器106。

在图1中示出的另外的示例性实施例中,系统100包括促进与外部系统进行信息的发射和接收的其它设备。例如,如图1所示,系统100包括传感器130,其感测外部参数(以其它方式产生指示某些物理现象的信号或信息)并将它们发射至处理实体102以供处理实体102(更具体地,在其上执行的程序指令)使用。另外,系统100包括控制接口132。在该实施例中,当处理实体102执行程序指令时,处理实体102将发射电信号至控制接口132以控制被连接至系统100的外部系统。而且,在至少一个示例性实施例中,系统100与用户交互。为了促进与用户的交互,系统100可以包括至少一个用户输入设备134和显示器136。每个用户输入设备134从用户接收输入并将该输入发射至处理实体102以供处理实体102(更具体地,在其上执行的程序指令)使用。而且,在该实施例中,处理集群102将供用户观看的信息输出至显示器136,其为用户显示该信息。

在至少一个实现中,系统100包括调度器104。调度器104调度程序指令在处理实体102上的执行。在至少一个实施例中,调度器104是动态地调度程序指令的执行的操作系统中的调度器。在另一实施例中,调度器104根据静态的时间定义调度程序指令的执行。例如,当操作系统遵守ARINC 653时,程序指令的执行被分派至专用的时间窗口。另外,当处理实体102包括多个处理单元时,每个处理单元可以具有相关联的调度器104。

如本文所描述的,被存储在存储媒体104内的程序指令可以被组织成任务。如本文所使用的,术语“任务”是指作为或识别与彼此相关联的一组程序指令、当被执行时达成指定的目的的实体。任务由调度器104调度以在处理实体102上执行。当任务被调度成执行时的每个实例在本文被称为任务的调度实例。另外,任务可以由在任务的调度实例内执行的较小的子任务组成。在某些示例性实现中,任务可以被应用至速率单调线程、POSIX线程、或ARINC 653进程。

在某些实施例中,多个任务实例可以被调度成在调度器实例内执行。调度器实例可以被捆绑到单个内核或多个内核。当调度器实例被捆绑到多个内核时,调度算法可以选择在其上执行与多核调度器实例相关联的线程的内核。如果在时间窗口中没有调度器实例与内核相关联,那么在该时间窗口期间任务可以不被允许在未调度的内核上执行。在主框架内,可以有多个调度器实例,然而,对于整个主框架来说每个任务可以由单个调度器实例处理。

在某些实现中,其中处理实体102包括多个处理单元,调度器104确定处理实体102中的哪个处理单元将执行特定任务。而且,调度器104确定在任何给定时间点处哪些任务要在处理实体102中的每个处理单元上被执行。在确定如何调度任务的执行中,调度器104使用提供用于确定如何调度任务的执行的规则和方法的调度算法或其它调度策略。例如,调度器104可以使用调度算法,诸如速率单调、优先级抢占、轮询等。在此类实施例的一种实现中,调度器104使用单个调度算法以在处理实体102内的各种处理单元上调度任务的执行。在另一实现中,调度器104使用多个调度算法以在处理实体102内的不同处理单元上调度任务的执行。例如,在此类替换实现中,调度器104使用第一调度算法以调度任务中的某些用于在第一处理单元上执行,以及第二调度算法用于调度任务中的某些的执行以在处理实体102内的第二处理单元上执行。

在至少一个实施例中,以实现时间确定性的这样的方式执行任务和时间窗口的调度。时间确定性可以以至少两种不同的方式被实现。例如,时间确定性可以在其中每个任务是速率单调线程的速率单调调度的上下文中通过保证预算在每个任务的基础上被实现。在该示例中,可以对时间窗口和在该时间窗口内执行的任务两者进行时间划分。替换地,时间确定性可以通过将预算仅分配至作为整体的时间窗口在时间窗口的基础上被实现。例如,时间窗口可以是时间划分的实体并且也可以是用于非时间划分任务的容器。例如,在基于ARINC 653的应用的情况下,时间确定性可以在其中针对一组任务保证预算的ARINC 653划分级别处被实现。因此,在时间窗口级别处强制实现预算同时在时间窗口内不为单独的ARINC 653任务分配预算。

在至少一个示例性实施例中,调度器104在时间划分的操作系统中调度任务。当调度器104在时间划分的操作系统中调度任务时,调度器104分配处理预算至在处理实体102上执行的任务。所分配的处理预算定义了在其期间任务被允许在处理实体102上执行的时间段。另外,调度器104向任务分配允许任务在要么连续的要么不连续的时间间隔中完成执行的处理预算。例如,当任务在连续的时间间隔中完成执行时,调度器104为该任务的执行分配持续时间充分地足够长的处理预算以允许在不中断的情况下完成该任务的执行。替换地,当任务在非连续时间间隔中完成执行时,调度器104为任务的各执行分配不连续的处理预算,其中不连续的处理预算允许足够的时间用于完成相关联的任务的执行。

另外,如下文更详细描述的,调度器104可以包括两个等级的调度器。例如,调度器104可以包括时间窗口调度器和任务实例调度器。当调度器104用作时间窗口调度器时,调度器104调度具有指定的开始和结束时间的时间窗口,或者在其它实现中,具有指定的开始时间和指定的持续时间的时间窗口,其中时间窗口是其中指定任务被调度用于执行的一部分时间。由于时间窗口调度器调度时间窗口的开始和持续时间,因此时间窗口调度器能够保证时间窗口在指定时间内开始和结束。在其中任务周期性地执行的某些实施例中,在主框架期间调度时间窗口,其中主框架是在其期间任务针对所调度的时间窗口中的每一个执行的时间段。主框架表示用于具有最长时期的任务的时间段。像这样,每个时间窗口可以以在不同主框架内的相同的时间偏移在每个主框架内被调度。另外,在某些实施例中,主框架可以基于具有最小时间段的一个或多个任务被分割成更小的时间段。更小的时间段可以被称为次框架。在某些实施例中,可以存在在主框架期间调度的多个时间窗口。不同的时间窗口形成时间窗口序列。当时间窗口序列中的最后的时间窗口完成时,该时间窗口调度器从该时间窗口序列中的第一时间窗口开始再一次开始调度该时间窗口序列。在其中处理实体102包括多个内核的实施例中,时间窗口调度器可以在多个内核上同步时间窗口的开始时间和持续时间。在另外的实施例中,其中调度器104是任务实例调度器,调度器104分派任务执行的实例以在指定的时间窗口内在调度器实例窗口内执行。下面更详细地描述时间窗口调度器和任务实例调度器的使用。

图2图解用于在多核处理系统上执行任务的执行时间线200,但是与图2相关地讨论的原则也应用至单核操作系统。所图解的时间线仅示出了主框架的一部分。例如,与主框架相关联的执行调度可以以1Hz的频率重复,其中本领域技术人员会认识到重复频率可以更低或更高。在主框架内,可以存在多个次框架,其中在次框架内的执行以特定频率开始。在一个示例性实现中,次框架中的每个的开始以80Hz的频率发生。像这样,在不同次框架内的执行可以每12.5ms开始,在其它实现中,次框架能以更快或更慢的频率开始。如图2中所示,存在被识别为次框架201-204的四个不同的次框架。在次框架201-204内,不同的任务执行实例被调度成在调度的时间窗口内执行。替换地,某些实施例可以具有其中次框架等于主框架的单个框架。

在至少一个实现中并如图2所示的示例所图解的,存在在次框架201-204内调度的八个不同的时间窗口221-228。如上文与调度器104相关地讨论的,不同的时间窗口221-228在每个主框架内同时执行。在某些实现中,在特定时间窗口内的任务实例被限制为在单个次框架内执行。替换地,与特定时间窗口相关联的任务实例可以在第一次框架内开始执行并在第二次框架内停止执行。如图2所示,时间窗口的跨度大体上被限制为单个次框架。另外,如图2所示,时间线200示出了针对两个不同处理内核251-252的任务调度。时间窗口221-228跨越不同的内核251-252。

在某些实现中,调度由在一组时间窗口内调度在一个或多个内核上的任务执行的调度器实例组成。因此,在时间窗口内每个内核被与特定的调度器实例相关联。其中在时间窗口内特定的调度实例是活跃的该间隔是调度器实例窗口。调度器实例窗口210-217和231-236表示各种时间窗口221-228内的调度器实例窗口。如图所示在特定时间窗口中将每个调度器实例窗口分派至内核。例如,在内核251上,调度器实例窗口210-217执行与在内核252上在调度器实例窗口231-236中执行的任务不同的任务。另外,在与被分派至内核251的调度器实例窗口210-217相比时,可以在内核252上在调度器实例窗口231-236内执行不同类型的任务。在其中不同类型的任务执行像是ARINC 653任务、POSIX任务、速率单调任务、中断任务等的实施例中,在特定调度器实例窗口内执行的不同任务可以被限制为是相同类型的任务。例如,任务τ1、τ2、τ3、和τ4可以是在被指定用于速率单调任务的执行的调度器实例窗口210、212-214、216和235内调度执行的速率单调任务。任务P1、P2、和P3是在ARINC 653调度器实例窗口217、231、232、和234内调度执行的ARINC 653任务。另外,任务τ5、τ6、和τ7是在POSIX调度器实例窗口211、215、233、和236内调度执行的POSIX任务。

在之前的系统中,与时间线200相关地固定不同的时间窗口。当时间窗口被固定时,防止该时间窗口的开始在时间线上滑动要么更早要么更晚。因此,与固定时间窗口相关联的任务不被允许要么在固定时间窗口的开始时间之前开始执行要么在如根据开始时间由固定时间窗口的持续时间确定的固定时间窗口的结束之后继续执行。另外,被分配至固定时间窗口的预算防止与其它时间窗口相关联的任务在该固定时间窗口期间执行。实际上,当时间窗口被固定时,固定时间窗口被保证不在时间线上滑动。针对一组执行的任务的时间窗口的固定有助于确定针对该组执行的任务的最坏情况执行时间。

然而,当分派任务给固定时间窗口时,调度器可能不支持动态性,因为任务和子任务可能被静态地定义。例如,预先配置的预算和最长执行时间可以明确地静态地在时间线上被调度和配置。因此,防止调度器将额外的时间致力于任务的完成,使得即使时间是可用的由于在下一固定时间窗口的开始被调度之前在调度时间线上的间隙调度器也不能够支持附加的预算和执行时间的调度。因此,由于缺乏动态性,可能无效率地利用时间线。

在另外的实施例中,调度器需要能够调度中断服务例程。中断服务例程的本性是动态的并当中断发生时需要被执行。当调度器使用固定时间窗口时,一般存在两种方式以支持中断服务例程的调度。用以支持中断服务例程的一种方式是通过所谓的“抽样方法”。在抽样方法中,中断服务例程任务被明确地在固定的时间点调度。中断例程任务的固定时间调度可能导致比在其中中断由硬件提出的点处执行中断例程要么增加等待时间(更少的调度时间)要么增加计算资源。用以支持中断服务例程的第二种方法可以被称为“所有任务中断服务例程增加方法”(下文被称为“增加方法”)。在增加方法中,采用用于执行中断服务例程的预算填补或额外地增加时间线上未调度时间的任务和潜在的间隙。因此,每当中断发生时,等待时间被降低,因为中断服务例程将为下一调度任务。该增加方法具有无等待时间或最小等待时间的优点。然而,由于在时间段内分配多个中断服务例程预算,存在引发浪费的处理器利用损失的可能性,其中该处理器对于时间线的重要部分搁置空闲。

在某些实施例中,为了更有效地利用处理器的能力,调度器可以实现滑动时间窗口。如本文所使用的,短语“滑动时间窗口”一般是指可以要么以比时间窗口的预先配置的开始较早的时间开始执行要么比基于针对该时间窗口预先配置的持续时间得出的时间窗口的结束更早地停止执行的调度时间窗口。图3A和3B图解滑动时间窗口的概念。图3A图解被调度成在单个处理单元上执行的时间线300a上的滑动时间窗口。图3B图解针对多核的在时间线300b上的滑动时间窗口的实现。在图3A中,预先配置的时间窗口302被分派为在次框架304内执行。然而,预先配置的时间窗口302可以在主框架内的任何时刻执行,尤其是当该主框架等于该次框架时。任务τ能够在预先配置的时间窗口302期间执行。由于时间窗口302是滑动时间窗口,时间窗口302的预先配置的开始306能够滑动至时间线中的较早的点。然而,时间窗口302的预先配置的开始306不能滑动至时间线中的较晚的点。另外,当时间窗口302的开始306滑动至较早的时间点时,时间窗口302的得出的结束308也基于针对时间窗口302预先配置的持续时间滑动至时间线300a中较早的点。然而,与开始306类似,结束308一般不能滑动至时间线中的较晚的点。在某些实现中,当与时间窗口302相关联的任务在基于时间窗口302预先配置的持续时间得出的结束时间之前完成执行时,结束时间308可滑动至时间上较早的时刻。

图3B与图3A类似,除了图3B图解多核上预先配置的时间窗口的调度之外。如上文所讨论的,诸如预先配置的时间窗口312时间窗口在次框架314内跨越多个内核。任务τ1、τ2和τ3被调度成在时间窗口312内执行。如上文所述,预先配置的时间窗口312是滑动时间窗口,时间窗口312的预先配置的开始316能够滑动至时间线中的较早的点。然而,时间窗口312的预先配置的开始316不能够滑动至时间线中的较晚的点。另外,当开始316滑动至较早的时间点时,时间窗口312的得出的结束318也能够滑动至时间线中的较早的点。由于时间窗口312的开始316不能滑动至时间上较晚的时刻,因此得出的结束318不能够滑动至时间线300b中的较晚的点。在某些实现中,当开始316滑动时,结束318也滑动相同的时间量。在某些实现中,当与时间窗口312相关联的任务在基于时间窗口312的预先配置的持续时间得出的结束时间之前结束执行时,结束时间308可以滑动至时间上较早的时刻。

在某些实现中,基于在时间窗口内与调度器实例相关联的任务的周期性在时间窗口能滑动多远上可能存在限制。例如,周期性的任务不能够在相关联的周期的开始之前开始执行。某些系统可能具有基于任务的速率和/或周期配置时间窗口的开始时间和持续时间的系统集成器。在实现滑动时间窗口中,存在可以被实现以将可能的限制考虑在内的至少两种方法。在第一种方法中,时间窗口的开始可以被允许滑动至在次框架的开始之前的时间,假如新的窗口开始时间不引起对在与该时间窗口相关联的调度器实例内具有最小周期的任务的周期扰乱。当滑动将导致周期性的任务在与该任务相关联的周期的开始之前执行时发生周期扰乱。在第二种方法中,可以防止时间窗口的开始滑动至在与预先配置的时间窗口相关联的次框架的开始之前的时间。

图4是图解由于与在时间窗口内执行的任务相关联的周期性而出现的限制的时间线400的图。时间线400包括固定时间窗口和可滑动时间窗口两者。为了图解该限制,三个不同的时间窗口410、420和430被调度成沿着时间线400执行。第一时间窗口410具有预先配置的开始411和得出的结束412。第一时间窗口410的开始411能够滑动至较早的时间点,只要它处于最早的周期开始时间401或在其之后。基于时间窗口410预先配置的持续时间、开始411、以及由执行任务消耗的时间窗口中的时间量,得出的结束412也能够移动至时间上较早的时刻。第二时间窗口420具有预先配置的开始421和得出的结束422,其中在与第二时间窗口420相关联的调度器实例内执行的任务具有最早开始时间402。由于预先配置的开始421已经被与最早开始时间402对齐,因此开始421不可滑动至时间上较早的时刻并且第二时间窗口420的得出的结束422仅当在与第二时间窗口420相关联的调度器实例内执行的任务在所分配的处理预算被消耗之前结束执行时可滑动至较早的时间。第三时间窗口430具有预先配置的开始431和得出的结束433。如图所示,第三时间窗口430包括被表示为第一部分434的一个或多个任务。而且,第三时间窗口430包括被表示为第二部分435的一个或多个任务,第二部分435中的任务被周期性需求所限制使得在第三时间窗口430中的该周期受限的任务不能够在最早开始时间403之前执行。因此,系统集成器可以滑动时间窗口430沿着时间线向上至较早的点直到第二部分开始时间432等于最早开始时间403。

由于时间窗口是可滑动的,因此调度器可以使用除了上文讨论的抽样方法和增加方法之外的方法来处理中断服务例程。为了处理中断,调度器在中断服务例程(ISR)时间窗口内调度任务。在调度中,ISR时间窗口的开始时间和持续时间指示在时间线上的何处保留或补充用于ISR处理例程的预算。在某些实现中,在系统启动时,为ISR调度实例提供执行预算以周期性地处理出现的中断。如下文所述,当ISR任务执行时ISR时间窗口并不必然地指示时间窗口的开始时间和持续时间。ISR时间窗口是用于为服务于中断保留预算的概念性或逻辑性时间。ISR的执行可以被指定用于执行的速率/周期和预算。因此,用于ISR时间窗口的开始时间和持续时间可以确保以特定速率明确地调度预算使得多个内核不被过度调度,其中“过度调度”的意思是所分配的时间预算超出可用的计算时间。另外,可以在调度随后的滑动时间窗口和固定时间窗口之前在时间窗口内保留ISR预算。另外,在一个实现中,可以在与其它时间窗口相关联的调度器实例被调度成执行之后保留ISR时间窗口用于服务于ISR。

当被实现时,与ISR相关联的实际中断可能发生在沿着调度时间线的任何点处使得该中断可能发生在ISR调度实例之前、在该调度实例期间、或在该调度实例之后。如果该中断发生在并非ISR时间窗口的活跃地执行的滑动时间窗口内,那么调度器可以在当前滑动时间窗口内抢占任务的执行(即,停止所有的调度器实例和在当前滑动时间窗口中运行的相关联的任务或者仅停止在特定内核上执行的任务)。在当前滑动时间窗口内抢占任务的执行之后,系统可以执行该ISR时间窗口调度器实例和具有预算的相关联的ISR任务。如果该系统是多核系统,那么该系统在多个内核的一个或多个上执行ISR时间窗口调度器实例和具有预算的相关联的ISR任务。在至少一种实现中,在出现ISR要处理的中断之前为ISR的执行分配预算。然后允许ISR任务执行直到ISR任务完成执行或预算被耗尽。如果ISR任务的执行抢占了活跃地执行的滑动窗口,那么与被抢占的滑动窗口相关联的任务将在ISR任务完成执行或预算被耗尽之后重新开始执行。如果在间隙内发生ISR任务的执行,那么ISR任务执行直到ISR任务完成或直到预算被耗尽,然后继续进行调度时间线上的下一滑动窗口。

图5A、5B、以及6A-6C图解在可滑动时间窗口的上下文中在时间线上的ISR时间窗口的调度。特别地,图5A和5B图解在时间线500a和500b上针对ISR线程的开始和结束时间的预先分配。图5A图解被调度以由单核处理器执行的时间线500a上的预算的保留,并且图5B图解被调度以由多核处理器执行的时间线500b上的预算的保留。如图5A所示,时间线500a图解用于处理可能发生的中断的四个不同ISR时间窗口的调度。如图所示,周期性地调度ISR时间窗口中的三个511、512、和513,其中三个ISR时间窗口被分别地与不同的最早开始时间501、502、和503相关联。三个ISR时间窗口511、512、和513被分配预算以在各自的最早开始时间501、502、和503之后被服务。时间窗口520和522是其中非中断任务执行的标准时间窗口。第一ISR时间窗口511被调度成处理在第一最早开始时间501和第二最早开始时间502之间发生的中断。在第一最早开始时间501之后和在第二最早开始时间502之前出现的中断可以被执行以消耗所分配的预算至第一ISR时间窗口511。第二ISR时间窗口512在时间窗口520之后被调度,其中两者都被限制为在第二最早开始时间502后执行并被限制为在第三最早开始时间503之前结束执行。另外,第三ISR时间窗口513是针对在时间窗口522中调度任务之前服务于ISR分配的时间。如图所示,如果ISR在分配的时间被耗尽之前完成执行,那么时间窗口522可以滑动至较早的时间点,直到最早开始时间503。在另外的实现中,第四ISR时间窗口514可以在ISR时间窗口511后立即被调度。第四ISR时间窗口514可以被用于服务于除了由三个ISR时间窗口511、512、和513服务的中断之外的中断。

如图5B中所图解的,其中时间线500b示出了最早开始时间551、552、和553,ISR时间窗口561、562、和563以及时间窗口570和572跨越不同的内核并且分别与ISR时间窗口511、512和513、以及时间窗口520和522类似地被调度。另外,如图5B所示,可以在时间窗口内在不同的内核上分别地服务于多于一个ISR。例如,在ISR时间窗口561、562、和563的每一个内,在内核1上服务于ISR1A并在内核2上服务于ISR1B。当在时间窗口内在不同的内核上服务于不同的ISR时,调度器可以被限制为服务于并行的ISR或者可以被并行地执行以服务于同一潜在中断的ISR。例如,在一个实现中,如同ISR时间窗口514,ISR时间窗口564被分配成服务于不同的中断。当服务于中断时,ISR时间窗口564可以被限制为在单个内核上服务于中断而不被要求在其它内核上服务于中断。

另外,在为ISR窗口提供预算的窗口和被限制为不早开始的下一窗口之间的间隔中的同一中断的多次发生可以采用多达在该间隔内针对ISR指定的预算的执行时间被服务。如果在该间隔内没有更多的剩余预算,那么另外的ISR可以不被服务直到新的预算被分配用于服务于ISR。如果在当前周期内没有更多的剩余预算,那么ISR可以不被服务直到新的预算被分配用于服务于ISR。

图6A-6C图解用于在时间窗口内抢占执行任务的各种实施例。图6A图解在服务于ISR之前的时间窗口602。如图所示,存在在四个不同的内核上执行的9个不同的任务τ19。特别地,τ1和τ2在第一内核上执行,τ36在第二内核上执行,τ7和τ8在第三内核上执行,并且τ9在第四内核上执行。在没有中断的情况下,任务在时间窗口602内正常执行。

图6B和6C图解用于在时间窗口602的执行期间抢占任务的执行的不同实现。例如,图6B图解其中ISR在内核中的每一个上抢占任务的执行的实现。特别地,时间窗口602被有效地划分成两个分离的时间窗口,先于由ISR时间窗口608服务于ISR的第一时间窗口604以及跟在由ISR时间窗口608服务于ISR之后的第二时间窗口606。如图所示,当服务于ISR时,特定ISR可以仅在单个内核上执行而其它内核变为不活跃的。如果存在多于一个ISR,那么不同的ISR可以在对应数量的不同内核上执行或在单个内核上执行。

与图6B相比,图6C图解其中ISR抢占在多个内核上执行的任务的一部分的实现。如图所示,可以建立抢占任务τ8和τ9在第三和第四内核上的执行的ISR时间窗口612。然而,在第一和第二内核上执行的任务不被抢占。在该示例中,为了提供足够的执行时间至被抢占的任务使得它们可以完成它们的执行,时间窗口602被扩展为负责被分配给ISR时间窗口612的时间。因此,在第一和第二内核上执行的任务将具有它们可以在其中执行的扩展的时间。如果在第一和第二内核上执行的任务是空闲时间请求器(在下面更详细地描述),那么该任务由于来自ISR时间窗口612的额外时间而将能够消耗被扩展的时间,并且在第三和第四内核上执行的任务将能够完成执行。

如上文所描述的,当ISR时间窗口被预先配置成周期性地处理发生的中断时,无论与ISR时间窗口相关联的中断何时发生并通过抢占对应的活跃滑动窗口被服务,滑动窗口都将能够在期望的时间内完成执行。

在某些实施例中,滑动时间窗口可以提供要采用定义了最早开始时间的额外的参数进行配置的选项,其中该最早开始时间在所定义的预先配置的开始时间之前发生并且滑动窗口可以滑动至在最早开始时间和预先配置的开始时间之间但并不早于最早开始的较早的时间点。由于最早开始时间是针对滑动时间窗口的最早开始时间,因此在运行时与时间窗口相关联的任务将在最早开始时间和预先配置的开始时间之间的时间开始执行。在至少一个示例性实现中,最早开始时间的定义可以防止在诸如输入/输出的计算机资源准备好执行任务之前执行任务。而且,最早开始时间的定义可以防止时间窗口滑动至破坏周期性的较早的时间。

图7图解针对若干时间窗口701-704的时间线700,其中时间窗口702-704具有被分别定义的最早开始时间710-712。第一时间窗口701是ISR时间窗口并且最早开始时间对应于预先配置的开始。第二时间窗口702具有对应于ISR时间窗口的最早开始时间的最早开始时间710。在没有中断要服务的情况下,第二时间窗口702可以滑动至至少最早开始时间710以开始执行任何相关联的任务。第三时间窗口703具有最早开始时间711并且第四时间窗口具有最早开始时间712。在至少一个实现中,最早开始时间和针对任务中的每一个的开始时间的差等于或大于被分配给ISR时间窗口的预算以允许在中断发生的情况下用于服务于中断的足够时间。

空闲时间调度传统上是指在时间划分的系统中利用未被调度或未被使用的CPU时间的手段。主要存在由固定时间窗口可用的两个空闲时间源。这些空闲时间源在本文中一般被描述为“时间线空闲时间”和“回收空闲时间”。时间线空闲时间一般是指未被分配的处理器时间。被分配给任务的预算是为每个任务保留的最大执行时间。当在时间线上为所有任务合计总预算的CPU时间时,针对主框架的预算的总和一般小于主框架中总可用时间的100%。未被保留的时间线上的时间被加在一起并表示可用的时间线空闲时间。时间线空闲时间是可确定的并且在执行前在配置时间处被计算。另外,时间线空闲时间是确定性的并且未被分配的CPU时间可在每个主框架的开始处被明确地存放至空闲时间账户,其中空闲时间账户是由各种可用的空闲时间源产生的空闲时间的总和。

与表示未被做预算的时间的时间线空闲时间相比,回收空闲时间表示在任务的执行期间未被使用的被做预算的CPU时间。例如,由于任务执行和完成得早而没有消耗针对相对于它们最坏情况的预算的周期分配的预算,因此将剩余未被使用的被做预算的时间隐含地存放至该空闲时间账户。然而时间线空闲时间在运行时之前是可确定的,而回收空闲时间在运行时被确定。

在某些实施例中,为了消耗由时间线空闲时间和回收空闲时间存放到空闲时间账户中的空闲时间,任务的子集被预先配置成用作空闲时间请求器。空闲时间请求器是被允许消耗空闲时间(从空闲时间账户作出明确提取)的任务。在某些实现中,所有调度的任务可以能够将时间存放在空闲时间账户中,但是被指定为空闲时间请求器的任务的子集能够从空闲时间账户中提取时间。在至少一个示例中,防止空闲时间请求器从空闲时间账户提取空闲时间直到消耗了所分配的预算并且对于该周期来说任务还没有完成执行。如果空闲时间请求器已经消耗了它的被分配的预算而仍未完成执行,那么该空闲时间请求器任务变得有资格被从空闲时间账户授予额外的执行时间。当空闲时间请求器任务变得有资格时,该空闲时间请求器可以从空闲时间账户提取所有可用的空闲时间或其一部分。在至少一个实现中,其中存在多个有资格的空闲时间请求器任务,有资格的空闲时间请求任务被允许基于优先级从空闲时间账户提取空闲时间。而且,当调度器是速率单调调度器时,以更高速率执行的空闲时间请求器任务比以更低速率执行的任务被给予更高的优先级。如果空闲时间请求器任务耗尽空闲时间账户中的可用空闲时间并且后续的任务产生并存放空闲时间至空闲时间账户中,那么该空闲时间请求器任务可以被再次调度并被给予对最近产生的空闲时间的访问。由于速率单调调度器调度准备好运行的最高优先级的线程,因此空闲时间将被最高优先级的空闲时间请求器消耗。

在另外的实施例中,其中调度器实现滑动时间窗口,引入了额外的空闲时间资源。除了传统的空闲时间概念之外,该滑动窗口概念实现两个新的空闲时间概念。它们是窗口时间线空闲时间和窗口回收空闲时间,并且在本文中被统称为“时间窗口空闲时间”。时间窗口空闲时间可被应用至主持时间划分任务或非时间划分任务的调度器。图8是展示时间窗口空闲时间的存放和提取的时间线800的图解。时间窗口空闲时间包括两个级别的空闲时间。第一级别的空闲时间包括跨越多个内核的空闲时间,而在调度器实例内贡献对应于传统时间线空闲时间和回收空闲时间的第二级别的空闲时间。为了清晰起见,这些第二级别的空闲时间组分在本文中被称为“调度器实例时间线空闲时间”,并且“回收空闲时间”在本文中被称为“调度器实例回收空闲时间”。对于第一级别,时间窗口空闲时间被应用至所有内核。在第一级别中同样的空闲时间被存放在跨不同内核的时间窗口空闲时间账户中,因此,同样的空闲时间变得可用于跨多个内核运行的调度器实例中的所有。同样在第一级别,来自跨多个内核的多个调度器实例的同样的空闲时间存放是第一级别的贡献。在某些实现中,由时间窗口产生的空闲时间(可用于接下来的窗口)然后成为该时间窗口的预算的持续时间和在该时间窗口内由多个内核上的调度器实例中的任何使用的最大CPU时间之间的差。对于第二级别,调度器实例空闲时间被存放在调度器实例中用于与该调度器实例相关联的任务的进一步执行。

在某些实施例中,可用的时间窗口空闲时间在不能滑动的窗口完成时被初始化并被增加与每个窗口比它指定的持续时间更早完成的时间量相等的量。空闲时间可由具有晚于当前的时间加上累积的空闲时间的截止期限(例如,周期结束时间)的所有任务使用。

在某些实现中,具有最快速率的空闲时间消耗者的周期可以等于次框架。当最快速率的周期等于次框架时,可用的时间窗口空闲时间可以在每个次框架的开始处被初始化。下文中,关于空闲时间,最快速率的周期被称为次框架。通过滑动时间窗口的上下文执行到时间窗口空闲时间账户的存放和从时间窗口空闲时间账户的提取。随着任务在次框架内被执行,时间窗口空闲时间在空闲时间账户内累积。因此,在次框架中较早的时间窗口存放空闲时间在空闲时间账户内以供在次框架中随后调度的时间窗口利用。ISR时间窗口可以在两种情况下存放空闲时间。第一,当它们指示它们将不再服务于中断时,例如,当它们确定它们正服务的硬件是有缺陷的、或者满足某些其它情况时。第二,ISR窗口在不能早滑动的窗口之前的最后窗口的结束处贡献空闲时间,因为在此情况下ISR的预算会在该时间处终止。如同正常的窗口,ISR窗口可以消耗空闲时间。如果ISR将要服务于中断,那么它将不存放空闲时间,因为ISR时间窗口可以在如上文所述的次框架内的任何时间处执行。

图8图解滑动时间窗口拥有的用以存放至时间线800上的时间窗口空闲时间账户并从其中提取的能力。如图所示,时间线800被划分成三个次框架801、802和803。时间窗口空闲时间账户840和841被示出用于第一次框架801和第二次框架802。第一次框架801被与时间窗口空闲时间账户840相关联。第二次框架802被与时间窗口空闲时间账户841相关联。每个空闲时间账户在相关联的次框架的开始处被初始化使得每个空闲时间账户在相关联的次框架的开始处具有零空闲时间。

在某些实现中,其中用于服务于ISR的周期等价于用于次框架的周期,ISR时间窗口在每个次框架的开始处被调度,并且在此实施例中,ISR时间窗口将继续自始至终地服务于中断,ISR时间窗口并不存放空闲时间或从空闲时间账户提取空闲时间。如图所示,每个次框架801-803具有各自的所调度的ISR时间窗口820-822。每个ISR时间窗口820-822已经划掉双向箭头以指示空闲时间既没有被ISR时间窗口提取也没有被ISR时间窗口存放到时间窗口空闲时间账户中。然而,除了ISR时间窗口外的时间窗口能够存放空闲时间到空闲时间账户中。例如,时间窗口810-814能够存放空闲时间到空闲时间账户840和841中。而且,间隙窗口830能够存放空闲时间到空闲时间账户840和841中。如上文所述,并非所有时间窗口都能够从空闲时间账户840和841提取空闲时间。例如,在次框架801和802中的第一时间窗口810和812不能够从空闲时间账户840和841提取空闲时间,如指向各空闲时间账户840和841的单向箭头所示。由于空闲时间被添加至空闲时间账户840和841的方式,当第一时间窗口810和812被调度用于执行时在空闲时间账户840和841中一般没有空闲时间。而且,间隙窗口830不与任何可执行的线程相关联并因此不能够从空闲时间账户840和841中提取空闲时间。间隙窗口830可以在第一时间窗口(诸如时间窗口810和812)之前被调度。当间隙窗口在次框架中的第一时间窗口之前被调度时,从该间隙窗口至空闲时间账户840和841的空闲时间的存放可以变得可用于由第一时间窗口810和812的提取。因此,随着任务在已经完成的相关联的时间窗口的持续时间之前完成执行,在与滑动时间窗口相关联的任务的执行期间空闲时间变得可用并被存放到空闲时间账户840和841中。

在滑动时间窗口的情况下,调度器实例时间线空闲时间和调度器实例回收空闲时间两者都可以用作空闲时间源。如上文所述,调度器实例时间线空闲时间是调度器实例的时间窗口内未被分配的处理单元时间。当时间窗口被配置时,调度器实例时间线空闲时间可以在执行前被确定并被计算。调度器实例时间线空闲时间要么在时间窗口被配置时要么在运行时间期间可以被添加至调度器实例空闲时间账户。由于调度器实例时间线空闲时间是确定性的,因此未被分配的处理单元时间在适当的时间处可被明确存放至调度器实例空闲时间账户。在至少一个实现中,时间线中的间隙与不具有相关联的调度实例的时间窗口类似并且只要下一时间窗口是可滑动的就将被视为时间窗口空闲时间。在至少一个实现中,时间窗口具有与如果空闲时间可用则能够执行的至少一个空闲时间请求器任务相关联的至少一个相关联的调度器实例。由于在时间线中的间隙并不与可执行任务相关联,因此被分配至该间隙的时间可以被确定性地添加至用于两个内核的空闲时间账户。替换地,被分配至间隙窗口的时间还可以被用作同时被应用至两个内核的时间窗口空闲时间。

在如上文提到的某些实施例中,调度器实例回收空闲时间可以用作另一调度器实例空闲时间源。如上文所讨论的,调度器实例回收空闲时间是当任务完成执行时未被使用的被预算的处理单元执行时间。例如,由于任务相对于最坏情况预算执行和完成得早,因此剩余的未被使用的预算时间被隐含地存放至调度器实例空闲时间账户。与调度器实例时间线空闲时间相比,回收空闲时间的确定是受限制的,因为在运行时间之前不能确定调度器实例回收空闲时间的数量。而且,调度器实例回收空闲时间不是确定性的,因为当任务相对于被分配的预算完成得早时添加空闲时间。如上文第[0058]段所述,来自中断服务例程或ISR时间窗口的调度器实例回收空闲时间可以或可以不被添加至空闲时间账户。由于当中断发生时ISR窗口抢占现存的滑动时间窗口,因此存在中断的多次发生可能发生在当ISR获得预算时和被防止滑动的下一窗口之间的间隔中的任何位置的可能性,并且因此完整的ISR预算可以被用于服务于可能在该间隔内的任何时间处发生的多个中断。因此,只要中断需要在间隔中被服务就可以防止未被使用的ISR预算被用作空闲时间。图9A-9D表示图解在具有滑动时间窗口920-925的系统中各种级别的空闲时间的实现的时间线900的一系列图。图9A图解预先配置的时间线900。如图所示,时间线900图解包括第一次框架901和第二次框架902的时间线900的一部分。在接下来的图9B-9D中,仅仅示出了第一次框架901。而且,如上文所讨论的,由于任务的周期性,时间窗口空闲时间在第一和第二次框架901和902中的每一个的开始处重新开始。如图9所示,存在多个间隙窗口910和911。还存在窗口912。间隙窗口和窗口912之间的差别在于间隙窗口不与调度器实例相关联而窗口912将一个或多个调度器实例与当存在可用的时间窗口空闲时间时能够执行的空闲时间请求器任务相关联。与间隙窗口910和911相关联的时间被与被添加至用于内核1和内核2两者的时间窗口空闲时间账户的时间线空闲时间相关联。另外,存在时间线空闲时间的调度器实例源。例如,在其中没有任务在内核1上执行并且任务在内核2上执行的调度器实例内存在间隙930和931。同样的,在内核2上,在其中没有任务在内核2上执行并且任务在内核1上执行的调度器实例内存在调度器实例间隙932。图9B-9D图解在运行时发生的时间线900中的改变。间隙窗口910、911和913是在运行时间之前可以被确定性地确定的时间窗口空闲时间源。同样地,调度器实例间隙930、931和932是也可以在运行时间之前被确定性地确定的调度器实例时间线空闲时间源。

与图9A相比,图9B图解当任务在没有耗尽所分配的执行时间中的所有的情况下完成执行时出现的调度器实例回收空闲时间的非确定性源。如图所示,完成执行早的任务由所消耗的时间940、941、942、943和944图解。特别地,任务τ1完成执行得早,因为它使用所消耗的时间940。类似地,任务τ2使用所消耗的时间941,τ8使用所消耗的时间942,τ4使用所消耗的时间943,并且τ5使用所消耗的时间944。由于任务τ1、τ2、τ8、τ4、和τ5所有都在不消耗所分配的预算中的所有的情况下完成执行,因此未被消耗的预算的时间变得可用作为调度器实例回收空闲时间950、951、952、953、和954。

图9C图解任务的合并以在调度器实例内消耗调度器实例回收空闲时间。当在调度器实例内合并任务时,调度器实例回收空闲时间中的某些可以变为时间窗口空闲时间。例如,在内核1上在时间窗口921中,在τ1和τ2执行后,在调度器实例内仍剩余一部分时间。类似地,在τ4执行后,在调度器实例内也剩余一部分时间。跨所有内核的重叠的时间剩余的量可以变为运行时时间窗口空闲时间960。同样地,在时间窗口922中,存在由起因于调度器实例回收空闲时间的运行时时间窗口空闲时间961表示的一部分共同的未被消耗的预算。运行时时间窗口空闲时间960和961然后可以被添加至由间隙窗口910提供的时间窗口空闲时间。

图9D图解对时间线900作出的调整以取得所有可用的时间窗口空闲时间。如图所示,时间窗口922能够滑动至较早的时间点,其中时间窗口922滑动等于运行时时间窗口空闲时间960与间隙窗口910的加和的量。因此,与时间窗口922相关联的任务能够执行得较早并且完成执行较早,使得在与时间窗口922相关联的任务完成执行后,现在在次框架901中留有等于运行时时间窗口空闲时间960和961与间隙窗口910的加和的空闲时间。为了消耗剩余的空闲时间,时间窗口912还可以滑动至可达时间窗口922的结束的较早的时间点,其中时间窗口912的持续时间被变为等于在次框架901的结束处的可用空闲时间。在经调整的时间窗口912内,相关联的空闲时间请求器τ3和τ9被允许执行,消耗次框架901中的剩余空闲时间。在替换实现中,时间窗口922中的空闲时间请求器可以消耗剩余的空闲时间。而且,对于在时间窗口空闲时间的合并后剩余的任何调度器实例空闲时间,诸如τ3的空闲时间请求器任务也可以消耗它们各自的调度器实例内的空闲时间。

当使用空闲时间时,在具有利用调度器实例中的空闲时间的任务的滑动时间窗口之前,调度器可以分配预算至时间线中适当大小的间隙。该间隙基本用作被存放到时间窗口空闲时间账户中的时间线空闲时间。另外,最初在配置时,具有利用空闲时间的调度器实例的滑动窗口可以仅先于可能不滑动的窗口被创建,即,该空闲时间将终止时。滑动窗口将利用通过其它调度的时间窗口的执行已累积的可用的时间窗口空闲时间。通过在次框架的结束时首先调度滑动时间窗口,当非滑动窗口开始时开发的空闲时间可以被利用而不是丢失。

图10图解在时间线1000上针对单个次框架的时间窗口持续时间的分派。如图所示并如上文所述,可以针对通过ISR时间窗口1030的中断服务例程的执行分配最初的时间预算。另外,针对用于滑动时间窗口1010、1011和1012的任务的执行分配预算。而且,间隙窗口1020和1021连同窗口1050在时间线1000上被调度。由于间隙窗口没有相关联的调度器实例,因此被分配给间隙窗口的时间被存放到时间窗口空闲时间账户中。当来自间隙窗口的时间被存放到时间窗口空闲时间账户时,它变得可用于由空闲时间请求器在次框架中的间隙窗口之后的时间窗口中使用。例如,被表示为可用的空闲时间1040的从间隙窗口1020存放到空闲时间账户中的时间可用于由空闲时间请求器在时间窗口1010、1011、和1012中使用。此外,从间隙窗口1021存放到空闲时间账户的时间连同可用的空闲时间1040和由于与时间窗口1010相关联的任务的提前完成变为可用的任何空闲时间(其和被表示为可用的空闲时间1041),可用于由空闲时间请求器在时间窗口1011和1012中使用而不可用于时间窗口1010,因为间隙窗口1021在时间窗口1010之后。另外,在与时间窗口1012相关联的任务完成执行后在时间窗口空闲时间账户中留有的任何时间可以由与窗口1050相关联的空闲时间请求器使用。通过使用滑动时间窗口连同时间窗口空闲时间账户,处理实体能够更有效地处理任务。

图11是用于在至少一个处理单元上调度任务的执行的方法1100的流程图。方法1100行进至1102,其中多个任务被识别以在至少一个处理单元上执行。方法1100然后行进至1104,其中该多个任务被与多个调度器实例相关联。方法1100然后行进至1106,其中多个调度器实例被与多个时间窗口相关联,其中该多个调度器实例中的每个调度器实例被与多个时间窗口中的一组时间窗口相关联并在每个时间窗口中被与至少一个处理单元中的一组处理单元相关联。另外,具有开始时间和所分配的持续时间的多个时间窗口中的每个时间窗口以及与所述时间窗口相关联的调度器实例不早于所述开始时间开始执行相关联的任务并且执行不长于所分配的持续时间。在某些实现中,方法1100行进至1108处,其中时间窗口的开始时间滑动至时间上较早的时刻。

示例实施例

示例1包括一种用于调度任务的执行的系统,所述系统包括:被配置成执行多个任务的至少一个处理单元,其中所述多个任务中的每个任务被调度成在多个调度器实例中的一个调度器实例内执行,所述多个调度器实例中的每个调度器实例被与多个时间窗口中的一组时间窗口相关联并在每个时间窗口中被与所述至少一个处理单元中的一组处理单元相关联,所述多个时间窗口中的一个或多个时间窗口具有开始时间和所分配的持续时间并且与所述一个或多个时间窗口相关联的调度器实例不早于所述开始时间开始执行相关联的任务并且执行不长于所分配的持续时间,并且其中所述开始时间可滑动至时间上较早的时刻。

示例2包括示例1的系统,其中当与调度器实例相关联的所述多个任务中的一组任务在没有消耗与所分配的持续时间相关联的所有时间的情况下完成执行时,用于在所述多个时间窗口中的时间窗口的执行的持续时间短于所分配的持续时间。

示例3包括示例1-2中的任何的系统,其中调度至少一个中断服务例程时间窗口,其中所述中断服务例程时间窗口的持续时间表示用于服务于中断的可用时间。

示例4包括示例3的系统,其中,在所述中断服务例程时间窗口之后立即被调度的所述多个时间窗口中的下一时间窗口具有向着所述中断服务例程时间窗口的开始时间滑动等于剩余时间的时间间隔的开始时间,其中所述剩余时间表示未被所述中断服务例程窗口用于服务于中断服务例程的时间。

示例5包括示例4的系统,其中所述剩余时间被用于服务于在下一时间窗口开始执行之后接收的至少一个中断,其中抢占当前正执行的时间窗口小于或等于所述剩余时间的时间段以用于服务于所述至少一个中断。

示例6包括示例5的系统,其中仅抢占所述至少一个处理单元中的处理单元的子集用于服务于所述至少一个中断。

示例7包括示例1-6中的任何的系统,其中累积时间窗口空闲时间,其中所述时间窗口空闲时间被用于与所述多个时间窗口中的至少一个时间窗口相关联的至少一个空闲时间请求器的执行。

示例8包括示例7的系统,其中针对调度器实例监控调度器实例时间线空闲时间和调度器实例回收空闲时间,其中跨所述至少一个处理单元共有的调度器实例回收空闲时间和调度器实例时间线空闲时间贡献所述时间窗口空闲时间。

示例9包括示例8的系统,其中当与调度器实例相关联的任务先于所述调度器实例的所分配的持续时间完成执行时出现所述调度器实例回收空闲时间。

示例10包括示例7-9中的任何的系统,其中当所述多个时间窗口中的固定时间窗口开始执行时刷新所述时间窗口空闲时间账户,其中所述固定时间窗口具有不能滑动至时间上较早的时刻的固定的开始时间。

示例11包括示例1-10中的任何的系统,还包括在所述多个时间窗口中的第一时间窗口的结束之后调度所述多个时间窗口中的第二时间窗口,其中所述第二时间窗口被与具有至少一个空闲时间请求器的至少一个调度器实例相关联。

示例12包括一种用于由至少一个处理单元调度任务的执行的方法,所述方法包括:识别多个任务以在所述至少一个处理单元上执行;关联要由多个调度器实例调度的多个任务;将所述多个调度器实例与多个时间窗口相关联,其中所述多个调度器实例中的每个调度器实例被与所述多个时间窗口中的一组时间窗口相关联并在每个时间窗口中被与所述至少一个处理单元中的一组处理单元相关联,所述多个时间窗口中的一个或多个时间窗口具有开始时间和所分配的持续时间并且与所述一个或多个时间窗口相关联的调度器实例不早于所述开始时间开始执行相关联的任务并且执行不长于所分配的持续时间,并且滑动时间窗口的开始时间至时间上较早的时刻。

示例13包括示例12的方法,其中当与调度器实例相关联的所述多个任务中的一组任务在没有消耗与所分配的持续时间相关联的所有时间的情况下完成执行时,用于在所述多个时间窗口中的时间窗口的执行的持续时间短于所分配的持续时间。

示例14包括示例13的方法,还包括调度中断服务例程时间窗口,其中所述中断服务例程时间窗口的持续时间表示用于周期性地服务于中断的可用时间。

示例15包括示例14的方法,还包括将在所述中断服务例程时间窗口之后立即被调度的所述多个时间窗口中的下一时间窗口的开始时间向着所述中断服务例程时间窗口的开始时间滑动等于剩余时间的时间间隔,其中所述剩余时间表示未被所述中断服务例程窗口用于服务于中断服务例程的时间,其中所述剩余时间被用于服务于在下一时间窗口开始执行之后接收的至少一个中断,其中抢占当前正执行的时间窗口小于或等于所述剩余时间的时间段以用于服务于所述至少一个中断。

示例16包括示例13-15中的任何的方法,还包括累积时间窗口空闲时间,其中所述时间窗口空闲时间被用于在次框架中被调度用于执行的至少一个时间窗口中的至少一个空闲时间请求器线程的执行。

示例17包括示例16的方法,还包括当所述多个时间窗口中的固定时间窗口开始执行时初始化时间窗口空闲时间账户,其中所述固定时间窗口具有不能滑动至时间上的较早时刻的固定的开始时间。

示例18包括示例16-17中的任何的系统,其中针对调度器实例监控调度器实例时间线空闲时间和调度器实例回收空闲时间,其中跨所述至少一个处理单元共有的调度器实例回收空闲时间和调度器实例时间线空闲时间贡献所述时间窗口空闲时间。

示例19包括一种用于调度任务的执行的系统,所述系统包括:被配置成执行多个任务的至少一个处理单元,其中所述多个任务中的每个任务被调度成在多个调度器实例中的一个调度器实例内执行,所述多个调度器实例中的每个调度器实例被与多个时间窗口中的一组时间窗口相关联并且在每个时间窗口中被与所述至少一个处理单元中的一组处理单元相关联,所述多个时间窗口中的一个或多个时间窗口具有开始时间和所分配的持续时间并且与所述一个或多个时间窗口相关联的调度器实例不早于所述开始时间开始执行相关联的任务并且执行不长于所分配的持续时间,其中所述开始时间可滑动至时间上较早的时刻;其中累积时间窗口空闲时间,其中所述时间窗口空闲时间被用于与至少一个时间窗口相关联的至少一个空闲时间请求器的执行;并且其中调度至少一个中断服务例程时间窗口,其中所述中断服务例程时间窗口表示用于服务于中断的可用时间。

示例20包括示例19的系统,其中当与调度器实例相关联的所述多个任务中的一组任务在没有消耗与所分配的持续时间相关联的所有时间的情况下完成执行时,用于在所述多个时间窗口中的时间窗口的执行的持续时间短于所分配的持续时间。

虽然本文中图解并描述了具体的实施例,但本领域技术人员将领会的是,目的在于实现同一目的的任何布置可以代替所示的具体实施例。因此,明白地意图为本发明仅被权利要求和其等价物所限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1