混合核心

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

混合核心的示意图
分别为宏内核、微内核、混合内核的操作系统结构

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

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

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

概论

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

批评

林纳斯·托瓦兹认为,采用可载入核心模组不代表这个作业系统就是一种混合核心,如果模组跟内核使用同样的定址空间,能够存取内核的资料结果,这种实作方式就是整块性核心[2]。以这种定义来看,混合核心实际上是整块性核心的变种。

例子

NT内核

XNU内核

  • macOS(前称Mac OS X及OS X,使用FreeBSD原始码和Mach内核来实作)
  • XNU(使用Mach内核)

其他

参见

注释

  1. ^ Linus Torvalds. [2018-06-13]. (原始内容存档于2021-01-09). 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.