一种改进的实时混合任务调度算法谢建平1,阮幼林1,21武汉理工大学信息工程学院,武汉(430070)2南京大学计算机软件新技术国家重点实验室,南京(210093)E-mail:xjp_1997@摘要:文章提出了结合TBS(总带宽服务器法)算法和DMS(时限单调算法)算法的实时混合任务的调度算法,该方法能保证周期任务满足时限的要求,还能缩短非周期任务的响应时间。
基于TBS服务器思想将非周期任务转换成有时限要求的硬实时任务,然后基于DMS 调度周期任务和非周期任务。
由于是使用静态的DMS算法,不仅可以减小任务的切换开销,而且对系统的瞬时过载有一定的适应性。
关键词:实时系统;任务调度;时限单调算法;总带宽服务器算法1. 概述随着计算机技术的飞速发展与普及,实时系统已经成为人们生产和生活中不可或缺的组成部分。
实时系统具有及时响应、高可靠性、专用性、少人工干预等特征[1],被广泛应用于工业控制、信息通讯、网络传输、媒体处理、军事等领域。
实时系统的正确性不仅依赖于计算的逻辑结果,还取决于获得计算结果的时间的正确性。
在航空航天、电信、制造、国防等领域,对实时系统有着强烈的应用需求。
由于实时系统的应用面非常广,所以实时系统的分类方法很多。
通常按照系统中任务的周期性或者任务对截止期限的要求进行划分。
实时任务按照周期性划分可以分为周期实时任务(periodic task)和非周期实时任务(aperiodic task);按照对截止期限的要求可以分为硬实时任务和软实时任务[1]。
本文提出了结合TBS(总带宽服务器法)算法[5]和DMS(时限单调算法)[6]算法的实时混合任务的调度算法,该方法能保证周期任务满足时限的要求,还能缩短非周期任务的响应时间。
算法将非周期任务赋予一个假想的时限,然后整个实时系统采用DMS算法调度。
由于是使用静态的DMS算法,不仅可以减小任务的切换开销,而且对系统的瞬时过载有一定的适应性。
2. 实时系统的任务调度由于实时调度是保障实时系统满足时间约束的重要手段,所以一直是实时计算研究领域中倍受关注的热点问题。
调度的实质是资源的分配,包括处理器和其他运算、交互、存储资源,调度就是来用来将这些资源合理地分配给各个实时任务的一种方法。
根据调度顺序产生的时机和方式可以分为静态调度和动态调度[1]。
若调度算法是在编译的时候就做出决定从就绪任务队列中选择哪个任务来运行的,则这样的调度是静态的。
这类调度算法假设系统中实时任务的特性(如:截止期,WCET等)是事先知道的。
它脱机地进行可调度性分析,并产生一个调度表。
静态调度算法的优点是运行开销小,可预测性强。
但是,由于静态调度算法一旦做出调度决定后在运行期间就不能再改变了,所以它的灵活性较差。
如果调度器是在运行期间才决定选择哪个就绪任务来运行的,则这类调度被称为动态调度。
动态调度算法能够对变化的环境做出反应,因此,这类调度算法比较灵活,适合于任务不断生成,且在任务生成前其特性并不清楚的动态实时系统。
但是,动态调度算法的可预测性差且运行开销较前者大。
根据正在运行的任务是否可以被别的更紧迫和更重要的任务抢占,可以分为抢占式调度和非抢占式调度。
在抢占式调度中,目前正在运行的任务可以被别的更紧迫和更重要的任务中断。
同时,被抢占的任务在将来可以恢复运行,且不会影响到任务的整体时间约束。
如果在调度中不允许正在运行的任务被别的任务中断,任务一旦占有了处理器便会一直运行直至完成,这样的调度则是非抢占式的,它比较适合于任务运行时间都比较短、所有任务可依次执行的系统。
3. 任务模型本文是基于文献[3]和文献[4]提出的改进的调度算法,主要适合具有以下特征的实时系统:(1) 所有任务运行在单处理器系统上(2) 优先级高的任务可以抢占优先级低的任务(3) 任务间相互独立(4) 任务的切换时间很小,可以忽略不计(5) 非周期任务先来先服务(6) 所有周期任务起始于临界时刻3.1 问题的描述设有一个任务集S=Tp1,Tp2,LL,Tp n,Tap1,Tap2,LL,Tap m(1)其中,Tp i(1≤i≤n)为周期任务,每个周期任务Tp i可用如下的四元式表示:Tp i=< Rp i,Cp i,Pp i,Dp i> (2)式中,Rp i为任务释放时间,Cp i为任务的最大执行时间,Pp i为任务周期,Dp i为任务时限;而Tap i(1≤ i≤ m)为非周期任务,每一个非周期任务可用如下的二元式表示:Tap i=<Cap i,Rap i > (3)式中,Capi为任务的最大执行时间,Rap i为任务释放时间。
设各个非周期任务的到达规律服从常数到达的泊松过程,到达率为λi(1 ≤i ≤m),则任务的平均到达时间间隔为1/λi,并且设Dp i≤Pp i[3]。
4. 任务的调度处理4.1 周期任务的处理RMS调度算法是一种典型的静态优先级调度算法,它根据任务的执行周期的长短来决定调度优先级,那些具有较短执行周期的任务将具有较高优先级。
DMS算法是在RMS算法的基础上发展起来的,它削弱了RMS算法中对任务模型的限制,允许任务的时限小于周期,它根据任务集中各任务的相对时限来静态分配优先级。
4.2 非周期任务的典型调度算法人们提出了许多非周期任务调度算法,这些算法可以分为两类:基于服务器(server-based)的算法与基于空闲时间(slack-based)的算法[2]。
服务器的算法,又称为带宽预留(bandwidth preserving)算法,其主要思想是:在保证满足硬实时周期任务截止期的前提下,引入一个或者几个额外的周期任务使用指定的处理器带宽作为服务器来处理非周期任务。
基于空闲时间的算法主要包括空闲时间偷取算法(slack stealing algorithm)、时间片移位算法(slot shiftingalgorithm)与双重优先级算法(dual priority algorithm),这些算法都是通过离线或者在线分析从定期任务调度的空隙获得尽可能多的处理时间来处理非定期任务。
为每个非定期请求分配一个尽可能早的截止期,这种截止期分配必须保证非定期任务的处理器利用率不能超过规定的最大值Us ,这就是TBS (total bandwidth server )算法的主要思想。
TBS 的定义非常简单,设第k 个非定期任务在时间t=r k 到达时,它被分配一个截止期[4]:d k =max(r k ,d k -1)+C k / U s (4)其中C k 表示这个非定期任务的执行时间,U s 是这个服务器的利用率,即处理器带宽,并且定义d 0=0。
4.3 实时系统中混合任务的处理DMS 算法只能用于周期任务的调度,对于非周期任务则无能为力。
然而,在现在的实时系统中,通常周期任务和非周期任务通常是共同存在的,为此,我们采用下面的方式进行混合任务调度。
任务调度算法如下:(1)、将周期任务按截止期大小设置优先级,并按优先级高低排列顺序,{Tp 1,Tp 2,LL ,Tp n },优先级越高,其优先级值越小。
即:priority(Tp i )>priority(Tp i +1),且priority(Tp i )=priority(Tp i +1)+1。
(2)、当有非周期任务Tap j =<Cap j ,Rap j >到达时,将其转换为临时周期任务T j =<Cap j ,P j ,Rap j ,D j >,并令P j =1/λi 。
即把周期任务看成是以平均到达时间间隔1/λi ,D k =max(ri ,d k -1)+C k / U s 为截止期的周期任务。
(3)、用DMS 根据下面的方式设置所有周期任务的优先级:当D j <D p1时,根据下式设置任务T j 的优先级,{j 1k k priority(T )=priority(Tp )priority(T )=priority(Tp )+1 k=1,2,,n L (5)当Dp i <D j <Dp i +1时,根据下式设置任务T j 的优先级,{j i k k priority(T )=priority(Tp )priority(T )=priority(Tp )+1 k=1,2,,n L (6) 当D j <Dp n 时,则根据下式设置任务T j 的优先级,j n priority(T )=priority(Tp )+1 (7)最后,按优先级高低顺序调度执行。
5. 瞬时过载处理在实际系统中,由于有非周期任务的随机产生,造成系统负载不断变化。
当到达的非周期任务的数量很多时,就有可能使系统会出现瞬时过载。
出现这种情况时,就要将一些不重要的任务卸去。
这里我们采用如下方法处理:(1)、当非周期任务到达时,先按前述方法设置任务的优先级,并判断系统是否可能会发生瞬时过载。
(2)、如果发现系统可能会过载,就按如下方式处理:检查所有任务的优先级和任务实现,如果发现有一个任务的优先级最低,又不能满足任务时限,则将其移出;如果最低优先级的任务有多个时,查看它们的任务时限,将任务实现最小的任务移出;若这种任务仍有多个时,再检索它们的执行时间,选取CPU 执行时间最长的任务,将之移出。
这种方法的目的是在系统出现瞬时过载时,将任务流中优先级最低、最不紧迫、且最不可能满足任务时限的任务移出,以使更多高优先级的、紧迫的任务通过调度执行,满足它们的任务时限,提高系统的性能。
为判断任务能否满足其任务时限,可用如下定理。
定理1:对于任务集S ={Tp 1,Tp 2,…,Tp n }中的任务Tp i ,如果满足下式,11i i j i i j j Dp Cp Cp Dp Tp −=⎡⎤×+≤⎢⎥⎣⎦∑ (8) 则任务Tp i 能满足其任务时限。
证明:高于Tp i 的任务到来后会先于任务Tp i 执行或中断任务Tp i 的执行。
11i i j j j Dp Cp Tp −=⎡⎤×⎢⎥⎣⎦∑是所有高于任务Tp i 的所有任务的执行时间之和。
如果它加上任务Tp i 的执行时间Cp i 之后,仍然小于任务时限,那么任务Tp i 肯定不会超时(即满足其任务时限)。
6. 系统可调度性分析定理2:若任务的时限等于任务的周期,即Dp i =Pp i ,则任务可调度的充分条件为:1/1(21)n n i i Un =≤−∑ (9)式中U i =Cp i /Pp i ,Tp i 为任务的利用率。
当n 很大时,处理机的利用率界限为ln2=0.69。
此定理考虑的是非常悲观的情况,在实际应用中,任务集一般不会碰到最坏的情况。
所以,即使这个定理的条件得不到满足时,任务集仍能够满足各任务的时限(即任务集是可调度的)。