实时系统可视化实验室
从硬实时与软实时的本质区别到速率单调调度,从优先级反转到抖动分析,系统化解析实时系统的调度理论与工程实现。每个模块含可交互 SVG 演示。
硬实时要求绝对 deadline 保证,错过即灾难(航空、医疗、制动)。软实时允许偶发超时,影响体验但不致失效(流媒体)。firm 介于其间:超时结果丢弃但系统继续。
RMS 按周期分配优先级:周期越短优先级越高。可调度上界 U ≤ n(2^(1/n)-1),n→∞ 时趋于 69.3%。简单高效但要求周期已知,对偶发任务处理弱。
EDF 动态分配优先级:截止期最近的任务优先。理论上 CPU 利用率可达 100%,是最优单处理器调度算法。但需动态排序开销,过载时行为不可预测(多米诺式错过)。
经典问题:低优先级 L 持锁阻塞高优先级 H,中优先级 M 抢占 L,导致 H 被 M 间接阻塞。优先级继承:L 暂时继承 H 优先级,加速释放锁。优先级天花板进一步防死锁。
实时通信协议:CAN 总线位仲裁保证高优先级帧优先;TTEthernet 时间触发以太网;FlexRay 静态+动态段;TSN(时间敏感网络)为以太网提供确定性延迟。
资源预留(CBS/GRUB)为任务分配固定带宽预算 Q/P,保证隔离。任务消耗预算,耗尽则挂起等待下周期补充。实现 CPU 带宽的"虚拟化",防止单任务饿死他人。
实时 OS(QNX、VxWorks、RT-Linux、Zephyr)采用微内核架构,最小化内核态代码。调度器、IPC 在内核,文件系统、驱动在用户态,故障隔离。低延迟中断响应(μs 级)是关键指标。
抖动(jitter)是任务实际触发时间偏离理想周期的偏差。硬实时要求抖动有界(worst-case jitter)。来源包括中断延迟、调度延迟、缓存效应。Linux PREEMPT_RT、双内核(Xenomai)降低抖动到 μs 级。