允许确定性的实时错误恢复的任务时间分配方法
【技术领域】
[0001] 本发明涉及实时多任务系统,所述系统包括通过相同时间基准计时的一组时间独 立的任务,并且其执行时间约束是已知的。本发明特别涉及在它们的实施中要求高性能的 实时系统,以及对分配给系统的每个任务的执行硬件资源的使用要求高保证程度的关键系 统。
[0002] 本发明特别适用于命令和控制系统,例如那些在(汽车、轨道、海洋和空中)运输、 工业自动化、能源领域使用的系统,以及用于其资源的受控分配非常重要的其他系统,如在 通信网络中。
【背景技术】
[0003] 在关键的实时系统中,任务通常会根据静态调度方法执行,以便执行时间配额的 静态时间分配以用于使用例如处理器的执行资源。就资源的使用一一特别是处理器的使用 来说,这使得在任务自身之间的时间独立性得以表现出来。这种简单的和被广泛接受的愿 景(vision)没有考虑任务之间通信的问题,其特别地在文献[3]、[4]、[7]、[8]中被处理。 然而,这一愿景带来包括超高速缓存的现代处理器上的实施的问题。事实上,这些超高速 缓存的内容取决于任务和被存取数据的整个执行历程。现在,这些存储器的状态影响交叉 任务的处理操作的执行时间。这些条件下,很难保证处理操作的执行时间的绝对上部边界 (参考文献[5]-WCET-最坏情况执行时间_)。因而计算这些上部边界的正式方法导致与 实验结果相比的这些上部边界的可能明显的过高估计。
[0004] 此外,在某些实时多任务系统中,必需保证任务不互相干扰,即在被分配给另一任 务的时间内,任务不能被执行或它的执行不能结束。在任务之间的追求这样的不干扰在一 定的领域导致在分配给处理操作的每个时间窗口的开始处去激活(deactivating)超高速 缓存或清空它们的全部内容,以便具有独立于前面的处理操作的执行的状态(空)。然而, 该清空超高速缓存的操作显著地降低了多任务系统的性能。此外,在一些情况下处理操作 可以被分成几个不同时间窗口,这要求在处理操作的执行期间多次清空超高速缓存。
[0005] 出于这些不同的原因,实时系统的设计者被迫将这样的系统设计得过分大。从 实用的角度来看,为了使得该方法带来较少的性能下降,处理器的时间分配基于比"理论 的"WCET短的执行时间要求来执行,导致接受一定的错误率。此方法的主要缺点在于没有 表征处理操作的执行时间的分配定律的任何模型,真正使得错误率就分配的时间配额而言 可被评估。特别地,当可接受的误码率必须非常低并且因此产生于非常少的事件的时候,采 用这种基于极低实验抽样的该方法来展示这些系统具有确定性的行为是不可能的。因此, 为了提高这类系统的鲁棒性,一种公知的方法涉及在执行时间配额上这样的错误实施错 误-恢复措施,以将剩余错误的情况降低到极低数值。
[0006] 需要注意,为了克服尺寸过大的明显问题,它通常通过将未使用的时间(在平均 执行时间和分配的时间配额之间的差异)动态地再分配给作为非优先级后台任务的非实 时和非关键任务(参考文献[2]、[7]、[8])。然而,该解决方案没满足相同目标并且对关键 的实时任务没有任何贡献。
[0007] 同样地,对于关键实时任务的执行期间出现的其他类型的易受影响错误,具有这 样的确定性的实时错误处置机制是有益的,同时不会对其它正被执行的任务有任何干扰。 这实现了错误恢复,而无需在任务执行流中断开并且用充分的时间约束来保证足够动作的 实施。这些问题在非同步系统中具有已知解决方案,即无任何执行时间约束。然而,这些解 决方案不提供任何实时性能保证,它们不适合于寻求处理操作之间的无干扰的关键任务的 环境,当然包括在运行故障的情形下。
[0008] 因而,期望能够产生这样的应用,该应用包括通过相同时间基准计时的一组任务, 同时保证在其上执行任务的多任务系统的高效和可靠使用。可以进一步期望分配足够的时 间给错误处置,以便在确定的时间完成,并与关键的实时系统的约束兼容,而没有与其它任 务的任何干扰风险。还期望使用未使用的分配时间进行不同的优化,例如温度调节、能耗最 小化,或关键任务的分布式或共享的执行。进一步期望能够保证通过多任务系统执行的应 用的任务处理的正确顺序,并能表明该排序是正确的。
【发明内容】
[0009] -些实施例涉及一种用于在多任务计算机上执行实时应用的任务的方法,每个任 务包括至少一个处理操作,该方法包括以下步骤:定义时间窗口,每个时间窗口与所述应 用的任务的处理操作的执行相关,向具有时间窗口的每个处理操作分配时间配额和时间余 裕,通过时间配额和时间余裕分配给处理操作的时间比与所述处理操作相关的时间窗口的 持续时间短,在通过多任务系统执行所述应用期间,在与其相关的时间窗口的开始激活每 个处理操作,在处理操作之一的时间配额期满时,如果所述处理操作的执行还没有被完成, 则激活错误模式,如果错误模式对于所述处理操作之一是激活的,则在通过时间配额和时 间余裕分配给处理操作的剩余时间内,执行处于错误模式的处理操作的错误处置过程。 [0010] 根据一个实施例,该方法包括下列步骤:如果错误模式对于所述处理操作之一是 激活的,继续执行在分配给处理操作的时间配额期满时其执行没有完成的处理操作,同时 监控分配给处理操作的时间余裕的期满,并且在分配给处理操作的时间余裕期满时,如果 处理操作的执行还没有被完成,则结束所述处理操作的执行并执行时间配额溢出错误处置 操作。
[0011] 根据一个实施例,该方法包括下列步骤:将与时间窗口相关的处理操作分段为在 若干时间窗口上扩展,用于处理该应用的其他任务,以使得每个时间窗口排他地与处理操 作或处理操作片段相关,向每个处理操作片段分配时间配额,使得分段的处理操作的所有 片段的时间配额的总和等于被分段的处理操作的时间配额,与分段的处理操作相关的时间 余裕与分段的处理操作的最后片段相关联,将每个处理操作片段关联到表明它是否为被分 段的处理操作的最后片段的状态变量,如果与处理操作片段相关的状态变量表明该处理操 作片段不是被分段的处理操作的最后片段,则在该处理操作片段的配额期满时错误模式不 被激活。
[0012] 根据一个实施例,其中与时间配额相关的每个处理操作的余裕是通过将乘法因子 施加到处理操作的时间配额而计算得出,所述乘法因子对与时间配额相关的所有处理操作 是相同的。
[0013] 根据一个实施例,其中确定乘法因子(Kx)以便应用的任务可以根据处理操作的 时间要求、根据与处理操作相关的时间窗口、以及根据对计算机(RTS)的特征被调度。
[0014] 根据一个实施例,处理操作由通过第一时间基准计时的处理器执行,与处理操作 相关的时间窗口以与第一时间基准相比不规则的第二时间基准定义,第二时间基准中的时 间单位具有第一时间基准中的最小值,乘法因子根据该最小值被定义。
[0015] 根据一个实施例,每个处理操作与表明它是否执行涉及执行该处理操作的处理器 的输入/输出的状态变量相关,并且如果处理操作之一与表明处理操作不执行任何输入/ 输出的状态变量相关,则前面处理操作的执行一结束,处理操作的执行就被启动而无需等 待处理操作的时间窗口的开始。
[0016] -些实施例还涉及一种包括执行实时应用的多任务计算机的实时多任务系统,所 述实时应用包括若干任务,每个任务包括至少一个处理操作,所述系统被配置为:存储时间 窗口,每个时间窗口都与应用的任务的一组处理操作的执行相关,为具有时间窗口的每个 处理操作存储时间配额和时间余裕,通过时间配额和时间余裕分配给处理操作的时间比与 所述处理操作相关的时间窗口的持续时间短,执行应用的处理操作,并且在处理操作之一 的时间配额期满时,如果所述处理操作的执行还没有被完成,则激活错误模式,如果错误模 式对于所述处理操作之一是激活的,则在通过时间配额和时间余裕分配给处理操作的剩余 时间内,执行处于错误模式的处理操作的错误处置过程。
[0017] 根据一个实施例,所述系统被配置为:如果错误模式对于所述处理操作之一是激 活的,继续执行在分配给处理操作的时间配额期满时其执行没有完成的处理操作,同时监 控被分配给处理操作的时间余裕的期满,在分配给处理操作的时间余裕的期满时,如果处 理操作的执行还没有被完成,则结束所述处理操作的执行并执行时间配额溢出错误处置操 作。
[0018] 根据一个实施例,所述系统被配置为:存储与时间窗口相关的一些处理操作被进 行分段的事实,为每个处理操作片段存储时间窗口和时间配额以用于所述处理操作片段的 执行,为每个分段的处理操作的最后片段存储作为相关的时间余裕,所述时间余裕与分段 的处理操作相关,为每个处理操作片段存储状态变量,所述状态变量表明该片段是否为被 分段的处理操作的最后片段,以及在应用的执行期间,如果与处理操作片段相关的状态变 量表明该片段不是被分段的处理操作的最后片段,则在处理操作片段的配额期满时不激活 错误模式。
[0019] 根据一个实施例,所述系统被配置为通过将乘法因子施加到处理操作的时间配额 来确定与时间配额相关的每个处理操作的余裕,所述乘法因子对于与时间配额相关的所有 处理操作是相同的。
[0020] 根据一个实施例,所述系统包括通过第一时间基准计时的处理器以执行处理操 作,并且接收与第一时间基准相比不规则的第二时间基准,该系统被配置为以第二时间基 准确定与处理操作相关的时间窗口,第二时间基准中的时间