当前位置: 华文问答 > 数码

Windows 内核和 Linux 内核谁更复杂?

2019-11-19数码

没有可比性的,Windows是混合内核,Linux是宏内核,二者的结构都不一样,Linux本身可以在内核里集成大量驱动,Windows内核文件,也就是那个ntoskrnl.exe很小。

当然即使是ntoskrnl,这个代码规模也并不小,网上有泄露的WIN2K/NT4的源码,同时还有兼容Windows内核API的开源的ReactOS的源码,可以看到即使是Windows的内核,代码规模也是非常巨大的。笼统的讲,ntosknrl肯定比Linux内核要小很多。

如果把所有可以运行在内核态的代码(通常也就是驱动)都算上,这个就很难界定了,在桌面领域Windows的驱动必然是比Linux要多的,应用程序也更多(很多应用程序都需要驱动配合),但非桌面领域,Linux的驱动也不少。

但是,代码规模不等同于复杂度,同时,对于工程上的代码,一般来说,复杂度高是缺点不是优点,因为复杂的代码维护性会比较差。

对于题主的问题,可以准确回答出来的是:

  1. Windows的纯粹内核部分的代码规模比Linux要小;
  2. Windows和Linux工作在内核态的代码规模都很大,但分别属于不同领域无法比较;
  3. 复杂度没有一个明确的定义(实际上是有的,通过软件工具分析,但Windows不开源),所以没办法比较。

动不动就说内核的人,其实对内核是什么都搞不清楚,而且Windows能成功,跟内核关系不大,有人开发驱动,有人开发生态环境,这比内核重要多了。