您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > RM和EDF算法原论文翻译
1RM和EDF——硬实时环境下多线程的调度算法摘要:单处理器的多线程调度问题的研究范围已经从它本身的特征拓展到程序运行的可靠性。研究表明最佳固定优先级调度在大型任务序列集的情况下的最大调度利用率仅为70%。此外,根据当前任务序列截止期动态分配优先级可以使调度率利用率等于1。本文还讨论了将两种调度方法结合起来的算法。1引言近年来,运用计算机来控制和监测工业生产过程已得到广泛应用和不断扩展,并且在未来很可能得到更大的拓展。此类应用的多数情况下,计算机由一定数目的时限监控程序和一批非时限任务流所共用。然而,在其他的应用中,非时限作业不存在且计算机的有效利用只能通过谨慎调度时限监测程序来达到。后者被称为“纯过程控制”且为本文呈现的组合调度分析提供了理论背景。本文研究了此类程序设计中的两种调度算法,这两种均为可抢断优先级驱动算法,这意味着正在处理的任务可被任何高优先级任务中断。第一个算法用一个固定优先级分配能使处理器利用率到达约70%甚至更大。第二个算法通过动态分配优先级可以达到处理器的全利用。此外,本文还讨论了两个算法的结合。2背景一个程序控制计算机执行一个或更多的监控程序。追踪航天器运行轨迹的天线尖端就是此类监控程序的一个例子。每个程序与一系列任务序列集相联且共同被执行。此类任务中的一些任务是为了响应计算机监控的设备所发生的事件。这些任务不能先于事件执行。每个任务都必须在事件按要求释放后的固定时间内执行完毕。在此时间段内的服务都需确保稳定性。将运行环境分类为“硬实时”[1]是为了在可接受的响应时间统计分布上与“软实时”相对应。多数现有多程序设计文献是针对商业分时系统的统计数据分析(文献[2]包含了详细的参考书目)。也有文献针对更有意思的方面,比如调度批量处理设备或是混合批量分时设备,这些调度通常是在如文献[3]-[8]中多处理器配置环境下。仅有少数论文直接讨论如何攻克“硬实时”程序设计的难关。Manacher[1]提出了硬实时环境下的任务的调度的算法,但它的结果受到一个不现实情况的限制,比如对所有任务只有一个请求时间,即便将多截止时间考虑在内。Lampson[9]2概括性的讨论了软件调度问题并且提出了一套ALGOL多程序设计步骤,这些步骤可以通过软件执行或是设计成用于特殊目的的调度器。对于资源的配置、优先级分配及时序,他提出了一个计算估计的响应时间的程序,此程序是基于针对需要可靠性保证的程序所提供的时间信息。然而,它并没有描述这个程序所必须使用的算法。Martin[10]的文章描述了“实时”系统的范围且有条理的讨论了编程过程中遇到的难题。Martin提出在实时软件研发期间必须保持严格的工程管理控制,他的这一论述得到了Jarauch[11]的自动结账软件系统论文的强烈回应。这些研讨旨在强调软件设计中运用更为系统的方法的重要性。3环境为了得到硬实时环境下程序运行的分析结果,必须对运行环境作出一些假设。并不是所有的这些假设都是绝对必要的,在后面的章节中会讨论放宽假设条件后的影响。(A1)存在硬截止期的所有任务的请求是周期性的,且请求可被经常的中断。(A2)截止期仅由运行能力的限制组成,也就是说,每个任务必须在下一个请求发生前完成。(A3)请求中的任务是互相独立的,某个任务不依赖于这个请求中其他任务是否初始化或已经完成。(A4)每个任务的运行时间不变且不随时间变化。运行时间是指处理器无中断地执行任务所需要的时间。(A5)系统中的所有非周期任务都是特殊的,它们是初始和故障恢复程序,它们可以在自身运行时取代周期性任务,并且没有硬、关键截止期。假设(A1)与Martin[12]形成对比,但显得对纯过程控制更加有效。假设(A2)消除了单个任务的排队问题。对于假设(A2)而言,每个外设功能必须拥有少量但可能至关重要的缓冲硬件。任何计算机内部结束的控制跳转都必须允许至少一个单元的采样延迟。注意到假设(A3)并不排除任务j的出现只能遵循任务i的出现次数,此数为固定的,即为N。这种情况可以通过选择任务j和i的周期来建模,以便使j的周期是i的N倍,并且N次i请求会与1次j请求一致等等。假设3(A4)的运行时间作为最大任务处理时间且可以被中断。通过这种方法,请求继承者所需的时间和抢占代价也能被考虑在内。因为有大容量的主存,而且主存和辅助存储设备之间的数据传输相互重叠,程序在现代计算机系统环境下运行,因此假设(A4)是一个很好的近似,即使它并不确切。这些假设使得一个任务的完成特征有以下两个指标:它的请求周期和它的运行时间。除非另有说明,在本文中我们用12,,...,m来表示m个周期任务,且它们的请求周期是12,,...,mTTT,运行时间各为12,,...,mCCC。任务的请求速率是其请求时间的倒数。一个调度算法是一套决定在特定时刻所执行的任务的规则。本文研究的调度算法是优先级驱动的可抢断算法。也就是说,任何时刻,具有最高优先级别的任务总是最先得到执行。如果当前有其他的较低优先级任务正在执行,则该较低优先级任务被抢占,让位给具有最高优先级的任务执行,直至就需队列中没有高于该任务优先级的任务时,该任务恢复执行。如此一来,此算法等价于分配任务优先级的方法。若分配给任务的优先级是不变的,我们称之为“静态”调度算法。静态调度算法又称“固定”优先级调度算法。若分配给任务的优先级可能随请求的不同而不同,我们称之为“动态”调度算法。如果某些任务优先级是固定的而其余是变动的,则该算法称为“混合调度算法”。4固定优先级调度算法图1在m的请求之间执行i本节我们得到一个优先级分配规则,该规则源于静态调度算法。决定该规则的一个很重要的方面是一个任务的“关键时刻”。一个任务请求的截止期定义为同一任务的下一次请求的时间间隔。根据一些调度算法,对于任务序列集的调度,若t是一个未完成请求的截止时刻,则我们说t时刻发生了溢出。对于给定的任4务序列集,一个调度算法是可行的当所有任务都能调度完毕且未发生溢出。我们定义任务请求的响应时间为请求发出时刻与响应该请求结束时刻之间的时间段。任务的“关键时刻”是指在该时刻的任务请求有最长的响应时间。任务的“关键时间域”是指关键时刻和响应任务请求结束时刻之间的时间间隔。我们提出如下定理:定理1任务的关键时刻均发生在同时请求它和比其优先级高的任务时。证明用12,,...,m表示一系列按优先级顺序排列的任务,m的优先级最低。若使在1t时刻对任务m发出请求,假定在1t与1mtT之间发出了对任务m的再一次请求,而任务,iim的请求发生在时刻2222,,2,...,iiittTtTtkT,如图1所示。显然,i对m的抢断会对完成任务m造成一定延迟,任务m的请求是在1t时刻发出的,直至任务在时刻2t之前完成。此外,从图1我们可以直观的看到提前请求2t时间并不会加速任务m的完成。提前请求时间既不会改变也不会延迟任务m的完成时间。因此,当2t与1t重合时,完成任务m的延迟时间最长。对于所有任务,2,...,1iim,同理可知,故定理得证。图2两个任务的调度这个结论的价值在于通过简单的计算就可以决定一个给定的任务优先级是否能产生一个可行的调度算法。特别的,如果所有发生在其关键时刻的任务请求5都能在它们各自的截止期之前完成,则此调度算法是可行的。例如,任务12,的请求周期分别为122,5TT,运行时间为121,1CC。1的优先级高于2,从图2(a)中我们可以看出优先级分配是可行的。此外,从图2(b)中可看出2C的值最大可增至2。另一方面,若使。2的优先级高于1,如图2(c)所示,则12,CC的值都不得超过1。定理1也得到了一个最佳优先级分配算法,我们会在定理2中做阐述。让我们进一步对调度任务12,的一般结论做扩展。12,的请求周期分别为12,TT,且12TT。若1的优先级更高,则根据定理1,必须满足不等式:21122/TTCCT(1)若得优先级更高,则必须满足不等式:121CCT(2)由于:2112122112///TTCTTCTTTT故(1)已包含(2)。也就是说,在12TT的情况下,无论何时,只要2的优先级高于1,则任务可调度,而当1的优先级高于2时,任务也能被调度。因此,更一般的来说,优先级分配的一个合理的规则似乎是根据任务的请求速率来分配优先级而不去管它们的运行时间。特别的,任务的请求速率越高,优先级越大。这种优先级分配方法称为“单调速率优先级分配”。结果表明,当不能被RM算法调度的任务序列集同样也不能被其他固定优先级分配规则调度时,RM算法是最优的。定理2对于一个任务序列集,若存在可行的优先级分配,则对于此任务序列集,RM算法是可行的。证明12,,...,m为一个包含m个任务的序列集,且存在可行的优先级分配算法。i和j的优先级相邻且i的优先级较高。设ijTT。交换i和j的优先级后,不难发现所得到的优先级分配仍是可行的。对于一个已排序的任务序列集,依照6上述方法对相邻优先级的一对任务进行重新排序,即可得到RM算法,因此定理2得证。5可达到的处理器利用率目前,对于固定优先级系统,已有可判定处理器利用率上确界的工具。定义“(处理器)利用率因子”为:执行任务序列集的过程中,处理器耗费时间的间隔。换句话说,利用率因子等价于1减去处理器空余时间的间隔。由于/iiCT是处理器执行任务i的时间间隔,对于m个任务,利用率因子为:1(/)miiiUCT尽管可通过增大iC或减小iT的值来提升处理器利用率,但由于所有任务在其关键时刻必须满足截止期的要求,故利用率的上界受到限制。研究处理器利用率因子的最小值显然是没有乐趣的。若优先级分配是可行的且增大任何任务的运行时间都会使得此优先级分配不可行,则称任务序列集完全利用了处理器。对于一个给定的固定优先级调度算法,利用率因子的上确界为完全利用处理器的任务序列集中利用率因子的最小值。对于所有处理器利用率因子低于这个确界的所有任务,存在一个可行的固定优先级分配算法。另一方面,当且仅当任务的彼此关联适当,才能达到高于这个上确界的利用率。由于RM算法是最优的,对于给定的任务序列集而言,它的利用率因子大于或等于其他优先级分配算法。因此,RM算法利遍及任务所有的请求周期和运行时间的用率因子的下确界即为所要确定的上确界。这个确界起初由两个任务组成,然后扩充为任意数量的任务。定理3对于固定优先级的两个任务,处理器利用率因子的上确界为122(21)U。证明任务1和2的周期和运行时间分别为12,TT和12,CC。设21TT。根据RM算法,1的优先级高于2。在2的关键时间域内,有21/TT个任务1的请求。我们通过调整2C的值使得在关键时间域内能使处理器得到完全利用。有以下两种情况:7情况1运行时间1C足够小,使得在的关键时间域内所有1的请求都能在下一个2请求之前完成。即:12121/.CTTTT因此,2C的最大值为22121/.CTCTT相应的处理器利用率因子为1122111/1//.UCTTTT在此情况下,处理器利用率因子U在1C中单调递减。情况221/TT个1的执行时间与下一个2的请求重合。在这种情况下12121/.CTTTT2C的最大值为2121121//.CCTTTTT相应利用率因子为212111221(/)/1/1//.UTTTTCTTTT在这种情况下,U在1C中单调递增。很显然U的最小值发生在这两种情况的交界处。即,对于12121/.CTTTT我们有21212121211(/)////.UTTTTTTTTTT(3)为了表示方便,我们使21/ITT,21/fTT。等式(3)可以写为11/().UffIf因为U随着单调
本文标题:RM和EDF算法原论文翻译
链接地址:https://www.777doc.com/doc-3381824 .html