大部分人能看到这篇帖子, 想必已经用过Windows系统多年了...
想清楚Windows技术内幕,就需要逆向工具。幸运的是:
利用WinDbg调试Kernel, 可以得到内核数据结构,参照WRK源代码和深入解析Windows操作系统可以猜测到内核源码的可能长相,结合IDA等反编译工具可获取内核全貌。
更多关于WRK1.2,后面详细介绍。
大部分都是C语言, 少部分汇编代码。
网络上和学术上对此有些许不同的意见。微内核,一般意义上,符合Mach的做法被称为微内核。微内核是"Micro Kernel", 精简Kernel,把常规意义的内存管理、进程通信等内核完成的功能都移到用户空间完成,内核只有完成最核心的"调度"等功能。从这个意义上,Windows不是微内核,它和Linux一样,都是巨内核。Windows执行体和HAL都同属内核空间。
微内核本意想让内核更不容易崩溃,但组件之间大量模式和环境切换性能很差。事实上,对于大部分PC和移动端来说,没有这个必要。不过,安全等级要求更高的车机,对于微内核的需求在不断增强。
官方对内核的定位:
The term microkernel does not apply to the current kernel used in the Windows operating system.
From: Windows Kernel-Mode Kernel Library - Windows drivers | Microsoft Learn
Linux本身开源,Mac系统(OS X)内核采用Free BSD也是开源。
Apple Mac darwin-xnuhttps://github.com/apple/darwin-xnu
提到Windows Kernel Code,就不得不提当年和Windows对抗的ReactOS. 它致力于实现和Windows相同运行环境的开源系统。对于学习或对比Windows操作系统的内部实现(不论是用户层还是Kernel层),都有极大的价值。
ReactOS官方网址https://reactos.org/
Online Source Code: ReactOS: Main Page
本专栏如无特别指出,不会区分Kernel版本。
如XP/Server 2003/Vista/Win7/Win8/Win 10/Win 11. 博客中提到的函数也许只适用于某个
Kernel版本, 具体以实际Kernel版本为准,博客内容展示为了表达Kernel设计思想,而非绝
对的Kernel代码实作。
本专栏力求精简而不失重点,不摘录大量Source Code, 去除无意义的冗余,为了更好地阅读效果。因本人水平有限,有错误或者偏颇的地方,请各位不吝指正。