1. 实时系统概述
1.1 实时系统的定义
实时系统(Real-Time System)是指系统必须在严格的时间约束内对外部事件做出响应,且响应的正确性不仅取决于计算结果的逻辑正确性,还取决于结果产生的时间。在实时系统中,“迟到”的结果等同于“错误”的结果。
核心定义:实时系统 = 逻辑正确性 + 时间确定性。系统必须在规定的截止时间(Deadline)之前完成指定的任务。
实时系统区别于通用计算系统(如桌面PC、服务器)的关键在于:通用系统追求“平均性能”(高吞吐量、低平均延迟),而实时系统追求“最差情况性能”(保证在最坏条件下仍能满足截止时间)。
1.2 硬实时与软实时的区别
根据错过截止时间对系统造成的后果严重程度,实时系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两大类。下表从多个维度对比两者的核心差异:
| 对比维度 | 硬实时(Hard RT) | 软实时(Soft RT) |
|---|---|---|
| 截止时间后果 | 错过截止时间 = 系统灾难(人员伤亡、设备损毁) | 错过截止时间 = 性能下降、用户体验受损 |
| 时间确定性要求 | 必须100%保证,零容忍 | 统计保证(如99.9%满足即可) |
| 典型响应时间 | 微秒级 ~ 毫秒级 | 毫秒级 ~ 秒级 |
| 调度策略 | 优先级抢占、时间触发、静态调度 | 优先级调度、尽力而为、动态调度 |
| 验证方法 | 形式化验证、最差执行时间(WCET)分析 | 压力测试、统计监控 |
| 典型应用 | 航空发动机控制、安全气囊、心脏起搏器 | 视频播放、在线游戏、语音通话 |
实践提示:在Linux内核实时性补丁(PREEMPT_RT)的应用中,硬实时场景通常需要配合专用硬件(如FPGA、DSP)和严格的任务优先级设计;软实时场景则可以通过内核配置和实时调度策略(SCHED_FIFO、SCHED_RR)来满足。
下图展示了硬实时与软实时在时间约束上的本质区别:
1.3 实时系统的关键性能指标
评估一个实时系统的好坏,通常关注以下三个核心指标:
- 响应时间(Response Time):从事件发生到系统完成处理的时间间隔。实时系统需要保证最差情况响应时间(WCRT)小于截止时间。
- 抖动(Jitter):任务实际完成时间与预期完成时间之间的偏差。低抖动是实时系统的重要特征,尤其在音频/视频处理和工业控制中。
- 吞吐量(Throughput):单位时间内完成的任务数量。在实时系统中,吞吐量通常需要在满足截止时间的前提下进行优化。
常见误区:很多开发者认为“实时系统就是快的系统”。实际上,实时系统的核心是“可预测性”而非“绝对速度”。一个运行在1GHz处理器上的通用Linux系统可能比运行在100MHz处理器上的RTOS更快,但后者能保证在100μs内响应中断,而前者可能因为内核抢占延迟导致响应时间波动在10μs~10ms之间。
1.4 实时系统的应用场景
实时系统广泛应用于对时间确定性有严格要求的领域。下表总结了三大典型应用场景及其对实时性的具体要求:
| 应用领域 | 典型系统 | 实时性要求 | 错过截止时间的后果 |
|---|---|---|---|
| 工业控制 | PLC、DCS、CNC机床、机器人控制器 | 1ms ~ 10ms 周期控制 | 产品质量缺陷、设备损坏、生产线停摆 |
| 自动驾驶 | ADAS、感知融合、路径规划、线控执行 | 10ms ~ 100ms 感知-决策-执行闭环 | 交通事故、人员伤亡 |
| 航空航天 | 飞控系统、航电系统、卫星姿态控制 | 1μs ~ 10ms 硬实时 | 飞行器失控、坠毁、任务失败 |
下图展示了实时系统在三大应用场景中的典型架构与时间约束:
1.5 工业控制场景详解
工业控制是实时系统最成熟的应用领域之一。典型的工业控制系统包括:
- 可编程逻辑控制器(PLC):以固定周期(如1ms、5ms、10ms)循环执行用户程序,读取输入、执行逻辑、更新输出。
- 分布式控制系统(DCS):多个控制器通过网络协同工作,要求网络通信延迟可控。
- 数控机床(CNC):需要精确控制伺服电机的运动轨迹,插补周期通常在1ms以内。
- 工业机器人:多轴联动控制,要求各轴同步误差在微秒级。
工业控制实时性关键指标:抖动(Jitter)通常要求小于控制周期的5%。例如,一个1ms周期的PLC程序,其任务启动时间的抖动应小于50μs。Linux内核在未打PREEMPT_RT补丁时,抖动可能达到数百微秒甚至毫秒级,无法满足工业控制要求。
1.6 自动驾驶场景详解
自动驾驶系统是一个典型的软硬实时混合系统,包含多个不同实时性要求的子系统:
| 子系统 | 功能 | 实时性要求 | 类型 |
|---|---|---|---|
| 感知融合 | 摄像头、激光雷达、毫米波雷达数据融合 | 30ms ~ 100ms | 软实时 |
| 路径规划 | 全局路径与局部路径规划 | 100ms ~ 500ms | 软实时 |
| 车辆控制 | 转向、制动、油门执行 | 10ms ~ 50ms | 硬实时 |
| 安全监控 | 故障检测、功能安全(ISO 26262) | 1ms ~ 10ms | 硬实时 |
自动驾驶实时性挑战:自动驾驶系统通常运行在嵌入式Linux平台上,需要同时处理高计算量的AI推理任务(软实时)和低延迟的车辆控制任务(硬实时)。PREEMPT_RT补丁通过降低内核抢占延迟,使得Linux能够同时承载这两类任务,避免控制任务被AI推理任务长时间阻塞。
1.7 航空航天场景详解
航空航天领域对实时性的要求最为严苛,通常采用硬实时系统:
- 飞行控制系统:以固定周期(如2ms、5ms)采集传感器数据,计算控制律,输出舵面指令。任何一次截止时间错过都可能导致飞行器失控。
- 航电系统:包括通信、导航、显示等子系统,要求严格的时间隔离和资源分区(ARINC 653标准)。
- 卫星姿态控制:需要精确控制飞轮或推力器,控制周期通常在10ms ~ 100ms,要求极高的时间精度。
航空航天与Linux:传统航空航天系统多使用VxWorks、INTEGRITY等商用RTOS。近年来,随着Linux PREEMPT_RT补丁的成熟,越来越多的航空航天项目开始评估在非安全关键子系统(如数据记录、地面支持设备)中使用实时Linux,以降低成本和利用开源生态。