在计算机系统领域,经常可以看到两个词:

Real-Time,实时。

Hard Real-Time,硬实时。

很多时候,人们会把“实时”简单理解成“速度很快”。

但实际上,实时系统最核心的问题从来不是快,而是时间是否可控。

一个系统平均只需要 10 μs 完成任务,并不一定比另一个平均需要 50 μs 的系统更加“实时”。

真正需要关注的问题是:

当系统处于最不利的情况下,它还能不能在规定的时间内完成任务?

这也是理解 Hard Real-Time 的关键。

 

一、实时,不等于快

假设有一个控制任务,要求必须在 1 ms 内完成。

系统 A:

平均响应时间:100 μs

最坏情况:150 μs

系统 B:

平均响应时间:50 μs

最坏情况:8 ms

如果只看平均性能,B 显然更快。

但如果这个任务的截止期限是 1 ms,那么 B 在某些情况下就可能已经无法满足要求。

这说明:

实时系统真正关心的不是平均速度,而是时间约束。

对于普通计算任务:

算得越快通常越好。

对于实时任务:

在规定时间内完成,比单纯追求平均速度更加重要。

而到了硬实时系统,这个要求会进一步提高。

 

二、Hard Real-Time 到底“硬”在哪里?

“硬实时”中的“硬”,并不是说硬件更强,也不是说系统运行速度更快。

它指的是:

时间约束具有严格的正确性意义。

对于一个硬实时任务,如果规定必须在某个 Deadline(截止期限)之前完成,那么超过这个期限,即使最终计算结果是正确的,也可能已经失去了价值。

因此,硬实时系统的正确性实际上包含两个维度:

逻辑正确性 + 时间正确性。

也就是说:

结果正确,但时间错了,仍然可能是失败。

这和普通软件存在非常明显的区别。

例如:

一个视频播放器晚几毫秒处理一帧,通常不会导致系统失效。

但对于某些控制系统,如果控制输出晚于规定时间才产生,那么这个输出即使数学上完全正确,也可能已经无法用于当前控制周期。

因此:

时间本身就是系统正确性的一部分。

 

三、真正困难的不是“快”,而是“最坏情况”

这是理解实时系统最重要的一个概念。

很多性能测试喜欢告诉我们:

平均响应时间是多少?

但对于硬实时系统,一个更加关键的问题是:

最坏情况下需要多长时间?

假设一个任务执行时间通常只有 100 μs。

如果测试了 10 万次:

99.99% 的情况都在 100 μs 左右完成。

但其中有一次突然用了 10 ms。

那么对于一个 Deadline 只有 1 ms 的任务而言,这一次异常就可能意味着任务失败。

所以:

平均值描述的是“通常发生什么”。

最坏情况描述的是“最危险的时候会发生什么”。

而硬实时系统需要尽可能回答后者。

这也是为什么实时系统研究中会出现 WCET(Worst-Case Execution Time,最坏情况执行时间)、WCRT(Worst-Case Response Time,最坏情况响应时间)以及可调度性分析等概念。

 

四、为什么“低延迟”仍然不等于“硬实时”?

这是一个非常容易产生误解的地方。

假设一个系统的平均延迟只有 5 μs。

看起来非常快。

但是如果:

平时 5 μs,偶尔 20 ms。

那么它仍然可能无法满足严格的实时要求。

相反,一个系统:

平时 20 μs,最坏情况始终能够控制在 30 μs。

对于某些严格时间约束的应用来说,后者反而更加有意义。

因此:

低延迟描述的是性能。

确定性描述的是时间行为。

两者存在联系,但并不是同一个概念。

这也是实时系统和普通高性能系统之间一个非常重要的区别。

 

五、为什么“高性能”也不等于“高确定性”?

现代处理器越来越快。

多核 CPU、Cache、流水线、乱序执行、分支预测、高速总线、复杂操作系统……

这些技术能够极大提高平均性能。

但与此同时,系统内部的行为也越来越复杂。

Cache 是否命中?

总线是否被其他设备占用?

是否发生中断?

是否存在更高优先级任务?

是否发生任务切换?

是否存在锁竞争?

是否发生内存访问等待?

这些因素都可能改变一次任务实际需要的时间。

因此:

计算能力越强,不代表时间行为天然越确定。

对于实时系统来说,真正困难的问题是:

能不能理解并控制这些最坏情况?

 

六、实时调度理论就是在解决这个问题

硬实时并不是一个为了让操作系统名字听起来更“硬核”而产生的概念。

它背后有非常深的理论基础。

1973 年,C. L. Liu 和 James W. Layland 发表经典论文:

Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment

这项工作研究的就是具有严格时间要求的任务应该如何进行调度,以及在什么条件下可以保证任务获得所需要的处理时间。

这篇论文后来成为实时调度理论的重要基础之一。

从这里可以看到:

Hard Real-Time 本质上是一个关于时间约束、任务调度和可验证性的计算机科学问题。

它并不是简单地给 RTOS 加一个 “Hard” 就完成了。

 

七、一个真正的硬实时系统,需要回答很多问题

如果一个系统声称具有严格的硬实时能力,那么真正值得问的不是:

“你的系统快不快?”

而是:

“你的时间边界在哪里?”

例如:

任务执行

最坏情况下,一个任务需要多少时间?

中断响应

从硬件产生中断,到系统真正开始处理,需要多长时间?

调度

高优先级任务出现以后,最坏情况下多久能够获得 CPU?

上下文切换

一次任务切换需要多少时间?

资源竞争

两个任务同时访问资源时,会产生多大的阻塞?

系统负载

任务数量增加以后,最坏响应时间如何变化?

内存

动态内存分配是否可能产生不可预测的延迟?

中断嵌套

多个中断同时发生时,系统最坏情况下如何响应?

最终保证

在明确的硬件、任务集合和运行条件下:

系统能不能证明任务始终满足 Deadline?

这才逐渐接近真正意义上的硬实时分析。

 

八、硬实时不是一个脱离条件的“绝对标签”

这里还需要澄清一个非常容易被误解的问题。

严格来说,我们不能简单地说:

“这个系统永远、无条件地是硬实时的。”

因为任何实时保证都必须建立在明确条件之上。

包括:

使用什么处理器;

什么硬件配置;

有多少任务;

每个任务的执行时间;

任务优先级;

中断模型;

内存模型;

调度算法;

系统负载;

外设行为;

时间约束是什么。

只有明确了这些边界,才能讨论系统是否满足特定的硬实时要求。

因此,我更愿意把硬实时理解成:

在明确系统边界和时间约束的条件下,对最坏情况时间行为进行控制和验证。

这比简单地说“系统很快”严格得多。

 

九、为什么今天硬实时又越来越值得关注?

一个很重要的变化是:

计算机正在越来越深入地进入物理世界。

过去很多计算机任务主要处理信息。

网页、数据库、文字、图像、视频等任务,即使出现一定程度的延迟,很多时候也只是体验问题。

但今天越来越多的软件开始直接参与真实世界的控制:

机器人

汽车

工业自动化

飞行器

电机控制

电力电子

智能设备

各种网络物理系统

这时候,软件的执行时间就不再只是一个“性能指标”。

它可能直接影响物理系统的行为。

机器人控制研究早期就已经明确涉及严格实时约束;硬实时计算系统的经典研究也长期覆盖航空航天、工业自动化、机器人、交通控制等领域。

随着机器人、自动驾驶、工业自动化等系统越来越复杂,这个问题的重要性只会更加明显。

因为:

软件正在越来越直接地控制现实世界。

 

十、AI 越来越强,为什么底层实时性反而值得关注?

这是一个很有意思的问题。

人工智能正在让软件拥有越来越复杂的感知、识别和决策能力。

但最终,一个机器人仍然需要:

什么时候读取传感器?

什么时候计算控制量?

什么时候驱动电机?

什么时候完成一个控制周期?

AI 可以负责更加复杂的决策。

但是物理世界仍然按照时间运行。

电机不会因为算法还没有计算完成就停止时间。

传感器也不会因为软件复杂就无限等待。

因此,未来的复杂智能系统很可能呈现出一种结构:

上层越来越智能。

底层越来越需要确定。

越接近物理世界,时间约束往往越难绕开。

 

十一、这也是我为什么在 2017 年把项目命名为 HRTOS

我的 HRTOS 项目创建于 2017 年。

HRTOS 是:

Hard Real-Time Operating System

但这个名字并不意味着:

“项目从诞生之日起,就已经实现了严格意义上的硬实时保证。”

不是这样的。

这个名字首先代表的是一个技术方向。

我选择 HRTOS 这个通用技术缩写,是因为我希望这个项目长期解决的问题,最终能够不断接近:

更强的确定性。

更低的不可控延迟。

更明确的最坏情况边界。

更可控的中断和调度行为。

更严格的系统时间行为。

 

十二、HRTOS 对我而言,更像一个不断逼近的目标

我并不认为世界上存在一个脱离具体硬件、任务模型和时间约束之后,可以对所有情况做出绝对保证的“终极硬实时系统”。

硬件会发展。

软件会发展。

系统复杂度会发展。

应用要求也会不断提高。

所以,“硬实时”更像是一条不断向前延伸的技术边界。

我们能做的,是不断缩小不可预测的范围。

从:

快

走向:

稳定地快

再走向:

知道最坏情况下有多快

再进一步:

能够解释为什么最坏情况下仍然满足要求

最终:

在明确的条件下,对系统的时间行为进行验证和保证。

这才是我理解的“硬实时”。

 

十三、所以,HRTOS 不是一句宣传语

一个项目叫 HRTOS,并不意味着它天然拥有严格的硬实时保证。

真正的硬实时能力,需要理论、硬件、软件架构、调度机制、时间分析和实际验证共同支撑。

因此,我不会仅仅因为项目名称是 HRTOS,就把“硬实时”当成一个已经完成的结论。

恰恰相反。

这个名字对我来说,更像是一种长期的约束。

它提醒我:

系统还可以更加确定。

调度还可以更加可控。

中断响应还可以更加明确。

最坏情况还可以研究得更加深入。

系统边界还可以定义得更加清楚。

能够验证的东西还可以越来越多。

 

十四、HRTOS 的真正含义

所以,如果今天有人问我:

“HRTOS 到底是什么意思?”

我的答案可能不是简单的一句话。

从技术概念上,它是:

Hard Real-Time Operating System。

从计算机科学角度,它代表的是:

一种对严格时间约束、确定性和最坏情况行为进行研究与实现的系统方向。

而对于我自己的项目:

HRTOS 是一个目标。

2017 年,我给它取下了这个名字。

但我并没有因此认为自己已经抵达了终点。

相反,这个名字从那一天开始,就一直在告诉我:

继续向硬实时靠近。

也许永远不会存在所谓绝对的终点。

但这并不意味着没有必要向它前进。

恰恰因为系统永远可以变得更加确定、更加可控、更加可验证,

这个方向才值得一直走下去。

HRTOS,不是“我已经做到的一切”。

HRTOS,是我希望不断做到的事情。

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐