在开始今天的内容之前,其实有一些题外话可以和大家分享一下。自从工作以来,我个人一直都有一个观点。那就是怎么样利用简单的代码来说明开发中的问题,或者是解释软件中的原理,这是一个很高的学问。有些道理看上去云里雾里说不清楚,其实都可以通过编写代码来验证的.os可以、cpu可以、cache可以、编译器可以、网络协议也可以,很多很多的内容完全可以通过几行代码就可以表达得非常清楚,但是事实上我们并没有这么做。
我想原因无非是这么几条,
- 一来授业者对相关知识的学习也是停留在概念上而已,
- 二来我们的学习过于死板和教条、太关注知识、不求实践,
- 三就是学习者自身缺少思考的能力、缺少自我反省的能力、对很多东西不求甚解。
而学习Linux内核就能很好的帮助我们解决这些问题。
一、Linux内核学习路线:
二、以网络协议栈为例:
1、Linux内核源代码结构
Linux 的内核源代码可以从 https://www.kernel.org/网站上下载,Linux-3.9.5以上的版本(含)。 其代码目录结构如下: