1. 实时系统概述

1.1 实时系统定义

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

核心定义:实时系统 = 逻辑正确性 + 时间确定性。时间约束是实时系统与通用系统最本质的区别。

实时系统的关键特征包括:

  • 时间约束性:每个任务都有明确的截止时间,系统必须保证在截止时间前完成。
  • 可预测性:系统行为在时间维度上是可预测的,最坏情况执行时间(WCET)可分析。
  • 确定性:相同输入在相同条件下产生相同的时间行为。
  • 可靠性:系统在长时间运行中保持稳定,不因时间抖动导致失效。
实时系统时间约束模型 释放 任务执行(计算时间 C) 截止 超时失效 t₀ t₀ + D t₀ + D + ε 响应时间 R ≤ 截止时间 D ✓ 关键约束:R ≤ D,其中 R 为响应时间,D 为截止时间

1.2 硬实时与软实时区别

根据错过截止时间的后果严重程度,实时系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两大类。

对比维度 硬实时(Hard RT) 软实时(Soft RT)
截止时间后果 错过截止时间 = 系统灾难性失效 错过截止时间 = 性能下降,但系统可继续运行
典型应用 飞行控制、汽车引擎、医疗起搏器、核反应堆 音视频播放、网络游戏、人机交互界面
时间确定性要求 100% 确定性,最坏情况必须保证 统计确定性,平均性能可接受即可
调度策略 优先级驱动的抢占式调度(如 RMS、EDF) 优先级调度或时间片轮转
WCET 分析 必须进行严格的最坏情况执行时间分析 通常不需要严格 WCET 分析
抖动容忍度 微秒级抖动即可能造成失效 毫秒级抖动可接受
实践要点:在 Linux PREEMPT_RT 的优化场景中,工业控制通常要求硬实时(抖动 < 100μs),而多媒体应用属于软实时(抖动 < 10ms 即可)。PREEMPT_RT 补丁的目标是将 Linux 从 GPOS 提升至接近硬实时的能力。
硬实时 vs 软实时:错过截止时间的影响 硬实时系统 任务 A(控制) 截止时间 D 错过截止时间 → 灾难性失效 飞行器坠毁 / 引擎损坏 软实时系统 任务 B(渲染) 截止时间 D 错过截止时间 → 服务质量降级 画面卡顿 / 音频断续 硬实时:错过截止时间 = 系统失效;软实时:错过截止时间 = 性能降级

1.3 实时操作系统(RTOS)与通用操作系统(GPOS)对比

实时操作系统(RTOS)和通用操作系统(GPOS)在设计哲学、调度策略、中断处理等方面存在根本性差异。下表从多个关键维度进行对比:

对比维度 RTOS(实时操作系统) GPOS(通用操作系统)
设计目标 时间确定性、可预测性 吞吐量最大化、公平性
调度策略 优先级抢占式调度(固定/动态优先级) 完全公平调度(CFS)、时间片轮转
中断延迟 微秒级(μs),可预测 毫秒级(ms),受内核非抢占区影响
内核抢占性 完全可抢占,中断嵌套支持 有限抢占(PREEMPT_NONE/VOLUNTARY)
优先级反转 通过优先级继承/天花板协议避免 可能发生,依赖锁机制处理
内存管理 通常无 MMU 或静态分配 虚拟内存、按需分页、交换
典型代表 FreeRTOS、VxWorks、QNX、RT-Linux Linux、Windows、macOS
应用场景 工业控制、航空航天、医疗设备 桌面计算、服务器、移动设备
关键认知:Linux 内核本质上是 GPOS,其设计优先考虑吞吐量和公平性。PREEMPT_RT 补丁通过引入完全内核抢占、中断线程化、高精度定时器等技术,将 Linux 改造为接近 RTOS 的实时能力,但并非真正的 RTOS 内核。
RTOS vs GPOS 内核架构对比 RTOS 内核架构 实时任务 A 实时任务 B 完全可抢占内核 中断延迟 < 10μs 硬件(CPU / 外设) GPOS 内核架构(Linux) 用户进程 A 用户进程 B 非抢占内核区域 中断延迟 > 1ms(可能) 硬件(CPU / 外设) RTOS 内核完全可抢占 → 低延迟;GPOS 内核存在非抢占区 → 高延迟抖动

1.4 Linux 实时化路径:PREEMPT_RT 的定位

Linux 内核社区提供了多种实时化方案,其中 PREEMPT_RT 是最主流、最成熟的路径。其核心思路是通过一系列补丁,将 Linux 内核从 GPOS 改造为具备硬实时能力的系统。

PREEMPT_RT 的关键技术包括:

  1. 完全内核抢占(Full Preemption):将内核中的自旋锁替换为可睡眠的互斥锁,使内核几乎处处可抢占。
  2. 中断线程化(IRQ Threading):将硬件中断处理程序转换为内核线程,降低中断延迟对实时任务的影响。
  3. 高精度定时器(HRT):使用高精度定时器框架替代传统定时器,提供微秒级定时精度。
  4. 优先级继承协议(PI):在互斥锁中实现优先级继承,避免优先级反转问题。
课程定位:本课程将深入分析 PREEMPT_RT 补丁的增量更新机制,讲解如何通过内核补丁方式逐步优化 Linux 的实时性能,最终达到工业级硬实时要求(抖动 < 50μs)。
Linux 实时化路径演进 PREEMPT_NONE 无抢占 PREEMPT_VOLUNTARY 自愿抢占 PREEMPT_DESKTOP 低延迟桌面 PREEMPT_RT 完全实时抢占 延迟 > 100ms 延迟 ~ 10-100ms 延迟 ~ 1-10ms 延迟 < 100μs PREEMPT_RT 是 Linux 实时化的最终目标,通过增量补丁逐步降低内核延迟