独辟蹊径品内核
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

几乎每一个操作系统内核的学习者在初学阶段都会感觉到难以入门。这是由于内核涉及到知识面非常广泛,需要学习者从根本上掌握大量的知识,这包括:程序编译,链接,装载的细节,操作系统理论,计算机系统体系结构,数据结构与算法,深厚的C/汇编语言编程功底。如此相对较高的门槛常常令很大一部分初学者望而却步。那么是不是一定要先学好以上的各门知识后才能学习内核呢?事实上大部分学习者在学习以上各门知识都会遇到同样的问题,因为知识是一个网状结构。所以重要的不是先去学会什么知识,而是学会如何学习,学会在自己掌握的知识体系上提出问题,学会思考,进而坚持不懈的解决心中的疑问。笔者从学完C/C++语言开始,由于C/C++的示例程序都是在命令行下的,于是常常想如何才能编写出视窗程序,学习了MFC,但是同样想不通诸如WM_CHAR,WM_LBUTTONDOWN的消息从何而来,带着MFC中诸多疑问,笔者开始学习Windows SDK程序开发,在这个学习过程中感觉对MFC的认识更加深入了,但同时又有新的问题想不通,于是进而学习Windows DDK,之后开始学习操作系统内核。在这个过程中,笔者也遇到过数不尽的疑问,但是都是需要的时候再补充相关知识。因此初学者要明白,学习并不需要等到“万事具备”了才可以开始。需要的是保持好奇心,养成思考的习惯,树立解决问题的决心。很多读者渴望寻找好的入门教材,也常常有人问看什么书才能进步的快,但是当他们看了别人推荐的书却没有取得同样的收获,这是为什么呢?笔者认为,读书有以下几种境界:

1. 面对书上讲到的某个知识点,不能接合自己掌握的知识提出疑问比如:如何才能根据自己掌握的知识来解释或者推理出新看到的知识点,或者找到要解释推理出新知识还欠缺的知识点在哪方面。,仅仅知识死记书本上的东西。这种状态就算学到最高境界,也仅仅只是能把书本上的知识点完好的记下来在脑海中形成孤立的知识节点。

2. 面对书本上讲到的某个知识点,能接合自己掌握的知识提出疑问,但是大多数时候没有探索精神,仅仅局限于到其他书籍或者请教别人来排除心中的疑问。脑海中的知识形成了简单网状结构,但由于探索能力长期得不到锻炼,综合自己的知识去分析和解决问题的能力十分有限。

3. 面对书上讲到的某个知识点,能接合自己掌握的知识提出疑问,并且能根据问题补充相关必要的知识,不断综合分析各知识点的关系,提出各种假设和验证排除的方法并亲自验证,解决不了问题决不罢休。如能经过长期锻炼,其脑海中的知识点形成复杂的网状结构,综合分析能力必将加强。

4. 根据自己掌握的知识,提出全新的问题,并始终坚持找到答案为止。这种境界需要渊博的知识作为基础。

因此,不要还没学内核就被吓倒,说了这么多看似和内核无关的东西,就是要从先排除读者的心理担忧,树立正确的态度,重要的不是学会什么,而是学会学习。确定自己处于哪一种学习境界,然后通过学习某项具体的知识把自己提升到更高的境界。在现实生活中我们不难发现,能力强的学什么都又快又好。其根本原因在于他们处于更高的学习境界,并形成了良性循环!

有很多的人都渴望学习操作系统内核,但是内核涉及到的知识非常广泛,因此很多人半途而废,许多人往往抱怨没有好的书籍,教材。实际上,对于同一本书籍,不同的读者收获也是不同的,这取决于他们的态度和学习方法。笔者建议,在读书的时候,一定要以自己心中的疑问作为主线,而不要没有任何疑问就死记书本上的知识。