Answers:
与性能相关的问题一如既往的答案(或至少是前言):了解您的问题领域,运行比较基准,并记住什么是过早的优化。
首先,没有全面的基准测试将单片内核与以等效方式运行的当代微内核系统进行比较。因此,尽管有可能比较这些内核的特定元素的试验,但它们并不能代表您的问题想要描绘的“全局”。
话虽如此,关于微内核的内核性能的观察结果却大相径庭。例如,可以说L4微内核家族的IPC性能比Mach内核高一个数量级。但是,这十年来的每台Apple设备都运行Mach,并且它们运行的非常快,对吧?
这个故事的寓意是,任何决定使用哪种内核体系结构的人都需要首先决定其最终目标是什么。微内核系统(当然,如果正确实施的话)会更加安全,可维护且模块化。但是,它们可能很难正确地进行架构设计,并且可能在整体实现上产生性能开销。单片内核将更快,但是安全性将更难以实现,模块化程度也将降低,易于定制。
您的内核体系结构应基于最终目标。
(然后,当其他所有方法都失败时,请尝试两种方法,然后看看会发生什么。)
我更喜欢将Windows NT和Apple的XNU内核称为整体而不是混合。在实践中,我认为混合动力汽车的分类没有多大意义。实际上,XNU的原始工程师之一将其称为单片[1]。
在性能问题上,我能找到的唯一真正的单片芯片与微型芯片的比较是“极高性能计算或为什么微内核会吸” [2]和反驳性演讲“微内核会吸吗?” [3]。
模块化和可定制性比单片内核的固有限制更多的是设计问题。例如,取决于编译时选项和某些修补程序的应用,Linux内核的大小范围可以从几兆字节到一兆字节左右。Linux的1500万行代码中的绝大多数是可加载的内核模块。它们与基本内核分开编译,仅在需要时才加载。这些模块可以实现驱动程序和系统调用(甚至覆盖基本系统调用)。
微内核具有无可争议的优势的两个领域是低内存(<= 512k ram)或“硬”实时操作系统,例如飞机飞行系统或核反应堆控制系统。
编辑:在进一步讨论这两种内核体系结构的优缺点时,Gernot Heiser在演讲结束时自由地承认[3],因为微内核总是有一些额外的开销,因此单片内核本质上具有更高的性能。但是,这些额外的开销确实会导致可靠性提高,因此,微内核在RTOS中占主导地位。
[1] Louis G. Gerbarg,“ Mac OS X中的高级同步:将Unix扩展到SMP和实时”,BSDCon 2002会议论文集,第2页。