1. 课程导论:实时系统定义、硬实时与软实时区别、抢占模型的重要性

1.1 实时系统的核心定义

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

实时系统的核心特征可以归纳为以下三点:

  • 时间确定性(Determinism):系统对外部事件的响应时间必须是可预测的,具有确定的上界(Worst-Case Execution Time, WCET)。
  • 并发处理能力:能够同时管理多个具有不同时间约束的任务。
  • 优先级驱动调度:系统调度器必须能够根据任务的紧急程度进行抢占式调度。
常见误区澄清:Linux 默认内核虽然吞吐量高,但中断关闭和自旋锁持有时间过长,会导致不可预测的延迟抖动(Jitter)。这正是引入 PREEMPT_RT 和低延迟配置的根本原因。
实时系统时间约束示意图 事件触发 t₀ 任务执行(WCET) 截止时间 t₁ 超时失效 t₂ 硬实时:必须在 t₀→t₁ 内完成,否则系统崩溃或造成灾难性后果。 软实时:允许偶尔在 t₁→t₂ 之间完成,但服务质量(QoS)会下降。

1.2 硬实时与软实时的本质区别

根据错过截止时间后系统后果的严重程度,实时系统被划分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两大类。理解这一区别是选择抢占模型的前提。

对比维度 硬实时(Hard RT) 软实时(Soft RT)
截止时间后果 错过即系统失效,可能导致灾难 性能下降,但系统仍可运行
典型应用 飞行控制、汽车引擎 ECU、医疗起搏器 音视频播放、网络游戏、工业监控
调度策略要求 完全可抢占、优先级严格继承 尽力而为、允许少量延迟抖动
内核配置倾向 PREEMPT_RT 全抢占 低延迟配置(如 PREEMPT_LL)
最大允许抖动 微秒级(< 10 µs) 毫秒级(< 10 ms)
关键决策点:如果你的系统需要控制机械臂在 1ms 内响应传感器中断,这是硬实时场景,必须使用 PREEMPT_RT。如果只是需要流畅播放 4K 视频,软实时配置即可满足需求。

1.3 抢占模型的重要性

抢占模型(Preemption Model)决定了 Linux 内核在何种时机、何种粒度下允许高优先级任务打断低优先级任务的执行。它直接决定了系统的实时响应能力和吞吐量之间的平衡。

Linux 内核的抢占模型经历了以下演进阶段:

  1. 非抢占内核(PREEMPT_NONE):适用于服务器场景,追求最大吞吐量,任务只能在内核态主动让出 CPU 时才能被切换。
  2. 自愿内核抢占(PREEMPT_VOLUNTARY):在内核代码中显式添加抢占点,降低调度延迟,适用于桌面系统。
  3. 低延迟抢占(PREEMPT_LL / PREEMPT):允许在大多数内核代码中抢占,但仍有少数临界区不可抢占。
  4. 完全实时抢占(PREEMPT_RT):通过替换自旋锁为可抢占锁、中断线程化等技术,实现几乎全部内核代码的可抢占性。
Linux 内核抢占模型演进架构图 Linux 内核抢占模型演进与实时性提升 PREEMPT_NONE 非抢占内核 服务器场景 PREEMPT_VOLUNTARY 自愿抢占点 桌面系统 PREEMPT_LL 低延迟抢占 多媒体应用 PREEMPT_RT 完全实时抢占 工业/航空/医疗 实时性 高 抢占粒度越细,实时性越高,但上下文切换开销也越大。PREEMPT_RT 将最大关中断时间从毫秒级降至微秒级。

1.4 抢占模型对系统性能的影响

选择不同的抢占模型,本质上是在实时响应能力与系统吞吐量之间做权衡。以下是一个典型的性能对比数据:

抢占模型 最大调度延迟 中断响应延迟 吞吐量损失 适用场景
PREEMPT_NONE 10 ~ 100 ms 5 ~ 50 ms 0%(基准) Web 服务器、批处理
PREEMPT_VOLUNTARY 1 ~ 10 ms 1 ~ 5 ms 1% ~ 3% 桌面系统、轻量服务
PREEMPT_LL 100 µs ~ 1 ms 100 µs ~ 1 ms 3% ~ 8% 音视频、游戏
PREEMPT_RT < 10 µs < 5 µs 5% ~ 15% 工业控制、自动驾驶
工程警告:不要盲目追求 PREEMPT_RT。如果你的应用场景是数据库或文件服务器,开启 PREEMPT_RT 反而会因为频繁的上下文切换导致吞吐量下降 10% 以上。务必根据实际业务的时间约束来选择。

1.5 本课程的学习路径

本课程将围绕以下主线展开:

  • 第 2-5 章:深入剖析 PREEMPT_RT 的核心机制(中断线程化、可抢占锁、RCU 增强)。
  • 第 6-8 章:低延迟配置(PREEMPT_LL、线程 IRQ、NO_HZ)的原理与调优。
  • 第 9-12 章:实战对比——在相同硬件上部署两种模型,测量调度延迟、中断响应和吞吐量。
  • 第 13-15 章:选型决策树与行业案例(航空航天、工业机器人、自动驾驶)。

通过本课程,你将掌握如何根据业务的时间约束、硬件平台和性能要求,做出正确的抢占模型选型决策。