微内核操作系统在嵌入式平台上的应用*
微内核操作系统特有的架构带来的很多优点,这些特点正好匹配了嵌入式平台对操作系统的需求,非常适合于嵌入式环境的应用。
首先是可靠性,按照单内核操作系统的设计,内核包括所有的操作系统服务,其中任何一个服务出错,就会造成整个系统的崩溃。微内核操作系统的设计思想是在内核中留尽量少的东西,只保留实现操作系统服务的最基本机制,而把具体服务的实现放到用户态的服务应用程序中去。这就大大降低了内核崩溃的几率。特别是目前操作系统的许多错误都是因为不规范,并且没有经过严格测试的驱动程序造成的。图3显示了Linux内核代码不同目录的错误分布,显然驱动程序的错误是主要原因。
图3 操作系统中的错误在各模块中的分布(来源:文献[4])
然后是实时性。实时性是指操作系统对响应时间有严格的要求,不仅要求成功执行还要求在规定的时间内完成所有操作。一般会要求操作系统内核是抢占式的,并且内核的代码是可重入的。微内核操作系统内核较小也意味着需要实时化的部分较少。而且微内核之上也可以很方便同时运行实时的程序和一般的非实时的程序。
此外还不能忘了安全性。设计安全系统的准则是最小权限准则,也即所有的部件都只拥有执行相关功能所必须的权限,而没有额外的权限。最小权限准则需要系统的可信计算基础尽可能地小。可信计算基础(Trusted Computing Base)是指整个系统中对安全性最关键的部分,在可信计算基础内的漏洞会危及整个系统的安全性。因为操作系统内核是可信计算基础中最重要的一部分,微内核操作系统内核较小的特点使之在安全性应用方面很有优势。
上面说了很多微内核操作系统的优点,但微内核架构也不是完美的,它有一个很大的缺点那就是性能。我们知道对于单内核操作系统,调用系统服务的方式是用过系统调用,需要的仅仅是用户态和内核态的两次转换,每个进程都同时有用户栈和内核栈可以存放执行过程中的信息。而对于微内核操作系统,调用系统服务需要通过发送IPC消息给服务应用程序,服务应用程序通过系统调用完成服务请求后再通过另一个IPC消息把结果返回给调用者。这涉及到了进程的上下文切换,并且由于没有内核栈这样简单的机制,传送消息需要额外的拷贝开销。因此性能对于微内核架构操作系统成了一个很大的问题。事实上第一代微内核操作系统诸如Mach之上运行的系统的性能让人难以接受。然而以L4为首的第二代微内核操作系统通过合理的架构设计,将IPC的开销相对Mach成数量级级别得减少。有分析表明在L4微内核操作系统之上运行的L4Linux的性能相对原本的Linux只有几个百分点的损失。[5]
结语
综上文所述,微内核操作系统的可靠性、实时性和安全性特点很好得匹配了嵌入式平台对操作系统的需求。随着对微内核操作系统研究的深入,其相应技术将会不断地成熟,性能也会不断地提高,可以预见不久的将来,我们将会见到越来越多的微内核操作系统被应用到嵌入式平台上。
参考文献:
[1] 邓亚明,嵌入式操作系统比较研究,中国高新技术企业,2008年2期
[2] 滕艳平,嵌入式Linux操作系统实时性的研究与实现,微计算机信息,2007年23期
[3] Andy Chou, Junfeng Yang, Benjamin Chelf, Seth Hallem, and Dawson Engler. An empirical study of operating systems errors. Proceedings of the eighteenth ACM symposium on Operating systems principles, Oct 2001
[4] H?rtig, Hermann; Hohmuth, Michael; Liedtke, Jochen; Sch?nberg, Sebastian (October 1997). "The performance of μ-kernel-based systems". Proceedings of the sixteenth ACM symposium on Operating systems principles: 66–77. ISBN 0-89791-916-5
[5] Jochen Liedtke. Lava Nucleus (LN) Reference Manual (486, Pentium, PPro) Version 2.2. 1998
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论