在计算机科学中,微内核(英语:Microkernel,μ-kernel),是一种内核的设计架构,由尽可能精简的程序所组成,以实现一个操作系统所需要的最基本功能,包括了底层的寻址空间管理、线程管理、与进程间通信。
概论
微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。所有的服务进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的执行模式下运行,其余的进程则在用户空间运行。
这样的设计,使内核中最核心的功能,设计上变的更简单。需要特权的进程,只有基本的线程管理、内存管理和进程间通信等,这个部分,由一个简单的硬件抽象层与关键的系统调用组成。其余的服务进程,则移至用户空间。
让服务各自独立,可以减少系统之间的耦合度,易于实现与调试,也可增进可移植性。它可以避免单一组件失效,而造成整个系统崩溃,内核只需要重启这个组件,不致于影响其他服务器的功能,使系统稳定度增加。同时,操作系统也可以视需要,抽换或新增某些服务进程,使功能更有弹性。
因为所有服务进程都各自在不同地址空间运行,因此在微核心架构下,不能像宏内核一样直接进行函数调用。在微核心架构下,要建立一个进程间通信机制,通过消息传递的机制来让服务进程间相互交换消息,调用彼此的服务,以及完成同步。采用主从式架构,使得它在分布式系统中有特别的优势,因为远程系统与本地进程间,可以采用同一套进程间通信机制。
但是因为进程间通信耗费的资源与时间,比简单的函数调用还多;通常又会涉及到核心空间到用户空间的环境切换(context switch)。这使得消息传递有延迟,以及传输量(throughput)受限的问题,因此微核心在通信宽容度不足下,可能出现性能不佳的问题。
就代码数量来看,一般来说,因为功能简化,微核心使用的代码比集成式核心更少,其源代码通常小于10,000行。例如,MINIX 3的源代码少于6,000行[1]。更少的代码,也代表更少的潜藏程序bug,对于重视安全性的人来说会较为偏好。
微核心列表
微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为“胖微内核”,它的典型代表是Mach,它既是GNU HURD也是Mac OS X的内核。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在黑莓手机BlackBerry 10系统中被采用。L4微内核系列也是著名的微核心。
变种微核心
包括Windows NT,Mac OS X等,都宣称采用微核心架构。为了追求性能,他们将需要具备特权的服务组件放进核心空间,违反了微内核的基本设计原则,更为接近宏内核的设计方式。这被称为混合核心。
相关条目
参考文献
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.