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