混合核心

(重定向自混核心

混合核心(英语: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.