kernel版本为 2.6.35
协议栈部分的参考书籍是<< linux 内核源码剖析 -- tcp,ip实现 >>
其他方面的参考书籍有:
- <<奔跑吧,linux内核基于LInux4.x内核源代码问题分析>> -- 内存部分讲解得比较清楚,linux 4.x和2.6.35区别不是很大.
- <<深入linux内核架构>> -- 比较高屋建瓴的一本书,不怎么适合新手,但是适合反复阅读
- <<Understanding the Linux Virtual Memory Manager>> -- 书是好书,但是有些老了
- <<深入理解linux内核>> -- 可以一读,版本有些老
我个人的工作其实并不涉及到内核的改动,只是稍稍涉及内核协议栈交换和转发,应用的性能优化,查core等,了解一些内核知识肯定是有很多好处的,当然,另外一方面,读这份源码也是为了找点事情做,让自己不再那么无聊.
如果你自己不做相关的工作,没有切身的体会,能将这份代码摸得一清二楚,我个人是不太相信的.但是其实也不需要完全理解所有的细节,有些东西,当做一个黑匣子就行了.
读内核源码,很大一部分来源于我自己的好奇心,大致会花半年的闲暇时间在这份代码之上.虽然我知道读完之后,不会有什么立竿见影的效果,但是希望自己读完之后,有足够的能力以及足够的信息,走出当前所面临的恶性循环.
不要再逆来顺受了,去别的地方看点别的风景.人生不应该是眼前这副模样.
-
尽量带着问题来读,不要漫无目的地从头读到尾,这样效率很差,可以的话,可以尝试跟着书本先过一遍.
-
不要陷入细节,众所周知,linux内核有着将近无限的细节,一旦陷了进去,就很难爬出来了.
-
反复读,读内核不是一件一劳永逸的事情,这玩意就像圣经一样,要天天读,日日读,读到深处,自然就品出了味道.
-
要有大局观,不要追求面面俱到,这个没啥必要,咱一般不参与内核的开发,有一些东西,比如函数,当做一个黑盒子就行了,不用太过深入.
-
多收集一下优秀的博文,大牛们的读核方法会非常有裨益.
-
抓住数据结构,内核的所有代码,都是围绕数据结构来的.
- 聚合口bonding,包括lacp协议
- 组播相关
- igmp
- 网桥以及其中涉及的stp协议
- 进程调度相关的代码
- 信号相关的代码
- proc文件系统
- 流控(tc)
- lacp
- netfilter
- 路由
- tcp协议再次加深理解