发明内容
针对现有技术中抢占阈值容错调度算法存在容错能力差等不足之处,本发明要解决的技术问题是提供一种允许容错优先级提升的适用于硬实时系统的任务调度方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明适用于硬实时系统的任务调度方法包括以下步骤:
按照给定算法FP(Γ)分配任务的常规优先级;
设定抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
和容错间距T
E的初始值;
根据任务的常规优先级以及抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
和容错间距T
E来计算任务的最坏情况响应时间R
i(x,y,z,T
E);
判断Ri(x,y,z,TE)>Di吗?
当R
i(x,y,z,T
E)>D
i时,计算所得到的
为τ
i的最优抢占阈值配置,
为
的最优容错优先级配置,
为
的最优容错阈值配置,而
则为在FT-FPPT
*调度算法下所能承受的最小错误间隔;
根据上述结果为任务分配抢占阈值、容错优先级配置及容错阈值配置,进行任务调度,获得所能承受的最小错误间隔。
当R
i(x,y,z,T
E)≤D
i时,计算相应的抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
和容错间距T
E,并分别赋值给
及
返回判断“Ri(x,y,z,TE)>Di吗?步骤,直至满足条件Ri(x,y,z,TE)>Di;
接续“计算所得到的
为τ
i的最优抢占阈值配置,
为
的最优容错优先级配置,
为
的最优容错阈值配置,而
则为在FT-FPPT
*调度算法下所能承受的最小错误间隔”步骤。
通过以下公式计算任务最坏情况响应时间Ri(x,y,z,TE):
式中
表示外部错误最坏响应时间;
表示外部错误最坏响应时间;x,y,z为抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
中的变量,T
E为系统最小错误间隔。
外部错误最坏响应时间通过以下公式计算得到:
式中τ
i在时刻t前的响应时间
和在时刻t后的响应时间
S
i(x,y,z,T
E)为任务τ
i的最坏开始时间,C
i为任务τ
i的最坏执行时间,E
i为出错时间,
为替代版本
的最坏执行时间,
和
分别为替代版本
的容错优先级与容错阈值,π
i和γ
i分别为主版本任务的常规优先级与抢占阈值。
内部错误最坏响应时间通过以下公式计算得到:
式中τ
i在时刻t前的响应时间
和在时刻t后的响应时间
在时刻t前的响应时间通过以下公式计算得到:
在时刻t后的响应时间通过以下公式计算得到:
本发明具有以下有益效果及优点:
该方法能够在抢占式容错调度算法(FT-FPP)和抢占阈值容错调度算法(FT-FPPT)无法提高系统容错能力的情况下,进一步提高系统的容错能力。
具体实施方式
本发明适用于硬实时系统的任务调度方法包括以下步骤:
按照给定算法FP(Γ)分配任务的常规优先级;
设定抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
和容错间距TE的初始值;
根据任务的常规优先级以及抢占阈值配置H
x、容错优先级配置Ω
y、容错阈值配置
和容错间距T
E来计算任务的最坏情况响应时间R
i(x,y,z,T
E);
判断Ri(x,y,z,TE)>Di吗?
当R
i(x,y,z,T
E)>D
i时,计算所得到的
为τ
i的最优抢占阈值配置,
为
的最优容错优先级配置,
为
的最优容错阈值配置,而
则为在FT-FPPT
*调度算法下所能承受的最小错误间隔;
根据上述结果为任务分配抢占阈值、容错优先级配置及容错阈值配置,进行任务调度,获得所能承受的最小错误间隔。
下面将结合优先级配置搜索算法对本发明实施方式作进一步地详细描述。
在容错实时系统中,任务τ
i的最坏响应时间通常包括三个部分:(a)任务最坏执行时间C
i;(b)容错部分F
i,即由于错误引起的时间开销;(c)抢占部分I
i,即高优先级任务引起的抢占时间。因此,任务τ
i的最坏响应时间等于三部分的总和,即C
i+F
i+I
i。其中,任务的执行时间C
i是不变的,而F
i和I
i主要是基于当前执行任务的优先级。在容错优先级可提升的抢占阈值容错调度算法中,主版本任务具有两个优先级,即常规优先级π
i与抢占阈值γ
i,而替代版本具有两个优先级,即容错优先级
与容错阈值
而根据固定优先级调度算法FP(Γ)进行任务调度时,π
i是确定已知的。因此,如何分配任务τ
i的抢占阈值γ
i、以及替代版本
的常规优先级
和抢占阈值
是问题的研究重点。本文提出了任务τ
i抢占阈值配置Ω
x、替代版本
的容错优先级配置H
y以及容错阈值配置
的概念,定义如下。
定义1.任务τi的抢占阈值配置Hx是一个n元组<hx,1,hx,2,...,hx,n>,其中hx,i=γi-πi,且有0≤hx,i≤(i-1)。
定义2.任务
的容错优先级配置Ω
y是一个n元组<σ
y,1,σ
y,2,...,σ
y,n>,其中
且有0≤σ
y,i≤(i-1)。
定义3.对于给定的容错优先级配置Ω
y,任务
的容错阈值配置
是一个n元组
其中
且有
根据H
x、Ω
y、
的定义可知,h
x,i表示γ
i相对于π
i的增量,σ
y,i表示
相对于π
i的增量,而
表示
相对于
的增量。值得注意的是,
的取值范围依赖于σ
y,i。当
时,所表示的就是FT-FPP调度算法;当
且Ω
y=<0,0,...,0>时,所表示的就是FT-FPPT调度算法。可以看出,FT-FPP与FT-FPPT均是FT-FPPT
*的特例。
对于任务τ
i最坏响应时间的计算,可以分为两步进行。首先推导出任务τ
i最坏开始时间S
i的计算公式,然后推导出τ
i最坏响应时间R
i的计算公式。当H
x、Ω
y、
和T
E取不同的值时,任务的最坏开始时间S
i以及任务的最坏响应时间R
i都是不同的,可见它们均是H
x、Ω
y、
和TE的函数,分别用S
i(x,y,z,T
E)以及R
i(x,y,z,T
E)来表示。
任务最坏开始时间Si(x,y,z,TE)的计算
对于任意给定的任务τi,只有当抢占阈值大于等于πi,而常规优先级低于πi的任务才可以阻塞τi的运行,因此,τi被低优先级任务阻塞的时间可表示为:
对于给定的错误间隔T
E,在时间间隔Δt内,发生错误的最大次数可表示为
因此,在Δt内,由错误所引起的最大时间开销可以通过
计算,其中S
Δt表示Δt内所有可能执行的任务集合。在最坏情况下,任务τ
i的开始时间S
i(x,y,z,T
E),可通过如下公式计算:
在公式(2)中,第一项是S
i(x,y,z,T
E)被低优先级任务阻塞的最大时间,可以通过公式(1)计算。第二项表示在S
i(x,y,z,T
E)内,所有高优先级任务所带来的抢占时间。最后一项E
i表示S
i(x,y,z,T
E)期间进行错误恢复的替代版本执行时间总和。E
i可通过公式(3)计算。S
i(x,y,z,T
E)可通过迭代计算获得,迭代的初始值可以为
当两次迭代计算得到的S
i(x,y,z,T
E)值相同时迭代结束。
任务最坏响应时间Ri(x,y,z,TE)的计算
由于任务τ
i在执行过程中是否发生错误将导致该任务具有不同的响应时间,因此,需要将R
i(x,y,z,T
E)的计算分为两种情况:(1)任务τ
i在执行过程中自身未发生错误,此时的最坏响应时间由
表示,简称为外部错误最坏响应时间;(2)任务τ
i在执行过程中自身发生错误,此时的最坏响应时间由
表示,简称为内部错误最坏响应时间。显然,任务τ
i的最坏响应时间R
i(x,y,z,T
E)为
和
的最大值,即
外部错误是指任务τ
i在执行过程中其他任务发生错误的情况。此时,由于τ
i没有发生错误,因此τ
i始终在其抢占阈值γ
i上执行。容错部分F
i需要考虑容错阈值大于或等于π
i的任务。由于此时考虑的是外部错误情况,因此在容错部分需要排除任务τ
i自身发生错误的情况。除此之外,F
i部分应当排除在S
i(x,y,z,T
E)中重复计算的E
i。抢占部分I
i仅需考虑常规优先级高于γ
i的任务,同理,I
i部分也需要排除在S
i(x,y,z,T
E)中重复计算的情况。所以,在FT-FPPT
*调度下,任务τ
i的外部错误最坏响应时间
可通过如下公式计算:
(b)的计算
如图1所示,假设任务τ
i在时刻t第一次发生错误,则τ
i的内部错误最坏响应时间
可以分为两个部分:τ
i在时刻t前的响应时间
和在时刻t后的响应时间
。由于任务τ
i在错误出现后的执行情况与错误前的执行无关,因此可以先推导出
的计算公式,然后再根据
推导出
的计算公式,最后推导出
的计算公式。下面将按照这种方法进行分析。
首先考虑
的计算公式。对于抢占阈值大于或等于容错优先级
的任务,其替代版本也能抢占
的执行,在这其中当然也包含了
再次发生错误的情况。由于在
期间,最多可能发生
次错误,而其中第一个错误就是任务τ
i在时刻t发生的错误,而其余
个错误可能来自抢占阈值高于容错优先级
的任务。对于抢占部分,当任务τ
i发生错误后,其替代版本
开始在其容错阈值
上执行,则常规优先级大于
的任务才可以抢占
的执行。根据上面的分析,可以得到
的计算公式为
现在来考虑
的计算公式。对于容错部分,只有容错阈值大于或等于π
i的替代版本才有可能执行。值得注意的是,若σ
y,i=0,即
最坏情况是所有的错误都发生在任务τ
i或者
上,此时
因此当σ
y,i=0时需要考虑τ
i自身发生错误的情况;若σ
y,i>0,即
容错部分则需要排除τ
i自身发生错误的情况。这里我们用集合Ψ来表示这两种情况,如下:
在
期间,可以抢占τ
i执行的任务,其常规优先级应该大于γ
i。但是在
内已经考虑了大于
的情况,这就意味着应该减去在
内已经考虑的抢占开销。与抢占部分一样,容错部分也需要排除重复计算的情况。因此,
的最坏响应时间计算公式为
基于以上分析,任务τ
i的内部错误最坏响应时间
为
与
之和,即:
当系统中所有任务的最坏响应时间均不大于其截止期时,任务集Γ是可调度的,否则任务集Γ不可调度。
引入函数T
e(x,y,z)。给定配置Ω
x、H
y和
函数T
e(x,y,z)表示T
E所能达到的最小值。若T
E比T
e(x,y,z)的值更小,则必有任务不可调度,这样的任务称为临界任务,下面给出临界任务的定义。
定义4.当T
E=T
e(x,y,z)-1时,至少存在一个任务,使得整个集合Γ不可调度,称这样的任务为临界任务。所有的临界任务构成了一个集合,称为临界任务集,若用Z(x,y,z)表示此集合,则有
根据临界任务的属性不同,可将临界任务分为主动临界任务与被动临界任务,定义如下。
定义5.由于自身发生错误而导致自己最终错过时限的任务称为主动临界任务(active-task),由此类任务组成的集合称为主动临界任务集,若用Za(x)表示此集合,则有
定义6.由于自身发生错误而导致其他任务错过时限的任务称为被动临界任务(passive-task),由此类任务组成的集合称为被动临界任务集,若用Zp(x)表示此集合,则有
为了获得最优的双重优先级配置,最直观的方法是尝试使用每一种可能的配置方案,并分别计算每种配置下的Te值,而能够获得最小Te值的配置即为最优配置。为了提高搜索算法的效率,避免在优化的过程中检验所有的双重优先级配置,由公式(5)可以推导出两个必要非充分条件,以减少算法的时间复杂度,即:
算法过程:给定Ω
x、H
y和
若T
E=T
e(x,y,z)-1,寻找使得任务集可调度的Ω′
x、H′
y和
如果Ω′
x、H′
y和
存在,算法找到它,否则,算法停止,迭代的初始条件是
下面给出了该算法的伪代码。优先级配置搜索算法PASA由两部分组成:初始化部分(1-6行)和搜索部分(7-40)。初始化部分的工作是按照给定算法FP(Γ)分配任务的常规优先级,并设定H
x、Ω
y、
和T
E的初始值。搜索部分则完成最优优先级配置的搜索。在搜索部分中任务的响应时间R
i(x,y,z,T
E)与时限D
i的关系可分为两个分支。当R
i(x,y,z,T
E)≤D
i时(9-15行),即任务集可调度时,则将当前的H
x、Ω
y、
和T
E值分别保存在
和
中,并将T
E的值减1,开始下一轮的搜索。当R
i(x,y,z,T
E)>D
i(16-34行)时,则需要提高主版本的抢占阈值或者替代版本的容错优先级与容错阈值以减少被抢占时间。若T
E<L(15行)或
(32行),则结束整个搜索过程。此时,所得到的
为τ
i的最优抢占阈值配置,
为
的最优容错优先级配置,
为
的最优容错阈值配置,而
则为在FT-FPPT
*调度算法下所能承受的最小错误间隔。
现在考虑PASA算法的时间复杂度。当T
E<L(15行)以及
(32行)时,PASA算法停止。在整个搜索迭代过程中,由于条件L≤T
E是保证算法为真的必要条件,因此,搜索部分的时间复杂度取决于条件
为真时的迭代次数。在最坏情况下,每次迭代过程集合Z(x,y,z)中仅有一个临界任务,算法通过提升该任务的容错优先级和容错阈值使得该集合Γ变为可调度的,而每次提升容错优先级和容错阈值都需要两次迭代,第一次用来提升临界任务的容错优先级和容错阈值,第二次用来保存容错优先级配置和容错阈值配置,又因为提升所有临界任务容错优先级和容错阈值的迭代次数为
那么在最坏情况下总的迭代次数为n·(n-1),所以搜索空间的复杂度为O(n
2)。如果假设计算任务响应时间的时间复杂度为O(γ),则整个FTPCSA算法的时间复杂度为O(γ×n
2)。
下面对本发明的实施例作详细说明:本实施例是在以本发明技术方案为前提下进行实施,并给出了详细的实施方式和过程,但本发明的适用范围不限于下述的实施例。
现对表1中的任务集合采取FT-FPPT
*算法进行调度,任务的最坏响应时间见表2。当T
E=8时,由于Ω
x=<0,1,0>,τ
2的抢占阈值变为3,这样τ
1就不能在τ
2执行时抢占其运行,从而缩短了τ
2的响应时间,使得τ
2能够按时完成;由于H
y=<0,0,1>且
τ
3的容错优先级和容错阈值都变为2,这样τ
2就不能抢占τ
3执行,从而缩短了τ
3的响应时间,使得τ
3也能够按时完成,同时τ
1也能满足截止期的要求,整个系统是可调度的。
表1
表2
从三种容错调度算法对系统容错能力的影响来看,在FT-FPP和FT-FPPT两种调度策略下,系统的容错能力均为TE=9,而在FT-FPPT*调度策略下,系统容错能力可以达到TE=6,提高了33%。这说明,FT-FPPT*能够在FT-FPP和FT-FPPT均无法提高系统容错能力的情况下,进一步提高系统的容错能力。
应用实例
为了对比FT-FPPT和FT-FPPT
*两种调度算法在提高系统容错能力方面的性能,本实验将增量
作为衡量系统容错能力好坏的一个性能指标。显然,在FT-FPPT调度算法下,有ΔT
e=0成立。FP(Γ)使用DMS算法分配任务的常规优先级π
i,即任务的截止期越短,其常规优先级越高。
本实验模拟了5000个任务集,每个任务集包含10个任务。任务集Γ的处理器利用率
且满足U
min≤U≤U
max,其中U
min=0.01和U
max=0.9。对于任意给定的任务τ
i,其周期T
i,截至期D
i,执行时间C
i和替代版本的执行时间
都是随机产生的,但需要满足如下条件:
(1)Ti和Di分别服从区间[10,1000]上的均匀分布;
(2)Ci=μ,Di,其中参数μ服从Umax/10的指数分布;
(3)
服从区间[1,C
i]上的均匀分布,因此有
成立。
如图2所示,黑点表示给定任务集计算出的ΔTe值,而图中的黑线则表示同一处理器利用率下所获得ΔTe的平均值。从图中可以看出,与FT-FPPT调度相比,采用FT-FPPT*调度在容错性能上得到了明显提高。当处理器利用率在<0。4,0。9>变化时,ΔTe的平均值增长幅度较大,始终保持在10%和20%之间,ΔTe的最大值可达到86%。这是因为,在处理器利用率较低的情况下,系统中的空闲时间较多,当发生错误时,系统可以利用这些空闲时间来达到容错的目的,因此,此时采用双重优先级分配策略对系统容错能力的提升影响不大,而在处理器利用率较高的情况下,系统中的空闲时间较少,当发生错误时,重优先级分配策略可以通过挪用高优先级任务的空闲时间来处理低优先级任务的容错,提高了系统的容错能力。