1. 实时系统概述
1.1 实时系统的定义
实时系统(Real-Time System)是一类其正确性不仅取决于计算结果的逻辑正确性,还取决于结果产生的时间的计算系统。在实时系统中,任务必须在规定的截止时间(Deadline)之前完成,否则系统将被视为失效。
核心定义:实时系统 = 逻辑正确性 + 时间正确性。两者缺一不可。
实时系统广泛存在于嵌入式控制、工业自动化、航空航天、汽车电子、医疗设备、机器人等领域。例如:
- 汽车安全气囊控制器:必须在碰撞发生后 10ms 内触发气囊弹出。
- 工业机器人关节控制:每个控制周期必须在 1ms 内完成位置/力矩计算与输出。
- 飞行控制系统:传感器采样、控制律计算、舵机指令必须在固定周期内完成。
1.2 硬实时与软实时的区别
根据错过截止时间后系统行为的严重程度,实时系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两大类。
| 对比维度 | 硬实时(Hard RT) | 软实时(Soft RT) |
|---|---|---|
| 截止时间违反后果 | 系统灾难性失效(人员伤亡、设备损毁) | 服务质量下降,但系统仍可运行 |
| 典型应用 | 安全气囊、飞行控制、心脏起搏器 | 视频播放、音频处理、网络通信 |
| 时间确定性要求 | 必须 100% 满足最坏情况截止时间 | 统计意义上满足即可(如 99.9%) |
| 调度策略 | 优先级抢占、时间触发、速率单调 | 优先级调度、公平调度、EDF |
| 内核需求 | 完全可抢占、中断线程化、优先级继承 | 普通抢占式内核即可 |
| 典型延迟要求 | 微秒级(1-100 µs) | 毫秒级(1-100 ms) |
工程经验:在 Linux 实时化改造中,硬实时场景必须使用 PREEMPT_RT 补丁或专用 RTOS;软实时场景可考虑使用 PREEMPT_DYNAMIC 或 CFS 调度器调优。
1.3 实时操作系统的关键指标
评估一个实时操作系统(RTOS)的性能,主要关注以下三个核心指标:延迟(Latency)、抖动(Jitter)和吞吐量(Throughput)。
1.3.1 延迟(Latency)
延迟是指从事件发生到系统开始响应之间的时间间隔。在实时系统中,延迟通常包括:
- 中断延迟:从硬件中断触发到中断服务程序(ISR)开始执行的时间。
- 调度延迟:从任务就绪到任务实际获得 CPU 执行的时间。
- 抢占延迟:高优先级任务就绪后,抢占当前低优先级任务所需的时间。
- 上下文切换延迟:保存/恢复任务上下文的时间开销。
PREEMPT_RT 核心目标:将 Linux 内核的最坏情况抢占延迟从普通内核的 10-100ms 降低到 100µs 以下,实现可预测的实时响应。
1.3.2 抖动(Jitter)
抖动是指延迟的变化程度,即实际延迟与期望延迟之间的偏差。抖动是衡量系统时间确定性的关键指标。
| 抖动类型 | 定义 | 对实时系统的影响 |
|---|---|---|
| 周期抖动 | 任务实际执行周期与理想周期的偏差 | 导致采样/控制周期不均匀,影响控制精度 |
| 延迟抖动 | 响应延迟的最大值与最小值之差 | 影响系统最坏情况分析(WCET)的准确性 |
| 调度抖动 | 任务调度时间点的不确定性 | 导致多任务协同出现时序偏差 |
1.3.3 吞吐量(Throughput)
吞吐量是指系统在单位时间内能够处理的任务数量或数据量。在实时系统中,吞吐量与实时性之间存在权衡关系:
- 高实时性通常意味着更频繁的上下文切换和抢占,这会降低吞吐量。
- 高吞吐量通常意味着更长的任务连续执行时间,这会增加抢占延迟。
工程权衡:在 PREEMPT_RT 系统中,实时性优先于吞吐量。如果应用场景对吞吐量有极高要求(如批处理、大数据),建议使用非实时内核或通过 CPU 隔离(isolcpus)将实时任务与批处理任务分离。
1.4 实时系统在 Linux 中的实现路径
Linux 内核从通用操作系统向实时操作系统的演进,经历了以下几个关键阶段:
- 标准 Linux 内核:非抢占式内核(PREEMPT_NONE),调度延迟可达 100ms 以上。
- 低延迟补丁(-ck / BFS):通过改进调度器减少延迟,但仍无法满足硬实时要求。
- PREEMPT_RT 补丁:实现内核完全可抢占、中断线程化、高精度定时器、优先级继承等机制,将最坏情况延迟降至 100µs 以下。
- PREEMPT_DYNAMIC(Linux 5.12+):允许在运行时动态切换抢占模式(NONE / VOLUNTARY / FULL),兼顾实时性与吞吐量。
课程路线图:本课程将深入剖析 PREEMPT_RT 补丁的抢占点配置机制,包括中断线程化、可抢占内核锁、RCU 抢占优化、高精度定时器、优先级继承等核心技术,并结合工程实践给出配置建议。
1.5 本章小结
- 实时系统要求任务在规定的截止时间前完成,时间正确性与逻辑正确性同等重要。
- 硬实时错过截止时间会导致灾难性后果,软实时则仅影响服务质量。
- 实时系统的三大关键指标:延迟(响应速度)、抖动(时间确定性)、吞吐量(处理能力),三者之间存在工程权衡。
- Linux 通过 PREEMPT_RT 补丁实现了内核完全可抢占,是构建硬实时 Linux 系统的事实标准。