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












