1970年代微内核理念首次问世,它是将核心外的操作系统服务转移到使用者服务模式(该核心程序代码执行于处理器优先模式)。1980年代微内核开始风行,似乎每个人都得熟悉它。而且,如同许多流行技术一样,微内核技术的支持者们承诺得多但兑现甚少。
曾经广泛作为系统基础的操作系统──Mach,也曾一度陷入严重的性能问题,同时期的Chorus和QNX等操作系统也好不到哪里去。毫无疑问,Mach与其它OS的经验影响了微内核的形象,它也未能使GNU Hurd免于重蹈覆辙。
然而,早在1993年,Jochen Liedtke就证实了这些性能问题并不是微内核概念所引发的。其L4微内核在这场竞争中远远胜出,在关键的IPC原始成本方面优于Mach和QNX高达 5~20倍。在对Mach的分析中,他指出其性能糟糕在于规模过大──大约有300条核心API以及超过100 kLOC程序代码,这显然不能称为‘微’。
Liedtke指出小型化才是关键,他认为:微内核只包含必须在核心模式下执行的程序代码;其它各部份都应该作为用户模式的程序执行。
可靠性是微内核最重要的资产之一。但作为可信任运算基础(TCB)的这些可信任程序代码数目已经大规模减少了。以Open Kernel Labs的OKL4微内核系统为例,其TCB程序代码行数小于20kLOC,至少还比Linux少一个数量级;而Linux核心的程序代码即使处于最小嵌入式配置模式时也还约有100kLOC。
如今,降低TCB的尺寸大小才是微内核真正的关键优势:规模较小意味着错误更少,因而提高了可靠性与安全性。
虽然这种小型平台具有足够的通用性和灵活性,以支持完整的OS架构。如同OK Linux所展现的那样,它也是一款极佳的虚拟平台,它在执行于ARMv5处理器时,仅消耗低至3%的资源即可进行Linux虚拟化。
微内核不再只是一种学术界的玩具。如果能为微内核进行优质的设计和构建,其性能就不再是个问题,并且能提高系统稳健性。随着军事与生命领域等先进且复杂的嵌入式系统部署增加,我们需要一款稳健的基础来构建真正安全可靠的系统。显然,在这种系统中还没有任何方案可取代微内核。