Skip to content

方法Method

固定优先级响应时间分析

Fixed-priority response-time analysis · Response time analysis · RTA schedulability

在独立可抢占约束截止期模型中逐次计入高优先级干扰,计算最小响应时间不动点,并区分政策失败与任务集不可行。

形式陈述 ​

一个任务的优先级不随每次deadline变化 ​

沿用偶发任务的C/D/T合同,给每个任务分配固定、互异的优先级。每次运行最高优先级的就绪作业;同一任务的作业按释放先后处理。hp(i)表示优先级高于i的任务集合。

主定理仍要求单核、任意点可抢占、无锁阻塞、无自挂起、无抖动和零调度开销,且Dᵢ≤Tᵢ。这里的Rᵢ是释放到全部完成的最坏响应,不是第一次派发的等待。按从高到低的顺序验收任务;若一个高优先级任务已经失败,先报告这份失败,不把随后低优先级计算当成全系统保证。

在这些条件下,任务i的最坏响应出现在临界瞬间:它与所有高优先级任务同时释放,随后高优先级任务每隔其最小T再次释放,服务都取C。相应最小正不动点满足

Ri=Ci+∑j∈hp(i)⌈RiTj⌉Cj.

若这个解不超过Dᵢ,则i在所有允许的到达中按时;若在达到不动点之前就超出Dᵢ,临界瞬间执行提供本优先级次序的失败见证。[1, §3.1,式(1)(2)]

用明确出口求最小不动点 ​

从w₀=Cᵢ开始,反复计算

wk+1=Ci+∑j∈hp(i)⌈wkTj⌉Cj.

若w₀>Dᵢ立即失败;否则每轮先检查新值是否超过Dᵢ,再检查是否等于旧值。相等且不超期就返回Rᵢ=wₖ;增长则继续。对于正整数参数,每次未停止的严格增长至少1,至多Dᵢ−Cᵢ+1次增长/检查便触达固定点或超过期限。无需等待一个可能在很远未来才收敛的无界迭代。

直觉

窗口变长,会允许更多次高优先级到达 ​

假设i从0等到w。在半开区间[0,w)中,高优先级任务j可在0、Tⱼ、2Tⱼ……释放,共⌈w/Tⱼ⌉份。它们都排在i之前,每份最多Cⱼ。i自己的C加这些干扰,就是完成所需窗口的新估计。

若w恰好是Tⱼ的整数倍,时刻w到达的新作业不进入[0,w)。i若已经完成,先结算完成再接纳它;若误用⌊w/Tⱼ⌋+1,会把边界上的下一份多算进去。只在恰好边界处,差1也可能改变验收结论。

迭代为何不会跳过正确答案 ​

右边函数F(w)单调不减,w₁≥w₀,因此整个序列不减。任何不动点R必须≥Cᵢ;若wₖ≤R,单调性给wₖ₊₁=F(wₖ)≤F(R)=R。所以所有迭代值都不超过任何可行不动点,第一次停下得到的就是最小者,不是任意找到了一个方程根。

在临界瞬间,从i开始到它完成,处理器不会空闲,也不会服务比i更低的工作。它只消耗i本身与窗口内释放的高优先级服务,故完成时恰满足这个方程。迭代把“加进这些干扰之后又来了几份”的连锁效应逐轮算完。

临界瞬间结论是调度定理的一部分,不是由单调性单独推出。其核心是把高优先级请求向被分析作业的释放点靠拢:这不会给低优先级作业增加提前获得的服务,再把后继请求按最小间隔排放,得到最大的干扰形态。固定偏移、抖动、自挂起或其它依赖会改变可允许的平移,必须重新检查定理条件;原论文与后续分析分别明确这些范围。[2, §4,Theorem 1;1, §§2–3]

例子与边界

同一组三任务的失败证书 ​

给A=(1,3,4)、B=(2,5,5)、C=(2,7,10)分配A>B>C。先验A:没有更高任务,R_A=1。再验B:2→3→3,所以R_B=3≤5。

对C,逐轮结果为:

旧w A份数⌈w/4⌉ B份数⌈w/5⌉ 新w=2+份数A+2×份数B
2 1 1 5
5 2 1 6
6 2 2 8

新值8已经超过D_C=7,立即返回失败。同步轨迹中,C₀只在[3,4)得到1单位服务,随后A₁在[4,5)运行,B₁在[5,7)运行;到7,C₀还剩1,直到[7,8)才做完。

把C的D从7放宽到9,其它参数和优先级不变,迭代可以再算8→8,得R_C=8≤9。失败原因是既定执行量、到达频率和期限共同形成的,不是某个程序“看起来太慢”。

EDF可行,不保证任意固定次序也可行 ​

主例的EDF需求表全部通过;它会在5继续运行deadline7的C₀,而非刚到的B₁。固定A>B>C失败,并没有证明任务集本身不可行。

即使期限等于周期也会分开。取A=(2,5,5)、B=(4,7,7),U=34/35≤1,EDF可行。按较短周期优先,B的迭代4→6→8超过7。这不与速率单调(RM)的固定优先级最优性矛盾:经典RM只在其隐含截止期独立模型中与其它固定次序相比,不承诺包含所有EDF可行集。[2, §4,Theorem 2]

D≠T时,可以按较短相对截止期优先(DM),但选择一个排序规则仍不能代替具体响应验算。本页实现接受显式给定的任务次序,不把RM、DM的名称当成成功标志。

D>T时,一份作业可能压住下一份 ​

若相对期限长于最小间隔,同一任务的后续作业可以在上一份未完成时进入队列。只计算第一次释放的响应,可能漏掉忙窗内后续作业更坏的响应。需要分析多次作业及自干扰,不能继续把右边自己的需求固定成一个Cᵢ。[1, §3.2]

下载器明确拒绝D>T用于本页核心分析,并返回模型不支持;这与在支持模型内发现超期不同。拒绝一个输入模型,不是证明该系统不可调度。

推论与应用

阻塞项必须附带来源 ​

有锁时常见扩展为wₖ₊₁=Cᵢ+Bᵢ+Σ⌈wₖ/Tⱼ⌉Cⱼ,但Bᵢ必须是已证明适用于该任务每次响应的低优先级CPU阻塞总量上界,而且要与所用协议、优先级和高优先级干扰口径相容。不能把任意一次观察到的锁等待墙钟时长塞进去;该时长可能已经包括右边将再次计数的高优先级执行。

例如只有一个低优先级持锁者,其剩余临界区服务至多3;被分析任务是系统最高优先级,所需自身服务为1,没有其它锁、嵌套或自挂起。基本继承使中优先级工作不能插入这3单位服务,因此B=3给R≤4。这个来源清楚的特殊界,不是任意多锁PIP都只阻塞一次最长临界区的证明。

本页核心验收器只实现B=0精确分析。终点把上面的单锁扩展作为单独有证明的算例,不用一个未验证的B参数制造全系统成功结果。

迭代成本取决于数值期限 ​

任务i若做Kᵢ轮,每轮扫描hp(i),需O(Kᵢ(1+|hp(i)|))整数算术操作。全部任务从高到低验收再求和;只保存各轮w需O(n+ΣKᵢ)个整数;下载器还记录每轮各高优先级任务的份数,完整日志实际需O(n+ΣKᵢ(1+|hp(i)|))个整数。若只求结论,可逐任务丢弃旧值与份数。

整数停止界受D的数值控制,不是其二进制位数,所以这是伪多项式分析。大整数除法/上取整的位成本仍需另计。下载器采用整数式(w+T−1)//T,避免浮点在临界整数倍附近少算或多算一次释放。

截止期证书终点要求把迭代表和真实同步执行一起交付:前者给所有允许到达的判据,后者使第一次超期的位置能够直接核对。

参考资料
  1. Robert I. Davis、Alan Burns,Response Time Upper Bounds for Fixed Priority Real-Time Systems,2008,作者稿§2(PDF pp.2–3)、§3.1式(1)(2)(PDF p.4);§3.2区分任意截止期。本文采用其标准RTA回顾中的无抖动、B=0情形,不实现后文新闭式上界。
  2. Liu、Layland,Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment,1973,§4,pp.49–51,Theorems 1–2:临界瞬间及RM相对于固定优先级次序的最优性;主例与整数迭代日志为本文自定。
关系图谱3 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组