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)来满足。

下图展示了硬实时与软实时在时间约束上的本质区别:

硬实时 vs 软实时:截止时间约束对比 硬实时系统 任务A执行 截止时间 错过 = 灾难 软实时系统 任务B执行 截止时间 错过 = 降质 硬实时特点 • 截止时间必须100%满足 • 需要WCET分析和形式化验证 软实时特点 • 允许偶尔错过截止时间 • 统计保证即可,无需WCET

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 硬实时 飞行器失控、坠毁、任务失败

下图展示了实时系统在三大应用场景中的典型架构与时间约束:

实时系统三大应用场景架构 工业控制 传感器 PLC 执行器 周期控制:1ms ~ 10ms 自动驾驶 感知 决策 执行 感知-决策-执行:10ms ~ 100ms 航空航天 飞控 航电 执行 硬实时:1μs ~ 10ms 实时系统共性特征 时间确定性 可预测的响应时间 优先级管理 关键任务优先执行 资源隔离 避免优先级反转 Linux内核实时性补丁(PREEMPT_RT)的目标 将通用Linux内核改造为满足工业级实时要求的操作系统,支持上述三大场景的部署

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,以降低成本和利用开源生态。

1.8 本章小结