微内核
概论
微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。所有的服务进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的运行模式下运行,其余的进程则在用户空间运行。
这样的设计,使内核中最核心的功能,设计上变的更简单。需要特权的进程,只有基本的线程管理,内存管理和进程间通信等,这个部分,由一个简单的硬件抽象层与关键的系统调用组成。其余的服务进程,则移至用户空间。
让服务各自独立,可以减少系统之间的耦合度,易于实现与除错,也可增进可移植性。它可以避免单一组件失效,而造成整个系统崩溃,内核只需要重新引导这个组件,不致于影响其他服务器的功能,使系统稳定度增加。同时,操作系统也可以视需要,抽换或新增某些服务进程,使功能更有弹性。
因为所有服务进程都各自在不同地址空间运行,因此在微核心架构下,不能像集成式核心一样直接进行函数调用。在微核心架构下,要创建一个进程间通信机制,通过消息传递的机制来让服务进程间相互交换消息,调用彼此的服务,以及完成同步。采用主从式架构,使得它在分布式系统中有特别的优势,因为远程系统与本地进程间,可以采用同一套进程间通信机制。
但是因为进程间通信耗费的资源与时间,比简单的函数调用还多;通常又会涉及到核心空间到用户空间的环境切换(context switch)。这使得消息传递有延迟,以及传输量(throughput)受限的问题,因此微核心可能出现性能不佳的问题。
就代码数量来看,一般来说,因为功能简化,微核心使用的代码比集成式核心更少,其源代码通常小于10,000行。例如,MINIX 3的源代码少于6,000行 。更少的代码,也代表更少的潜藏程序bug。
微核心列表
微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为“胖微内核”,它的典型代表是Mach,它既是GNU HURD也是Mac OS X的内核。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS。L4微内核系列也是著名的微核心。
变种微核心
包括Windows NT,Mac OS X等,都宣称采用微核心架构。为了追求性能,他们将需要具备特权的服务组件放进核心空间,违反了微内核的基本设计原则,更为接近宏内核的设计方式。这被称为混合核心。
相关条目
外核心
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值