内核在设计上分为宏内核与微内核两大架构。

  3.1 宏内核

  宏内核:是在硬件之上,定义了一个高阶的抽象接口,应用原语或系统调用来实现操作系统的功能,例如:进程管理、文件系统和存储管理等,这些功能由多个运行在内核上的模块来完成。

  尽管每一个模块都是单独地服务这些操作,内核代码是高度集成的,而且难以编写正确。因为所有的模块都在同一个内核空间上运行,一个很小的bug都会使整个系统崩溃。然而,如果开发顺利,单内核结构就可以从运行效率上得到好处。

  很多现代的宏内核结构内核,如Linux和FreeBSD内核,能够在运行时将模块调入执行,这就可以使扩充内核的功能变得更简单,也可以使内核的内核部分变得更简洁。

  

内核文件的架构 内核分类_原语

 

  图4:宏内核示意图

  宏内核结构的例子:

  传统Unix内核:BSD、Solaris

  类Unix系统(Unix-like)内核:FreeBSD、OpenBSD、NetBSD、Linux

  DOS:DR-DOS

  3.2 微内核

  微内核:是由一个非常简单的硬件抽象层层和一组比较关键的原语或系统调用促成,这些原语,仅仅包括了创建一个系统必需的几个部分;如线程管理,地址空间和行程间通讯等。

  微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为'胖微内核',它的典型代表是Mach,它是Mac OS X的内核,可以说,蒸蒸日上。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在黑莓手机BlackBerry 10系统中被采用。

  

内核文件的架构 内核分类_内核文件的架构_02

 

  图5:微内核示意图

  微内核结构的例子:AIX、BeOS、L4微内核系列、Mach(用于XNU、GNU Hurd)、Minix