使用诸如QNX或VxWorks之类的RTOS代替Linux的优势?


15

在开发需要实时操作系统的解决方案时,像QNX或VxWorks这样的操作系统相对于Linux有什么优势?

换句话说,由于这些操作系统是专为实时嵌入式应用而设计的-与Linux相对,Linux是可以针对实时使用量身定制的更通用的系统-您何时需要使用以下操作系统之一?这些操作系统而不是Linux?

Answers:


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移植到新硬件所花费的时间要少得多。

不同的RTOS之间可以移植哪种代码?我还听说有些解决方案是自上而下的(使用RTOS),而另一些则是自下而上的(根据需要将操作系统功能逐步添加到裸机中)。
CMCDragonkai 2015年

@CMCDragonkai:写入EL / IX API的程序可以在任何兼容EL / IX的操作系统上运行。写入POSIX API的程序可以在任何POSIX兼容的OS上运行。写入uITRON API的程序可以在任何与uITRON兼容的OS上运行。
David Cary

@CMCDragonkai:也许程序员(programmers.stackexchange.com)更适合提出关于不同RTOS的问题?
David Cary

8

我根本没有做任何实时工作,所以要加一点盐...

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

非正式的“软件实时”是指“尽快完成”。我认为现代CPU上的Linux可以很好地解决这种问题。

“硬实时”非正式地表示“在要求的时间范围内完成”。窗口可以很小,毫秒级。巡航导弹或卫星运载火箭的飞行控制系统似乎是典型的例子。工业过程控制系统可能也需要此。Stuxnet蠕虫似乎已经干扰了执行这种控制的系统。

在后一种情况下,您将使用RTOS。RTOS经常保证在少于这么多的指令或时钟滴答声之类的时间内发送中断。

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

实际上,第二个考虑因素(保证的最大内存消耗)在某些对安全性至关重要的应用中可能比“保证的0.001秒的中断等待时间”更重要。

我还可以想象,如果剥去无花果叶的选择流程,您会发现工程师选择RTOS是因为“要求如此”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.