12

我只听说过关于 RTOS 的好消息——它们使程序员可以更好地控制调度程序,从而避免优先级倒置,它们的时序更一致,更好的多任务处理。但是所有标准桌面设置都使用非实时操作系统。所以使用 RTOS 必须有一些权衡,它们是什么?

4

4 回答 4

11

RTOS 通常以吞吐量性能和特性换取可预测性和易处理性。人们通常对“实时”的定义是“确定性的”。如果不为此付出代价,您将无法获得确定性。

在通用操作系统中,我们受到“常见情况”行为的激励——我们想要非常好的平均性能和很大的灵活性。在 RTOS 中,我们希望对“最坏情况”行为设置一个可靠的上限,并且我们为吞吐量或常见情况行为付出(通常是高昂的代价)。

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

交易了哪些功能?我无法提供一个精确的列表——更重要的是通用操作系统往往有无数的驱动程序,并且能够跟上新设备的流失;RTOS 倾向于专注于更小的集合,对于这些集合,及时性可以很好理解,也可以明确避免干扰其他活动。您可能不会在普通 RTOS 上选择相同的驱动程序,因为通常实施它们是不合理的。

Throughput Remember "real-time" != "real-fast". When a system is real-time, it means that activities' time of completion is part of their correctness. In some cases, this means processing many activities very quickly (high throughput); in others it may be processing at a relatively slow but extremely predictable period. The structures in an RTOS may have high throughput, but typically can't achieve the throughput of an equivalent RTOS because the techniques used to achieve that throughput fairly (caching, fancy interactivity-driven scheduling approaches, "fair" queuing and lock contention) militate against predictability of any single task's timeliness.

于 2011-03-27T21:01:24.080 回答
2

我不确定这是否是一个重要原因,但我相信处理器中存在诸如系统管理模式之类的非实时功能并不能真正实现实时操作系统,因为 SMM 可能需要任意长的时间想要响应 SMI,而操作系统能做的最好的事情就是在它重新获得控制权时超时并崩溃——如果它及时重新获得控制权的话。因此,您还需要 BIOS 是实时的,这并不像只有一家像微软这样的公司使其操作系统成为实时的那么容易(这本身并不容易)。

无论如何,对于普通用户来说可能不会有太多收益。

于 2011-03-27T20:56:54.207 回答
2

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

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

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

于 2011-03-27T21:00:31.300 回答
1

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

于 2011-03-27T20:58:18.120 回答