【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
早几年,有一份差不多200m大小的文件在网上疯传,这份文件不是别的,正是windows的kernel代码。今天闲来无聊,看了一下潘爱民编写的《windows 内核代码与实现》。书中描述了windows kernel的一些基本结构、逻辑等等。虽然文字的内容很多,也很详尽,但是感觉上还是没有看代码来的实在,所以想看看网上有没有相关的内容。没想到,还真的被我找到了,这是一份wrk的代码,只能运行在windows server2003上面。大部分内容被阉割了,很多东西被库文件代替了,但是还是可以从中看出一些端倪的。
(1) wrk,即windows research kernel,本来是给教学用的,但是申请起来蛮麻烦的,这一次也是无意中从网上下载到的。
(2) 执行环境包括amd64和i386,本身也包含了编译环境。
(3) 只能在windows server上使用,恐怕微软也担心要是能在xp上用会造成不好的结果。
(4) 看了wrk代码之后,说明之前在网上疯传的代码是真的kernel代码。
(5) windows的kernel代码在注释方面做的相当好,即使函数冗长,也非常有条理的。
(6) 代码阉割了很多内容,比如gui、net、fs部分就完全没有。
(7) 代码在命名、书写、空格方面十分一致,水平很高,逻辑很清晰。
(8) 从完整性上考虑,学习wrk意义不大,大家完全可以从一个rtos入手学习os的调度、互斥、同步、时钟、内存、上下文切换等内容。
(9) 大家都记得某一年发布会windows蓝屏的情形,这说明任何代码的完善都是需要时间的,同时任何代码都不是完美的,windows也不例外。
关于windows kernel详细部分的内容,大家完全可以一边看潘爱民先生的书、一边看wrk。但是实验起来比较麻烦,掌握基本原理就好。如果能因此写几个demo,那么基本上也达到了学习的目的了。