使用 QNX 或 VxWorks 等 RTOS 代替 Linux 的优势?

Jus*_*ier 15 linux real-time rtos vxworks

在开发需要实时操作系统的解决方案时,QNX 或 VxWorks 等操作系统与 Linux 相比有哪些优势?

或者换句话说,因为这些操作系统是专门为实时、嵌入式使用而设计的——而不是 Linux,后者是一种更通用的系统,可以针对实时使用进行定制——你什么时候需要使用其中的一个这些操作系统代替Linux?

Dav*_*ary 14

一些嵌入式系统 (a) 需要满足困难的实时要求,但 (b) 硬件非常有限(这使得满足这些要求更加困难)。

如果你不能改变硬件,那么有几种情况你被迫排除 Linux 并使用其他东西代替:

  • 也许 CPU 甚至没有 MMU,这使得它无法运行 Linux(除了 uClinux,据我所知 uClinux 不是实时的)。
  • 可能CPU比较慢,Linux的最坏情况中断延迟无法满足一些硬性要求,而其他一些针对极低最坏情况中断延迟进行调整的RTOS可以满足要求。
  • 也许系统的 RAM 很少。几年前,最小的 Linux 设置需要大约 2 MB 的 RAM;一个最小的 eCos 设置(带有一个兼容层,让它运行一些最初设计为在 Linux 上运行的应用程序)需要大约 20 kB 的 RAM。
  • 也许没有 Linux 移植到您的硬件上,并且在您需要启动(双关语!)您的系统之前没有足够的时间移植 Linux。与 Linux 相比,许多更简单的 RTOS 移植到新硬件所需的时间要少得多。


Bru*_*ger 8

我根本没有做过任何实时工作,所以请谨慎对待...

有人告诉我有两类“实时”:硬实时和软实时。

“软实时”非正式地意味着“尽快完成”。我认为现代 CPU 上的 Linux 非常适合这种事情。

“硬实时”非正式地意味着“在所需的时间窗口内完成”。窗口可以非常小,几毫秒之类的。巡航导弹或卫星运载火箭的飞行控制系统似乎是典型的例子。工业过程控制系统可能也需要这个。Stuxnet 蠕虫似乎干扰了执行此类控制的系统。

你会在后一种情况下使用 RTOS。RTOS 通常保证在少于这么多指令或时钟滴答或其他任何东西的情况下提供中断。

另一个考虑因素可能是 RTOS 的设计、测试和/或“证明”不会无限制地消耗堆栈空间。它可以存在于一定的最小内存量中,并且不存在诸如“OOM Killer”之类的东西,因为可以证明它们永远不需要。早期 FORTRAN 的一些愚蠢的特性来自于这种类型的需求。当你编译一个 FORTRAN II 程序时,你确切地知道它需要多少堆栈和多少堆,因为你不能递归,也不能动态分配任何东西。

实际上,在某些安全关键应用程序中,第二个考虑因素(保证最大内存消耗)可能比“保证 0.001 秒的中断延迟”更重要。

我还可以想象,去掉支持措辞的无花果叶的选择过程,你会发现工程师选择 RTOS 是因为“需求说到”。