如何学习内核

一、Linux内核学习经验

1. 内核学习的心理误区
心理上的问题主要有两个,一个是盲目,就是在能够熟练使用Linux之前,对Linux为何物还说不出个道道

来,就迫不及待的盲目的去研究内核的源代码。重述Linus的那句话:要先会使用它。

第二个就是恐惧。人类进化这么多年,面对复杂的物体和事情还是总会有天生的惧怕感,体现在内核学习

上面就是:那么庞大复杂的内核代码,让人面对起来该情何以堪啊!有了这种恐惧无力感存在,心理上就

会去排斥面对接触内核源码,宁愿去抱着情景分析,搜集各种各样五花八门的内核书籍放在那里屯着,看

了又忘,忘了又看,也不大情愿去认真细致得浏览源码。

2. 学习内核就是学习内核的源代码
学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。内核源码本

身就是最好的参考资料,其他任何经典或非经典的书最多只是起到个辅助作用,不能也不应该取代内核代

码在我们学习过程中的主导地位。

3. 要抱着严谨细致的态度分析内核源码
既然要学习内核源码,就要经常对内核代码进行分析,而内核代码千千万,还前仆后继的不断往里加,这

就让大部分人都有种雾里看花花不见的无助感。不过不要怕,孔老夫子早就留给我们了应对之策:敏于事

而慎于言,就有道而正焉,可谓好学也已。这就是说,做事要踏实才是好学生好同志,要遵循严谨的态度

,去理解每一段代码的实现,多问多想多记。如果抱着走马观花,得过且过的态度,结果极有可能就是一

边看一边丢,没有多大的收获。
只要你使用这样的态度开始分析内核,那么无论你选择内核的哪个部分作为切入点,比如USB,比如进程

管理,在花费相对不算很多的时间之后,你就会发现你对内核的理解会上升到另外一个高度,一个抱着情

景分析,抱着0.1内核完全注释,抱着各种各样的内核书籍翻来覆去的看很多遍又忘很多遍都无法达到的

高度。


4. 通过Kconfig与Makefile定位目标代码
毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux内核中每

一个目录下边都会有一个 Kconfig文件和一个Makefile文件。 对于一个希望能够在Linux内核的汪洋代码

里看到一丝曙光的人来说,将它们放在怎么重要的地位都不过分。
Kconfig和Makefile就是Linux Kernel迷宫里的地图。地图引导我们去认识一个城市,而Kconfig和

Makefile则可以让我们了解一个Kernel目录下面的结构。我们每次浏览kernel寻找属于自己的那一段代码

时,都应该首先看看目录下的这两个文件。就像利用地图寻找目的地一样,我们需要利用Kconfig和

Makefile来寻找所要研究的目标代码。

二、学习内核需要什么基础知识?

(1)需要掌握操作系统理论的最初级的知识。
不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时

(real-time)的区别是什么,进程是个什么东西,CPU和系统总线、内存的关系(很粗略即可),等等。

(2)熟练使用C语言。
不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译

器,就可以了。当然,如果已经精通C语言显然是大占便宜的。

(3)了解CPU的相关知识,

你可能感兴趣的:(如何学习内核)