硬实时环境下的多任务调度算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 介Baidu Nhomakorabea 最近计算机广泛用于工业处理过程的监控,而未来可能会应用的更加广泛。用于这种场合的计算
机经常既要处理实时监控任务又要处理非实时的任务。然而,有些场合并不存在非实时的任务,此时, 为了获得较高的处理器利用率则只能通过好的调度算法。后面这种场合可称之为“纯过程控制”,本 文就对这种应用背景的调度算法进行分析。本文研究了两种调度算法,两种都是优先级驱动和抢占式 的,也就是任何高优先级的请求任务都可以中断目前运行的低优先级的任务。第一种调度算法采用固 定优先级,可以获得 0.7 或更高的处理器利用率。另一种调度算法采用动态优先级,可以获得完全的 处理器利用率。本文还对这两种调度算法的混合型进行了融合讨论。
图1:任务ti在任务tm的请求间执行
图2:调度两个任务
定理 1 的结果也表明某种意义上的最优先级分配方案,将在定理 2 中陈诉。让我们讨论假定有两个任 务 t1 和 t2 情况下的一般结论。设 T1 和 T2 分别为任务的请求周期且 T1<T2。如果设 t1 为高优先级任 务,那么根据定理 1 ,下面的不等式必定满足: (译注:在 T2 期间至少要保证 t2 执行一次,而 t1 可以执行多次)
很多文献对商业多任务分时系统进行了统计分析。文献[3-8]对多处理器的批处理调度和时分批处 理调度进行了研究。对“硬实时”的研究文献很少。文献[1]对“硬实时”的情况进行了研究,获得了 一种调度算法,但其有很大缺点,它的约束条件之一是必须所有的任务同一时间进行请求,这是不符 合实际的。文献[9]也讨论了软件调度问题,提出了一种 ALGOL 多任务编程程序,其可以由软件实现 或设计成一种特定场合的调度器。通过对资源、优先级、时间槽的分配,文献[9]提出了一种程序,此 程序计算出估计的时间分配,以确保服务按时完成。但文献[9]没有介绍程序必须使用的调度算法。
文献[10]对“实时”系统进行了介绍,并用传统的方法讨论了编程时遇到的问题。文献[10]对必须 应用实时开发软件的严格的工程控制管理进行了介绍。文献[11]对自动结帐系统软件进行了介绍。这 些介绍都是讨论了软件设计的一种系统方法,还没有用到实际中来。
3、环境 为获得硬实时环境中程序运行的具体分析数据,必须先对运行的环境作出一定的假定。当然,并
4、固定优先级调度算法 在这一节我们导出一个优先级分配的规则,由它生成一个最优的静态调度算法。决定这个分配规
则的一个重要概念就是任务的临界瞬点。任务请求的时限(deadline)定义为该任务的下一次请求的 到来时间。对于按某些调度算法调度的任务集合而言,如果时间t是一个未完成任务请求的时限,那么 我们说在时间t发生了溢出(overflow)。给定一个任务集合,如果任务被调度而不发生溢出,那么称 该调度算法是可行的。任务请求的响应时间定义为一个请求到请求响应结束时的时间跨度。(临界瞬 点定义为一时刻,在该时刻任务被请求将有最大响应时间)。任务的临界区间 是与该任务请求的响 应结束时间之间的间隔。我们有如下的定理:
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
硬实时多任务调度算法
摘要:本文对单处理器多任务调度问题进行了研究。笔者认为调度程序的特点是保证可靠的服务。本 文研究表明,一个最佳固定优先级调度器具有处理器利用率的上确界,当任务很多时此上确界可能为 0.7。本文研究还表明,根据任务时限进行动态优先级分配的调度算法可以获得百分之百的处理器利用 率。本文还对这两种调度技术的混合型算法进行了讨论。 关键字:实时多任务编程,调度,多任务调度,动态调度,优先级分配,处理器利用率,时限驱动调 度
4
4
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
了处理器。对给定的固定优先级调度算法,处理器利用率的最低上限就是所用任务集的任务充分利用 处理器时利用率的最小值。对于那些处理器利用率因子小于最低上限值的任务集合,一定存在一种可 行的固定优先级分配方案。另一方面,利用率因子超过了最低上限值,则是否存在可行的优先级分配 方案就要由任务的周期 Ti 来确定了。
2 背景 一台过程控制计算机需要处理一个或多个监控任务。对飞船运行轨迹的监控就是一个很好的应用
例子。这种监控功能涉及到很多任务,有些任务响应由被监控设备上的计算机处理执行事件,其他任 务则响应其余的任务。而每种任务都是在被请求之后才被执行,且都必须在规定的时间内完成,则这 种就叫“硬实时”。而对于“软实时”,响应时间的统计分配是可以接受的。
非所有的假定都是绝对必要,在后面的章节中将讨论放宽这些假定会产生的影响。 假定如下: 1、 所有“硬时限”(hard deadline)任务的请求是周期性发生,请求间具有一个常量间隔。 2、 时限仅仅考虑运行能力的限制――比如每个任务必须在下一个让它运行的请求发生之前完成。 3、 请求的各个任务都是独立的,因为每个任务不会依赖于其它任务的初始化或完成。
5.可能达到的处理器利用率 就这一点来说,有可利用的工具来确定在固定优先级系统中处理器利用率的最小上限。我们定义
(处理器)利用率为任务集执行花费处理器时间的百分比。换句话说,利用率等于 1 减去处理器空闲 时间。因为 Ci/Ti 为花费在执行任务 ti 的处理器,所以对 m 个任务,利用率为
虽然处理器利用率能通过增加 Ci 的值和减小 Ti 的值来提高,然而要求所有任务在它们的临界点 满足它们截止期的要求就是上限。显然,我们不关心处理器利用率的最小值。但关注处理器利用率的 最大值却是有意义的。再明确以下我们的看法。对一种可行的优先级分配算法,如果对任务集中任意 任务运行时间的增加将使得原本对该任务集可行的优先级分配算法不再可行,则称该任务集充分利用
假定1对比了Martin[2]的意见,但看来对于纯处理控制来说更有效。假定2消除了单个任务的排队问题。 为实现假定2,必须存在小的但可能大量的缓冲区为每个周期性函数服务。Any control loops closed within the computer must be designed to allow at least an extra unit sample delay. 注意假定3不包括这种情况:任务Tj仅仅在任务Ti发生一定次数(为固定值)——设为N次——后发生 一次。这种情况的模型表示为:周期性任务Tj是Ti周期的N倍,第N次Ti请求的同时伴随着第1次Tj请 求。假定4中的运行时间可以解释为一个任务的最大处理时间。这些假定用两个数字来描述一个任务 的全部特性:即请求周期和运行时间。除非格外声明,本文将采用符号τ1,τ2,……,τm表示m 个周期性任务,用T1,T2,……,Tm表示请求周期,用C1,C2,……,Cm表示运行时间。一个任 务的请求率(request rate)定义为它的请求周期的倒数。
1
1
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
4、 每个任务的运行时间(run-time)是个常量,不会随时间的变化而变化。运行时间(run-time) 是指一个处理器无中断地运行该任务所需的时间。
5、 系统中的每个非周期性任务都是特定的,初始化例程或错误恢复例程。它们运行时就取代周期 性的任务,并且不具有硬时限。
同理,对于所有的ti,i=2,…,m-1,我们都可以证明这个定理。
2
2
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
这个结论的价值在于通过简单直接的计算可以决定一个给定的优先级分配能否产生一个可行的调度 算法。特别地,如果所有任务的请求在它们的临界瞬点前被完成,都没有超过各自的时限(deadline), 那么这个调度算法就是可行的。举例如下:假定两个任务τ1和τ2,各自请求周期为T1=2,T2=5, 运行时间C1=1,C2=1。如果任务τ1优先级高于τ2,则通过图2(a)可以看出这样的优先级分配是 可行的。进一步看,C2的值可以最大增长到2,优先级分配还是可行的,如图2(b)所示。相反,如 果任务τ2拥有更高的优先级,则C1和C2的值都不能超过1,才能使该优先级分配可行,如图2(c)所 示。
(2)式中暗示了(1)式。换句话说,无论 C1、C2 为何值,只要 T1<T2、t2 比 t1 优先级高时,任务 可调度,那么任务 t1 比任务 t2 优先级高时就可调度。相反情况下,调度是不可行的。因而,更一般 的合理的优先级分配方案是根据任务的请求频率来分配的,而与任务运行时间无关。具体来说,就是 高请求频率任务分配高优先级。该优先级分配方案就是著名的速率单调算法。由于该算法也证明,这 样的优先级分配在某种意义上是最优的,因为没有固定优先级分配规则能调度而一个速率单调算法不 能调度的任务集。 (译注:当 T2<T1 时,无论 c1 和 c2 为何值,如果一种调度算法在 t2 优先级高于 t1 时时可以调度的, 则当 t1 优先级高于 t2 时一定时可调度的,反之则不一定。
3
3
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
如果设 t2 位高优先级任务,那么下面的不等式一定成立: (译注:在 T1 期间至少要保证 t1 执行一次,即:在 T1<T2 的情况下,当 t1 为高优先级时,它们的 共有临界时刻一定小于当 t2 为高优先级的情况。)
所以有
由于速率单调优先级分配算法是最优的。所以对给定的任务集用速率单调算法调度时处理器利用 率大于等于其它优先级分配算法。因此,确定的最低上限是速率单调算法在所有可能请求周期和运行 时间任务的利用率的最大下界。 定理 3: 对固定优先级分配的两个任务集,处理器利用率的最低上界是U=2(21/2 -1). 证明:设 t1 和 t2 为两个任务,它们的周期和运行时间分别为 T1,T2 和 C1,C2。假定 T2>T1。根据速 率单调算法,t1 比 t2 优先级高。
结论:若选择两个任务中周期长的任务为高优先级将产生较长的临界区(时间长),所有选择周 期短的任务为高优先级将产生较短的临界区。)
定理 2: 如果对一些任务集有可行的优先级分配算法,则速率单调算法对该任务集也是可行的。 证明: 设 t1,t2,···,tm 为 m 个有可行优先级分配算法的任务。设 ti 和 tj 为有相邻优先级的两个任 务,且其中 ti 为高优先级任务。假定 Ti >Tj。若交换 ti 和 tj 的优先级,不难理解,作为结果的优先级 分配仍然是可行的。因此速率单调算法能满足对一系列优先级对重新排序(如上)后的任意优先级顺 序,故该定理得以证明。
定理1、任何任务的临界瞬点发生在这样一个时刻,在该时刻此任务被请求,而比该任务优先级 高的所有任务都在该时刻被请求。
证明:用τ1,τ2,……,τm表示一系列按优先级排序的任务,τm是其中最低优先级的任务。 考虑在t1时刻发生了一个τm的特定请求,假定在时间区间t1到t1+Tm(其中t1+Tm是指任务tm的后 继请求发生的时刻),任务τi(i<m)的请求发生在t2,t2+Ti,t2+2Ti,…,t2+kTi 时刻。如图1 所示。显然,由于任务τi请求会剥夺任务τm的运行,除非任务τm在时间t2时刻前完成,否则任务 τm的完成时间会向后延迟。从图1可以进一步看出,提前请求时刻t2不能加快任务请求τm的完成, 提前时刻t2不是让τm的完成时间不变就是使其完成时间延迟。所以,τm的最大延迟时间就是当时刻 t2和t1同时发生的时候。
调度算法就是一个规则集合,它用来决定任务在某个特定时刻被执行。本文中讨论的调度算法是 可剥夺和优先级驱动算法。这意味着当一个高优先级的任务请求到来时,当前运行的任务立即被中断, 高优先级的新任务马上开始运行。因此对算法的说明主要就是对任务分配优先级方法的说明。如果一 个算法分配给任务一个一成不变的优先级,那么称该算法为静态算法。静态算法也称为固定优先级调 度算法。相反,一个算法分配给任务的优先级能够因请求变化而改变,那么该算法称为动态算法。一 个算法给一些任务固定优先级而其它一些任务动态优先级,那么该算法称为混合算法。
机经常既要处理实时监控任务又要处理非实时的任务。然而,有些场合并不存在非实时的任务,此时, 为了获得较高的处理器利用率则只能通过好的调度算法。后面这种场合可称之为“纯过程控制”,本 文就对这种应用背景的调度算法进行分析。本文研究了两种调度算法,两种都是优先级驱动和抢占式 的,也就是任何高优先级的请求任务都可以中断目前运行的低优先级的任务。第一种调度算法采用固 定优先级,可以获得 0.7 或更高的处理器利用率。另一种调度算法采用动态优先级,可以获得完全的 处理器利用率。本文还对这两种调度算法的混合型进行了融合讨论。
图1:任务ti在任务tm的请求间执行
图2:调度两个任务
定理 1 的结果也表明某种意义上的最优先级分配方案,将在定理 2 中陈诉。让我们讨论假定有两个任 务 t1 和 t2 情况下的一般结论。设 T1 和 T2 分别为任务的请求周期且 T1<T2。如果设 t1 为高优先级任 务,那么根据定理 1 ,下面的不等式必定满足: (译注:在 T2 期间至少要保证 t2 执行一次,而 t1 可以执行多次)
很多文献对商业多任务分时系统进行了统计分析。文献[3-8]对多处理器的批处理调度和时分批处 理调度进行了研究。对“硬实时”的研究文献很少。文献[1]对“硬实时”的情况进行了研究,获得了 一种调度算法,但其有很大缺点,它的约束条件之一是必须所有的任务同一时间进行请求,这是不符 合实际的。文献[9]也讨论了软件调度问题,提出了一种 ALGOL 多任务编程程序,其可以由软件实现 或设计成一种特定场合的调度器。通过对资源、优先级、时间槽的分配,文献[9]提出了一种程序,此 程序计算出估计的时间分配,以确保服务按时完成。但文献[9]没有介绍程序必须使用的调度算法。
文献[10]对“实时”系统进行了介绍,并用传统的方法讨论了编程时遇到的问题。文献[10]对必须 应用实时开发软件的严格的工程控制管理进行了介绍。文献[11]对自动结帐系统软件进行了介绍。这 些介绍都是讨论了软件设计的一种系统方法,还没有用到实际中来。
3、环境 为获得硬实时环境中程序运行的具体分析数据,必须先对运行的环境作出一定的假定。当然,并
4、固定优先级调度算法 在这一节我们导出一个优先级分配的规则,由它生成一个最优的静态调度算法。决定这个分配规
则的一个重要概念就是任务的临界瞬点。任务请求的时限(deadline)定义为该任务的下一次请求的 到来时间。对于按某些调度算法调度的任务集合而言,如果时间t是一个未完成任务请求的时限,那么 我们说在时间t发生了溢出(overflow)。给定一个任务集合,如果任务被调度而不发生溢出,那么称 该调度算法是可行的。任务请求的响应时间定义为一个请求到请求响应结束时的时间跨度。(临界瞬 点定义为一时刻,在该时刻任务被请求将有最大响应时间)。任务的临界区间 是与该任务请求的响 应结束时间之间的间隔。我们有如下的定理:
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
硬实时多任务调度算法
摘要:本文对单处理器多任务调度问题进行了研究。笔者认为调度程序的特点是保证可靠的服务。本 文研究表明,一个最佳固定优先级调度器具有处理器利用率的上确界,当任务很多时此上确界可能为 0.7。本文研究还表明,根据任务时限进行动态优先级分配的调度算法可以获得百分之百的处理器利用 率。本文还对这两种调度技术的混合型算法进行了讨论。 关键字:实时多任务编程,调度,多任务调度,动态调度,优先级分配,处理器利用率,时限驱动调 度
4
4
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
了处理器。对给定的固定优先级调度算法,处理器利用率的最低上限就是所用任务集的任务充分利用 处理器时利用率的最小值。对于那些处理器利用率因子小于最低上限值的任务集合,一定存在一种可 行的固定优先级分配方案。另一方面,利用率因子超过了最低上限值,则是否存在可行的优先级分配 方案就要由任务的周期 Ti 来确定了。
2 背景 一台过程控制计算机需要处理一个或多个监控任务。对飞船运行轨迹的监控就是一个很好的应用
例子。这种监控功能涉及到很多任务,有些任务响应由被监控设备上的计算机处理执行事件,其他任 务则响应其余的任务。而每种任务都是在被请求之后才被执行,且都必须在规定的时间内完成,则这 种就叫“硬实时”。而对于“软实时”,响应时间的统计分配是可以接受的。
非所有的假定都是绝对必要,在后面的章节中将讨论放宽这些假定会产生的影响。 假定如下: 1、 所有“硬时限”(hard deadline)任务的请求是周期性发生,请求间具有一个常量间隔。 2、 时限仅仅考虑运行能力的限制――比如每个任务必须在下一个让它运行的请求发生之前完成。 3、 请求的各个任务都是独立的,因为每个任务不会依赖于其它任务的初始化或完成。
5.可能达到的处理器利用率 就这一点来说,有可利用的工具来确定在固定优先级系统中处理器利用率的最小上限。我们定义
(处理器)利用率为任务集执行花费处理器时间的百分比。换句话说,利用率等于 1 减去处理器空闲 时间。因为 Ci/Ti 为花费在执行任务 ti 的处理器,所以对 m 个任务,利用率为
虽然处理器利用率能通过增加 Ci 的值和减小 Ti 的值来提高,然而要求所有任务在它们的临界点 满足它们截止期的要求就是上限。显然,我们不关心处理器利用率的最小值。但关注处理器利用率的 最大值却是有意义的。再明确以下我们的看法。对一种可行的优先级分配算法,如果对任务集中任意 任务运行时间的增加将使得原本对该任务集可行的优先级分配算法不再可行,则称该任务集充分利用
假定1对比了Martin[2]的意见,但看来对于纯处理控制来说更有效。假定2消除了单个任务的排队问题。 为实现假定2,必须存在小的但可能大量的缓冲区为每个周期性函数服务。Any control loops closed within the computer must be designed to allow at least an extra unit sample delay. 注意假定3不包括这种情况:任务Tj仅仅在任务Ti发生一定次数(为固定值)——设为N次——后发生 一次。这种情况的模型表示为:周期性任务Tj是Ti周期的N倍,第N次Ti请求的同时伴随着第1次Tj请 求。假定4中的运行时间可以解释为一个任务的最大处理时间。这些假定用两个数字来描述一个任务 的全部特性:即请求周期和运行时间。除非格外声明,本文将采用符号τ1,τ2,……,τm表示m 个周期性任务,用T1,T2,……,Tm表示请求周期,用C1,C2,……,Cm表示运行时间。一个任 务的请求率(request rate)定义为它的请求周期的倒数。
1
1
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
4、 每个任务的运行时间(run-time)是个常量,不会随时间的变化而变化。运行时间(run-time) 是指一个处理器无中断地运行该任务所需的时间。
5、 系统中的每个非周期性任务都是特定的,初始化例程或错误恢复例程。它们运行时就取代周期 性的任务,并且不具有硬时限。
同理,对于所有的ti,i=2,…,m-1,我们都可以证明这个定理。
2
2
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
这个结论的价值在于通过简单直接的计算可以决定一个给定的优先级分配能否产生一个可行的调度 算法。特别地,如果所有任务的请求在它们的临界瞬点前被完成,都没有超过各自的时限(deadline), 那么这个调度算法就是可行的。举例如下:假定两个任务τ1和τ2,各自请求周期为T1=2,T2=5, 运行时间C1=1,C2=1。如果任务τ1优先级高于τ2,则通过图2(a)可以看出这样的优先级分配是 可行的。进一步看,C2的值可以最大增长到2,优先级分配还是可行的,如图2(b)所示。相反,如 果任务τ2拥有更高的优先级,则C1和C2的值都不能超过1,才能使该优先级分配可行,如图2(c)所 示。
(2)式中暗示了(1)式。换句话说,无论 C1、C2 为何值,只要 T1<T2、t2 比 t1 优先级高时,任务 可调度,那么任务 t1 比任务 t2 优先级高时就可调度。相反情况下,调度是不可行的。因而,更一般 的合理的优先级分配方案是根据任务的请求频率来分配的,而与任务运行时间无关。具体来说,就是 高请求频率任务分配高优先级。该优先级分配方案就是著名的速率单调算法。由于该算法也证明,这 样的优先级分配在某种意义上是最优的,因为没有固定优先级分配规则能调度而一个速率单调算法不 能调度的任务集。 (译注:当 T2<T1 时,无论 c1 和 c2 为何值,如果一种调度算法在 t2 优先级高于 t1 时时可以调度的, 则当 t1 优先级高于 t2 时一定时可调度的,反之则不一定。
3
3
西南交通大学 信息学院 嵌入式系统实验室 内部学习研究资料 请勿扩散
如果设 t2 位高优先级任务,那么下面的不等式一定成立: (译注:在 T1 期间至少要保证 t1 执行一次,即:在 T1<T2 的情况下,当 t1 为高优先级时,它们的 共有临界时刻一定小于当 t2 为高优先级的情况。)
所以有
由于速率单调优先级分配算法是最优的。所以对给定的任务集用速率单调算法调度时处理器利用 率大于等于其它优先级分配算法。因此,确定的最低上限是速率单调算法在所有可能请求周期和运行 时间任务的利用率的最大下界。 定理 3: 对固定优先级分配的两个任务集,处理器利用率的最低上界是U=2(21/2 -1). 证明:设 t1 和 t2 为两个任务,它们的周期和运行时间分别为 T1,T2 和 C1,C2。假定 T2>T1。根据速 率单调算法,t1 比 t2 优先级高。
结论:若选择两个任务中周期长的任务为高优先级将产生较长的临界区(时间长),所有选择周 期短的任务为高优先级将产生较短的临界区。)
定理 2: 如果对一些任务集有可行的优先级分配算法,则速率单调算法对该任务集也是可行的。 证明: 设 t1,t2,···,tm 为 m 个有可行优先级分配算法的任务。设 ti 和 tj 为有相邻优先级的两个任 务,且其中 ti 为高优先级任务。假定 Ti >Tj。若交换 ti 和 tj 的优先级,不难理解,作为结果的优先级 分配仍然是可行的。因此速率单调算法能满足对一系列优先级对重新排序(如上)后的任意优先级顺 序,故该定理得以证明。
定理1、任何任务的临界瞬点发生在这样一个时刻,在该时刻此任务被请求,而比该任务优先级 高的所有任务都在该时刻被请求。
证明:用τ1,τ2,……,τm表示一系列按优先级排序的任务,τm是其中最低优先级的任务。 考虑在t1时刻发生了一个τm的特定请求,假定在时间区间t1到t1+Tm(其中t1+Tm是指任务tm的后 继请求发生的时刻),任务τi(i<m)的请求发生在t2,t2+Ti,t2+2Ti,…,t2+kTi 时刻。如图1 所示。显然,由于任务τi请求会剥夺任务τm的运行,除非任务τm在时间t2时刻前完成,否则任务 τm的完成时间会向后延迟。从图1可以进一步看出,提前请求时刻t2不能加快任务请求τm的完成, 提前时刻t2不是让τm的完成时间不变就是使其完成时间延迟。所以,τm的最大延迟时间就是当时刻 t2和t1同时发生的时候。
调度算法就是一个规则集合,它用来决定任务在某个特定时刻被执行。本文中讨论的调度算法是 可剥夺和优先级驱动算法。这意味着当一个高优先级的任务请求到来时,当前运行的任务立即被中断, 高优先级的新任务马上开始运行。因此对算法的说明主要就是对任务分配优先级方法的说明。如果一 个算法分配给任务一个一成不变的优先级,那么称该算法为静态算法。静态算法也称为固定优先级调 度算法。相反,一个算法分配给任务的优先级能够因请求变化而改变,那么该算法称为动态算法。一 个算法给一些任务固定优先级而其它一些任务动态优先级,那么该算法称为混合算法。