1. 实时系统基础

实时系统是嵌入式 Linux 开发中最重要的概念之一。理解实时系统的定义、分类以及与通用操作系统的差异,是进行 PREEMPT_RT 性能验证的前提。本章从基础概念出发,建立清晰的实时性知识框架。

1.1 实时系统定义

实时系统(Real-Time System)是指系统必须在规定的时间约束内对外部事件做出响应的计算系统。其核心特征不是“快”,而是“可预测”——即系统行为的确定性(Determinism)。

关键定义: 实时系统的正确性不仅取决于计算结果的逻辑正确性,还取决于结果产生的时间是否满足截止期限(Deadline)。

实时系统广泛应用于工业控制、航空航天、汽车电子、医疗设备、机器人等领域。在这些场景中,错过截止期限可能导致设备损坏、数据丢失甚至人身安全事故。

实时系统基本模型 外部事件 传感器/中断 实时任务 (响应处理) 执行器/输出 截止期限 事件 → 响应 → 输出,必须在截止期限前完成

1.2 硬实时与软实时区别

根据错过截止期限的后果严重程度,实时系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两类。这是实时系统设计中最基本的分类。

对比维度 硬实时(Hard RT) 软实时(Soft RT)
错过截止期限的后果 系统失效、灾难性故障 性能下降、服务质量降低
时间确定性要求 必须 100% 满足 统计意义上满足(如 99.9%)
典型应用 航空电子、安全气囊、心脏起搏器 音视频播放、网络通信、人机交互
调度策略 优先级抢占、时间触发 优先级调度、公平调度
验证方法 形式化验证、最坏情况分析 统计测试、性能基准
对 OS 的要求 极低延迟抖动、可预测中断 较低延迟、可接受抖动
实践提示: 在嵌入式 Linux 中,PREEMPT_RT 补丁主要解决的是软实时到硬实时之间的差距。对于真正的硬实时场景(如发动机控制),通常需要结合专用硬件或使用 RTOS。
硬实时 vs 软实时 时序对比 硬实时: 任务执行 截止期限 ✓ 必须在此前完成 软实时: 任务执行 截止期限 ✗ 可偶尔超时 抖动(Jitter)对比: 硬实时:抖动极小(μs级) 软实时:抖动可容忍(ms级) 硬实时要求确定性,软实时允许统计意义上的超时

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

实时操作系统(RTOS)和通用操作系统(GPOS)在设计哲学、调度策略、中断处理等方面存在本质差异。嵌入式 Linux 通过 PREEMPT_RT 补丁,试图在 GPOS 的生态优势与 RTOS 的实时能力之间取得平衡。

核心差异对比表

对比维度 RTOS(如 FreeRTOS、VxWorks) GPOS(如标准 Linux、Windows)
设计目标 可预测性、低延迟、确定性 高吞吐量、公平性、多用户
调度策略 优先级抢占、时间片轮转 完全公平调度(CFS)、O(1) 调度
中断延迟 极低(μs 级) 较高(ms 级,受关中断影响)
内核抢占 完全可抢占 有限抢占(PREEMPT_NONE/VOLUNTARY)
锁机制 优先级继承、无锁队列 自旋锁、互斥锁(可能优先级反转)
内存管理 静态分配为主,无 MMU 可选 虚拟内存、页交换、动态分配
生态与驱动 有限、厂商绑定 丰富、开源、社区支持
典型场景 工业控制器、航天、军事 桌面、服务器、移动设备

调度策略对比

RTOS 和 GPOS 在调度策略上的差异直接决定了系统的实时响应能力。以下是一个简化的调度模型对比:

RTOS 与 GPOS 调度模型对比 RTOS 调度模型(优先级抢占) 高优先级任务(实时任务) 中优先级任务 低优先级任务(后台任务) 抢占 抢占 GPOS 调度模型(CFS 公平调度) 任务 A(时间片 1) 任务 B(时间片 2) 任务 C(时间片 3) RTOS 特点 高优先级任务立即抢占低优先级 确定性:响应时间可预测 优先级反转需特殊机制处理 GPOS 特点 公平分配 CPU 时间片 吞吐量优先,实时性弱

中断处理差异

中断延迟是衡量实时性的关键指标。RTOS 和 GPOS 在中断处理流程上的差异如下:

  • RTOS: 中断服务程序(ISR)直接处理,延迟极短;支持嵌套中断;中断优先级与任务优先级独立管理。
  • GPOS(标准 Linux): 中断分为上半部(Top Half)和下半部(Bottom Half/Tasklet);上半部关中断执行,下半部在软中断上下文执行,可能被其他中断延迟。
  • PREEMPT_RT Linux: 将中断线程化(IRQ Threading),将大部分中断处理移到可抢占的线程上下文,降低关中断时间,提升实时性。
常见误区: 很多人认为“Linux 不是实时系统”。实际上,通过 PREEMPT_RT 补丁,Linux 可以满足大多数软实时和部分硬实时需求。但真正的硬实时场景(如 10μs 级确定性响应)仍需专用 RTOS 或硬件支持。

选择建议

在实际项目中,选择 RTOS 还是实时 Linux 取决于以下因素:

  1. 实时性要求: 如果截止期限在微秒级且必须 100% 满足,优先考虑 RTOS;如果毫秒级或统计满足即可,实时 Linux 更合适。
  2. 生态与开发效率: Linux 拥有丰富的驱动、工具链和社区支持,开发效率高;RTOS 通常需要更多底层开发。
  3. 硬件资源: RTOS 可运行在无 MMU 的 MCU 上;Linux 需要 MMU 和较大内存(通常 64MB+)。
  4. 维护与升级: Linux 长期支持(LTS)版本提供稳定内核;RTOS 的维护和升级成本较高。
RTOS vs 实时 Linux 选择决策流程 实时性需求分析 硬实时(μs级确定性) 软实时(ms级统计) 选择 RTOS 选择 PREEMPT_RT Linux 决策依据:截止期限精度、确定性要求、生态需求、硬件资源

1.4 实时性关键指标

在后续章节的测试中,我们将反复使用以下指标来量化实时性:

指标名称 定义 典型值(PREEMPT_RT)
中断延迟 从硬件中断触发到 ISR 开始执行的时间 5-50 μs
调度延迟 从任务就绪到获得 CPU 的时间 10-100 μs
上下文切换时间 从一个任务切换到另一个任务的时间 1-10 μs
抖动(Jitter) 实际响应时间与期望响应时间的偏差 ±20 μs
最坏情况执行时间(WCET) 任务在最差条件下的最大执行时间 取决于任务复杂度
测试重点: 在 PREEMPT_RT 性能验证中,我们主要关注最大延迟(Worst-Case Latency)和抖动分布(Jitter Distribution),而非平均延迟。因为实时系统的核心是保证最坏情况下的确定性。

通过本章的学习,你已经掌握了实时系统的基础概念、硬实时与软实时的区别、RTOS 与 GPOS 的对比,以及实时性关键指标。这些知识是后续进行 PREEMPT_RT 补丁配置、内核编译、延迟测试和性能分析的理论基础。