本页使用了标题或全文手工转换

混合核心

维基百科,自由的百科全书
跳转至: 导航搜索
混合核心的示意图
分别为宏内核、微内核、混合内核的操作系统结构

混合核心英语:Hybrid kernel),又译为混合式核心混合内核,一种操作系统内核架构。传统上的操作系统内核可以分为微核心(Micro kernel)与宏内核(Monolithic kernel)两大基本架构。

混合核心的基本设计理念,是以微核心架构来设计操作系统核心,但在实现上则采用宏内核的作法。混合核心实质上是微核心,只不过它让一些微核结构运行在用户空间的代码运行在核心空间,这样让核心的运行效率更高些。这是一种妥协做法,设计者参考了微核心结构的系统运行速度不佳的理论。

大多数现代操作系统遵循这种设计范畴,是用微核心的概念来设计,但是实现上则采用宏内核的作法,结合微核心(Micro kernel)与宏内核(Monolithic kernel)两种设计方法,形成第三种分类。但是这种分类法受到一些批评,如林纳斯·托瓦兹认为这种分类只是一种市场营销手法,因为它的架构实现方式接近于宏内核[1]

最有名的混合核心为Windows NT核心与XNU

概论[编辑]

这个设计方式是一种妥协下的设计。在设计理念上,采用微核心架构来设计,但因为微核心结构一直被批评为性能不佳,因此在实现上,则采用宏内核的作法。微核心架构将操作系统服务(task server)运行在用户空间,以保证系统的稳定可靠。与典型的微核心设计相较,在混合核心中,多数的操作系统服务(task server)仍然运行在核心空间中,与宏内核相同。因为让操作系统服务运行在核心空间,减少了消息传递及环境切换(content switch)带来的系统负担,这可以避免微核心架构常被批评的性能不佳问题;但也因此,这种设计无法提供微核心系统架构下的稳定性保证。

批评[编辑]

林纳斯·托瓦兹认为,采用可加载核心模块不代表这个操作系统就是一种混合核心,如果模块跟内核使用同样的定址空间,能够访问内核的数据结果,这种实现方式就是宏内核[2]。以这种定义来看,混合核心实际上是宏内核的变种。

混合内核的例子[编辑]

注释[编辑]

  1. ^

    As to the whole "hybrid kernel" thing - it's just marketing. It's "Oh, those microkernels had good PR, how can we try to get good PR for our working kernel? Oh, I know, let's use a cool name and try to imply that it has all the PR advantages that that other system has."

  2. ^

    The article goes to say that a hybrid kernel like NT's is not to be confused with a with monolithic kernels that can load modules like Linux. Again, this seems like nonsense to me - the stable driver ABI (and the closed source) has facilitated creating of many drivers outside of the NT kernel tree, but this is not a conceptual difference. The precise technique of loading a driver/module into the kernel doesn't really matter, if the driver shares the same address space and can have access to kernel structures.