微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 131|回复: 11

简单分析一下windows到底是什么内核架构

[复制链接]

1

主题

6

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-21 01:32:03 | 显示全部楼层 |阅读模式
我这人其实挺懒的,最后一篇文章还是3月份发的,写这篇文章的原因,纯粹是因为被某位号称"资深win内核专家"震惊了,起因也很简单,我说某一个国产的开源OS内核把文件系统放在Kernel Mode运行,根本不是微内核,然后这位"资深win内核专家"就用以下两句话鄙视了我。





首先声明,我确实不是一个OS专家,但作为一个写过Windows驱动,也学过Linux早期源码的程序员,立即在脑子回想一下,确认"Windows何时变成微内核了",那么下面就来分析一下"Windows的内核到底是什么"。虽然说是分析,其实是有点向自己脸上贴金,我写技术文章的习惯一向是不怎么输出观点,尽量用官方资料或者大家都可以重复的东西来讲述事实。
首先是微内核的定义

讨论一个东西,应该对其进行明确的定义,否则很容易陷入鸡同鸭讲的囧境,就比如我就不乐意讨论“XX国产系统是否是XX套壳”,双方如果没有对套壳有个明确的定义,特别是技术与非技术人员,对这个东西的定义就不一致,就更容易扯的不着边际。
幸好,微内核这东西,在学术界和工业界都有一个比较共同的定义,直接从Wiki上抄一段吧,https://zh.wikipedia.org/wiki/%E5%BE%AE%E5%85%A7%E6%A0%B8:
微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。所有的服务进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的运行模式下运行,其余的进程则在用户空间运行。这样的设计,使内核中最核心的功能,设计上变的更简单。需要特权的进程,只有基本的线程管理,内存管理和进程间通信等,这个部分,由一个简单的硬件抽象层与关键的系统调用组成。其余的服务进程,则移至用户空间。


可能上面的定义还是有点复杂,我直接对着上面这张图简单解释一下:如果一个内核,只在Kernel Mode模式里放置IPC(进程通讯),MM(内存管理,也有别的叫法,不详述了),Scheduling(调度)。那么就认为是微内核,反之,如果把其它的东西,比如file system, VFS, device drivers放到Kernel Mode,那么就认为是宏内核。具体细节,我就不在这里扯了,说白了,判断一个内核就是看它在Kernel Mode中运行了哪些东西。
标准给出来以后,我们再来看Windows内核到底是什么情况。
<hr/>Windows官方资料

首先上一个Windows官方文档的链接:
文章里结尾,以备注的方式明确声明了以下内容:
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/>混合内核到底是什么鬼

接下来,再来看看混合内核到底是什么鬼,这货到底和微内核有什么关系?
我先声明一下我的观点:其实只要认真读过操作系统原理,对微内核和宏内核架构有一定认识的人,都不太会认为混合内核和微内核有什么关系,它本质上就是一个宏内核。当然我的观点可能没有什么权威性可言,我还是拉一位大神来站台吧(出台就别指望了)。
这位大神叫Linus Torvalds,不用详细介绍了,Linux的作者。这哥们脾气火暴,不仅粗口不停(和David Cutler一样,把f打头的单词当作口头语),而且向来直言直语。2006的时候,Linux邮件组里,对NT的所谓混合内核有过讨论,Linus他发表了自己的观点,链接如下:
邮件内容较长,也比较技术化,我就不全部翻译了,直接把Linus写的结论贴出来:
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"
翻译一下就是:说到"混合内核"这玩意,就纯粹是个市场营销的噱头。就好比说"微内核有那么多的优点,我们在宣传自己的内核时怎么能把这些优点都吹上呢?有招了,起个超酷的名字,然后再暗示一下,这些优点我们系统都有"。
也就是说在Linus眼里,"混合内核"这也就是个市场营销的术语,但其实还是一个宏内核架构。
最后声明一下,本文只是讨论windows到底是什么类型的内核,以及混合内核到底是什么情况,别用这些标准去讨论某些国产OS内核,保命要紧。
回复

使用道具 举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-21 01:32:08 | 显示全部楼层
说自己是专家我就笑了[捂脸]就是这些“专家”让专家变得听起来就有点搞笑。
回复

使用道具 举报

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-21 01:32:39 | 显示全部楼层
看到作者的名字就知道肯定有秀英文拉大旗的段落。[爱]
回复

使用道具 举报

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-21 01:33:14 | 显示全部楼层
回头我再针对你的东西写个不用英文的文章,毕竟批评你的观点不用拉大旗。
回复

使用道具 举报

5

主题

6

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-9-21 01:34:07 | 显示全部楼层
猪儿笨笨:批判一下"科学现象学"这位用户对鸿蒙的看法
针对你的回答,写的质疑,有空慢慢回复,当然你也可以选择无视,就像那位"资深Win内核专家"。
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 01:34:57 | 显示全部楼层
windows微内核只能说是聊以自慰
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 01:35:15 | 显示全部楼层
感谢作者的文章,网络上的争论都是从概念不清起步,如果每个人对概念是不同的理解,就会容易引起争论。但是所谓的“专家”随意指责别人的言论的方式真的不是在促进交流,作者先从概念说起,再引经据典,这才是有用的交流方式,给作者点赞。
回复

使用道具 举报

1

主题

5

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-21 01:36:03 | 显示全部楼层
人家中学语文课和英语课认真听了,你呢[爱]
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 01:36:19 | 显示全部楼层
混合内核。这个没啥必要可争的。windows又不开源官方怎么说怎么对。
回复

使用道具 举报

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-21 01:37:18 | 显示全部楼层
查看图片
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-7 04:48 , Processed in 0.076884 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表