概述

实时计算指硬件和软件系统受”实时约束”,从事件到系统响应必须在严格的时间限制(deadline)内完成。正确性不仅取决于逻辑结果,还取决于完成时间

实时系统的核心要求是一致的输出,而非高吞吐量。

实时系统分类

类型描述例子
硬实时(Hard)错过deadline = 系统完全失效汽车引擎控制、防抱死刹车、心脏起搏器
稳实时(Firm)偶尔错过deadline可容忍,但结果无价值偶尔出错的装配线机器
软实时(Soft)结果在deadline后降质,但系统仍可运行视频游戏、航班计划更新、视频会议

实时操作系统(RTOS)

实时软件可使用:

  • 同步编程语言(Synchronous programming languages)
  • 实时操作系统(RTOS)
  • 实时网络

RTOS特征

  • 优先级驱动调度:通常为抢占式(preemptive)
  • 确定性调度:任务切换时间可预测
  • 支持前景/后台调度:低优先级任务在无高优先级任务时运行

常见RTOS

  • VxWorks
  • FreeRTOS
  • QNX
  • RTLinux(硬实时扩展)

调度算法

Rate-Monotonic Scheduling(速率单调调度)

  • 属于固定优先级调度
  • 需要已知每个任务的最坏执行时间
  • 任务周期越短,优先级越高
  • 可用性条件:,其中为任务数

Earliest Deadline First(最早截止时间优先)

  • 属于动态优先级调度
  • 忽略上下文切换开销时,系统负载 即可保证所有deadline被满足
  • 更灵活但实现复杂度高

其他调度算法

算法类型特点
Round Robin固定时间片轮转,适合交互系统
FIFO固定先来先服务,最简单
Multilevel Feedback Queue混合兼顾响应时间和吞吐量

优先级反转问题

定义

优先级反转是实时系统调度中的一种现象:高优先级任务被低优先级任务间接抢占,违反了优先级模型。发生在共享资源争用时——低优先级任务持有锁,高优先级任务因此阻塞。

经典场景

  1. 低优先级任务 L 获取共享资源 R
  2. 中优先级任务 M 就绪,抢占 L
  3. L 无法释放 R,导致高优先级任务 H 被阻塞

Mars Pathfinder案例1

1997年火星探路者号着陆器因优先级反转导致系统复位:

  1. 高优先级气象任务等待一个被低优先级气象任务持有的信号量
  2. 中优先级的通信任务抢占低优先级任务
  3. 高优先级任务长期饥饿,触发看门狗定时器复位系统

优先级继承与天花板协议

优先级继承(Priority Inheritance)

当高优先级任务等待低优先级任务持有的资源时,临时将低优先级任务的优先级提升到所有等待者中的最高优先级,直至释放资源后恢复原优先级。

这一机制阻止了中等优先级任务抢占原本持有锁的低优先级任务。

优先级天花板协议(Priority Ceiling Protocol)

互斥锁本身被赋予一个”天花板优先级”(通常为系统中最高优先级),任何尝试获取该锁的任务继承这一优先级。

只要持有锁的任务优先级不低于天花板优先级,就不会发生反转。适用于所有访问该锁的任务优先级都低于天花板的情况。

比较

特性优先级继承优先级天花板
触发时机阻塞发生时获取锁时
复杂度中等较高
保障阻止无限阻塞根本防止优先级反转

实时系统的其他关键概念

上下文切换开销

任务切换需要保存/恢复寄存器、缓存等,开销不可忽视。实时调度分析必须考虑这一因素。

中断延迟

从硬件中断到中断服务程序(ISR)执行的时间,是实时系统的重要指标。

抖动(Jitter)

任务执行时间的变化范围。对于硬实时系统,抖动必须被严格控制。

应用场景

领域实时要求示例
汽车电子硬实时防抱死刹车、安全气囊
航空航天硬实时飞行控制系统
工业自动化硬/稳实时PLC控制、机器人
多媒体软实时视频播放、音视频同步
网络游戏软实时多人对战

参考资料

Footnotes

  1. Glenn Reeves, What Really Happened on Mars, JPL Pathfinder team