第一章 实时系统概述

各位同学好,我是你们这门课的主讲。在Intel平台摸爬滚打了十几年,今天咱们来聊聊实时系统。

说实话,很多人一听到「实时」两个字,第一反应就是「快」。其实不然。我见过不少项目,硬件跑得飞快,但该响应的时候没响应,结果整个系统崩了。嗯,这里要注意——实时系统的核心不是快,而是「确定性」。

1.1 实时系统的定义

什么叫实时系统?说白了,就是系统必须在规定的时间内对外部事件做出响应。这个「规定时间」不是随便定的,而是由应用场景决定的。

我个人习惯把实时系统比作一个守时的快递员。你下单后,他必须在承诺的时间内把货送到。早到或晚到都不行——早到你可能不在家,晚到你可能已经等不及了。实时系统也一样,任务必须在截止时间前完成。

实时系统的核心特征:

  • 时间确定性:任务的执行时间可预测,不是越快越好,而是越确定越好
  • 响应及时性:对外部事件的响应必须在规定的时间窗口内完成
  • 可靠性:系统必须稳定运行,不能因为时间压力而崩溃

我在项目中遇到过这样一个案例:一个工业机器人控制系统,CPU主频很高,但任务调度没做好,结果机械臂该抓取的时候没抓取,该停止的时候没停止。最后查出来,问题出在中断响应时间不稳定上。你看,硬件再强,软件设计不到位,照样出问题。

1.2 硬实时与软实时的区别

这是实时系统里最基础、也最容易混淆的概念。我刚开始做嵌入式时,也分不太清,直到有一次在项目中吃了亏。

特性 硬实时系统 软实时系统
截止时间要求 必须严格遵守,错过即失败 偶尔错过可以接受
后果 灾难性后果(人员伤亡、设备损坏) 性能下降、用户体验变差
典型应用 航空电子、安全气囊、心脏起搏器 视频播放、网络游戏、手机应用
设计方法 最坏情况分析,预留充足余量 平均情况优化,允许统计性延迟

为什么会这样?你想想看,飞机飞控系统如果延迟了100毫秒,飞机可能就失速了。但视频播放卡顿100毫秒,顶多就是画面跳一下,用户骂两句而已。

避坑指南:我曾经在一个工业控制项目中,把软实时的设计思路用在了硬实时场景上。结果呢?系统在99%的情况下都跑得很好,但就是那1%的延迟,导致了一次设备碰撞事故。从那以后,我设计任何系统都会先问清楚:这个任务到底能不能容忍延迟?能容忍多少?

1.3 实时系统的应用场景

实时系统无处不在,只是你可能没注意到。我挑三个典型的场景来讲讲。

1.3.1 工业控制

工业控制是实时系统最传统的应用领域。PLC(可编程逻辑控制器)、DCS(分布式控制系统)、运动控制器,这些都是典型的实时系统。

我记得有一次去一个汽车制造厂调试生产线。那条生产线上的焊接机器人,每个动作的时间精度要求是±1毫秒。你想想看,一个机器人手臂在高速运动,如果控制指令晚到了1毫秒,焊枪可能就偏了位置,焊出来的零件就是废品。

工业控制系统的特点:

  • 周期性强:大多数任务是周期性执行的,比如每10毫秒采集一次传感器数据
  • 确定性要求高:任务的执行时间必须可预测,不能有大的抖动
  • 可靠性优先:系统通常需要7×24小时不间断运行

1.3.2 自动驾驶

自动驾驶是近年来实时系统最热门的应用领域。说实话,这个领域对实时性的要求,比工业控制还要苛刻。

为什么?因为自动驾驶系统要处理的信息量太大了。摄像头、激光雷达、毫米波雷达、超声波传感器……所有这些数据都要在毫秒级的时间内融合处理,然后做出决策。

我参与过一个自动驾驶平台的评估项目。当时测试的是紧急制动场景:车辆以60km/h的速度行驶,前方突然出现障碍物。从传感器检测到障碍物,到算法计算出制动指令,再到执行器开始制动,整个链路必须在200毫秒内完成。超过这个时间,车辆就撞上去了。

个人经验:在自动驾驶系统中,我建议把任务分为三个优先级:

  1. 安全关键任务(最高优先级):制动控制、转向控制、碰撞检测
  2. 感知任务(中优先级):目标检测、路径规划
  3. 非安全任务(低优先级):日志记录、OTA升级、娱乐系统

这样分层的目的是确保在系统负载高时,安全关键任务永远能获得CPU资源。

1.3.3 航空航天

航空航天是实时系统的「天花板」应用。这里的实时性要求,已经到了「不容许任何差错」的程度。

我有个朋友在航天院所工作,他跟我讲过卫星上的实时系统设计。一颗卫星在轨运行时,要同时处理姿态控制、轨道控制、载荷控制、通信控制等多个任务。每个任务都有严格的时间窗口,错过了就错过了——比如卫星过顶通信窗口,错过了就要等下一个轨道周期,可能是90分钟以后。

航空航天系统的特点:

  • 容错设计:通常采用三模冗余(TMR)设计,三个处理器同时运行,投票决定输出
  • 时间分区:不同安全等级的任务在时间上完全隔离,互不干扰
  • 确定性调度:使用时间触发(Time-Triggered)架构,所有任务的执行时间都是预先规划好的

嗯,说到这里,我想强调一点:航空航天领域的实时系统设计方法,其实可以借鉴到很多其他领域。比如时间触发架构,现在在工业控制领域也越来越流行了。

本章小结

这一章我们讲了实时系统的三个核心问题:

  1. 什么是实时系统——核心是确定性,不是快
  2. 硬实时和软实时的区别——错过截止时间的后果不同,设计方法也不同
  3. 三个典型应用场景——工业控制、自动驾驶、航空航天,各有各的特点和挑战

下一章,我们会深入Intel平台的硬件架构,看看x86处理器是如何支持实时系统的。到时候我会分享一些在Intel平台上做实时优化的实战经验,敬请期待。