新闻动态
微内核还是宏内核——RTOS怎么选?


Michel Chabroux

曾几何时,软件设计中微内核和宏内核孰优孰劣的争论非常激烈。Linux操作系统采用的就是宏内核。众所周知,这里所说的就是20世纪90年代那场著名的Tanenbaum-Torvalds之辩。无需在这里重复那场辩论的内容细节。今天的许多通用操作系统,包括Linux,都采用了宏内核设计,这已经足够说明那场争论的结论显而易见。Windows则介于两者之间。

在选择实时操作系统(RTOS)时,您确实面临着很多选项。有些商业RTOS是基于微内核设计的,而另一些则采用宏内核方法。

二者有什么区别呢?

在微内核设计中,所有的功能都被尽可能从内核中移除,而是交付给独立的操作空间,这些操作空间则通过裸内核(Bare-Bones Kernel)相互传递消息。

另一方面,在宏内核设计中,内核和操作进程共享空间,消息在进程之间直接传递,而不需要在内核之间进行。

从理论上讲,两种方法的优点可以非常简洁地概括为:

  • 当需要更新时,微内核可以节省时间和成本,因为它们采用的是模块化结构,所以不需要对每个模块都进行更改。
  • 另一方面,宏内核具备性能优势,因为它们具有集成特性,内核不需要开销来调解模块之间的调用。

注意,我说的这些都是理论上的优势。为什么?因为对于许多嵌入式项目来说,这些差异并不重要,不足以成为选择RTOS的决定性因素。

在某些情况下,微内核的模块化特性确实有一些优势,可以修改一个部分而不必重建(Rebuild)整个系统。然而,这种优势在现实世界中受到许多系统集成特性的限制——而且,在某些情况下,我们还受到性能要求的进一步局限。虽然开发人员可能不需要重建整个系统,但系统可能仍然需要作为一个整体来进行测试。

同样,宏内核的性能优势是非常现实的,但是较高性能的优势并不总是那么重要。如果两个系统都在定义的需求范围内运行,那么选择更快的系统虽然可能略有好处,但这种好处可能没有那么重要。而且,性能也依赖于硬件,因此速度较慢的RTOS可以通过选用高性能硬件来获得补偿。

所以性能优势就没有那么重要吗?事实上,是的!但别误会——细节决定成败!VxWorks是一种宏内核设计,经过高度优化,可以在每个硬件平台上实现最佳性能,风河就是实现这种方法的典范。不过,RTOS环境和需求变得越来越复杂,宏内核的性能优势随着工作负载的复杂性而增加。

我真正想说的是:选择RTOS的时候不要仅仅考虑它采用的是宏内核或微内核架构,而是要看它是否属于功能强大的现代RTOS,关键是要具备智能边缘功能——嵌入了云交互和机器学习能力的容器。

您可以在此处阅读更多有关RTOS走向现代化的资料:为RTOS开启现代化之门——众望所归。