微内核

来源:互联网 发布:mac海淘攻略 编辑:程序博客网 时间:2024/04/28 16:46

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://nforcex.blogbus.com/logs/6204606.html

Q:什么是微内核?
A:微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成,这些原语仅仅包括了建立一个系统必需的几个部分,如 线程管理,地址空间和进程间通信等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。
 微内核
                              微内核
微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的,第一代微内核,在核心提供了较多的服务,因此被称为"胖微内核",它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的核心,可以说,蒸蒸日上.第二代为内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
微内核结构的例子:
    * AIX
    * BeOS
    * L4微内核系列
    * Mach, 用于GNU Hurd和Mac OS X
    * Minix
    * MorphOS
    * QNX
    * RadiOS
    * VSTa

Q:微内核有何优点?Windows是微内核体系结构吗?
A:在微内核结构中,操作系统的内核只需要提供最基本、最核心的一部分操作(比如创建和删除任务、内存管理、中断管理等)即可,而其他的管理程序(如文件系统、网络协议栈等)则尽可能的放在内核之外。这些外部程序可以独立运行,并对外部用户程序提供操作系统服务,服务之间使用进程间通信机制(IPC)进行交互,只在需要内核的协助时,才通过一套接口对内核发出调用请求。
微内核系统的优点时操作系统具有良好的灵活性。它使得操作系统内部结构简单清晰。程序代码的维护非常之方便。但是也有不足之处。微内核系统由于核心态只实现了最基本的系统操作,这样内核以外的外部程序之间由于独立运行使得系统难以进行良好的整体优化。另外,进程间互相通信的开销也较单一内核系统要大许多。从整体上看,在当前的硬件条件下,微内核在效率上的损失小于其在结构上获得的收益,故而选取微内核成为操作系统的一大潮流。
并非所有的Windows架构都是微内核体系结构,如Windows9X,但Windows NT架构是改良的微内核体系结构,正因为此,才使得硬件的差异性体现的不明显以及兼容性大大优于Linux(Linux是单一内核体系,绝大部分的内核代码都是被静态编译联入的,Linus及其追随者为了代码的整体效率牺牲掉了体系结构的明晰性),虽然它有无数附加功能,但是这些功能是被模块化设计的分层设计了的,它们的存在并不妨碍Windows是微内核体系结构这一事实,所以Windows也是相当优秀的,只不过巨额利润使之成为千夫所指。
 单内核
                                单内核

严格意义上讲,Windows NT架构是混合内核,当然本质上还是微内核,只不过它让一些微核结构运行在用户空间的代码运行在内核空间,这样让内核的运行效率更高些。这是一种妥协做法,设计者参考了微内核结构的系统运行速度不佳的理论。然而后来的实验证明,纯微内核的系统实际上也可以是高效率的。大多数现代操作系统遵循这种设计范畴,Microsoft Windows NT就是一个很好的例子。
 混合内核
                              混合内核


随机文章:

I/O、information channels 2008-01-17
论坛推荐 2007-09-17
解析“进程、过程调用、函数调用、堆、栈” 2007-08-08
Design pattern_摘自Wikipeida 2007-04-11
堆和栈(OS层面)_(摘抄整理) 2006-01-11