一种面向混合关键性实时系统的容错性任务调度方法与流程

文档序号:12271060阅读:563来源:国知局
一种面向混合关键性实时系统的容错性任务调度方法与流程

本发明涉及实时系统与混合关键性系统,尤其涉及了一种面向混合关键性实时系统的容错性任务调度方法。



背景技术:

在通用硬件平台上整合不同认证要求的安全关键性任务已经成为实时和嵌入式系统设计的发展趋势,过去十年中,在解决任务最坏执行时间的不确定性问题上,以及混合关键性系统的服务质量和可调度性问题上,学术界已经付出巨大努力。

本领域的研究人员提出了混合关键调度问题和一种固定优先级抢占式调度算法,它被证明在预先固定优先级的算法中是最佳算法;该领域的研究人员研究了在单处理器混合关键系统上的固定优先级调度问题,提出了一种新的优先级分配方案,并提供了一个充分的响应时间分析;除此之外,混合关键性系统非固定优先级算法也引起了广泛探讨。为解决传统混合关键调度算法中低关键性任务服务的突发问题,该领域的研究人员研究了一种弹性混合关键任务模型,特别允许低关键性任务有可变周期。此外,他们还提出了用提前释放EDF调度算法来提高低关键性任务的执行频率,避免违反高优先级任务的时间约束。然而,这些研究都存在容错问题。

对于安全关键的嵌入式系统,系统的各种功能都必须确保能适应外界的各种压力,如硬件/软件下保证(HW/SW)误差和电力短缺。而容错是系统设计中特别必要的,因为它能防止潜在的故障,以实现高的安全性和可靠性。

现在已经有了很多容错技术,如双/三模冗余,重新执行和检查点回滚,它们被广泛用于处理故障的发生。最近的一些研究已经集中于解决存在瞬时故障的混合关键性系统中容错任务映射与调度问题。该领域的研究人员提出了一种可同时满足混合关键性系统的安全需求和可调度要求的方法。他们还根据安全标准,对不同关键性级别的安全要求进行明确建模;该领域的研究人员还提出了一种混合关键性程序在异构多处理器系统上的静态最优映射方案,该方案能保证混合关键性程序在最坏情况下也可运行;该领域的研究人员对混合关键性系统的容错机制建模,提出了一种方法来解决实时、容错和混合关键约束间的时间依赖关系。然而,所有的上述研究都没有利用处理器的空闲时间来提高混合关键性系统的可靠性和可调度性,而且,它们都没有设计提高和确保高关键性任务优先级的机制。



技术实现要素:

针对现有技术存在的不足,本发明的目的就在于提供了一种面向混合关键性实时系统的容错性任务调度方法,研究了混合关键性系统在存在瞬态故障的单处理器上的任务调度,基于虚拟截止时间的最早截止时间优先调度(EDF-VD)和改进的周期转换方法,利用处理器空闲时间利用率(UIT)和任务重复执行技术,以提高系统的可靠性和可调度性。

为了实现上述目的,本发明采用的技术方案是这样的:

一种面向混合关键性实时系统的容错任务调度方法,包括以下步骤:

(1)任务集模型建立;

(2)任务集预处理,就绪队列置空;

(3)判断就绪队列以及系统的状态;

(4)根据任务关键性执行任务;

(5)验错并判断是否重执行;

(6)任务执行完毕,转步骤(3)。

作为一种优选方案,所述步骤(1)具体包括以下步骤:

步骤A1:双关键任务集Γ模型的建立:

Γ={τ1,τ2,…,τi,…τn}

其中n为任务集Γ中相互独立的实时周期性任务的个数;

步骤A2:双关键任务τi模型的建立:

τi={Ti,Di,Ni,Li,Ci}

其中1≤i≤n,Ti为任务τi的周期,Di为任务τi的相对截止时间,Ni为任务τi在执行时可以被容忍的最大瞬时错误个数,Li∈{LO,HI}为任务τi的关键性,LO为低关键性,HI为高关键性,Ci为任务τi在最坏情况下的执行时间;

步骤A3:实时约束关系的建立:

其中Ci(LO)表示τi为低关键性任务时的最坏执行时间,Ci(HI)表示τi为高关键性任务时的最坏执行时间,任务的相对截止时间小于等于任务的周期,该约束关系表明任务的最坏执行时间应少于任务的相对截止时间;

步骤A4:任务释放时间约束关系的建立:

其中为任务τi的第k个作业的释放时间。

作为一种优选方案,所述步骤(2)具体包括以下步骤:

步骤B1:低关键性任务子集LO(Γ)模型的建立:

LO(Γ)={τi∈Γ|Li=LO};

步骤B2:高关键性任务子集HI(Γ)模型的建立:

HI(Γ)={τi∈Γ|Li=HI};

步骤B3:任务执行次数Υi模型的建立:

Υi=2Ni+1;

步骤B4:任务虚拟截止时间模型的建立:

其中Δi是实际释放时间和虚拟释放时间的偏移量;

假设两个作业和同时被释放并具有相同的相对截止时间(Di=Dj),那么

这表明低关键性任务的虚拟截止时间比高关键性任务的虚拟截止时间更长;

设置高关键性任务的Δi=Ci,设置低关键性任务的Δi=0,

这样可以保证高关键性任务有较高的优先级;

步骤B5:根据步骤B4对周期转换技术(PT)进行改进,然后应用于任务集,进行预处理,可得到

步骤B6:建立就绪队列Qready,并置空。

作为一种优选方案,所述步骤(3)具体包括以下步骤:

步骤C1:把Γ′中释放的任务加到就绪队列Qready

步骤C2:如果系统处于空闲状态(State=idle)并且就绪队列非空转步骤C3;否则转步骤(2);

步骤C3:根据最小截止时间优先-虚拟截止时间(EDF-VD)算法将任务从Qready中出队。

作为一种优选方案,所述步骤(4)具体包括以下步骤:

步骤D1:低关键性任务子集LO(Γ)模型的建立:

LO(Γ)={τi∈Γ|Li=LO};

步骤D2:高关键性任务子集HI(Γ)模型的建立:

HI(Γ)={τi∈Γ|Li=HI};

步骤D3:判断任务的关键性;

步骤D4:如果Li=HI,转步骤D6;否则转步骤D5;

步骤D5:执行转步骤D6;

步骤D6:执行并利用fingerprint技术存储任务执行情况,以用于故障检验。

作为一种优选方案,所述步骤(5)具体包括以下步骤:

步骤E1:采用重执行方法的任务可靠性R(τi)模型的建立:

其中,λ为任务τi的平均到达错误率;

步骤E2:系统安全指标S(Γ,H)模型的建立:

其中,超周期H是周期{T1,T2,…,Tn}的最小公倍数,是按时执行完的任务实例个数,是任务实例总数;

步骤E3:采用重执行方法的任务集利用率U模型的建立:

其中,任务集利用率不能超过1,即U≤1;

步骤E4:根据记录的任务执行情况,比较得到故障检验的结果如果是错误的,转步骤E6。

步骤E5:从Qready出队,转步骤E6;

步骤E6:所有低关键性任务从Qready出队并执行即存在错误需要重新执行。

与现有技术相比,本发明的有益效果:本发明对于给定的一个任务集,采用改进的周期转换方法对高关键性任务进行预处理,以保证高关键性任务的优先执行;然后根据最小截止时间优先(EDF)-虚拟截止时间(VD)算法,确定该任务集中所有就绪任务的调度顺序;在系统执行高关键性任务时,进行错误检验;当高关键性任务执行出错时,执行其备份任务以保证系统的可靠性,并放弃执行剩余的低关键性任务以保证系统的可调度性,提供一个更安全可靠的系统。

附图说明

图1为本发明的流程图;

图2为在处理器利用率变化下,Slice-EDF-VD、EDF、EDF-VD可靠性对比图一;

图3为在处理器利用率变化下,Slice-EDF-VD、EDF、EDF-VD可靠性对比图二;

图4为在处理器利用率变化下,Slice-EDF-VD、EDF、EDF-VD可行性对比图一;

图5为在处理器利用率变化下,Slice-EDF-VD、EDF、EDF-VD可行性对比图二;

图6为在任务集大小变化下,Slice-EDF-VD、EDF、EDF-VD的CPU占用时间对比图一;

图7为在任务集大小变化下,Slice-EDF-VD、EDF、EDF-VD的CPU占用时间对比图二;

图8为在任务集大小变化下,Slice-EDF-VD、EDF、EDF-VD的可靠性与可行性对比图一;

图9为在任务集大小变化下,Slice-EDF-VD、EDF、EDF-VD的可靠性与可行性对比图二;

图10为在任务集大小变化下,Slice-EDF-VD、EDF、EDF-VD的可靠性与可行性对比图三。

具体实施方式

下面结合具体实施例对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

实施例:

如图1所示,一种面向混合关键性实时系统的容错任务调度方法,包括以下步骤:

(1)任务集模型建立;

(2)任务集预处理,就绪队列置空;

(3)判断就绪队列以及系统的状态;

(4)根据任务关键性执行任务;

(5)验错并判断是否重执行;

(6)任务执行完毕,转步骤(3)。

作为一种优选方案,所述步骤(1)具体包括以下步骤:

步骤A1:双关键任务集Γ模型的建立:

Γ={τ1,τ2,…,τi,…τn}

其中n为任务集Γ中相互独立的实时周期性任务的个数;

步骤A2:双关键任务τi模型的建立:

τi={Ti,Di,Ni,Li,Ci}

其中1≤i≤n,Ti为任务τi的周期,Di为任务τi的相对截止时间,Ni为任务τi在执行时可以被容忍的最大瞬时错误个数,Li∈{LO,HI}为任务τi的关键性,LO为低关键性,HI为高关键性,Ci为任务τi在最坏情况下的执行时间;

步骤A3:实时约束关系的建立:

其中Ci(LO)表示τi为低关键性任务时的最坏执行时间,Ci(HI)表示τi为高关键性任务时的最坏执行时间,任务的相对截止时间小于等于任务的周期,该约束关系表明任务的最坏执行时间应少于任务的相对截止时间;

步骤A4:任务释放时间约束关系的建立:

其中为任务τi的第k个作业的释放时间。

作为一种优选方案,所述步骤(2)具体包括以下步骤:

步骤B1:低关键性任务子集LO(Γ)模型的建立:

LO(Γ)={τi∈Γ|Li=LO};

步骤B2:高关键性任务子集HI(Γ)模型的建立:

HI(Γ)={τi∈Γ|Li=HI};

步骤B3:任务执行次数Υi模型的建立:

Υi=2Ni+1;

步骤B4:任务虚拟截止时间模型的建立:

其中Δi是实际释放时间和虚拟释放时间的偏移量;

假设两个作业和同时被释放并具有相同的相对截止时间(Di=Dj),那么

这表明低关键性任务的虚拟截止时间比高关键性任务的虚拟截止时间更长;

设置高关键性任务的Δi=Ci,设置低关键性任务的Δi=0,

这样可以保证高关键性任务有较高的优先级;

步骤B5:根据步骤B4对周期转换技术(PT)进行改进,然后应用于任务集,进行预处理,可得到

步骤B6:建立就绪队列Qready,并置空。

作为一种优选方案,所述步骤(3)具体包括以下步骤:

步骤C1:把Г′中释放的任务加到就绪队列Qready

步骤C2:如果系统处于空闲状态(State=idle)并且就绪队列非空转步骤C3;否则转步骤(2);

步骤C3:根据最小截止时间优先-虚拟截止时间(EDF-VD)算法将任务从Qready中出队。

作为一种优选方案,所述步骤(4)具体包括以下步骤:

步骤D1:低关键性任务子集LO(Γ)模型的建立:

LO(Γ)={τi∈Γ|Li=LO};

步骤D2:高关键性任务子集HI(Γ)模型的建立:

HI(Γ)={τi∈Γ|Li=HI};

步骤D3:判断任务的关键性;

步骤D4:如果Li=HI,转步骤D6;否则转步骤D5;

步骤D5:执行转步骤D6;

步骤D6:执行并利用fingerprint技术存储任务执行情况,以用于故障检验。

作为一种优选方案,所述步骤(5)具体包括以下步骤:

步骤E1:采用重执行方法的任务可靠性R(τi)模型的建立:

其中,λ为任务τi的平均到达错误率;

步骤E2:系统安全指标S(Γ,H)模型的建立:

其中,超周期H是周期{T1,T2,…,Tn}的最小公倍数,是按时执行完的任务实例个数,是任务实例总数;

步骤E3:采用重执行方法的任务集利用率U模型的建立:

其中,任务集利用率不能超过1,即U≤1;

步骤E4:根据记录的任务执行情况,比较得到故障检验的结果如果是错误的,转步骤E6。

步骤E5:从Qready出队,转步骤E6;

步骤E6:所有低关键性任务从Qready出队并执行即存在错误需要重新执行。

本发明中的任务集Γ在单处理器上以固定的频率运行,处理器有忙碌和空闲两种状态,多关键性混合系统也有高关键性(HI)和低关键性(LO)两种关键性,任务集Γ={τ1,τ2,…,τi,…,τn}由n个独立的周期任务组成,任务τi={Ti,Di,Ni,Li,Ci},其中:1≤i≤n,Ti为任务τi的周期,Di为任务τi的相对截止时间,Ni为任务τi在执行时可以被容忍的最大瞬时故障个数,Li∈{LO,HI}为任务τi的关键性,Ci为任务τi在最坏情况下的执行时间,并且存在实时约束关系每一个任务τi都会根据周期性特点释放出一系列(可能无限)的任务释放时间,用来表示任务τi的第k个作业的释放时间,那么约束关系建立为根据任务的关键性水平,可以将任务集Γ划分为两个子集,让LO(Γ)={τi∈Γ|Li=LO}代表低关键性任务子集,并用HI(Γ)={τi∈Γ|Li=HI}代表高临界任务集子集;那么,执行任务集的处理器利用率可以计算为高关键性任务的可靠性是一般要求高于一个系统指定的阈值,也高于低关键性任务。

本发明采用指数分布对系统的瞬时错误进行建模,用λ表示每秒的预期错误发生数;任务τi的可靠性表示为其中Ci是任务最坏执行时间;本发明采用重执行来增强系统可靠性,用Ni表示任务τi可以容忍的错误数,那么任务τi的执行次数γi可表示为γi=2Ni+1,因此可靠性R(τi)可以表示如下:

本发明提出多关键性系统的安全性指标,并且展示了对于提高系统可调度性而言,舍弃部分任务的必要性,用超周期H表示任务集Γ周期{T1,T2,…,Tn}的最小公倍数,M是按时执行完的任务实例个数,那么是任务实例总数,则系统安全指标S(Γ,H)可表示为显然,可以通过提高高关键性任务的可靠性以及任务集的实时可行性来改善系统安全;然而,利用重执行提高任务可靠性将会引起处理器利用率升高,这将导致大量的任务错过它们的截止时间;因此,为了提高系统安全指标必须平衡好可靠性和实时可行性之间的关系,在重执行方法下的任务集利用率U可以表示为其中:U≤1;随着重执行引起的时间增加,任务集可能不可调度;为了保证任务集的可调度性,系统的利用率必须低于满足U≤1;通常用两种方法来减少系统的利用率:一种方法是用更高的频率来执行任务,然而我们的处理器频率是固定的;另一种方法是通过抛弃低关键性任务来降低任务利用率继而提升任集可调度性。

本发明对周期变换(PT)方法进行改进,PT方法把任务τi的周期Ti,相对截止时间Di以及最坏情况执行时间Ci切分成Xi部分,得到更小的周期相对截止时间和最坏情况执行时间本发明采用改进的PT方法对任务集进行预处理,其中高关键性任务τi被冗余化成γi个任务其中每一个任务τi,j(1≤j≤γi)的执行时间为Ci、虚拟截止时间为任务集Γ经过改进的PT方法预处理为

本发明采用EDF-VD算法来保证高关键性任务可以拥有高优先级,把这种融合改进之后的EDF-VD算法称为Slice-EDF-VD算法;首先提出了虚拟化截止时间的概念并且计算每个任务的虚拟截止时间,然后根据EDF算法利用虚拟截止时间来确定任务调度优先级;任务虚拟截止时间可以表示为其中Δi是实际释放时间和虚拟释放时间的偏移量;假设两个作业和同时释放并且相对截止时间相同(Di=Dj),那么这表明低关键性任务的虚拟截止时间更长。所以设置高关键性任务的Δi=Ci,设置低关键性任务的Δi=0,得到

这样可以保证高关键性任务有较高的优先级,再根据EDF-VD算法进行调度安排即可。

具体实施时,采用以下流程:

步骤1:利用Intel Quad-Core处理器作为仿真平台,处理器主频2.1GHz,内存6GB。用Python 2.7.8来实现本发明的算法,任务的平均错误到达率λ=1×10-5

步骤2:因为较大的Ni会导致任务执行时间和系统利用率升高,但是为了使仿真系统有相对较高的可调度性,估计Ni=1和Ni=2,即在仿真实验中对于低关键性任务γi=1,对于高关键性任务γi设置为3和5;

步骤3:在处理器利用率变化的情况下,将本发明的Slice-EDF-VD算法与EDF、EDF-VD算法作比较可知,Slice-EDF-VD算法可以获得更高的可靠性,在图2中,设置低关键性任务γi=1,高关键性任务γi=3,实验结果显示Slice-EDF-VD的平均可靠性比EDF高7.8%、比EDF-VD的高4.6%,在图3中,设置低关键性任务γi=1,高关键性任务γi=5,实验结果显示Slice-EDF-VD的平均可靠性比EDF高8.0%、比EDF-VD的高2.99%,由图可知,由于重执行的次数更多,所以高关键性任务γi=5的可靠性比γi=3高;

步骤4:在处理器利用率变化的情况下,将本发明的Slice-EDF-VD算法与EDF、EDF-VD算法作比较可知,Slice-EDF-VD算法可以获得更高的实时可行性,在图4中,设置低关键性任务γi=1,高关键性任务γi=3,实验结果显示Slice-EDF-VD的平均实时可行性比EDF高41.7%、比EDF-VD的高24.2%;在图5中,设置低关键性任务γi=1,高关键性任务γi=5,实验结果显示Slice-EDF-VD的平均实时可行性比EDF高57.7%、比EDF-VD的高43.2%,由图可知,由于重执行的次数更多引起更多的负载,所以高关键性任务γi=5的实时可行性比γi=3低;

步骤5:为了对本发明提出的Slice-EDF-VD算法进行全面的评估,在任务集大小变化时对Slice-EDF-VD与EDF、EDF-VD三种算法的CPU占用时间作比较,实验包括10个任务集,任务数分别是20、40、60、80、100、120、140、160、180、200,因为采用指纹识别技术,Slice-EDF-VD的CPU时间比EDF、EDF-VD高;在图6中,设置低关键性任务γi=1,高关键性任务γi=3,实验结果显示EDF、EDF-VD、Slice-EDF-VD三个算法的CPU占用时间分别是0.5106s,0.6588s,1.6647s;在图7中,设置低关键性任务γi=1,高关键性任务γi=5,实验结果显示EDF、EDF-VD、Slice-EDF-VD三个算法的CPU占用时间分别是0.6374s,0.8031s,2.0619s,尽管Slice-EDF-VD的CPU占用时间高于EDF、EDF-VD,但仍然在可以接受的范围;

步骤6:为了研究Slice-EDF-VD的可扩展性,设置当任务集的数量不断变化时,研究Slice-EDF-VD、EDF、EDF-VD的可靠性和实时可行性,实验包括10个任务集,任务数分别是20、40、60、80、100、120、140、160、180、200,实验结果如图8、图8、图10所示,尽管任务集大小发生变化,但Slice-EDF-VD算法的可靠性和实时可行性都比EDF、EDF-VD高。

本发明提出一种在单处理器平台上容忍瞬时错误的对混合关键任务的调度方法,本发明提出的Slice-EDF-VD算法采用重执行技术来提高可靠性,利用PT和UIT技术来提高调度可行性,通过把Slice-EDF-VD算法与EDF、EDF-VD算法作比较,实验结果显示Slice-EDF-VD优于EDF、EDF-VD算法,可靠性提升15.8%,可行性提升94.4%,实验表明,相对于两种具有代表性的算法,本发明的Slice-EDF-VD算法对于系统有更好的优化。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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