The term microkernel does not apply to the current kernel used in the Windows operating system.
翻译成中文,就是:微内核 不适用于 Windows 操作系统中使用的当前内核。
这可是微软的官方技术文档,已经非常的清楚的表明,微软自己对Windows内核的看法: 它不是一个微内核。
那么,接下来,再从技术架构的角度看看,为什么微软为什么会这么说呢?微软的Windows没有开源,那么我还是找一个官方资料吧:
先介绍一下文章的作者,毕竟不能随便拉个人,拿他的文章当资料对吧。作者叫Hari Pulapaka,在微软的Title是Program Manager for Windows Kernel,他提供的资料应该还是有一点权威性的,而且文章写于2018年,分类在内核栏目下,目前还在,也有大量回复和讨论,说明微软官方并没有认为他的观点有什么问题。习惯是先上图:
按照前面微内核的定义,这明显感觉不像是一个微内核了吧,直接引用作者的原文如下:
Windows NT is like a microkernel in the sense that it has a core Kernel (KE) that does very little and uses the Executive layer (Ex) to perform all the higher-level policy. Note that EX is still kernel mode, so it's not a true microkernel.
翻译一下:Windows NT有点像微内核,因为它里面的Core Kernel(简称KE)只是负责很少的工作,其它的事呢都交给执行层(简称Ex)来完成。要强调一下,因为Ex是在Kernel Mode下运行的,所以Windows NT不是一个真正的微内核。
第一句里,作者很明确的用了关键字Like,说明WindowsNT只是像但不是。第二句里,更是明确说,not a true microkernel,而且作者明确的给出了原因,因为把Ex(包括文件等)放在Kernel Mode下运行,所以不是微内核(正好也验证了我前面的说法,当然这个说法或者说标准不是我的发现,而是大家都认可的标准)。
这里补充一下历史,Windows在历史上的确是想用微内核来搞的,当时的负责人正是内核大神David Cutler这位大爷,但后面落地时发现,这微内核的性能确实存在很大问题,没办法,只好又调整架构,变成了上图的架构,微软自称为混合内核(Hybrid Kernel),Apple自己的MacOS使用的XNU其实也自称为混合内核,同样是XNU在Github上的官方定义:XNU is a hybrid kernel combining the Mach kernel developed at Carnegie Mellon University with components from FreeBSD and a C++ API for writing drivers called IOKit.
相信前面的资料已经足够证明,WindowsNT不是什么微内核OS了,我实在也不知道那位"资深win内核专家"是怎么坚信Windows是微内核的。关键是我实在是不懂他的逻辑,一面说着NT内核里有文件系统等一堆内容,又坚持说这是微内核,我实在很难想像这是一位内核专家能说出来的话。
<hr/>混合内核到底是什么鬼
As to the whole &#34;hybrid kernel&#34; thing - it&#39;s just marketing.
It&#39;s &#34;oh, those microkernels had good PR, how can we try
to get good PR for our working kernel? Oh, I know,
let&#39;s use a cool name and try to imply that it has all the
PR advantages that that other system has&#34;
翻译一下就是:说到&#34;混合内核&#34;这玩意,就纯粹是个市场营销的噱头。就好比说&#34;微内核有那么多的优点,我们在宣传自己的内核时怎么能把这些优点都吹上呢?有招了,起个超酷的名字,然后再暗示一下,这些优点我们系统都有&#34;。