当开发一个需要实时操作系统的解决方案时,像QNX或VxWorks这样的操作系统比Linux有什么优势?
或者换一种说法,因为这些操作系统是专为实时嵌入式应用而设计的,而Linux是一种更通用的系统,可以根据实时使用量身定做,您什么时候需要使用这些操作系统之一而不是Linux呢?
发布于 2011-03-01 20:16:12
一些嵌入式系统(a)需要满足困难的实时需求,而(b)硬件非常有限(这使得满足这些需求更加困难)。
如果您无法更改硬件,那么有几种情况下,您不得不排除Linux,转而使用其他东西:
发布于 2011-03-01 19:27:07
我根本没有做过任何实时的工作,所以你得带点盐.
我听说有两类“实时”:硬实时和软实时。
“软实时”的非正式意思是“尽快完成它”。我认为现代CPU上的Linux对这类事情是有好处的。
“硬实时”的非正式意思是“在规定的时间范围内完成它”。窗口可以很小,毫秒或什么的。巡航导弹或卫星运载火箭的飞行控制系统似乎是典型的例子。工业过程控制系统也可能需要这一点。Stuxnet蠕虫似乎已经与执行这种控制的系统进行了交互。
在后一种情况下,您可以使用RTOS。RTOS通常保证在少于这么多指令或时钟滴答或其他任何情况下发送中断。
另一个考虑因素可能是,RTOS的设计、测试和/或“证明”不会占用没有绑定的堆栈空间。它可以存在于一定的最小内存中,而像"OOM杀手“这样的东西并不存在,因为它们显然是不需要的。早期FORTRAN的一些优秀特性来自于这类需求。当您编译FORTRAN程序时,您确切地知道它需要多少堆栈和堆,因为您不能递归,并且不能动态地分配任何东西。
实际上,在某些安全关键应用程序中,第二个考虑因素(保证最大内存消耗)可能比“保证中断延迟0.001秒”更为重要。
我还可以想象,如果去掉支持语句的选择过程,您会发现工程师选择RTOS是因为“需求说明了”。
https://unix.stackexchange.com/questions/8413
复制相似问题