操作系统论文导读(十四):Towards A More Practical Model for Mixed Criticality Systems;四种MCS进入高关键模式的模型

目录

一、降低LO任务的优先级

二、减少 LO-crit 任务的执行时间预算

三、增加 LO-crit 任务的周期

四、预算削减计划的能力继承

4.1 优先级拓展

4.2 容量共享

4.3 重写历史


混合关键系统(Mixed Criticality System, MCS)是由执行不同关键等级任务的各种硬件和软件组件组成的系统,它需要在满足安全认证要求的同时,高效地利用有限的计算资源。关键等级是指任务对于系统输出的影响程度,例如,安全关键(Safety-critical)和任务关键(Mission-critical)任务或低关键(Low-critical, LO-crit)和高关键(High-critical, HI-crit)任务。

这段文字还提到了为了满足在高临界模式(HI-crit Mode)下允许一些LO-crit任务的进展,并且允许系统回到低临界模式(LO-crit Mode),LO-crit任务不能被放弃。而是必须保持可运行,但是不能影响HI-crit任务。对于一个固定优先级(Fixed Priority)的系统,这意味着以下三种方法之一:(i) 改变这些任务的优先级,使其低于任何HI-crit任务的最低优先级;
(ii) 减少这些任务的执行时间需求,使得在HI-crit模式下,HI和LO临界性任务都能成功地执行;
(iii) 延长LO-crit任务的周期,以达到同样的效果。

后续将集中于使用固定优先级调度的单处理器(Single Processor)系统,并考虑三种互补(Complimentary)的方案。在第一种方案中,LO-crit任务有其优先级降低;在第二种方案中,它们有其执行时间需求减少;在第三种方案中,它们有其周期延长。

一、降低LO任务的优先级

尽管固定优先级调度优先级是“固定的”,但为了满足上述要求,必须能够动态更改 LO-crit 任务的优先级。 此类任务将有两个优先级,Pi(LO) 和 Pi(HI); 约束条件为 Pi(HI) ≤ Pi(LO) 且 Pi(HI) <  (Pj),其中 HI 是所有 HI-crit 任务的集合。 LO-crit 任务的优先级的相对顺序在两种关键模式下将相同。

也就是说这种基于固定优先级调度的方法,它可以在系统发生临界性模式切换时,动态地改变低临界性任务的优先级,使其低于所有高临界性任务的优先级,从而避免影响高临界性任务的执行。这种方法利用了可调度性分析的一个限制,即假设所有低临界性任务都能够完成,因此只需要在低临界性任务被暂停时修改它们的优先级。

从高临界性模式回到低临界性模式,则使用一种简单而容易验证的协议,即在系统空闲时进行模式切换,这样就不会受到之前高临界性模式的行为影响。

另外,对所有任务的执行时间进行监控是必要的,对于低临界性任务,应该阻止它们超过它们的C(LO)预算;对于高临界性任务,没有必要限制它们的执行时间,但是如果任何高临界性任务在执行C(LO)时间后没有完成,则必须进行临界性模式切换。

对上述方案的一个可能的问题是,如果 LO 关键任务可以更改其优先级,则可以在安全漏洞中利用此功能来破坏对 HI 关键任务的保证。 该方法的另一个问题是不能保证模式更改后执行的短期限 LO-crit 作业。

二、减少 LO-crit 任务的执行时间预算

介绍一种混合临界性模型,它明确地保留了一些低临界性任务在高临界性模式下的执行。它首先假设有一个特定的低临界性任务的服务水平(Service Level)必须被保证,即有一个可调度性测试(Schedulability Test)可以接受或拒绝一个给定的任务集。然后,它使用敏感度分析(Sensitivity Analysis)来探索在保持可调度性的同时,可能提供的服务水平。

修改后的系统模型如下。 每个任务 τi 由参数定义:Ti、Di、Li、Ci(LO) 和 Ci(HI)。 对于 HI-crit 任务 Ci(HI) ≥ Ci(LO),对于 LO-crit 任务 Ci(LO) ≥ Ci(HI)。 注意,对于某些 LO-crit 任务,Ci(HI) 可能为零,这意味着一旦系统处于 HI-crit 模式,此类任务的作业就不会开始执行。 静态优先级 (Pi) 根据 Audsley 的最佳优先级分配算法 分配给任务。 系统模型现在由以下行为定义:
(1) 系统开始于低临界性模式,并且只要所有高临界性任务在它们的低临界性计算时间(C(LO))内执行,就保持在该模式;
(2) 如果任何一个高临界性任务在执行了它的C(LO)值后没有完成,那么系统立即切换到高临界性模式;
(3) 任务的优先级从不改变;
(4) 没有一个低临界性任务被允许在低临界性模式下执行超过它的C(LO)参数,在高临界性模式下执行超过它的C(HI)参数;任何试图这样做的行为将导致任务被暂停,直到它的下一个释放(至少在上一个释放后的Tk时间);
(5) 高临界性任务的执行时间没有限制;
(6) 如果系统处于高临界性模式并且有一个空闲时刻(Idle Tick),那么系统可以回到低临界性模式,并且所有低临界性任务可以恢复它们原始的C(LO)值。

注意,一个在低临界性模式下释放的低临界性任务,在它的截止时间之前如果在它的执行过程中发生了模式切换并且它的预算被减少,则不能保证得到C(LO)的处理时间。但是,它可以保证得到C(HI)的处理时间。

但仍旧有几个问题值得考虑:

• 有多少 LO-crit 任务可以达到其全部可调度空间(即 C(HI) = C(LO)),有多少任务的 C(HI) = 0?
• 当 α < 1 时,LO 临界任务的所有 C(LO) 必须减少多少(即 C(HI) = α · C(LO))才能得到可调度系统?
• 部分或全部LO-crit 任务是否可以采用占用更少资源的替代版本?

如何从高临界性模式回到低临界性模式?可以使用一个低优先级的“后台”(Background)任务来实现模式切换;然而,现在这个任务唯一的动作是将每个低临界性任务的执行时间预算恢复到它们较大的C(LO)值。这应该以原子方式(Atomically)完成,以避免任何潜在的竞争条件。

三、增加 LO-crit 任务的周期

弹性调度模型已应用于EDF 调度混合关键性系统,以允许 LOcrit 任务在模式更改后延长其周期。 我们可以通过允许 LO-crit 任务具有两个周期值:Ti(LO) 和 Ti(HI),其中 Ti(LO) ≤ Ti(HI),将这个想法应用于固定优先级系统。 模式更改后,任务可以再次发布,但周期会延长(也许预算也会减少),从而保证高临界性任务在截止时间之前完成。

四、预算削减计划的能力继承

之前介绍了三种不同的方案,用于在模式更改为 HI-crit 后处理 LO-crit 任务。 关键模式更改后 LO-crit 任务的可调度性受到严重破坏。在 HI-crit 模式下可能存在大量闲置时间容量,它们并没有合理地利用这部分容量。 HIcrit 作业的执行时间可能会超过 C(LO),但很可能会在用完其全部 C(HI) 预算之前完成,也就是说大部分 (C(HI) − C(LO)) 可用于 LO任务工作。

为了提高第二个方案的有效性,可以采用两种策略: 1) 一起使用这些方案 – 一旦低关键性作业用完其 C(HI) 预算,其优先级就会降低到其背景级别(也就是一个非常低的优先级) (Pi(HI)),在该级别中, 可以继续执行。 2) HI-crit 作业的闲置容量直接分配给LO-crit 作业。

第二种策略可以利用先前发布的技术,例如扩展优先级交换、容量共享和历史重写,这些技术是为组合硬实时和软实时固定优先级任务集而开发的。 在混合关键性系统的背景下,这些技术将按如下方式工作(假设系统处于 HI-crit 模式):

• 所有HI-crit 任务的预算等于其最大保证执行时间C(HI)。
• 在运行时,监控每个HI-crit 作业的实际执行时间;
• 当释放时间为 s 且绝对期限为 d(其中 d = s + D)的作业完成时,记录其实际执行时间 (e) 并计算其增益时间 (g) (g = C(HI)− e) ; g 被假定为非负数。
• 增益时间可分配给优先级较低的作业。
• 增益时间必须由d(其到期时间)使用。

4.1 优先级拓展

上面提到的三种技术以不同的方式分配增益时间。 对于扩展优先级交换:

• 增益时间分配给准备执行的下一个最高优先级任务的预算。 

4.2 容量共享

对于容量共享:

  • 一个正在执行的低临界性任务首先使用它自己的预算(Budget)C(HI)。
  • 当这个预算用完后,它可以从任何可用的高优先级增益时间中“拉下”额外的容量。增益时间是指高临界性任务在执行完后,剩余的未使用的执行时间,它可以被分配给其他任务。
  • 这个低临界性任务被称为插入(Plugged)到它所拉下的高临界性任务的预算中。这个高临界性任务被称为主机(Host)任务。
  • 这个插入会在以下情况下被断开(Broken):(1) 增益时间的截止时间(Expiry Time)到达;(2) 增益时间的容量(Capacity)耗尽;(3) 低临界性任务完成。

如果有多个高优先级增益时间可用,那么低临界性任务可以选择任何一个,并且甚至可以利用多个,只是一次只能利用一个。有用的启发式方法(Heuristic)是:优先使用最大的增益时间,或者优先使用最早的截止时间。

4.3 重写历史

为了重写历史,对预算进行了回顾性重新分配。 容量共享的问题是增益时间必须在其到期时间之前使用,否则就会丢失。 而历史重写则不然,它具有以下特点:

  • 在一个高临界性任务的截止时间(Deadline)d到达时,记录它的增益时间g。增益时间是指高临界性任务在执行完后,剩余的未使用的执行时间,它可以被分配给其他任务。
  • 选择一个在d之前执行过e时间的低优先级任务,并将它的预算(Budget)增加max (g,e − g),同时将g减少这个数值。预算是指分配给任务的执行时间上限。
  • 将剩余的增益时间进一步分配给更低优先级的任务。

实际上,一个从它自己的预算中执行的任务被认为是从一个高优先级任务的增益时间中执行的,因此它自己的预算仍然完整,并且可以用来继续执行该任务。

容量共享技术和历史重写技术都是用于分配高临界性任务未使用完的容量(增益时间)给低临界性任务的技术,它们都可以提高系统的性能和效率。但是,它们也有一些不同的特点和优缺点,主要有以下几点:

  • 容量共享技术是实时(Real-Time)的,它在运行时(Run-Time)动态地分配增益时间,而历史重写技术是非实时(Non-Real-Time)的,它在截止时间(Deadline)到达时回溯地分配增益时间。这意味着容量共享技术可以更快地响应低临界性任务的需求,而历史重写技术可以更灵活地利用增益时间。
  • 容量共享技术要求增益时间必须在其截止时间之前使用,否则就会失效(Expire),而历史重写技术没有这个限制,它可以将增益时间延续(Extend)到后续的任务。这意味着容量共享技术可能会导致一些增益时间的浪费,而历史重写技术可以更充分地利用增益时间。
  • 容量共享技术需要一个正在执行的低临界性任务从高优先级的增益时间中“拉下”额外的容量,而历史重写技术需要一个已经执行过的低优先级任务从高优先级的增益时间中“借用”额外的容量。这意味着容量共享技术需要一个低临界性任务在高临界性模式切换后就已经被释放(Release),或者被其他高优先级任务抢占(Preempt),而历史重写技术不需要这个条件。
  • 容量共享技术需要考虑如何选择和利用多个可用的高优先级增益时间,而历史重写技术只需要考虑如何分配一个高优先级增益时间。这意味着容量共享技术需要更复杂的启发式方法(Heuristic)和实现效率(Implementation Efficiency),而历史重写技术相对简单。

猜你喜欢

转载自blog.csdn.net/qq_52505851/article/details/132301369