1、实时系统概述

1.1 实时系统的定义

实时系统(Real-Time System)是一种计算系统,其正确性不仅取决于计算结果的逻辑正确性,还取决于结果产生的时间。在实时系统中,任务必须在规定的截止时间(Deadline)之前完成,否则系统将视为失效。

与通用操作系统追求“平均响应时间”不同,实时系统关注的是“最坏情况下的响应时间”。实时系统的核心特征包括:

  • 时间确定性:系统行为在时间上是可预测的,能够保证任务在指定时间内完成。
  • 可调度性:在系统设计阶段,可以通过调度分析验证所有任务是否满足时间约束。
  • 优先级驱动:任务按照优先级或时间约束进行调度,高优先级任务优先获得CPU资源。
关键概念: 实时 ≠ 快速。一个实时系统可能运行在较低的时钟频率上,但只要它能保证在截止时间前完成任务,它就是合格的实时系统。相反,一个处理速度极快但无法保证时间确定性的系统,不能称为实时系统。

1.2 实时系统的分类

根据错过截止时间造成的后果严重程度,实时系统分为硬实时和软实时两大类。下表从多个维度对比两者的差异:

对比维度 硬实时(Hard Real-Time) 软实时(Soft Real-Time)
截止时间约束 必须严格满足,不允许错过 允许偶尔错过,但需控制频率
错过后果 灾难性后果(人员伤亡、设备损毁) 性能下降、用户体验受损
调度算法 静态优先级调度(如RM)、EDF 动态优先级调度、加权公平调度
典型验证方式 形式化可调度性分析 统计概率保证
Linux支持 PREEMPT_RT + SCHED_DEADLINE SCHED_FIFO / SCHED_RR

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

硬实时 vs 软实时:截止时间约束对比 硬实时系统 任务A执行 截止 任务B执行 截止 ✓ 所有任务必须在截止时间前完成 ✗ 错过即灾难 软实时系统 任务C执行 截止 任务D执行(超时) 截止 超时 ✓ 允许偶尔错过截止时间 ✗ 频繁错过导致服务质量下降

1.3 典型应用场景

实时系统广泛应用于对时间确定性要求极高的领域。以下从三个典型场景展开分析:

1.3.1 航空航天

航空航天是硬实时系统的典型代表。飞行控制系统、导航系统、发动机管理系统等关键子系统都必须满足严格的时间约束。

  • 飞行控制:传感器采样周期通常为10-50ms,控制律计算必须在采样周期内完成。
  • 航电系统:ARINC 653标准定义了分区调度,确保不同安全等级的任务在时间上隔离。
  • 卫星姿态控制:姿态调整指令必须在毫秒级时间内响应,否则卫星可能偏离轨道。

下图展示了航空航天实时系统的典型架构:

航空航天实时系统架构 飞行控制计算机(FCC) 实时操作系统(RTOS) 惯性导航系统 周期:10ms 飞行控制律 周期:20ms 发动机控制 周期:50ms 数据采集 周期:5ms 陀螺仪 / 加速度计 舵面执行机构 燃油调节阀 大气数据传感器

1.3.2 工业控制

工业控制领域是实时系统最成熟的应用市场。从PLC(可编程逻辑控制器)到DCS(分布式控制系统),实时调度保障了生产过程的稳定与安全。

应用场景 实时要求 典型周期 调度策略
PLC逻辑控制 硬实时 1-10ms 循环扫描 + 中断
运动控制 硬实时 0.1-1ms 静态优先级调度
过程控制 软实时 100ms-1s EDF / 优先级调度
数据采集与监控 软实时 10-100ms 轮询 + 事件驱动
工业控制案例: 在数控机床中,伺服电机的位置环控制周期通常为50-200μs,速度环控制周期为200-500μs。如果控制周期抖动超过10%,将导致加工精度下降甚至刀具损坏。Linux PREEMPT_RT + SCHED_DEADLINE调度器能够将调度延迟控制在微秒级,满足此类高精度控制需求。

1.3.3 自动驾驶

自动驾驶系统是近年来实时系统最前沿的应用领域。它融合了感知、决策、控制等多个子系统,每个子系统都有严格的时间约束。

  • 感知层:摄像头帧率30-60fps,激光雷达10-20Hz,毫米波雷达20-50Hz。所有传感器数据必须在帧间隔内完成处理。
  • 决策层:路径规划、行为决策需要在50-100ms内完成,否则车辆无法及时应对突发情况。
  • 控制层:转向、制动、加速指令的执行周期通常为10-20ms,且抖动必须小于1ms。

下图展示了自动驾驶系统中的实时任务流:

自动驾驶实时任务流 摄像头 30fps 激光雷达 10Hz 毫米波雷达 20Hz GPS/IMU 100Hz 超声波雷达 50Hz 感知融合(传感器数据对齐与融合) 决策规划(路径规划 + 行为决策) 控制执行(转向 / 制动 / 加速)
自动驾驶实时挑战: 在高速行驶场景下(120km/h),车辆每秒钟前进33米。如果感知到决策的端到端延迟超过100ms,车辆将多前行3.3米,这可能是安全与事故的分界线。因此,自动驾驶系统对实时调度的确定性要求极高,Linux内核的SCHED_DEADLINE调度器在此类场景中展现出显著优势。

1.4 实时系统与Linux内核

Linux内核从早期版本开始就支持实时调度,但受限于通用操作系统的设计哲学,其实时性能长期受到质疑。随着PREEMPT_RT补丁集和SCHED_DEADLINE调度器的引入,Linux已经能够满足大多数硬实时场景的需求。

下表总结了Linux内核中与实时调度相关的关键特性:

特性 引入版本 说明
SCHED_FIFO Linux 2.0 先入先出实时调度,优先级范围1-99
SCHED_RR Linux 2.0 时间片轮转实时调度,同优先级任务轮流执行
PREEMPT_RT 主线逐步合入 将内核大部分区域变为可抢占,降低调度延迟
SCHED_DEADLINE Linux 3.14 基于EDF(最早截止时间优先)的硬实时调度
CPU隔离 Linux 2.6 通过isolcpus将CPU从通用调度中隔离