1. 实时系统概述

实时系统(Real-Time System)是指系统不仅要在逻辑上正确计算结果,还必须在规定的时间约束内完成计算。时间正确性与功能正确性同等重要,任何超出截止时间(Deadline)的输出都可能被视为系统失效。

核心定义:实时系统的正确性 = 逻辑正确性 + 时间正确性。系统必须在确定的、可预测的时间窗口内对外部事件做出响应。

1.1 硬实时与软实时区别

根据错过截止时间对系统造成的影响,实时系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两大类。两者的核心差异在于时间违约的后果严重程度。

对比维度 硬实时系统 软实时系统
截止时间违约后果 灾难性后果(设备损坏、人员伤亡) 性能下降、用户体验受损,但无灾难性后果
时间确定性要求 必须100%保证最坏情况执行时间(WCET) 统计意义上满足平均响应时间即可
调度策略 优先级抢占、时间触发、预留资源 优先级调度、尽力而为、负载均衡
典型应用 航空电子、汽车发动机控制、医疗起搏器 视频播放、网络电话、交互式游戏
Linux适用性 需配合PREEMPT_RT补丁、内核裁剪 标准内核即可满足大部分场景
调优启示:本课程重点面向硬实时场景下的Linux内核裁剪与优化。软实时场景通常不需要激进的非核心功能裁剪,而硬实时系统必须消除一切不可预测的延迟来源。
硬实时 vs 软实时 时间约束对比 硬实时系统 事件 截止 Deadline 必须在此区间内响应 违约 → 灾难性后果 软实时系统 事件 截止 Deadline 期望在此区间内响应 可容忍 违约 → 性能下降,无灾难

1.2 实时系统典型应用场景

实时系统已广泛渗透到工业控制、自动驾驶、航空航天、医疗设备等关键领域。以下重点分析工业控制与自动驾驶两个典型场景。

1.2.1 工业控制

工业控制是实时系统最成熟的应用领域,涵盖PLC(可编程逻辑控制器)、DCS(分布式控制系统)、运动控制、机器人控制等子系统。工业控制对实时性的要求通常为微秒级到毫秒级确定性响应。

  • PLC循环扫描:典型的PLC工作周期包括输入采样、程序执行、输出刷新三个阶段,整个周期必须在固定时间(如1ms~10ms)内完成。
  • 运动控制:伺服电机的位置环、速度环控制周期通常为50μs~1ms,任何抖动都会导致轨迹偏差。
  • 工业以太网:EtherCAT、PROFINET IRT等实时工业以太网协议要求网络栈延迟低于100μs。
Linux在工业控制中的挑战:标准Linux内核的调度延迟通常在1ms~10ms级别,且存在不可预测的中断关闭时间。必须通过PREEMPT_RT补丁、中断线程化、CPU隔离、内核裁剪等手段将最大延迟压缩到100μs以内。
工业控制实时系统架构 管理层(非实时) HMI / SCADA / MES / 数据库 控制层(硬实时) PLC / DCS / 运动控制器 / 机器人控制器 控制周期:50μs ~ 10ms | 抖动要求:< 10μs 现场设备层(实时/非实时混合) 传感器 / 执行器 / 伺服驱动器 / 变频器 / IO模块 实时工业以太网 EtherCAT / PROFINET IRT

1.2.2 自动驾驶

自动驾驶系统是近年来对实时性要求最严苛的新兴领域之一。从传感器数据采集、感知融合、决策规划到车辆控制,整个流水线必须在严格的端到端延迟约束内完成。

功能模块 实时性要求 延迟违约后果
摄像头帧采集与预处理 30~60 FPS,帧间隔16~33ms 目标检测丢失、帧率不稳定
激光雷达点云处理 10~20 Hz,周期50~100ms 障碍物感知延迟、碰撞风险
多传感器融合 端到端延迟 < 100ms 融合结果过时、决策错误
路径规划与决策 规划周期 50~100ms 避障失败、车道偏离
车辆纵向/横向控制 控制周期 10~50ms 车辆失控、制动延迟
关键指标:自动驾驶系统通常要求端到端感知-决策-控制延迟 < 200ms,其中Linux内核调度延迟必须控制在50μs~1ms以内。任何超过100ms的调度延迟都可能导致安全事故。
自动驾驶实时处理流水线 感知 Camera / LiDAR / Radar 采集 & 预处理 延迟预算:50ms 融合 多传感器融合 目标跟踪 延迟预算:50ms 决策 路径规划 行为决策 延迟预算:50ms 控制 转向/制动/油门 执行器控制 延迟预算:50ms 端到端延迟预算:≤ 200ms(含内核调度延迟) t=0 t=200ms 截止时间

1.3 实时系统对Linux内核的挑战

标准Linux内核是为通用计算设计的,在实时性方面存在以下固有缺陷:

  1. 大内核锁与中断关闭:内核代码中仍存在长时间关闭中断的临界区,导致高优先级任务被阻塞。
  2. 不可抢占的内核路径:系统调用、软中断、tasklet等路径在标准内核中不可被抢占,延迟可达毫秒级。
  3. 中断处理优先级反转:中断处理程序优先级高于任何用户态任务,即使该任务更重要。
  4. 内存管理不确定性:缺页异常、页面回收、TLB刷新等操作引入不可预测的延迟。
  5. 非核心功能干扰:内核自带的电源管理、设备热插拔、cgroup、namespace等机制在实时场景下成为延迟噪声源。