3. 实时调度基础与医疗设备应用
在医疗设备中,实时调度不是“让任务跑得快”,而是“让关键任务在截止时间前必然完成”。输液泵与呼吸机都属于安全相关设备:输液泵要求流速控制周期稳定、阻塞报警及时;呼吸机要求吸气/呼气切换时刻准确、压力与流量闭环不能抖动。本节围绕三种经典实时调度算法——RMS(Rate Monotonic Scheduling,速率单调)、EDF(Earliest Deadline First,最早截止期优先)、DM(Deadline Monotonic,截止期单调)——说明它们的判据、可调度性分析方法,以及在两类设备中的对比与选型思路。
一、三种调度算法的核心差异
RMS 是静态优先级算法:任务周期越短,优先级越高,优先级在运行前固定。EDF 是动态优先级算法:每次调度时选择绝对截止期最近的任务运行,优先级随时刻变化。DM 是静态优先级算法,但优先级按相对截止期排序:相对截止期越短,优先级越高;当所有任务的相对截止期等于周期时,DM 退化为 RMS。
三者的适用前提不同。RMS 与 DM 适合固定优先级、可预测性要求高的系统,便于做最坏情况响应时间分析;EDF 在单处理器上理论利用率上限更高,但优先级动态变化,实现与验证更复杂,过载时的行为也更难预测。医疗设备通常更看重“可证明性”和“过载可控”,因此固定优先级方案在安全关键路径上更常见。
二、可调度性分析:从利用率到响应时间
可调度性分析回答一个问题:给定任务集,是否存在一种调度顺序,使每个任务都在截止期前完成。对 RMS,常用快速判据是利用率检验:若 U = Σ(Ci/Ti) 不超过 n(2^(1/n)−1),则一定可调度;若超过,则不一定不可调度,需要进一步用响应时间分析确认。对 DM,由于截止期可能小于周期,快速判据不再充分,通常直接使用响应时间迭代。
响应时间分析的核心是:任务 i 的最坏响应时间 Ri 等于自身执行时间 Ci 加上所有更高优先级任务对它的干扰。迭代式为 Ri = Ci + Σ⌈Ri/Tj⌉·Cj,其中 j 为所有优先级高于 i 的任务。迭代从 Ri = Ci 开始,直到收敛或超过 Di。若收敛值 ≤ Di,则任务 i 可调度;若超过,则不可调度。对 EDF,当所有 Di = Ti 时,只需 U ≤ 1 即可保证可调度;若 Di < Ti,则需使用密度判据 Σ(Ci/Di) ≤ 1。
下面给出一个输液泵教学示例任务集,用于说明计算过程。假设三个周期任务:
| 任务 | 功能 | Ci (ms) | Ti (ms) | Di (ms) |
|---|---|---|---|---|
| τ1 | 流速闭环控制 | 2 | 10 | 10 |
| τ2 | 压力采样与滤波 | 3 | 20 | 20 |
| τ3 | 阻塞报警判断 | 4 | 50 | 50 |
计算利用率:U = 2/10 + 3/20 + 4/50 = 0.2 + 0.15 + 0.08 = 0.43。n=3 时 RMS 快速判据上限为 3(2^(1/3)−1) ≈ 0.780,U=0.43 远低于上限,因此 RMS 下可调度。若用 DM,由于 Di=Ti,优先级顺序与 RMS 相同,结论一致。若用 EDF,U=0.43 ≤ 1,同样可调度。
再看一个更紧的示例:τ1(C=3,T=10)、τ2(C=4,T=20)、τ3(C=6,T=50)。U = 0.3 + 0.2 + 0.12 = 0.62,仍低于 0.780,RMS 可调度。若 τ1 改为 C=5,则 U = 0.5 + 0.2 + 0.12 = 0.82,超过快速判据上限,此时不能直接判定不可调度,需要做响应时间分析。按 RMS 优先级 τ1 > τ2 > τ3:R1 = 5 ≤ 10;R2 = 4 + ⌈R2/10⌉·5,迭代得 R2 = 4 + 5 = 9 ≤ 20;R3 = 6 + ⌈R3/10⌉·5 + ⌈R3/20⌉·4,迭代得 R3 = 6 + 5 + 4 = 15 ≤ 50。三个任务均满足截止期,因此仍可调度。这说明快速判据只是充分条件,超过上限不等于不可调度。
三、输液泵多任务调度:固定优先级更稳妥
输液泵的典型任务包括:流速闭环控制(周期 10 ms)、压力采样(20 ms)、阻塞报警判断(50 ms)、按键与显示刷新(100 ms)、电池与温度监测(500 ms)。其中流速控制与阻塞报警属于安全关键任务,必须在截止期内完成;显示刷新属于非关键任务,可以容忍偶尔延迟。
在输液泵中,推荐采用 RMS 或 DM 固定优先级方案。理由有三:第一,任务周期固定,RMS 优先级分配简单且可预测;第二,固定优先级在过载时行为明确——低优先级任务先被延迟,关键任务不受影响;第三,便于做最坏情况响应时间分析,满足医疗设备认证要求。EDF 虽然利用率上限更高,但动态优先级在过载时可能导致关键任务与非关键任务同时错过截止期,风险不可接受。
实际配置时,可将流速控制设为最高优先级,阻塞报警次之,压力采样再次,显示刷新最低。若阻塞报警的相对截止期小于其周期(例如要求 30 ms 内响应),则应使用 DM 而非 RMS,因为 DM 按截止期排序更精确。
四、呼吸机多模式切换:DM 与事件驱动结合
呼吸机的任务结构与输液泵不同。呼吸机需要在吸气相与呼气相之间切换,切换时刻由压力或流量触发,属于事件驱动任务;同时存在周期性的传感器采样、闭环压力控制、报警判断和波形显示。多模式切换(如 PCV、VCV、SIMV、PSV)意味着任务集可能随模式变化,截止期要求也不同。
在呼吸机中,模式切换任务通常具有最短的相对截止期,例如要求 5 ms 内完成阀门动作;压力闭环控制周期约 5~10 ms;流量与压力采样约 2~5 ms;报警判断约 20~50 ms;波形显示约 30~50 ms。由于截止期与周期不完全一致,DM 比 RMS 更合适:按相对截止期分配静态优先级,切换任务最高,闭环控制次之,采样再次,显示最低。
对于模式切换这类事件驱动任务,可以将其建模为周期性任务(最小到达间隔)或使用服务器机制(如轮询服务器、偶发服务器)与固定优先级任务共存。若切换事件频繁且不可预测,可考虑在固定优先级框架内为切换任务预留带宽,而不是直接切换到 EDF。这样既保证关键切换的响应,又保持过载行为可控。
五、对比与选型建议
| 维度 | RMS | DM | EDF |
|---|---|---|---|
| 优先级 | 周期越短越高 | 截止期越短越高 | 绝对截止期最近最高 |
| 静态/动态 | 静态 | 静态 | 动态 |
| 利用率上限 | n(2^(1/n)−1) | 需响应时间分析 | 1.0(Di=Ti) |
| 过载行为 | 低优先级先丢 | 低优先级先丢 | 可能连锁错过 |
| 适用场景 | 周期固定、Di=Ti | Di≤Ti、事件任务 | 软实时、负载波动 |
| 输液泵 | 推荐 | 推荐(报警截止期短时) | 不推荐关键路径 |
| 呼吸机 | 可用 | 推荐 | 仅非关键任务 |
综合来看,输液泵多任务调度优先选择 RMS,若阻塞报警等任务截止期明显短于周期则改用 DM;呼吸机多模式切换优先选择 DM,并将模式切换作为高优先级事件任务处理。EDF 可用于显示刷新、日志记录等非关键任务,但不应用于流速控制、压力闭环和报警判断等安全关键路径。可调度性分析应作为设计阶段的强制步骤,用响应时间迭代确认每个关键任务在最坏情况下仍能满足截止期。