一种改进的实时混合任务调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种改进的实时混合任务调度算法
谢建平1,阮幼林1,2
1武汉理工大学信息工程学院,武汉(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=
式中,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 shifting