通信中间件如何支持软实时应用?

How can communication middleware support soft real-time applications?

现在这个概念"real-time"有很多不同的解释。在此question中提供了两个定义:

The hard real-time definition considers any missed deadline to be a system failure. This scheduling is used extensively in mission critical systems where failure to conform to timing constraints results in a loss of life or property.

The soft real-time definition allows for frequently missed deadlines, and as long as tasks are timely executed their results continue to have value. Completed tasks may have increasing value up to the deadline and decreasing value past it.

在我的研究中,我得出以下结论:

这是真的吗?是否有支持软实时应用的通信中间件的其他相关特性?

首先,关于基于第一原理和心智模型的实时原理和术语的精确定义,我建议您参考real-time.org。

实时计算从业者社区使用"real-time,""hard real-time,"和"soft real-time."的各种不一致和不完整的"definitions"实时计算研究社区有一个对 "hard real-time" 达成共识,但对 "soft real-time."

感到困惑

研究界"hard"实时计算模型的核心是任务有硬期限,所有这些期限都不能错过,否则系统就失败了。满足截止日期是 "timeliness" 标准,保证所有截止日期都将得到满足是 "predictability" 标准——可预测性是 "deterministic."

(在其中一些模型中,如果不干扰硬实时任务,则允许没有截止日期的任务在后台运行;它们通常也不会被饿死。)

此模型要求与硬实时任务相关的所有内容都是静态的(预先知道)——即,它要求预先知道系统的时间演化。这个要求很强,在大多数情况下是行不通的。有一些重要的硬实时系统可以(至少假定)满足此要求。众所周知的例子包括数字航空电子飞行控制、某些医疗设备、发电厂控制、铁路道口控制等。这些例子是安全关键的,但并非所有的硬实时系统都是(我们将在下面看到大多数安全-关键系统不是也不可能是硬实时的,尽管有些系统可能包含简单的低级硬实时组件。

软实时是指class实时系统,是硬实时系统的概括。这些概括包括较弱的及时性标准 and/or 较弱的可预测性标准。

例如,考虑一个模型,其任务与硬实时任务一样具有截止日期。在这个特定模型中,及时性标准是允许任意数量的任务最多延迟 15%,而可预测性标准是必须保证(即确定性),就像硬实时系统一样。如果这些任务中的一项或多项延迟超过 15%,则系统 failed.This 模型不是传统的硬实时模型,尽管它可能是安全关键模型。

考虑另一个模型:及时性标准是不超过 20% 的任务可以延迟超过 5%,而可预测性标准是保证满足概率至少为 0.9。违反及时性 and/or 可预测性标准意味着系统 failed.This 不是硬实时系统,尽管它可能是安全关键系统。

但考虑一下:如果该系统的效用因不满足其中一个或任何一个标准而下降怎么办——比如,23% 的任务迟到超过 5%,或者只有不到 20% 的任务迟到但其中 10% 的迟到率超过 5%,或者满足所有标准,但可预测性仅为 0.8。有许多具有这种动态特性的实时系统。

我们需要指定系统退化(例如,系统的 "utility" 或 "value")如何与这些及时性和可预测性标准中的任何一个有多少以及在多大程度上相关遇见了。事实上,这个模型是许多实际存在的尽可能安全关键的实时系统的概念性示例——例如,用于防御核武装敌方导弹(以及许多其他军事作战系统,因为它们都有各种固有的动态不确定性)。

现在我们 return 需要说明实时系统的及时性和可预测性与系统效用的关系。一个成功使用的解决方案称为 "time/utility functions,"(或 "time/value functions"),并且在 real-time.org 上有非常详细的描述。每个任务的功能都源自系统应用程序的物理性质。系统的及时性和及时性的可预测性基于任务的及时性——例如,通过它们各自效用的加权应计。

软实时系统(在 real-time.org 中描述的精确定义意义上)是一般情况,而硬实时系统是一种特殊情况,适用于更小的实时领域-时间问题。可以使用 time/utility 函数指定和创建所有硬实时系统和软实时系统。

所有这些都清楚了,现在我们可以解决您关于实时中间件的问题了。

答案的一个明显来源是 The Open Group Real-Time CORBA (RTC) 标准(Google,有大量可用的详细信息)。

RTC 可以作为固定优先级基础设施实现,具有映射到节点优先级的 15 位系统级优先级。在那种情况下,最低要求是: 在处理 CORBA 调用期间尊重客户端和服务器之间的线程优先级以解决资源争用;在端到端处理期间限制线程优先级反转的持续时间;限制操作调用的延迟。可以根据这三个要求(并且存在很多)构建硬实时 RTC 分布式系统——但显然底层网络 QoS 会影响实时行为。因此 RTC 提供可插拔的特定于应用程序的网络,例如具有确定性 QoS 的网络(因此在 RTC 层及以下可以实现硬实时),以及具有非确定性 QoS 的网络(但 RTC 层仍然具有三个基本的固定优先实时属性)。

更一般地说,RTC 在 CORBA 层提供软实时(在技术意义上定义在 real-time.org)。它通过提供称为 "distributed threads." 的一阶调度抽象来做到这一点,它提供了一个调度框架,不仅支持固定优先级,还支持 time/utility 功能,这些功能足够通用,可以表达非常通用的 class "utility accrual" 种软实时调度算法。由特定应用程序的软实时系统模型组成的分布式系统需要这样的算法(或通常是启发式算法),例如我上面描述的。

不想使用RTC怎么办?好消息是 RTC 的原理首先公开出现在不同的分布式实时系统中(在 real-time.org 上有描述),并且可以(并且已经)移植到其他实时中间件,用于硬和软实时系统。

对于软实时(同样,在真实time.org的精确定义意义上)中间件,动态及时性和及时性的可预测性原则必须应用于中间件的每个节点的资源管理系统——包括应用于调度中间件的网络(如接入、路由等)。这种方法的实例出现在几个 Ph.D 中。论文,也已经在多个军事作战分布式实时时间系统中实现。