众所周知,实时调度最经典的论文是C.Liu和Layland的RMS单调速率调度算法,是实时操作系统中最优的固定优先级调度算法
C.L. Liu, J.W. Layland, Scheduling algorithms for multiprogramming in a hard-real-time environment, J. ACM 20 (1) (1973) 46–61.
该论文的结论是正确的,但是该论文的证明过程存在两个瑕疵:
- 改论文对于利用率最小化证明那里的case 2那儿错了
- 对于最后的结论,任务集利用率小于那个上界,就可以调度,没有严格给出的证明
上述两个问题,被这篇论文指出以及都修正了。
Devillers, R., & Goossens, J. (2000). Liu and Layland’s schedulability test revisited. Information Processing Letters, 73(5-6), 157–161. doi:10.1016/s0020-0190(00)00016-8
该文章证明思路如下:
- 关于第一个问题:Devillers提出如下
- C.Liu他们说了如果总利用率小于那个上界,则该任务集可调度,但是却没有给出证明,因此Devillers给出了如下定理的严格证明:
证明过程为:
反证法的思路:
- 明确要证明的东西
- 分析出这个东西的反面
- 假设这个反面是成立的,也就是作为前提
- 一步步往下推导,推导出和任何已有正确的东西矛盾的,就停止
- 既然发生了矛盾,说明要么其前提错误的,要么推导过程是错误的。很明显,只有前提可能是错的,因为推导过程是数学严谨的。
- 因此前提不可能成立,因此它的反面就一定是成立的(这正式我们要证明的东西),因此得证。
原理就是:假设存在一个任务集,Un<bn,然后这个任务集不可调度。将Un合理转换为充分利用处理机且可调度的Un',发现Un'<bn,这不就跟已有的合理结论:bn为 充分利用处理机的可调度任务集 的最小利用率 矛盾了嘛。因此存在一个任务集,Un<bn,然后这个任务集不可调度 是不成立的,也就是找不到一个任务集 Un<bn,使得这个任务集不可调度,这就是我们的想要证明的结果,所以得证。