1. 实时系统概述

1.1 实时系统的定义

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

核心定义:实时系统 = 逻辑正确 + 时序正确。时间约束是实时系统区别于通用系统的根本特征。

实时系统的关键属性包括:

  • 可预测性(Predictability):系统行为在时间维度上必须是可预测的,即最坏情况执行时间(WCET, Worst-Case Execution Time)可被分析或测量。
  • 确定性(Determinism):相同的输入和初始条件,必须在相同的时间范围内产生相同的输出。
  • 响应时间(Response Time):从事件发生到系统产生响应的时间间隔,必须满足应用需求。
  • 截止时间(Deadline):任务必须完成的时间点,分为硬截止时间和软截止时间。
实时系统核心概念关系图 实时系统 可预测性 确定性 响应时间 硬截止时间 软截止时间 时间约束是实时系统区别于通用系统的根本特征

1.2 硬实时与软实时的区别

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

对比维度 硬实时(Hard RT) 软实时(Soft RT)
截止时间错过后果 系统灾难、设备损坏、人员伤亡 性能下降、服务质量降低、用户体验变差
典型应用 飞行控制系统、汽车引擎ECU、医疗起搏器、导弹制导 视频播放、VoIP通话、在线游戏、流媒体处理
时间确定性要求 必须100%满足截止时间,最坏情况可预测 统计意义上满足即可,允许偶尔超时
调度策略 优先级驱动、速率单调(RM)、最早截止时间优先(EDF) 通用调度器配合实时优先级
内核抢占要求 完全可抢占内核,中断响应时间微秒级 低延迟抢占即可,毫秒级响应可接受
资源预留 必须预留足够资源保证WCET 按平均负载分配资源
实践提示:在Linux实时化改造中,PREEMPT_RT补丁主要面向硬实时场景,而内核自带的PREEMPT选项通常只能提供软实时能力。选择哪种方案取决于你的应用对截止时间错过的容忍度。
硬实时与软实时截止时间对比 时间轴 事件 截止时间 硬实时:必须在此区间完成 软实时:允许在此区间完成,但服务质量下降 超时区 硬实时:错过截止时间 = 系统失效 软实时:错过截止时间 = 性能下降

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

实时操作系统(RTOS)和通用操作系统(GPOS)在设计哲学、调度策略、内核架构等方面存在本质差异。理解这些差异是进行Linux实时化改造的基础。

对比维度 RTOS(如 VxWorks、QNX、FreeRTOS) GPOS(如标准 Linux、Windows、macOS)
设计目标 时间确定性、可预测性、低延迟 吞吐量、公平性、资源利用率、多用户
调度策略 优先级抢占调度(固定优先级或EDF) 完全公平调度(CFS)、时间片轮转
内核抢占性 完全可抢占,中断响应时间极短 有限抢占(内核态不可抢占或仅在特定点可抢占)
中断处理 中断嵌套、中断线程化、优先级继承 中断上半部/下半部(Bottom Half)、软中断、tasklet
锁机制 优先级继承协议、无锁数据结构、关中断时间极短 自旋锁、读写锁、互斥锁、RCU(读-拷贝-更新)
内存管理 静态内存分配为主,避免缺页中断 虚拟内存、按需分页、交换、内存映射
典型延迟 中断响应 < 10μs,任务切换 < 5μs 中断响应 10-100μs,任务切换 10-50μs
适用场景 工业控制、航空航天、汽车电子、医疗设备 桌面计算、服务器、云计算、嵌入式非实时应用
关键认知:标准Linux是一个GPOS,其内核设计优先考虑吞吐量和公平性,而非时间确定性。通过PREEMPT_RT补丁,Linux可以改造为接近硬实时的RTOS,但本质上仍是在GPOS内核上增加实时特性,而非从头设计的RTOS。
RTOS与GPOS内核架构对比 RTOS 内核架构 实时任务(固定优先级) 优先级抢占调度器 中断线程化 + 优先级继承 最小化内核服务(关中断时间极短) 硬件抽象层(HAL) GPOS 内核架构(标准Linux) 用户进程(CFS调度) 系统调用接口 VFS / 进程管理 / 内存管理 中断上半部 + 软中断 / tasklet 设备驱动框架 RTOS追求时间确定性,GPOS追求吞吐量和公平性

1.4 Linux实时化改造的定位

标准Linux作为GPOS,通过引入PREEMPT_RT补丁(Real-Time Linux)可以显著提升实时性能。其核心改造思路包括:

  1. 内核完全可抢占化:将内核中的自旋锁替换为可睡眠的互斥锁(rt_mutex),使内核态代码也能被高优先级任务抢占。
  2. 中断线程化:将中断处理程序下半部改为内核线程,允许被实时任务抢占。
  3. 优先级继承协议:解决优先级反转问题,确保高优先级任务不被低优先级任务无限阻塞。
  4. 高精度定时器:使用高精度定时器(hrtimer)替代传统时间轮,提供纳秒级定时精度。
课程定位:本课程将深入讲解如何通过配置Linux内核参数、调整调度策略、优化中断处理和使用PREEMPT_RT补丁,将通用Linux系统改造成满足硬实时需求的实时操作系统。
Linux实时化改造路径 标准Linux (GPOS) 内核完全可抢占 中断线程化 优先级继承协议 实时Linux (RTOS) PREEMPT_RT 补丁

1.5 本章小结