您好,欢迎访问三七文档
微内核与宏内核的比较与分析内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。中文版维基百科上将内核分为四大类:单内核(宏内核);微内核;混合内核;外内核。()混合内核实质上也是微内核,而外内核是一种比较极端的设计方法,目前还处于研究阶段,所以我们就着重讨论宏内核与微内核两种内核。简单的介绍,宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。微内核(Microkernel)功能被划分成独立的过程,过程间通过IPC进行通信,模块化程度高,一个服务失效不会影响另外一个服务。两种设计各具特点,较早的一些操作系统都是用宏内核写成的,这样的内核通常以单个静态二进制文件的形式存放于磁盘,而后来随着模块化、分层思想的产生,人们开始对微内核感兴趣并持赞扬态度,认为微内核将成为内核的发展趋势。微内核的功能被划分为独立的过程,每个过程叫做一个服务器,各种服务器宏内核的示意图微内核的示意图之间通过IPC机制互通消息,服务器的各自独立有效地避免了一个服务器的失效祸及另一个,而且这种独立机制更利于操作系统在不同硬件上的移植。当然,微内核的这所有的优点都建立在因为消息传递开销而引起效率损失的前提下(IPC机制的开销比函数调用多,还会涉及到内核空间到用户空间的上下文切换),这些损失有一部分是靠着现在硬件效率的飞速提升而抵消着的,但这很明显是追不上宏内核的效率的。所以,有些使用微内核的操作系统(如新近版本的WindowsNT和MacOSX)让大部分或全部的服务器位于内核,这样就可以直接调用函数,消除频繁的上下文切换,但这已经违背了微内核设计的初衷。而相反的,宏内核在通信上比较高效,因为大家都运行在内核态,并身处同一地址空间,内核可以直接调用函数,Linux和大多数的UNIX都为宏内核。对应的,宏内核不具有微内核的优点,宏内核的灵活性和可维护性不及微内核,而且移植起来并不简单(不过有些宏内核支持者认为这样的移植比微内核更能够有效地利用底层硬件)。历史告诉我们,两种看似矛盾又各有长处的观点或解决方案总能找到结合点的。Cache的直接映射与关联映射结合产生了组关联映射;RISC和CISC也是各具优点,现代的好的CPU包括了这两种技术,将它们结合了起来。所以我相信宏内核与微内核也会最终找到结合点的。Linux虽是宏内核,但已吸收了微内核的部分精华。Linux是模块化的、多线程的、内核本身可调度的系统,既吸收了微内核的精华,又保留了宏内核的优点,无需消息传递,避免性能损失。此前所提到的微内核实现时让大部分服务器位于内核空间,也算是微内核朝宏内核靠拢的一个例子。系统服务运行在内核空间的微内核这两个例子都可以看到宏内核与微内核有结合的趋势,但还没有完全真正的结合成功,不过它们都已经同时具备了模块化和内核空间运行等的特征。不同的意见与方法总会摩擦出精彩的火花,宏内核与微内核之争也一定会产生意想不到的好的结果,估计在十年之内会有更完整的结合了宏内核与微内核精华的新的内核版本出现,共同期待并努力吧。Email:yx1232287@gmail.com
本文标题:宏内核与微内核对比
链接地址:https://www.777doc.com/doc-1801227 .html