曾几何时,关于微内核软件设计是否优于 Linux 操作系统中的单片内核,存在着激烈的争论。当今的许多通用操作系统,包括 Linux,都使用单片内核设计。
在选择实时操作系统 (RTOS) 时,确实有多种选择。一些商业 RTOS 产品建立在微内核设计上,而另一些则采用单片内核方法。
二者有什么不同?
在微内核设计中,尽可能多的功能从内核中移除,并委托给单独的操作空间,这些操作空间通过基本内核相互传递消息来进行通信。
另一方面,在单体设计中,内核和操作进程共享相同的空间,消息直接在进程之间传递,无需内核中介。
理论上,每种方法的优点可以相当简洁地总结:
• 由于其模块化特性,微内核可以在更新时节省时间和成本——并非每个模块都需要立即更改。
• 另一方面,单片内核由于其集成特性而提供性能优势,内核在模块之间调解调用不需要开销。
然而对于许多嵌入式项目而言,这些差异还不足以成为选择 RTOS 的真正因素。在某些情况下,微内核的模块化特性在无需重建所有内容的情况下能够修改一个部分方面确实具有一些优势。这种优势在现实世界中受到许多系统的集成特性的限制——在某些情况下,它进一步受到性能要求的限制。虽然开发人员可能不需要重建整个系统,但系统可能仍需要作为一个整体进行测试。
同样,单片内核的性能优势是非常真实的,但更好的性能带来的好处可能并不总是那么重要。如果两个系统都在定义的要求内执行,那么选择更快的一个可能有好处,也可能没有好处。此外,性能取决于硬件,因此较慢的 RTOS 可能通过在高级硬件上运行来实现奇偶校验。