问题 为什么不是每个操作系统都是实时的?


我没有听到关于RTOS的好消息 - 它们使程序员能够更好地控制调度程序,以便例如避免优先级倒置,它们的时序更一致,更好的多任务处理。但是所有标准桌面设置都使用非实时操作系统。因此,使用RTOS必须有一些权衡,它们是什么?


8534
2018-03-27 20:53


起源



答案:


RTOS通常可以交换吞吐量性能和功能,以实现可预测性和易处理性。 “实时”人员通常的定义是“确定性的”;没有付出代价,你就无法拥有决定论。

在通用操作系统中,我们受到“常见情况”行为的驱使 - 我们希望获得非常好的平均性能和很多灵活性。在RTOS中,我们希望对“最坏情况”行为采取可靠的上限,并且我们在吞吐量或常见情况行为中付出(通常是非常重要的)。

是的,可以创建混合,如Windows甚至Linux实时线程。但在某些地方,你通常会付出代价,因为最终只有可用的有限资源(CPU,IO带宽等等)和消费者操作系统以及RTOS都可以根据不同的标准进行优化。一些RT Linux方法通过分区明确地处理这个问题。在每个分区中优化不同的假设和不同的最优标准。

交易的功能是什么? 我不能提供一个精确的列表 - 更多的是,通用操作系统往往拥有数以万计的驱动程序,并且能够跟上新设备的流失; RTOS往往侧重于一个小得多的集合,对于该集合,可以很好地理解或明确地保持及时性不会干扰其他活动。您可能不会在普通RTOS上选择相同的驱动程序,因为通常它们实现起来并不合理。

吞吐量 记住“实时”!=“真实快”。当系统是实时的时,意味着活动的完成时间是其正确性的一部分。在某些情况下,这意味着非常快速地处理许多活动(高吞吐量);在其他情况下,它可能在相对缓慢但极其可预测的时期进行处理。 RTOS中的结构可能具有高吞吐量,但通常无法实现等效RTOS的吞吐量,因为用于公平地实现该吞吐量的技术(缓存,花哨的交互驱动的调度方法,“公平”排队和锁争用)不利反对任何单一任务的及时性的可预测性。


10
2018-03-27 21:01



交易的功能是什么?你的“吞吐量性能”是什么意思,我的印象是,RTOS上运行的内容运行速度与任何地方一样快。 - Matt Phillips
注意:实时线程不是真正的实时线程,因为它们不能完全控制处理器行为。但是,他们很接近。 - Mehrdad
@Mehrdad:我同意并且不同意,这正是我的观点。你可以创建一个混合,但你会得到一些不同的东西。我认为Win / Linux RT线程是广泛意义上的“实时” - 它们明确地关注时效性。它们不是确定性的,因为某些RTOS中的线程是。在我的世界里,“实时”!=“确定性”。 - andersoj
@andersoj:我想 实时=确定性? - Mehrdad
@Mehrdad:我在这里占据一席之地。就像我上面承认的那样,“实时”一词的许多用户断言它意味着决定论。不是全部。在我的领域(防御)在RTOS上构建大量RT系统的人不会以这种方式使用它。其他相关学科(航空或工业自动化)在他们说实时(但他们生活方便的虚构)时几乎总是意味着决定论。然而,有一个根深蒂固的工业和学术观点。对于这个术语的含义,没有最终的权威可以吸引 - 我猜 - 这意味着它用于什么,这是不一致的。 - andersoj


答案:


RTOS通常可以交换吞吐量性能和功能,以实现可预测性和易处理性。 “实时”人员通常的定义是“确定性的”;没有付出代价,你就无法拥有决定论。

在通用操作系统中,我们受到“常见情况”行为的驱使 - 我们希望获得非常好的平均性能和很多灵活性。在RTOS中,我们希望对“最坏情况”行为采取可靠的上限,并且我们在吞吐量或常见情况行为中付出(通常是非常重要的)。

是的,可以创建混合,如Windows甚至Linux实时线程。但在某些地方,你通常会付出代价,因为最终只有可用的有限资源(CPU,IO带宽等等)和消费者操作系统以及RTOS都可以根据不同的标准进行优化。一些RT Linux方法通过分区明确地处理这个问题。在每个分区中优化不同的假设和不同的最优标准。

交易的功能是什么? 我不能提供一个精确的列表 - 更多的是,通用操作系统往往拥有数以万计的驱动程序,并且能够跟上新设备的流失; RTOS往往侧重于一个小得多的集合,对于该集合,可以很好地理解或明确地保持及时性不会干扰其他活动。您可能不会在普通RTOS上选择相同的驱动程序,因为通常它们实现起来并不合理。

吞吐量 记住“实时”!=“真实快”。当系统是实时的时,意味着活动的完成时间是其正确性的一部分。在某些情况下,这意味着非常快速地处理许多活动(高吞吐量);在其他情况下,它可能在相对缓慢但极其可预测的时期进行处理。 RTOS中的结构可能具有高吞吐量,但通常无法实现等效RTOS的吞吐量,因为用于公平地实现该吞吐量的技术(缓存,花哨的交互驱动的调度方法,“公平”排队和锁争用)不利反对任何单一任务的及时性的可预测性。


10
2018-03-27 21:01



交易的功能是什么?你的“吞吐量性能”是什么意思,我的印象是,RTOS上运行的内容运行速度与任何地方一样快。 - Matt Phillips
注意:实时线程不是真正的实时线程,因为它们不能完全控制处理器行为。但是,他们很接近。 - Mehrdad
@Mehrdad:我同意并且不同意,这正是我的观点。你可以创建一个混合,但你会得到一些不同的东西。我认为Win / Linux RT线程是广泛意义上的“实时” - 它们明确地关注时效性。它们不是确定性的,因为某些RTOS中的线程是。在我的世界里,“实时”!=“确定性”。 - andersoj
@andersoj:我想 实时=确定性? - Mehrdad
@Mehrdad:我在这里占据一席之地。就像我上面承认的那样,“实时”一词的许多用户断言它意味着决定论。不是全部。在我的领域(防御)在RTOS上构建大量RT系统的人不会以这种方式使用它。其他相关学科(航空或工业自动化)在他们说实时(但他们生活方便的虚构)时几乎总是意味着决定论。然而,有一个根深蒂固的工业和学术观点。对于这个术语的含义,没有最终的权威可以吸引 - 我猜 - 这意味着它用于什么,这是不一致的。 - andersoj


我不确定这是否是一个很大的原因,但我相信存在非实时功能 系统管理模式 在处理器中并不真正允许实时操作系统,因为SMM可以任意长,因为它想要响应SMI,并且操作系统可以做的最好的事情就是超时并且当它获得后退控制时崩溃 - - 如果 它及时获得了控制权。所以你需要BIOS也是实时的,这并不像只有像微软这样的公司让它的OS实时(这本身就不容易)。

无论如何,普通用户可能不会获得太多收益。


2
2018-03-27 20:56



谢谢 - 但这不会成为应该成为破坏者的东西。当然,您可以在RTOS中创建一个最高优先级的进程,并使用它来完成维基百科页面中“使用”下列出的所有内容。 - Matt Phillips
@Matt:它会涉及到 巨大的建筑变革 (1)像英特尔/ AMD这样的处理器公司,(2)像微软这样的OS制造商,(3)像凤凰城,AMI等的BIOS制造商,(4)能够发出高价的其他各种设备的制造商-priority中断,(5)许多软件公司。这是可能的,但成本可能会超过收益。 - Mehrdad


在需要实时操作系统的应用程序中,有助于桌面应用程序开发的功能并不重要。因此,RTOS供应商倾向于将工程时间集中在对客户重要的事情上,例如快速启动和错误恢复。

在快速应用程序开发和实时之间存在重叠市场之前,您不太可能看到操作系统供应商在两者之间分配资源。快速发展和安全关键只是不要在一起。

随着Blackberry Playbook转向QNX,我们可能第一次看到RTOS的友好开发环境(库和工具)。


2
2018-03-27 21:00



“在快速应用程序开发和实时之间存在重叠市场之前,你不太可能看到操作系统供应商在两者之间分配资源。”我想我的问题是我不明白这些是相互排斥的程度。什么是RAD友好功能的示例,它将出现在标准桌面操作系统中,操作系统无法接受? - Matt Phillips
@Matt:它们在RTOS中并不是不可接受的,它们在代表几乎所有RTOS许可证持有者的安全关键应用程序中是不可接受的。为什么RTOS供应商花费时间将Visual Basic for Applications(或单声道或JVM)移植到他们的操作系统,因为它的性质限制了它的大多数客户使用它。 - Ben Voigt
我想这是我不明白的事情 - 为什么你不能在RTOS下运行JVM? - Matt Phillips
@Matt:你可以,如果你移植了一个......但它对购买RTOS的人没有帮助,因为它没有足够的验证用于安全关键系统。那么为什么要花时间和金钱来移植一个呢?您可以开发一个经过充分验证的JVM,但是那些花时间做客户所要求的竞争对手的竞争对手将具有巨大的竞争优势。 - Ben Voigt
@Ben Voigt:存在许多实时JVM ...... stackoverflow.com/questions/4051966/...  包括一个我相信可以实现DO-178B验证/认证的aicas。 - andersoj


它基本上与“为什么不是每个人都用C编写webapp?”的原因相同。它的速度要快得多,但是,它要困难得多。大型系统上的RTOS变得难以处理,因为很多控制都是给应用程序员的。


1
2018-03-27 20:58



我从来没有编写过RTOS - 它会让它变得更难吗?你可以承担更多的控制权,但你必须这样做吗?对于非RT和RTOS都存在Qt,存在一些差异但不是很多。 - Matt Phillips
Qt抽象了一大堆东西让你在RTOS中感到快乐。 - Dhaivat Pandya
我现在找不到该页面,但诺基亚网站列出了许多你没有用Qt for QNX获得的功能,而我记得的唯一主要功能是没有QProcess。 (也许没有Phonon,或类似的东西。) - Matt Phillips