1. 实时系统概述:定义、硬实时与软实时区别、应用场景

大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊实时系统。

说实话,我入行那会儿,对「实时」这个词的理解特别肤浅。以为就是「快」,响应越快越实时。后来在工控现场栽过跟头,才明白——实时不是快,是确定性。你想想看,一个系统再快,如果关键时刻掉链子,或者响应时间忽长忽短,那在工业现场就是灾难。

1.1 什么是实时系统?

实时系统,说白了就是:系统必须在规定的时间窗口内,对外部事件做出响应。这个「规定时间」就是截止时间(Deadline)。

我习惯用一个比喻:你去食堂打饭,厨师必须在12:00到12:30之间把菜做好。早了(11:30)菜凉了,晚了(12:40)大家饿肚子。这就是实时——时间窗口是刚性的。

实时系统的核心特征有三个:

  • 时间约束:每个任务都有明确的截止时间
  • 可预测性:系统行为在时间上是可分析的
  • 可靠性:错过截止时间可能导致严重后果

核心观点:实时系统追求的不是「尽可能快」,而是「保证在截止时间前完成」。这是理解整个课程的基础。

1.2 硬实时 vs 软实时

这里有个关键区分,我当年面试时就被问过。硬实时和软实时,区别在哪?

硬实时:错过截止时间 = 系统失败。后果可能是灾难性的。

软实时:偶尔错过截止时间,系统还能凑合用,但性能会下降。

我举个例子你就明白了:

  • 硬实时:汽车安全气囊的触发。必须在碰撞后几毫秒内弹出,晚1毫秒,人就可能撞上方向盘。没得商量。
  • 软实时:视频播放。偶尔丢一帧,画面卡一下,用户骂两句,但系统不会崩溃。

嗯,这里要注意:硬实时系统在设计时,必须做最坏情况分析。我曾经在一个飞控项目中,因为低估了中断嵌套的延迟,导致控制律计算超时——那次试飞差点出事。从那以后,我养成了一个习惯:所有硬实时任务,都按最坏情况留出50%的余量。

特性 硬实时 软实时
错过截止时间 系统失效 性能下降
设计方法 最坏情况分析 统计概率保证
典型应用 航空、医疗、工控 多媒体、通信
调度策略 优先级抢占、时间触发 尽力而为、优先级

我的经验:很多初学者容易把「硬实时」和「高性能」混为一谈。其实硬实时系统往往跑在相对保守的频率上,因为要保证确定性。高性能是「跑得快」,实时性是「跑得准」。

1.3 实时系统的应用场景

咱们来看看实时系统到底用在哪。我挑三个典型领域说说。

工业控制

这是实时系统的老本行。PLC、DCS、运动控制器,全是实时系统。

我记得刚入行时调试一个伺服驱动器,位置环周期要求100微秒。当时用的是一颗200MHz的DSP,看着挺强,结果一跑起来,中断响应抖动有20微秒。电机在低速时就开始抖。后来查出来是DMA和中断抢总线——这就是典型的实时性问题。

工业控制中常见的实时要求:

  • PLC扫描周期:1ms ~ 10ms
  • 伺服位置环:50μs ~ 200μs
  • EtherCAT通信周期:100μs ~ 1ms

自动驾驶

这个领域最近特别火。自动驾驶对实时性的要求,其实比工业控制更苛刻。为什么?因为工业现场的环境是可控的,而自动驾驶面对的是开放道路。

举个例子:摄像头采集一帧图像,必须在10ms内完成目标检测。如果延迟了,车已经开出去几米了,再刹车就来不及了。

自动驾驶中的实时任务:

  • 传感器融合:10ms ~ 50ms
  • 路径规划:50ms ~ 100ms
  • 控制执行:1ms ~ 10ms

避坑指南:我曾经见过一个团队,在自动驾驶项目中用了Linux + PREEMPT_RT,觉得实时性够了。结果在高速场景下,因为一次页面缺失导致控制延迟了200ms——车差点撞护栏。记住:虚拟内存和实时性天生矛盾。做实时系统,内存访问时间必须是确定的。

航空航天

这是实时系统的天花板。航空电子系统(Avionics)对实时性的要求,可以用「变态」来形容。

我参与过一个卫星姿控项目,控制周期是10ms,但要求抖动不超过1μs。你想想看,10ms的周期,抖动控制在1μs,也就是万分之一。这要求整个系统的时序必须像瑞士钟表一样精准。

航空航天中的实时标准:

  • ARINC 653:分区操作系统标准
  • DO-178C:机载软件适航认证
  • 时间触发以太网(TTE):纳秒级同步精度

1.4 实时系统的知识体系

下面这张图,是我自己梳理的实时系统知识框架。你可以把它当作整个课程的地图。

实时系统 核心定义 硬实时 vs 软实时 应用场景 时间约束 可预测性 错过=失败 错过=降级 工业控制 自动驾驶 PLC/DCS 运动控制 传感器融合 航空航天 ARINC 653 DO-178C 确定性 > 高性能

这张图把实时系统的核心脉络串起来了。从定义出发,到分类,再到应用场景。你会发现,无论哪个领域,最终都指向同一个结论:确定性压倒一切

1.5 小结

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

  1. 是什么:在规定时间内完成规定动作
  2. 怎么分:硬实时和软实时,区别在于错过截止时间的后果
  3. 用在哪:工控、自动驾驶、航空航天,要求一个比一个苛刻

我个人觉得,理解实时系统的关键,不在于记住那些术语,而在于建立一种「时间意识」。做实时系统设计时,你脑子里要时刻有一根弦——这个任务最坏情况要跑多久?中断来了会不会抢CPU?内存访问会不会有抖动?

下一章,我们会深入实时系统的调度机制。到时候我会拿一个实际项目中的调度器设计案例,带大家看看理论是怎么落地的。


专注资料整理