Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个关键性规范的零星任务的可调度性分析
目录
一、论文核心思想
二、基本定义
2.1 关键性指标
2.2 任务及相关参数定义
2.3 几个基础定义
三、可调度性分析
3.1 调度算法分类
3.2 DP算法分析
3.3 FJP与FTP算法分析(分析相对于DP的劣势)
3.4 FTP 和 EDF对比
四、混合优先调度
4.1 算法详情
4.2 算法评价
五、结论
一、论文核心思想
本文主要论证了在混合关键系统中各种调度协议不能像在其他没有关键性参数的RTOS系统中存在简单的相互支配(如EDF算法支配所有的FTP算法),并基于Audsley算法与Vestal算法提出了一种新的算法改良,在具有多重关键性要求的系统中不同的任务需要以不同的置信度确保在截止日期前完成,本文利用 WCET 的这种多重规范来获得更好的处理器利用率并证明了这种算法在混合关键系统的任务调度中支配EDF算法与Vestal算法,但依旧不能支配FJP算法(后续会做解释)
二、基本定义
2.1 关键性指标
从A到E,关键级别依次降低,A失败的结果是灾难性的,B是非常危险,以此类推。
尽管 RTCA DO-178B 标准仅指定了五个关键级别 A-E,但没有特别理由要求系统最多具有五个级别。 因此,文章在这里考虑一个系统模型,其中有任意多个不同的关键级别,用正整数表示,整数越大表示关键程度越高。 (因此,RTCA DO-178B 关键级别 A 将映射到 5,级别 E 映射到 1。)
多关键性零星任务模型:假设每个任务都有一对应用于不同关键水平的WCET估计量,系统可以根据实际执行行为在运行时切换不同的关键模式。
2.2 任务及相关参数定义
考虑多关键性零星任务系统的抢占式单处理器调度。 这样一个多关键性零星任务系统 τ 由 n 个多关键性零星任务 τ1,...,τn 组成。 每个任务 τi 由以下参数表征
WCET 函数 Ci : N+ → R+,指定不同关键级别的 WCET:关键级别l的 WCET 等于 Ci(l)。 在不失一般性的情况下,我们假设 , Ci(l) ≤ Ci(l+1) 。
相对期限参数 Di。
最小到达间隔或周期参数 Ti。
关键水平 Li,Li ∈ N+。
2.3 几个基础定义
定义 1(可行性和可调度性)如果算法 A 始终满足 τ 的所有截止日期并达到所需的保证水平,则称多临界零星任务系统 τ 可由调度算法 A 调度。 如果存在某种调度算法 A 使得 τ 可由 A 调度,则称 τ 是可行的。
定义 2(同步到达序列 (SAS))零星任务 τi 的作业同步到达序列包括 τi 的第一个作业到达时刻零,后续作业恰好到达 Ti 时间单位。 任务集合的同步到达序列由任务集合中每个单独任务的同步到达序列的并集组成。
定义二解释:个人理解实际上就是到达时间为n*Ti,其中n为整数
定义 3 对于任意多临界零星任务系统 τ ,我们定义对应的传统零星任务系统为
在这里,每个传统的零星任务系统都由 3 元组(WCET,相对截止日期,期间)表示。
定理 1 多临界性零星任务系统 τ 是可行的当且仅当相应的传统零星任务系统是可行的。
证明:考虑一种调度算法,该算法能够在不同作业之间实施时间隔离,允许每个作业仅执行预定的时间量。 可以使这样的算法在最多 Ci(Li) 时间单位内执行 τi 的每个作业,从而基本上忽略 WCET 的多个规范,并将每个多临界零星任务视为传统零星任务。
三、可调度性分析
从可行性分析的角度来看,多临界零星任务系统与传统的零星任务系统是相同的。 尽管如此,关于多临界性零星任务系统的调度还有许多有趣的未解决问题; 当限制可能使用的调度算法种类时,多关键性零星任务系统与传统零星任务系统有很大不同。
3.1 调度算法分类
根据对作业分配优先级的方式的限制,将分为三类用于调度零星任务系统的算法:
1. 固定任务优先级 (FTP) 调度:给定任务生成的所有作业都分配相同的优先级。
2. 固定作业优先级(FJP)调度:同一任务的不同作业可能有不同的优先级。 然而,每个作业的优先级在其到达时间和完成时间之间可能不会改变。
3. 动态优先级(DP)调度:作业的优先级可能会在发布时间和完成时间之间发生变化。
从定义上可以看出,FJP调度是FTP调度的推广,DP调度是FJP调度的推广。 在传统(即非多关键性)任务系统的单处理器调度中,FJP 调度算法最早期限优先(EDF)被认为是最优的,因为 EDF 总是满足所有可行的传统零星任务系统的所有期限;而DP 调度算法(通常会产生更大的运行时实现开销)并不常用于调度此类任务系统。
在这项研究中,我们考虑更通用的 FJP 和 DP 算法。
3.2 DP算法分析
由于 DP 算法类包括所有调度算法,因此根据定义,所有可行的多临界零星任务系统都可以通过某种 DP 调度算法进行调度。 因此,当且仅当对应的传统零星任务系统(见定义 3)可行时,多临界零星任务系统 τ 是 DP 可调度的。
3.3 FJP与FTP算法分析(分析相对于DP的劣势)
一些调度程序能够在运行时强制执行不同作业之间的时间隔离。 也就是说,每个作业都分配了最大执行量,并且调度程序能够确保没有作业超过分配给它的执行量。 在这样的系统中,没有作业依赖于另一个作业的调度,因此作业的完成不受其他作业执行时间估计准确性的影响。
现在,任何在作业之间实现时间隔离的算法都可以在 DP 优先级驱动调度算法的框架内实现,只需在适当的时刻简单地提高和降低作业的优先级。 然而,这不能在 FJP 和 FTP 调度算法中完成:FJP 和 FTP 算法本身不能保证作业之间的时间隔离
在传统的零星任务系统中,所有可行的任务系统也可以使用某种 FJP 调度算法(特别是 EDF)进行调度。以下示例说明多关键性零星任务系统并非如此:
示例 1 考虑由两个任务 τ1 和 τ2 组成的任务系统,具有以下参数:
通过考虑这两种可能性——(i) τ1 具有更高的优先级,以及 (ii) τ2 具有更高的优先级——可以验证该系统不是 FTP 可调度的。 它也不是 FJP 可调度的,如下面的论证所示。 让我们在调度 SAS 时考虑每个任务的第一个作业,并考虑两种可能性:τ1 的第一个作业比 τ2 的第一个作业具有更高的优先级,反之亦然。
1. 当 τ1 的第一个作业比 τ2 的第一个作业具有更高的优先级时:在这种情况下,τ2 的第一个作业不能保证在保证级别 1 的截止日期前完成:因为 C1(2) = 5,τ1 的第一个作业将在间隔 [ 0, 5), 从而允许 τ2 的作业完全不执行。
2. 当 τ2 的第一个作业比 τ1 的第一个作业具有更高的优先级时:在这种情况下,τ1 的第一个作业不能保证在保证级别 2 的截止日期前完成:因为 C2(2) = 5,所以 τ2 的第一个作业将在区间 [0 , 5), 并在截止日期前只为 τ1 的工作留下一个执行单元。
然而,由于 C1(L1)/T1 + C2(L2)/T2 =5/6+0.5/5 < 1,根据定理 1 的结果,该系统是可行的,因此是 DP 可调度的。
C1/T1 + C2/T2+.... < 1是DP算法中计算是否可调度的公式
也就是存在可使用 DP 调度算法进行调度的多临界零星任务系统,这些系统不能使用任何 FTP 或 FJP 调度算法进行调度。
3.4 FTP 和 EDF对比
对于传统的零星任务系统,从可调度性的角度可知EDF主导FTP调度——所有可通过FTP调度调度的任务系统也可通过EDF调度,而有些可通过EDF调度的任务系统不存在FTP调度。 (这是 EDF 最优性的直接结果,事实上没有 FTP 算法在能够调度所有可行的零星任务系统的意义上是最优的。)但是,这种优势不会延续到多关键零星任务系统,如以下简单示例所示。
示例 2 考虑由两个任务 τ1 和 τ2 组成的任务系统,具有以下参数:
τ1 是一个更高关键性的任务。 通过为 τ1 分配比 τ2 更高的优先级,可以验证这两个任务都在所需的关键级别上满足了它们的截止日期; 因此,该系统是 FTP 可调度的。
现在考虑 EDF,让我们关注 SAS 中 τ1 的第二项工作。 回想一下,多关键性任务模型的语义要求用于确保任务满足其截止日期的所有 WCET 值与任务所需的保证级别相同。 比 τ1 的第二个工作具有更高优先级的工作是 τ2 的第一个工作,并且通过传递性,是 τ1 的第一个工作。 WCET 的 C1(2) 和 C2(2) 必须用于确定 τ1 是否满足其截止日期。 但是在使用这些 WCET 估计在 SAS 上模拟 EDF 时,很容易看出 τ1 的第二个作业在时间点 8 错过了它的截止日期(因为 τ1 的第一个作业在 [0, 2] 上执行,而 τ2 的作业在 [2, 7] 上执行) ,从而只留下一个执行单元,而不是 τ1 在截止日期前的第二个作业所需的两个单元)。
其实我觉得这个例子存在一定的问题,如果要细究的话,FTP调度中的第一轮t在0-2时任务1执行t在2-4时任务2执行,t在4-6时任务1抢占执行,则任务二依旧可能会错过D2(因为为文章给出的EDF调度中任务2的最坏执行时间是按5计算的)。只是任务2的关键性低于任务1,但系统不一定是FTP可调度的。
定理3 FTP和EDF在多临界零星任务系统的调度中是不可比拟的调度策略。
四、混合优先调度
4.1 算法详情
正如上面定理 1 中所讨论的,Vestal 算法(产生最佳 FTP 优先级分配)和 EDF 在涉及多临界零星任务系统时是无法比拟的。 我们在本节中的目标是获得一种调度算法,该算法泛化了 EDF 和 Vestal 算法,并且在多关键性零星任务系统的调度中证明优于两者。 它结合了 FTP 调度和 EDF 的特点。 为了使用这种混合调度策略来调度多关键性零星任务系统 τ,我们必须为 τ 中的每个任务分配一个(不一定是唯一的)优先级。 根据定义,这些优先级是完全相互排序的:只要一个优先级中的作业在运行时等待执行,就不会执行较低优先级的作业。 在每个优先级内,将使用 EDF 安排任务。
同步到达序列 (SAS) 代表最坏情况下的到达序列——如果针对给定的优先级分配使用混合优先级调度来安排零星任务系统的 SAS 以满足所有截止日期,则零星任务 系统将始终满足具有相同优先级分配的混合优先级调度下的所有截止日期。后续将使用这个 观察作为设计多关键零星任务系统的混合优先级调度的优先级分配算法的基础。
优先级分配算法 ASSIGNPRIORITIES(τ ) 是 Audsley 算法的推广,用于在 FTP 调度系统中分配优先级。 过程 AUGMENTEDAUDSLEY(τcur,p) 接受一组任务 τcur ⊆ τ 和优先级 p 作为输入,并确定 τcur 中的哪些任务可以分配优先级 p,哪些必须分配更高的优先级。
在考虑当前优先级 p 的 AUGMENTEDAUDSLEY 中的每个步骤中,τcur 保留尚未排除分配优先级 p 的任务集,τhi 包含已确定需要分配更高优先级的任务集 。开始对 AUGMENTEDAUDSLEY 的初始调用具有最低优先级和所有任务(即 p ← 1 和 τcur ← τ )。
在 AUGMENTEDAUDSLEY 的执行期间,任何被识别为不能保证在当前优先级满足其时序约束的任务必须分配更高的优先级——这样的任务从 τcur 中删除并添加到 τhi。 为了识别在当前优先级无法满足其时序约束的任务,模拟了 (τcur ⋃ τhi) SAS 的混合优先级调度,已经分配了优先级的任务 <p 不需要考虑,因为它们不影响优先级为 p 或更高的任务的调度。
归结的流程如下:
1. 首先让 π1,π2,...,π 表示 τcur 中任务的不同关键级别,按降序排列。用使用 Ci(π1) 作为任务的 WCET; 如果 τcur 中具有临界级别 π1 的任务的所有作业截止日期都得到满足,则它使用 Ci(π2) 作为任务的 WCET 来模拟 (τcur ⋃ τhi) 的 SAS 的混合优先级调度; 如果 τcur 中具有临界级别 π2 的任务的所有作业截止日期都得到满足,它接下来使用 Ci(π3) 作为任务的 WCET 来模拟 (τcur ⋃ τhi) 的 SAS 的混合优先级调度。如果用最低关键级别Ci(πl)用作WCET时满足 τcur 中所有最低关键级别的截止日期,那么就可以完成 τcur 中所有任务都被分配了优先级p时的调度保障
2. 当某个任务在关键级别πj关键级别实验失败时,令 τk 表示具有关键性 πj 的任务生成第一个错过其截止日期的此类作业。 为了让这个作业满足它的截止日期,它有必要比 SAS 中 τcur 分配的优先级 p 中某个任务的某个更早截止日期的作业具有更高的优先级。
3. 以这种方式为 τk 分配了更高的优先级后, 必须再次重新检查整个系统(第 3-5 行中的 while 循环)。 也就是说,它重新模拟 SAS 在每个关键级别 π1、π2、... 的调度,除了现在为 τk 分配的优先级高于 τcur 中剩余的任务。 这样做时,可以确定一些其他任务 τ ′ k 是否也需要提升到更高的优先级。
4. 与Audsley 方法 一样,AUGMENTEDAUDSLEY 本质上是识别要分配当前优先级 p 的任务,后续会继续在τhi中进行递归,逐渐生成更多优先级为p+1,p+2等等各类任务。但若τcur在执行后变空,即所有任务都需要升级优先级(则算法本质上没啥意义了),返回调度失败。
后续的具体执行如下图所示:
算法是为了解决Vestal提出的任务模型在动态优先级调度下的可调度性问题。算法的目标是给每个任务分配一个虚拟截止时间,使得在不同的关键性模式下,任务的虚拟截止时间都不会超过它们的真实截止时间,并且任务集能够被EDF调度。
伪代码如下:
输入:一个具有多重关键性规范的任务集 T = {T1, T2, ..., Tn}
输出:一个虚拟截止时间分配方案,如果存在的话,或者“不可调度”
开始
对于 T 中的每个任务 Ti,计算它的关键性等级 Li = max{L | Ci(L) > 0}
按照关键性等级从高到低对 T 中的任务进行排序
让 Lmax 为 T 中任何任务的最高关键性等级
对于 L = Lmax 到 1,执行以下操作:
让 TL 为 T 中关键性等级至少为 L 的任务子集
让 CL 为 TL 在 L 等级下的总利用率
如果 CL > 1,那么返回“不可调度”
让 DL 为 TL 中任务相对截止时间的不同值集合
按照相对截止时间从小到大对 DL 进行排序
让 D0 = 0 和 Dk+1 = infinity,其中 k >= |DL|
对于 j = 1 到 k,执行以下操作:
让 Uj 为 TL 中相对截止时间不超过 Dj 的任务的总利用率
让 Wj 为 TL 中相对截止时间不超过 Dj 的任务在 [Dj-1, Dj] 内的总工作量
如果 Wj > Uj * (Dj - Dj-1),那么返回“不可调度”
让 Vj 为 TL 中相对截止时间等于 Dj 的任务集合
对于 Vj 中的每个任务 Ti,按照以下方式分配虚拟截止时间 Di(L):
Di(L) = min{Di(L+1), Dj - (Wj - Uj * (Dj - Dj-1)) / Ui(L)}
如果 Di(L) < Di,那么返回“不可调度”
结束循环
结束循环
返回虚拟截止时间分配方案
结束
这种算法的核心思想是从最高的关键性等级开始,逐步给每个任务分配一个虚拟截止时间,使得每个关键性等级下的任务集都能满足EDF调度的充分条件。
4.2 算法评价
算法用于为多关键性零星任务系统中的任务分配优先级,以便使用混合优先级调度算法调度生成的系统以满足其各自所需保证级别的所有时序约束 . 我们现在将这种方法与其他可能的多关键零星任务系统调度方法进行比较。
首先,该算法支配 EDF 调度:任何可被 EDF 调度的 τ 将被该算法确定为可调度,并且 τ 中的所有任务都被分配相同的最低优先级。 也就是说,第一次调用 AUGMENTEDAUDSLEY(τ, 1) 通过执行第 8 行的返回语句来声明成功,并且不再对 AUGMENTEDAUDSLEY 进行递归调用。
该算法也支配了 Vestal 算法。 Vestal 算法在每个优先级必须恰好分配给它一个任务的意义上更具限制性; 不难证明,Vestal 算法找到这种优先级分配的任何 τ 也将具有我们的算法找到的优先级分配。
如定理 2所示,存在可行的多临界零星任务系统,这些系统可以使用动态优先级算法进行调度,但不能使用任何 FJP 或 FTP 算法进行调度。 而对于该算法也是如此,即有些任务系统是 FJP 可调度的,但不能使用算法进行调度。
(举例略,文章中例子很好理解)
五、结论
Vestal 提出的多关键性任务模型代表了安全关键型实时系统的建模和分析方面潜在的非常重要的进步。 在本文中,我们试图更好地理解多关键性零星任务系统的抢占式单处理器调度。 我们已经研究了基本的调度理论问题——表现力; 可行性; 特定类别的调度算法的可调度性; 等等——必须理解这些才能完全理解新的任务模型。 我们从这项研究中学到了很多与我们之前使用传统零星任务系统的经验相反的东西:例如,我们了解到 EDF 不是调度多临界零星任务系统的最佳算法,而且 EDF 和固定优先级调度是无法比较的 . 我们还推导出并评估了一种新方案,用于在抢占式单处理器上调度此类多关键性零星任务系统,并表明该新方案优于先前提出的方案。