Dav*_*ary 14
一些嵌入式系统 (a) 需要满足困难的实时要求,但 (b) 硬件非常有限(这使得满足这些要求更加困难)。
如果你不能改变硬件,那么有几种情况你被迫排除 Linux 并使用其他东西代替:
我根本没有做过任何实时工作,所以请谨慎对待...
有人告诉我有两类“实时”:硬实时和软实时。
“软实时”非正式地意味着“尽快完成”。我认为现代 CPU 上的 Linux 非常适合这种事情。
“硬实时”非正式地意味着“在所需的时间窗口内完成”。窗口可以非常小,几毫秒之类的。巡航导弹或卫星运载火箭的飞行控制系统似乎是典型的例子。工业过程控制系统可能也需要这个。Stuxnet 蠕虫似乎干扰了执行此类控制的系统。
你会在后一种情况下使用 RTOS。RTOS 通常保证在少于这么多指令或时钟滴答或其他任何东西的情况下提供中断。
另一个考虑因素可能是 RTOS 的设计、测试和/或“证明”不会无限制地消耗堆栈空间。它可以存在于一定的最小内存量中,并且不存在诸如“OOM Killer”之类的东西,因为可以证明它们永远不需要。早期 FORTRAN 的一些愚蠢的特性来自于这种类型的需求。当你编译一个 FORTRAN II 程序时,你确切地知道它需要多少堆栈和多少堆,因为你不能递归,也不能动态分配任何东西。
实际上,在某些安全关键应用程序中,第二个考虑因素(保证最大内存消耗)可能比“保证 0.001 秒的中断延迟”更重要。
我还可以想象,去掉支持措辞的无花果叶的选择过程,你会发现工程师选择 RTOS 是因为“需求说到”。