RTOS 的核心不在于吞吐量,而在于在确定的截止时间内响应事件。本页将深入解析实时性的定义、关键指标、以及工业级测量方法。
实时性(Real-Time)是指系统在严格的时间约束(截止时间,Deadline)内完成特定任务的能力。关键点在于确定性(Determinism)——系统行为必须可预测,最坏情况下的响应时间是已知的、有界的。
按截止时间被违反后的后果严重程度,实时系统分为三类。后果越严重,对延迟的要求越严格。
错过截止时间会导致灾难性后果——人身伤害、设备损坏、或系统完全失效。响应时间必须绝对保证。
错过截止时间不会导致灾难,但计算结果变得无意义并被丢弃。偶尔的逾期可以容忍,但会降低系统质量。
截止时间是期望值而非严格要求。逾期只会导致服务质量降低(QoS),系统仍可继续运行。统计意义上满足即可。
实时性不能笼统地说"快"或"慢",需要用精确的、可测量的量化指标来描述。以下是工业界最常用的六个核心指标。
从中断硬件信号置位(IRQ assert)到中断服务程序(ISR)第一条指令开始执行的时间。这是最基础、最常引用的实时性指标。
影响因素:中断屏蔽时间、中断控制器延迟、CPU 流水线刷新、缓存未命中、总线仲裁。
保存当前任务状态(寄存器、栈指针、PC)并恢复新任务状态的时间。这是衡量 RTOS 内核效率的核心指标。
典型值范围:ARM Cortex-M 上约 0.2~2μs,依赖 CPU 架构和 FPU 保存策略。
从事件发生(使某任务变为就绪态)到该任务实际开始运行的时间。包含了中断延迟、ISR 执行时间、内核调度决策时间和上下文切换时间。
这是评估端到端实时响应最全面的单一指标。
周期性事件之间的时间偏差。即使平均延迟达标,高抖动也意味着确定性差——你永远不知道某一次响应会快还是慢。
低抖动是实时系统与通用系统的根本区别。
一段代码在所有可能的输入和路径下的最长执行时间。这是实时可调度性分析(如利用率测试、响应时间分析)的基础输入。
测量法(实测 WCET)与静态分析法(WCET 分析工具如 aiT)结果可能差数倍。
在所有任务实例中,未能在截止时间内完成的比率。硬实时系统要求 DMR = 0%,软实时系统可以有可接受的 DMR 阈值。
通常以 nines 表示:99.99% 意味着万分之一截止时间错过。
这是理解 RTOS 实时性的核心工具。观察高优先级任务如何抢占低优先级任务、中断如何打断一切、以及延迟如何随之变化。点击「触发中断」或调整任务参数,观察时间线的变化。
拖动滑块模拟不同的系统负载条件,观察中断延迟和调度延迟如何分布变化。在高负载或禁用抢占时,延迟分布的长尾效应会变得极其明显。
选择不同的实时类型,观察任务在负载波动时如何表现。硬实时系统中,一次逾期就是系统失败;软实时系统中,逾期只是性能降级。
测量实时性需要专门的工具和方法。核心原则是:测量行为本身不能影响被测系统的实时性(这被称为探针效应,Probe Effect)。
最经典、最可靠的方法。在被测事件发生时翻转一个 GPIO 引脚,用示波器测量物理延迟。
使用 MCU 内置的硬件定时器(如 ARM 的 DWT 周期计数器)在 ISR 入口/出口读取时间戳,精确到 CPU 时钟周期。
在内核关键路径插入追踪钩子(Trace Hook),记录任务切换、中断、系统调用等事件的时间戳。工具如 Tracealyzer、Percepio、Lauterbach TRACE32。
在高负载条件下长时间运行,收集数百万次延迟样本,生成延迟分布直方图。关注尾部(99.99 百分位)而非平均值。
模拟示波器测量中断延迟的过程。上方信号线是中断请求(IRQ),下方是 ISR 响应。两者的时间差就是中断延迟。点击按钮触发测量。
以 FreeRTOS(典型 RTOS)和标准 Linux(典型 GPOS)为例,在关键实时指标上的差异。
| 指标 | RTOS (FreeRTOS / Zephyr) | GPOS (标准 Linux) | 实时扩展 (PREEMPT_RT) |
|---|---|---|---|
| 中断延迟 | < 1~5 μs | 10~100+ μs | 5~50 μs |
| 调度延迟 | < 5~20 μs | 50~1000+ μs | 10~100 μs |
| 最坏情况抖动 | < 几十 μs | 可达几十 ms | < 100 μs |
| 抢占粒度 | 任意点抢占 | 自愿让步为主 | 几乎所有上下文 |
| 优先级反转保护 | 优先级继承协议 | 不保证 | 支持 |
| 中断禁用时间 | < 几 μs(有界) | 可能 > 100 μs | < 100 μs |
| 调度算法 | 固定优先级抢占 (RMS) | CFS 公平调度 | SCHED_FIFO / SCHED_RR |
| 适用场景 | 硬/固实时嵌入式 | 通用计算/软实时 | 需要 Linux 生态的软实时 |
实时系统的核心承诺是可以在数学上证明所有截止时间都能被满足。最常用的分析方法是基于速率单调调度(RMS)的利用率测试。
对于 n 个独立的周期性任务,如果调度器使用固定优先级(周期越短优先级越高),利用率满足以下条件,则所有截止时间保证被满足:
其中 Ci 是任务 i 的 WCET,Ti 是任务 i 的周期。当 n→∞ 时,上界趋近于 ln(2) ≈ 0.693(69.3%)。这意味着在最坏情况下,CPU 利用率不能超过 69.3% 才能保证可调度性。对于和谐的(harmonic)任务集,该上界可以接近 100%。
添加任务,设置周期和 WCET,检查是否可调度。