首先,关于实时原理和术语的精确定义,基于第一原理和心智模型,我建议您访问 real-time.org。
实时从业者计算社区使用“实时”、“硬实时”和“软实时”的各种不一致和不完整的“定义”。实时计算研究界对“硬实时”有共识,但对“软实时”感到困惑。
研究界“硬”实时计算模型的核心是任务有硬期限,所有这些期限都不能错过,否则系统就失败了。满足最后期限是“及时性”标准,而保证所有期限都将得到满足是“可预测性”标准——可预测性是“确定性的”。
(在其中一些模型中,如果不干扰硬实时任务,则允许在后台执行没有截止日期的任务;通常也可以防止它们被饿死。)
该模型要求与硬实时任务相关的一切都是静态的(预先知道)——即,它要求预先知道系统的时间演化。这个要求非常强,在大多数情况下是不可行的。有一些重要的硬实时系统(至少假定)可以满足这一要求。众所周知的例子包括数字航空电子飞行控制、某些医疗设备、发电厂控制、铁路道口控制等。这些例子对安全至关重要,但并非所有硬实时系统都是(我们将在下面看到大多数安全-关键系统不是也不能是硬实时的,尽管有些系统可能包含简单的低级硬实时组件)。
软实时是指一类实时系统,是硬实时系统的推广。概括包括较弱的及时性标准和/或较弱的可预测性标准。
例如,考虑一个模型,其任务具有与硬实时任务一样的截止日期。在这个特定模型中,及时性标准是允许任何数量的任务最多延迟 15%,而可预测性标准是必须保证(即确定性),就像硬实时系统一样。如果这些任务中的一项或多项延迟超过 15%,则系统已失败。此模型不是传统的硬实时模型,尽管它可能是安全关键模型。
考虑另一个模型:及时性标准是不超过 20% 的任务可以迟到超过 5%,而可预测性标准是保证至少满足 0.9 的概率。违反及时性和/或可预测性标准意味着系统已经失败。这不是一个硬实时系统,尽管它可能是一个安全关键的系统。
但是考虑一下:如果该系统的效用由于不满足这些标准中的一个或任何一个而降级——例如,23% 的任务迟到超过 5%,或者不到 20% 的任务迟到但其中 10%超过 5% 的延迟,或满足所有标准,但可预测性仅为 0.8。有许多具有这种动态特性的实时系统。
我们需要具体说明系统退化(例如,系统的“效用”或“价值”)与这些及时性和可预测性标准的满足或未满足的数量和程度相关。事实上,这个模型是许多实际存在的实时系统的一个概念性例子,这些系统尽可能地对安全至关重要——例如,用于防御核武装敌对导弹(以及许多其他军事作战系统,因为它们都有各种固有的动态不确定性)。
现在我们回到需要指定实时系统的及时性和可预测性如何与系统的效用相关联。一个成功使用的解决方案称为“时间/效用函数”(或“时间/价值函数”),并在 real-time.org 上进行了详细描述。每个任务的功能源自系统应用程序的物理性质。系统的时效性和时效性的可预测性基于任务的那些——例如,通过它们各自的效用的加权应计。
软实时系统(在 real-time.org 上描述的精确定义的意义上)是一般情况,而硬实时系统是适用于更小的实时问题领域的特殊情况。可以使用时间/效用函数指定和创建所有硬实时系统和软实时系统。
所有这些都澄清了,现在我们可以解决您关于实时中间件的问题。
一个明显的答案来源是 The Open Group Real-Time CORBA (RTC) 标准(谷歌,有大量可用的详细信息)。
RTC 可以作为固定优先级的基础设施来实现,具有映射到节点优先级的 15 位系统范围的优先级。在这种情况下,最低要求是: 尊重客户端和服务器之间的线程优先级,以便在处理 CORBA 调用期间解决资源争用;限制端到端处理期间线程优先级反转的持续时间;限制操作调用的延迟。可以根据这三个要求(并且存在许多要求)构建硬实时 RTC 分布式系统——但显然底层网络 QoS 会影响实时行为。因此,RTC 提供了可插拔的特定于应用程序的网络,例如具有确定性 QoS 的网络(因此在 RTC 层及其下方可以实现硬实时),
更一般地说,RTC 在 CORBA 层提供软实时(在 real-time.org 上定义的技术意义上)。它通过提供称为“分布式线程”的一阶调度抽象来做到这一点。它提供了一个调度框架,不仅支持固定优先级,还支持时间/效用函数,这些函数足够通用,可以表达一类非常通用的“效用累积”软实时调度算法。这种算法(或通常是启发式算法)对于由特定于应用程序的软实时系统模型组成的分布式系统(例如我上面描述的)是必需的。
如果您不想使用 RTC 怎么办?好消息是,RTC 的原理首次公开出现在不同的分布式实时系统中(在 real-time.org 上进行了描述),并且可以(并且已经)移植到其他实时中间件,用于硬实时和软实时 -时间系统。
对于软实时(同样,在 real-time.org 的精确定义意义上)中间件,动态及时性和及时性可预测性的原则必须应用于中间件系统的每个节点的资源管理——包括应用于调度中间件的网络(例如,访问、路由等)。这种方法的实例出现在几个博士论文中。这些论文,也已在多个军事作战分布式实时系统中得到应用。