有奖线上连载讨论:我的内核学习之路-回忆录 活动结束 获奖名单公布
获奖名单公布:dooros塑料袋 jiayanfuluyang.colujian19861986 asuka2001 linewer
请以上网友在2012年2月15日前把个人地址及所需图书名称站内信发至:风铃之音。我们尽快安排给您快递
对活动没有如期结束,深表歉意,多谢大家参与活动!
第一篇:内核学习-------------之追忆
本人不才,希望通过本帖号召更多的高手追述当初自己学习内核的方法,心德体会,以及学习过程中的痛苦与快乐,一起来分享吧!希望你让更多的后来人得到启示!
本版有很多内核高手,相信每个高手的成长的方式都不一样,但是有一点是相同的,就是刚接触内核的时候都是很迷茫的,以后还会有很多新人接触内核,我想今天通过这个连载话题来激发大家回忆刚开始接触内核的情景,然后是怎么一步一步从懵懵懂懂,到开始熟悉,到深入理解,到最后的实践,我相信这样会对后来人有很大的帮助!
在此,我想从个人的一点经历来谈谈自己怎么接触内核,希望更多的朋友参与进来讨论,自己当初为什么接触内核,接触内核时遇到的问题,怎么去解决的,等等。。。。。只要是你还记得第一次接触内核的时候很搞笑,那个时候还是学生时代2007年9月份,要做内存管理的研究:那个时候我对Linux还是很陌生,只是听过,但从来没有用过,下面是我人生中接触内核的一段刻骨铭心的对话,也就是这段坑爹的对话,让我走上了内核的不归之路!
下面是我刚到我们学校的研究室师兄和我的一段对话:对话的时间:2007年9月5号
师兄:“我们一起研究一下虚拟内存管理,为了提高研究的效率我们分开研究”
我:“好,怎么分开研究,是每个人研究不同的模块吗?”
师兄:“不是的,我们一个人研究Unix的虚拟内存,一个人研究Linux的虚拟内存,你选择是研究Linux的还是Unix的?”
我:“我也不太懂啊”
师兄:“没关系,你随便挑一个”
我:“我看到师兄傍边有一边书叫“深入理解Linux内核”,那好吧,我研究Linux的吧“
师兄:“好的,那开始吧!“
从上面这段话中可以看出我师兄多么的坑爹啊,其实当初他也不懂,从现在看来当初怎么可能分开研究了,最恰当的应该是分开研究Linux不同的模块。就这样被坑上了Linux的不归之路!
起步之困难:
第一:找不到一本书详细的讲解虚拟内存管理的
第二:遇到问题不知道和谁讨论,有的时候甚至是代码级的不理解,不知道为什么这么写?
第三:从何下手?
第四:对Linux整个系统没有概念!
俗话说:万事开头难!
那个时候我还不知道有CU的存在,后来知道CU了,在CU上发了几个帖子没人回,发现看代码的过程中还是靠自己去领悟,有的代码别人真的不一定知道!更何况内核版本那么多!
从何开始?
当初真不知道如何开始好,于是就开始从代码开始看起当初也觉得这样最直观,还记得刚开始看的代码的部分是从bootmem.c这个文件开始看的,不怕大家笑话,看了1个月没看懂,于是发现这样的策略不行,因为发现有的代码能读懂,但是不知道为什么要这么设计,后来,无意中发现了一本书赵炯的《Linux内核0.11完全注释》,然后花了一个月左右的时间把书看了一遍,看了一遍之后发现对0.11的结构有点了解了,可是这对后来看2.4的内核有很多不利的地方,有的观点容易受0.11的影响!但是总体是利大于弊的!看了一遍之后,我开始尝试着看Bootmem.c的代码,发现看的不是那么痛苦了,于是后来又把赵炯的书看了一遍!看赵炯的书的同时回顾了大学里面学的操作系统的各个理论性的东西,最让我影响深刻的是:看到磁盘调度算法的时候Linux的实现蛮让当时的我震撼的!但是0.11的内存管理太简单了,对后来没有太大的帮助,而且内存管理的结构和后来的结构差别很大,其实对我后来看2.4内核的时候造成了很大的不好的影响!比如:0.11中有LDT这种东东,后来就没有了,为了弄清楚为什么没有,还是费了一点波折的!
随着看代码的深入,发现有些代码是看懂了,而且看代码也看的很快,可是不明白机制!
于是这个是时候理论还是很重要的!这个时候发现了另外一本书也就是大家最为追捧的一本书《深入理解Linux内核》,这本书结合了少量代码结合理论讲解了Linux的整个系统!
随着后来的阅读的代码量越来越大,发现有很多代码还是读不懂的,尤其是在关注:内存管理和进程管理交互的时候:这个时候发现了另外一本书毛德操《linux内核源码情景分析》,说实在话这本书讲代码真的是非常棒的一本书,后来我对启动部分的理解也是来源这本书,这本书真的是太好了!
好了,总结一下:我觉得作为Linux内核初学者来讲:以下两本书是必备的:
《深入理解Linux内核》和《Linux内核源码情景分析》,有的人说《linux内核设计与实现》这本书不错,确实从整体结构上来讲还不错,可是我觉得不适合初学者看,只适合那些对内核比较了解了,后来回过头来再看这本书,另外一本书《Linux虚拟内存管理分析》,这本书我不想评论太多,建议大家不用买了,反正我当初买了,看了之后特别的后悔!
希望我的观点能引起大家的热烈讨论,希望大家谈谈自己的内核之路!
以上观点有不当之处还请大家给予批评和指导!
再多说几句话:在这个物欲横流的年代,真正静下心来做学问,做技术的人真的不是那么多,每个人面对诱惑的时候都会静不下心来,我相信很多朋友在看书的时候表面上也许很平静,其实内心波浪壮阔,一点也看不下去,这种情况很多,我也有过,但是,如果你真的爱技术,真的想克服,静下心来一点一点的去改变,慢慢的你去会适应每天去看书的感觉了!
话题1:
我会谈谈深入理解之前的痛苦和摸索!
话题2:
谈谈站在另外一个角度看Linux内核
话题3:
总结自己学习内核部分的结构
话题4:
我的实践之路!
讨论有奖:积极参与分享讨论的网友,将有机会获得《linux从入门到精通》《 linux网络编程》《linux驱动开发入门与实践》三本书中的任意一本。
活动时间:2011.8.15-2011.9.15
支持一下。。。 回复 1# chenrvmldd
想想那个时候我的师兄是多么的忽悠人啊,如果我当初选择了UNIX,后果会多么的恐怖啊,其实当初,我师兄看了几天的UNIX的虚拟内存后发现压根儿就看不懂,然后就和我的导师说,让我一个人看得了,然后就转去做其他的东东了,
现在想想真后怕丫,看来在学习的过程中如果遇到贵人的话,可以少走很多路,希望本版越来越多的牛人会后来人指路! 回复 2# mz198424
大牛,别光支持啊,也谈谈你的心得和体会啊!{:3_189:} 回复mz198424
大牛,别光支持啊,也谈谈你的心得和体会啊!
chenrvmldd 发表于 2011-08-15 16:48 http://bbs.chinaunix.net/images/common/back.gif
偶可不是什么大牛啊。。。菜鸟都算不上。。。 回复 1# chenrvmldd
清楚内核是很重要的一个过程 3楼不错,顶之 本帖最后由 renxiao2003 于 2011-08-19 23:03 编辑
我学习Linux的内核,估计也就是编译安装新内核开始的,真的很痛苦,虽然网上有不少的资料,但自己动起手来却真的不是那么容易。尝试过去阅读Kernel的源码,但由于自己的C水平实在是有限,所以没法看能。第一次安装内核是在2.3.26-rc5编译安装,出了不少的问题,但也学会了编译安装内核的步骤和问题的解决办法。同时期还安装了本版的rc6版本,都是问题重重。但都是解决了,也安装成功(在rhel5.4和ubuntu10.04下),安装成功的时候还是颇有成就感的。
最近一次安装是kernel3.0.1版本,同样也遇到了问题,但却按照原来的方法已经不能解决了。到目前为止还在探索中。因为专业不是搞这个的,都是因为自己的爱好业余在搞,所以时间上只能是周末和晚上了。期待自己能成功。有机会的话研读一下源码。 支持下,内核完全不懂.