try ai
科普
编辑
分享
反馈
  • 实时操作系统

实时操作系统

SciencePedia玻尔百科
核心要点
  • 实时操作系统 (RTOS) 的决定性特征不是速度,而是可预测性,即确保任务在指定的截止时间前完成。
  • 诸如最早截止时间优先 (EDF) 和速率单调调度 (RMS) 等调度算法被用来根据任务的紧急程度进行管理,以保证可调度性。
  • RTOS 必须主动管理诸如中断、系统节拍粒度和优先级反转等隐藏的延迟来源,以维持时间上的正确性。
  • RTOS 原理对于在安全关键系统、机器人技术、自动驾驶汽车和医疗设备中将软件与物理世界连接起来至关重要。

引言

在广阔的计算世界中,有一类特殊的操作系统在我们最关键的技术(从汽车安全系统到医疗起搏器)的核心处默默运行。它们就是实时操作系统 (RTOS),其设计理念挑战了“越快越好”这一普遍假设。衡量一个 RTOS 的真正标准不是其处理速度,而是其坚定不移的可预测性——它承诺不仅快速完成任务,而且要精确准时。本文通过探讨确保时间正确性的基本概念,解决了传统计算与实时计算之间的关键鸿沟,从而揭开 RTOS 的神秘面纱。

为了理解这些强大的系统,我们将踏上分为两部分的旅程。在第一章​​原理与机制​​中,我们将探讨定义实时计算的核心概念,从截止时间的重要性到可调度性的数学原理。我们将剖析强制执行时间法则的调度器,揭示可预测性的隐藏敌人,如优先级反转,以及为战胜它们而设计的巧妙协议。然后,在​​应用与跨学科联系​​中,我们将看到这些原理的应用之处,见证 RTOS 如何在安全关键系统、机器人技术、自动驾驶汽车乃至先进的虚拟化环境中充当无形的神经系统,连接数字逻辑与物理现实。

原理与机制

要真正理解实时操作系统 (RTOS),我们必须首先摒弃一个常见的误解。其目标并非简单地追求“快”。一台功能强大的台式计算机上的通用操作系统每秒可以执行数百万条指令,但它对于控制汽车的防抱死制动系统来说却是一个糟糕的选择。RTOS 的决定性特征不是原始速度,而是​​可预测性​​。它最神圣的承诺是不仅快速完成任务,而且要准时完成。

问题的核心:第四维度的正确性

在实时计算的世界里,一个交付过晚的结果就是错误的结果。这是与传统计算的根本区别。RTOS 不仅在数值上提供正确性,在时间上也提供正确性。每个关键任务都被赋予一个​​截止时间​​,即它必须完成其工作的时间点。在​​硬实时系统​​中——如飞机的飞行控制器或医疗起搏器——错过截止时间就是灾难性的系统故障。而在​​软实时系统​​中,如视频流服务,错过截止时间可能只会导致掉帧或音频卡顿——这是一种质量下降,但不是灾难。

那么,是什么使系统具有可预测性呢?是审慎而刻意地排除任何耗时未知或无界的操作。考虑一下常见的​​交换​​(swapping)做法,即在快速主存 (RAM) 和较慢的磁盘驱动器之间移动数据。对于桌面操作系统来说,这是一种绝佳的方式,可以运行比内存容量更多的应用程序。但对于 RTOS 而言,它就是毒药。访问磁盘所需的时间不仅与 CPU 周期相比极为巨大,而且还高度可变。

想象一个系统,其中任务的执行时间 CCC 可能会因为交换延迟 LswapL_{\text{swap}}Lswap​ 而突然增加。一个原本完美可调度的任务集,所有任务都能轻松地在截止时间前完成,可能会因此突然崩溃。一个简单的分析表明,即使是微小且非零的交换延迟,也可能导致一个之前没有任何空闲时间的关键任务错过其截止时间。这一个例子揭示了其核心设计理念:在 RTOS 中,我们用通用操作系统的灵活性和表面上的容量,换取时间可预测性的铁证。我们必须知道任务的​​最坏情况执行时间 (WCET)​​,并且该 WCET 必须是有界的。

时间的通货:为紧急性而调度

如果截止时间是法律,那么​​调度器​​就是法官和陪审团。它是 RTOS 的核心组件,决定在任何给定时刻哪个任务可以使用处理器。与通用操作系统中的调度器(通常优先考虑“公平性”以确保每个应用程序都能获得 CPU 的一部分时间)不同,实时调度器完全专注于一件事:满足截止时间。

让我们用一组简单的任务来比较两种方法。​​轮询 (RR)​​ 调度器是公平的典范,它依次给每个任务一个微小的时间量。这看起来很公平,但它对紧急性视而不见。一个截止时间仅在毫秒之后的任务与一个还有数秒时间的任务得到同等待遇。在一个混合了紧急和非紧急任务的系统中,这种“公平”的方法很容易导致紧急任务仅仅因为需要排队等待而错过其截止时间。

现在,考虑一个由紧急性引导的调度器,如​​最早截止时间优先 (EDF)​​。其规则非常简单:在任何时刻,始终运行可用任务中截止时间最接近的任务。通过将紧急性置于公平性之上,EDF 可以成功调度轮询调度失败的同一任务集。这展示了一个深刻的原则:实时响应性是通过拥抱紧急性来实现的,而不是将所有任务视为平等。

为了做出这些保证,我们需要一种方法来衡量系统的工作负载。最基本的度量是​​处理器利用率​​ UUU,即任务所要求的处理器时间的分数。对于一个执行时间为 CiC_iCi​、周期为 TiT_iTi​ 的周期性任务 τi\tau_iτi​,其利用率为 Ui=CiTiU_i = \frac{C_i}{T_i}Ui​=Ti​Ci​​。一组 nnn 个任务的总利用率就是它们的和:

U=∑i=1nCiTiU = \sum_{i=1}^{n} \frac{C_i}{T_i}U=∑i=1n​Ti​Ci​​

对于 EDF 调度器,存在一个非常强大且简单的规则:只要总利用率 U≤1U \le 1U≤1,调度器就能保证所有截止时间都将被满足。这是一个充分必要条件,使 EDF 成为一个最优的动态优先级调度器。

实时调度世界的另一个巨头是​​速率单调调度 (RMS)​​。与在运行时检查截止时间不同,RMS 在系统启动前为每个任务分配一个固定的优先级:任务的周期越短,其优先级越高。这比 EDF 更容易实现,但其保证可调度性的条件更为严格。著名的 Liu-Layland 界指出,如果一个 RMS 系统的总利用率低于某个阈值,则保证其是可调度的,该阈值取决于任务数量 nnn:

U≤n(21/n−1)U \le n(2^{1/n} - 1)U≤n(21/n−1)

这个界限总是小于 1 (对于 n>1n>1n>1),并且随着 nnn 的增长趋近于 ln⁡(2)≈0.693\ln(2) \approx 0.693ln(2)≈0.693。这意味着 RMS 不是最优的——它可能无法调度一个 EDF 可以处理的任务集——但它的简单性和可预测性使其非常受欢迎。系统的实际利用率与这个界限之间的差异可以被认为是其“余量”——一个可量化的度量,表示在系统可调度性保证被破坏之前,任务执行时间可以统一增加多少。

可预测性的隐藏敌人

有了能够感知截止时间的调度器和低于可调度性界限的利用率,我们的系统应该万无一失了,对吗?不幸的是,理想化的调度理论世界并非真实世界。几个“隐藏”因素会窃取处理器时间,危及我们精心制定的计划。一个健壮的 RTOS 是一个能够承认并驯服这些敌人的系统。

中断税

系统中最强大的事件是​​中断​​,即来自硬件的、要求立即关注的异步信号。中断服务例程 (ISR) 必须以非常高、通常是最高的优先级运行。这意味着无论我们的调度器选择了什么任务,中断都可能到达并抢占它。这段时间实际上是对 CPU 的一种“税收”。我们必须将其计算在内。如果中断以最大频率 fff 到达,并且每个 ISR 的最坏情况执行时间为 CintC_{\text{int}}Cint​,那么它们消耗的处理器能力分数为 Uint=f×CintU_{\text{int}} = f \times C_{\text{int}}Uint​=f×Cint​。可供我们应用程序任务使用的总利用率不是 111,而是 1−Uint1 - U_{\text{int}}1−Uint​。忽略这项税收是实时系统设计中一个常见且致命的错误。

节拍的暴政

另一个微妙之处在于操作系统如何计时。许多 RTOS 不是连续时间机器,而是由一个具有特定​​粒度​​ ggg 的周期性定时器中断(即​​系统节拍​​)驱动。所有基于时间的事件——调度决策、定时器到期——只能在这些离散的节拍边界上发生。如果一个任务需要运行 1.9 ms1.9 \text{ ms}1.9 ms,但系统节拍是 1 ms1 \text{ ms}1 ms,调度器可能不得不给它分配一个完整的 2 ms2 \text{ ms}2 ms 时间片,因为它不能在节拍中间被抢占。这种量化效应会夸大任务的有效执行时间。一个简单的模型来表示这种增加的成本是 Ci′(g)=⌈Ci/g⌉⋅gC_i'(g) = \lceil C_i / g \rceil \cdot gCi′​(g)=⌈Ci​/g⌉⋅g。粗糙的定时器粒度(即大的 ggg)会显著增加有效利用率,可能将一个原本可调度的系统推过 U≤1U \le 1U≤1 的悬崖,进入过载状态,此时截止时间将不可避免地被错过。

共享资源的危险:优先级反转

也许最阴险的敌人是我们自己创造的。当任务需要共享资源(如通信端口或数据结构)时,它们必须使用​​互斥锁 (mutex)​​ 来防止数据损坏。这会导致一种危险的现象,称为​​优先级反转​​。

想象一下这个场景:

  1. 一个低优先级任务 LLL 获取了一个互斥锁。
  2. 一个高优先级任务 HHH 变为就绪状态并抢占了 LLL。
  3. 任务 HHH 试图获取同一个互斥锁,但它被 LLL 持有,所以 HHH 阻塞并且必须等待。
  4. 陷阱就在这里:一个中等优先级的任务 MMM 现在变为就绪状态。由于 MMM 的优先级高于 LLL,它抢占了 LLL。

结果是灾难性的。高优先级任务 HHH 不仅被低优先级任务 LLL 阻塞;它现在实际上被不相关的中等优先级任务 MMM(以及任何其他可能运行的中等任务)阻塞。这种阻塞的持续时间现在是无界且不可预测的。优先级的逻辑本身已经背叛了自己。

为了战胜这一点,RTOS 采用了巧妙的协议。基本的思想是​​优先级继承​​:当 HHH 因等待 LLL 持有的互斥锁而阻塞时,系统会暂时提升 LLL 的优先级,使其至少与 HHH 的优先级一样高。例如,为了防止任何优先级在集合 {pM}\{p_M\}{pM​} 中的中等优先级任务干扰, LLL 的优先级必须被提升到至少 p∗=max⁡({pM})p^* = \max(\{p_M\})p∗=max({pM​})。现在,没有中等优先级的任务可以抢占 LLL,使得 LLL 能够快速完成其临界区并释放互斥锁,从而解除 HHH 的阻塞。

一个更优雅的解决方案是​​优先级天花板协议 (PCP)​​。每个共享资源都被分配一个“优先级天花板”,即曾经使用过该资源的最高优先级任务的优先级。一个任务只有在它自身的优先级严格高于系统中当前所有其他被使用的互斥锁的天花板时,才被允许获取一个互斥锁。这个简单的规则有两个神奇的效果。首先,它确保一个任务最多只能被一个低优先级任务的一个临界区阻塞,使得阻塞时间有界且可分析。其次,非常显著的是,它完全防止了死锁的发生。它通过防止“循环等待”条件的形成来实现这一点,而循环等待是死锁发生的四个必要条件之一。这是深思熟虑的算法设计所体现的统一性和力量的一个美好例子。

构建一个有弹性且健壮的系统

一个实时系统不仅必须在预期条件下正确执行,还必须能抵御意外情况并优雅地失败。

确保健壮性的一个关键机制是​​接纳控制​​。一个负责任的 RTOS 就像俱乐部门口的保镖。在允许一个新任务进入系统之前,它会执行可调度性分析(如用于 EDF 或 RMS 的利用率测试)。如果接纳新任务会导致系统过载并使其他任务错过截止时间,新任务将被拒绝。这保护了正在运行的系统的完整性,保证了做出的承诺得以兑现。

但是,如果尽管采取了所有预防措施,截止时间还是错过了怎么办?对于关键系统来说,仅仅寄希望于最好的情况是不够的;我们必须为最坏的情况做计划。系统可以被设计为监控自身的性能,检测到截止时间错过,并转换到“安全模式”。对此的分析极其详细,需要将所有可能的延迟来源相加:检测到错过的延迟、系统调用的开销、重新配置调度器的时间,甚至是在内核的不可抢占部分花费的时间。这种一丝不苟的计算是高完整性实时工程的标志。

最后,我们必须考虑实际的限制。任务和 ISR 之间的通信由​​信号量​​和​​事件标志​​等同步原语处理。信号量就像令牌,用于通知离散事件(一次 give 释放一个等待的任务),而事件标志代表状态或条件(一次 set 可以释放多个等待条件现已满足的任务)。选择正确的工具至关重要,同样重要的还有将 ISR 设计为非阻塞的,并使用高分辨率计时器来测量从 ISR 到任务的切换延迟以验证性能。

此外,许多商业 RTOS 为了简单起见,只提供少量固定的优先级级别(例如,8、32 或 256)。如果我们使用 RMS 并且任务的唯一周期数多于可用的优先级级别,我们就不得不将多个不同的优先级要求“压缩”到同一个级别中。这违反了 RMS 的严格排序,削弱了系统的可调度性保证。这是工程师必须意识到的一个实用性权衡,提醒我们优雅的理论世界必须始终与现实的约束相抗衡。

应用与跨学科联系

在我们之前的讨论中,我们深入了解了实时操作系统 (RTOS) 的内部工作原理,探讨了调度、截止时间和可预测性的原则。我们看到,RTOS 与你笔记本电脑或手机上的操作系统有着根本的不同;它的主要通货不是速度或吞吐量,而是时间本身。它是一个建立在承诺之上的操作系统:一个特定的动作将在一个特定的时间窗口内发生,每一次都是如此。

现在,我们问一个不同的问题:这个承诺在何处至关重要?如果 RTOS 的原理是一门新语言的语法,那么用它写就的诗歌又是什么?我们将看到,这门语言无处不在,在我们现代世界中定义性技术的沉默、不知疲倦的核心中被使用。它是连接软件逻辑与物理现实的无形神经系统,其应用范围从极其简单且关乎生命的关键系统,到惊人复杂且相互关联的系统。我们的旅程将带领我们从我们安全的守护者走向我们自主未来的构建者。

不眨眼的守护者:安全关键系统

从核心上讲,RTOS 的承诺就是安全的承诺。当一个系统未能按时行动可能导致灾难性后果时,我们就进入了“硬实时”的领域。在这里,一个迟到的答案不比一个错误的答案好。

考虑一个最简单也最至关重要的系统:火灾报警器。当烟雾传感器越过一个关键阈值时必须发生什么?警报必须响起,而且必须立即响起。但在工程系统中,“立即”并非瞬时。它是一连串微小延迟的级联,其中每一个都必须有界且被计算在内。从烟雾探测的物理事件到第一声警报声波的总时间是一个严格的“时间预算”。RTOS 允许工程师 meticulously 审计这个预算。他们必须将传感器中断例程运行的最坏情况时间、其他不可避免的系统中断所造成的最大延迟、调度器识别到报警任务最高优先级所需的时间,以及处理器切换上下文到该任务的时间相加。

但是,如果另一个不那么关键的任务——比如说,将事件记录到内存中——正处于一个不能被中断的操作中间呢?这就引入了阻塞延迟。火灾报警这个最高优先级的任务必须等待。因此,一个 RTOS 设计者必须对低优先级任务中任何此类不可抢占部分的时长设置一个严格的上限,以确保这种阻塞延迟不会破坏报警器的总时间预算。从物理定律到代码行,每一毫秒都被追踪,以保证安全的承诺。

同样的设计准则也延伸到远为复杂的医疗设备。想象一台为病人输送维持生命药物的输液泵。泵的控制回路是在 RTOS 上运行的一个任务。它必须周期性地采样传感器,计算精确的剂量,并驱动泵。错过一个截止时间,你可能会输送过多或过少的药物。在这里,挑战因软件与底层硬件之间的交互而变得更加复杂。现代处理器使用动态电压和频率缩放 (DVFS) 等技术来通过降低运行速度来节省功耗。但是当处理器的时钟变慢时,我们的时间预算会发生什么?如果 RTOS 自身的时间感——它的“节拍”——来源于那个核心时钟,那么减慢时钟也会拉长节拍。一个 1 毫秒的节拍可能会变成 2 毫秒,这会在控制任务被释放时引入致命的延迟(或“抖动”)。系统可能会失败,不是因为代码错误,而是因为其时间基础在它下面发生了变化。

一个健壮的设计会预见到这一点。一个真正的安全关键系统可能不会依赖一个可变的软件定时器,而是使用一个独立的、专用的硬件定时器,它有自己独立的时钟,不受处理器功耗状态的影响。这个定时器可以触发一个中断,以近乎完美的精度释放控制任务,完全绕过 RTOS 可能存在抖动的节拍机制。这是一个核心实时工程原则的美好例证:通过掌握从应用代码到芯片的每一层抽象之间的相互作用,不懈地追求确定性。

物理与代码之舞:机电一体化与控制

RTOS 的数字世界与其所控制的物理世界之间的联系,可能在机器人技术和控制系统中最为密切。在这里,时序不仅是一个软件要求;它是运动方程中的一个参数。

让我们想象一个设计用来处理精密物体的机器人夹爪。一个由 RTOS 管理的控制回路,持续测量施加的力并调整执行器指令。这是传感与行动之间的一场精妙舞蹈。控制系统理论告诉我们,这个反馈回路有一个“相位裕度”——衡量其稳定性的指标。回路中延迟过多,系统就会开始过度修正。微小的延迟导致迟缓;较大的延迟导致振荡;更大的延迟可能导致剧烈、不稳定的振动,从而摧毁物体或夹爪本身。

从控制理论的角度来看,系统中的任何延迟都会导致“相位滞后”,从而侵蚀稳定性裕度。这种延迟从何而来?它来自控制器的计算时间,来自执行器的物理响应,以及至关重要地,来自 RTOS。控制任务开始执行时间的微小、不可预测的变化——我们称之为“抖动”——被控制回路视为一个随机的、寄生的时间延迟。RTOS 工程师可以分析整个系统——控制器的逻辑和物理对象的属性——来计算系统在变得不稳定之前可以容忍的总延迟量。这反过来定义了 RTOS 可以表现出的最大允许抖动,这个值可能小于一毫秒。这揭示了一个深刻的统一性:RTOS 调度的原则和经典控制理论的原则是同一枚硬币的两面,都在努力确保与物理世界稳定、可预测的交互。

编排复杂性:实时管道

虽然一些系统由单个关键反馈回路定义,但许多现代技术是复杂的管道,数据流经一系列处理阶段,每个阶段都有自己的需求,所有这些都受制于一个总体的端到端截止时间。

自动驾驶汽车就是一个典型的例子。其“思维过程”是一个重复的管道:​​感知​​阶段融合来自摄像头、激光雷达 (LiDAR) 和雷达的数据,以建立一个世界模型;​​规划​​阶段使用这个模型来决定一条轨迹;​​控制​​阶段将这条轨迹转换为转向、制动和加速的指令。这整个序列,从光子击中传感器到车轮转动,必须在几分之一秒内完成——在世界发生太大变化之前。如果该管道运行需要 90 毫秒,那么它必须每 90 毫秒激活一次,并有 90 毫秒的严格截止时间。

一个使用像最早截止时间优先 (EDF) 这样的调度器的 RTOS 可以通过为每个阶段分配 CPU 的“份额”来管理这一点。如果感知阶段在 90 毫秒的周期内需要 50 毫秒的计算时间,它必须被保证获得处理器时间的 uperception=50/90=5/9u_{perception} = 50/90 = 5/9uperception​=50/90=5/9 的利用率。规划阶段可能需要 30/90=1/330/90 = 1/330/90=1/3,而控制阶段需要 10/90=1/910/90 = 1/910/90=1/9。这些利用率的总和是 (5+3+1)/9=9/9=1(5+3+1)/9 = 9/9 = 1(5+3+1)/9=9/9=1,意味着处理器被完全预订。RTOS 的工作是强制执行这种分区,确保每个阶段都精确地获得它所需要的资源来按时完成其工作,从而让下一个阶段开始。它就像一个指挥家,为一个由复杂算法组成的管弦乐队进行指挥。

这种管道概念也适用于许多其他领域。在现代数码相机中,捕获一张高质量的图像涉及对不同资源的一系列操作。首先,配置传感器硬件,然后在特定的曝光时间 TeT_eTe​ 内积分光线。然后,图像数据被读出并通过 DMA 传输到内存。最后,主 CPU 上的一个任务执行图像信号处理 (ISP),将原始传感器数据转换为一张美丽的照片。从开始曝光到完成 ISP 的端到端截止时间可能被固定在,比如说,30 毫秒,以达到某个帧率。

为了确定最大可能的曝光时间——图像质量的一个关键因素——工程师必须从截止时间开始倒推。他们减去传感器读出的固定时间,然后他们必须计算 ISP 任务的最坏情况响应时间。这个计算不仅要考虑 ISP 自身的执行时间,还要考虑它可能被系统中更高优先级的任务(如网络堆栈或触摸屏驱动程序)抢占的所有时间。预算中剩余的时间就是最大允许曝光时间。这种分析将相机物理、硬件能力和软件调度捆绑成一个单一、统一的问题。

可预测性的艺术:为确定性而设计

到目前为止,我们一直专注于分析系统以验证它们是否满足其时序要求。但实时系统还有一个更深层、更优雅的方面:从一开始就设计它们使其具有内在的可预测性。

想象一条由 RTOS 控制的工厂装配线。几个任务,每个都控制着不同的传送带,需要周期性地访问一个共享资源,也许是一个执行器控制器。在一个设计天真的系统中,这些任务可能会被异步释放。在任何时刻,一个高优先级的任务可能准备好运行,却发现它需要的资源被一个低优先级的任务锁定,导致不可预测的阻塞。我们可以分析这个“混乱”的系统,找出最坏情况的阻塞延迟,并希望我们的截止时间仍然能被满足。

但存在一个更美好的解决方案。如果我们将任务设计成具有谐波周期(例如,10 毫秒、20 毫秒和 40 毫秒),它们的释放时间将总是在一个重复的模式中对齐。然后我们可以更进一步,有意地对它们的执行进行分阶段——将每个任务的关键、共享资源的部分安排在一个特定的、不重叠的时间槽中。最低优先级的任务可能被安排在其周期的第 15 到 18 毫秒使用资源。一个中等优先级的任务可能在 5 到 7 毫秒使用它。通过这种精心的编排,最高优先级的任务在需要该资源时,保证会发现它是空闲的。它的阻塞时间不仅是有界的;它是零。它是通过设计被消除的。这是在混乱的人群中穿行与观看一场完美同步的芭蕾舞之间的区别。这种视角的转变——从被动的分析转向主动的为确定性而设计——是成熟的实时学科的标志。

这种严谨的分析是任何时效性与功能相关的系统的基石,无论是在超时发生前建立安全的网络连接,还是我们已经探讨过的无数其他应用。

现代前沿:虚拟世界中的实时

实时系统的原理是如此基础,以至于它们现在正被扩展到现代计算中最具活力且看似最不可预测的领域之一:虚拟化。你能在由虚拟机监控器 (hypervisor) 管理的虚拟机 (VM) 内部运行一个硬实时系统,并保有其所有的可预测性保证吗?

如果虚拟机监控器是一个标准的、“尽力而为”的调度器,答案是响亮的“不”。这样的虚拟机监控器可能会决定暂停你的虚拟机的虚拟 CPU 数十毫秒,以便运行另一个虚拟机或执行自己的内务管理。这就像试图在一个流沙地基上建造一块精密的瑞士手表。客户机 RTOS 的设计可能完美无缺,但虚拟机监控器可以随时抽掉它脚下的地毯,使其所有的时间保证都变得毫无意义。来自物理世界的中断可能到达,但虚拟机监控器可能会等待任意长的时间才向虚拟机注入一个相应的“虚拟中断”。一个有 5 毫秒截止时间的任务可能在它甚至不知道自己需要运行之前就已经注定失败了。

为了解决这个问题,一类新的实时虚拟机监控器正在出现。这些系统将 RTOS 设计的核心原理应用于虚拟机监控器本身。它们允许一个虚拟机被“固定”到一个专用的物理 CPU 核心上,从而消除来自其他虚拟机的干扰。它们为虚拟 CPU 本身实现了固定优先级的抢占式调度策略,确保高优先级的虚拟机永远不会被低优先级的虚拟机延迟。它们被设计为以有界的、最小的延迟传递虚拟中断。实质上,它们提供了一个确定性的虚拟化层,将 RTOS 的时效性承诺跨越客户机和主机之间的边界进行扩展。

这项工作正在推动前沿,允许将安全关键功能和非关键功能整合在同一硬件上,这是迈向未来强大、高效和可靠计算机系统的关键一步。从最简单的警报到最复杂的虚拟化环境,共同的线索是对时间的严谨、有原则的管理。实时操作系统不仅仅是代码;它是一种哲学的体现,一个用于做出并遵守技术中最重要承诺的框架:准时的承诺。