微内核
在电脑科学中,微内核(英语: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等,都宣称采用微核心架构。为了追求效能,他们将需要具备特权的服务组件放进核心空间,违反了微内核的基本设计原则,更为接近整块性核心的设计方式。这被称为混合核心。
相关条目
编辑参考文献
编辑- ^ The MINIX 3 Operating System. minix3.org. [2016-04-01]. (原始内容存档于2012-01-22).