混合核心
混合核心(英语:Hybrid kernel),又译为混合式核心、混合内核,一种操作系统内核架构。传统上的操作系统内核可以分为宏内核(Monolithic kernel)与微核心(Micro kernel)两大基本架构,混合核心结合了这两种核心架构。
![](http://upload.wikimedia.org/wikipedia/commons/1/11/Kernel-hybrid-CN.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/OS-structure2.svg/450px-OS-structure2.svg.png)
混合核心的基本设计理念,是以微核心架构来设计操作系统核心,但在实现上则采用宏内核的作法。混合核心实质上是微核心,只不过它让一些微核结构执行在用户空间的代码执行在核心空间,这样让核心的执行效率更高些。这是一种妥协做法,设计者参考了微核心结构的系统执行速度不佳的理论。
大多数现代操作系统遵循这种设计范畴,是用微核心的概念来设计,但是实现上则采用宏内核的作法,结合宏内核(Monolithic kernel)与微核心(Micro kernel)两种设计方法,形成第三种分类。但是这种分类法受到一些批评,如林纳斯·托瓦兹认为这种分类只是一种市场营销手法,因为它的架构实现方式接近于宏内核[1]。
最有名的混合核心为Windows NT核心与XNU。
概论
编辑这个设计方式是一种妥协下的设计。在设计理念上,采用微核心架构来设计,但因为微核心结构一直被批评为性能不佳,因此在实现上,则采用宏内核的作法。微核心架构将操作系统服务(task server)运行在用户空间,以保证系统的稳定可靠。与典型的微核心设计相较,在混合核心中,多数的操作系统服务(task server)仍然运行在核心空间中,与宏内核相同。因为让操作系统服务运行在核心空间,减少了消息传递及环境切换(content switch)带来的系统负担,这可以避免微核心架构常被批评的性能不佳问题;但也因此,这种设计无法提供微核心系统架构下的稳定性保证。
批评
编辑林纳斯·托瓦兹认为,采用可加载核心模块不代表这个操作系统就是一种混合核心,如果模块跟内核使用同样的寻址空间,能够存取内核的资料结果,这种实现方式就是宏内核[2]。以这种定义来看,混合核心实际上是宏内核的变种。
例子
编辑NT内核
编辑XNU内核
编辑其他
编辑- BeOS内核
- DragonFly BSD
- ReactOS内核
参见
编辑注释
编辑- ^ 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.
- ^
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.