2. 实时系统基础
在讨论静态分区与抖动优化之前,必须先建立一套统一的实时性语言。很多工程争议并非来自技术方案本身,而是来自对“实时”二字的理解偏差:有人把“快”当成实时,有人把“平均延迟低”当成实时,也有人把“功能正确”当成实时。实时系统的核心并不是绝对速度快,而是在确定的时间约束内完成规定动作。也就是说,正确性 = 逻辑结果正确 + 时间结果正确,二者缺一不可。
一、实时性的定义:时间也是正确性的一部分
实时系统是指系统对外部事件或内部状态的响应,必须在规定的时间窗口内完成,并且该时间窗口具有可验证、可重复的约束。一个任务即使计算结果完全正确,如果错过了截止时间,在实时语义下同样视为失败。因此实时性关注三个关键词:确定性、可预测性、可验证性。
确定性强调相同输入与相同调度条件下,执行时间与响应顺序可重复;可预测性强调最坏情况可以被分析出来,而不是只依赖平均值;可验证性强调通过测量、建模或形式化方法证明系统满足约束。对于静态分区系统,分区的时间预算、窗口长度、调度表在配置阶段确定,正是为了把“不可预测”压缩为“可分析”。
二、硬实时与软实时:错过截止时间的后果不同
按照错过截止时间的后果,实时任务通常分为硬实时、软实时,以及介于两者之间的固实时。硬实时任务一旦错过截止时间,会造成不可接受的功能失效、安全风险或重大经济损失,例如飞控舵面控制、刹车控制、发动机点火时序、医疗输液泵剂量控制。软实时任务错过截止时间只会降低服务质量,例如视频播放掉帧、界面刷新延迟、日志上报延迟。固实时则介于两者之间:偶尔错过可容忍,但结果价值会快速衰减,例如某些工业视觉分拣。
| 类型 | 错过截止时间的后果 | 典型场景 | 设计重点 |
|---|---|---|---|
| 硬实时 | 功能失效、安全事故、不可恢复 | 飞控、刹车、点火、剂量控制 | 最坏执行时间分析、优先级/时间分区、冗余 |
| 固实时 | 结果价值快速下降,偶尔可容忍 | 工业视觉分拣、机器人抓取 | 统计性保障、降级策略 |
| 软实时 | 服务质量下降,可恢复 | 音视频播放、界面刷新、日志 | 平均延迟、吞吐与公平性 |
需要强调的是,硬实时并不要求“越快越好”,而要求“最坏情况下也不超时”。一个每 10 ms 执行一次、每次最多 2 ms 的控制任务,比一个平均 1 ms 但偶尔 30 ms 的任务更适合硬实时系统。静态分区正是通过为每个分区分配固定时间窗口,把这种最坏情况限制在预算之内。
三、截止时间、响应时间与释放抖动
截止时间(Deadline)是任务必须完成的时间点。相对截止时间从任务释放时刻算起,绝对截止时间则是具体时刻。响应时间(Response Time)是从任务释放到任务完成之间的实际时间,包含等待调度、被抢占、执行、阻塞等全部开销。响应时间必须小于等于相对截止时间,系统才满足实时约束。
释放抖动(Release Jitter)是任务实际释放时刻相对理想周期的偏差。例如周期为 10 ms 的任务,理想释放时刻是 0、10、20 ms,实际可能是 0.3、10.8、21.1 ms,偏差即为释放抖动。释放抖动会直接叠加到响应时间上,因此在硬实时分析中必须计入。
响应时间 R = 等待时间 + 执行时间 + 阻塞时间 + 干扰时间
约束条件:R ≤ D(相对截止时间)
若存在释放抖动 J:R + J ≤ D 才安全
四、抖动定义与分类:从周期偏差到端到端波动
抖动(Jitter)是时间事件实际发生时刻相对理想时刻的波动。它描述的是“稳定性”,而不是“快慢”。一个平均响应很快但波动很大的系统,抖动可能非常严重;一个响应稍慢但每次都很稳定的系统,抖动反而很小。对控制回路、音视频同步、分布式采样而言,抖动往往比平均延迟更致命。
- 周期抖动:周期任务相邻两次释放或执行间隔的偏差,反映调度周期稳定性。
- 释放抖动:任务实际释放时刻相对理想释放时刻的偏差,常由中断延迟、定时器精度、唤醒链路引起。
- 响应抖动:响应时间的波动范围,即最坏响应时间与最好响应时间之差。
- 执行抖动:同一任务每次执行时间的波动,受缓存、分支预测、内存访问影响。
- 端到端抖动:从传感器采样到执行器输出的全链路时间波动,是控制性能最关心的指标。
- 输出抖动:执行器实际动作时刻相对理想时刻的偏差,直接决定控制质量。
五、案例:为什么平均延迟低仍会失控
某运动控制平台采用通用操作系统,采样周期设定为 1 ms。实测平均响应时间为 0.4 ms,看起来非常优秀。但在压力测试中,由于网络中断、日志刷盘和内存回收叠加,偶发响应时间达到 8 ms,导致控制输出出现明显抖动,机械臂轨迹偏离。复盘发现:系统只统计了平均值,没有分析最坏响应时间;中断处理未做分区隔离;日志与控制在同一时间窗口竞争 CPU。
改进方案是引入静态分区:把控制任务放入独立时间分区,分配固定 0.6 ms 窗口;日志、网络放入低优先级分区;中断仅做标记,实际处理延迟到对应分区窗口。改进后平均响应时间略升至 0.5 ms,但最坏响应时间稳定在 0.9 ms 以内,端到端抖动从 7.6 ms 降至 0.4 ms,控制品质显著提升。这说明实时优化的目标不是压低平均值,而是压缩最坏情况与波动范围。
六、复盘要点:建立可分析的时间模型
要真正掌握实时性,需要为每个任务建立完整的时间模型:释放时刻、周期、释放抖动、最坏执行时间、阻塞时间、干扰时间、相对截止时间、响应时间上界。静态分区的价值在于把这些参数固化到调度表中,使最坏情况可计算、可验证、可复现。后续章节将围绕如何利用分区窗口、优先级与预算分配来压缩抖动,但前提是本节这些基础概念必须清晰无误。
- 实时性 = 逻辑正确 + 时间正确,缺一不可。
- 硬实时关注最坏情况不超时,软实时关注服务质量可降级。
- 响应时间必须小于等于截止时间,释放抖动必须计入。
- 抖动分类包括释放、执行、响应、端到端与输出抖动。
- 优化目标是压缩最坏情况与波动,而非单纯降低平均值。