对于内核初学者的一点看法和建议!

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
三千世界化为微尘
帖子: 7
注册时间: 2008-08-01 16:18

对于内核初学者的一点看法和建议!

#1

帖子 三千世界化为微尘 » 2008-09-24 18:29

ckkz520网友在本版发帖阐述了作为linux内核初学者应该看的两本参考书,我觉得ckkz520 网友给出的参考书还不是很全面,如果内核初学者一上来就看这两本书绝对撑不过3天。内核的学习绝对不是一朝一夕可以完成的,我看linux的内核学习至少要不间断学习1年才有所成,所以学习linux内核是急不来的,这绝对是慢工出细活的东西。 给内核的初学者推荐书籍是一个好的习惯,但是更重要的是阐述自己在学习内核过程中所走过的弯路,以提醒后来人!!

我想先要说明一下linux学习的一个误区:
1:学习linux不等于学习linux内核。
2:能用应用层解决的事情,绝对不要在内核层来解决。
3:做内核开发并不一定拿高薪。

对于linux的初学者来说做好是把主要精力放在应用层,你会发现在linux应用层的开发非常的精彩。linux命令和GNU工具的运用、shell编程、gcc与gdb的运用,make与cvs,yacc与lex,mysql的这些工具会让你如虎添翼。标准I/O库,curses,memory管理,System V,pThread,database开发等绝对会让你沉醉于其中。至于内核的学习可以在以后有了需求再来学习内核开发也不晚。借用一句著名的话:两个开发一样精彩! 应用开发推荐书:linux程序设计(第3版),蓝皮的那本。

linux内核的学习牵涉到操作系统的全方面知识,需要你首先对操作系统本身的运行机理要有一定的了解,不要一上来就专攻内核,那绝对会强烈打击你的自信心的,所谓磨刀不误砍柴工嘛,我建议先学习一下操作系统原理的课程(相信大家已经还给老师了吧),如果你是非计算机专业的,那么我就不是建议你学习了,是你必须去学这门课程。在这方面推荐《计算机操作系统》汤子赢的那本,重点阅读前六章。这本书偏重与理论,但是当你有了这些理论的东西之后,再来看内核代码,你会发现linux的内核代码就是用代码实现了这些理论,这是你不容易迷失在茫茫的千万行的内核源代码中。这部分的工作一般最长可在1个月内完成,当然前提是不间断学习!

然后可以开始阅读内核了,开始学习内核一般不是一上来就读2.4或者2.6的可以从低版本的学起,这样有利于入门,也可以拨开云雾见青天,抛开一些无关的东西这样学习得更纯粹一些!这部分的推荐数目是:《Linux内核完全注释2.01》,里面的2.01是书的版本不是linux的版本,书中所描述的linux的版本是0.11大楷是10几年前的版本了!虽然现在已经不再使用了但是对于我们入门学习是绝对有益的!再学习的过程中建议在http://www.kernel.org/去下载0.11的内核,然后用Source Insight建立一个0.11的内核工程这样可以结合源代码来阅读本书。

然后就可以开始现在的通用的内核2.4或者2.6的阅读,阅读2.4或2.6的内核是非常困难的一件事情,建议大家在真正阅读之前还是补习一下两样东西1:c语言,2:数据结构,特别是数据结构中的链表,散列,图,因为内核把这些数据结构运用到了极致,运用到一个你无法想象的地步如果你没有这些知识,那就读代码就会很麻烦!在这里就推荐两本书:《linux设备驱动程序》(第2或3版)这是一本开发驱动的书,linux内核70%的代码是驱动程序,现在内核的开发70%都是在做驱动,如果你了解驱动的开发,那你就真正的进入内核开发者的行列。《LINUX内核设计与实现》第2版,这是一本承上启下的书,它从一个简单视角入手把linux的内核的各个方面的特性娓娓道来,就像一位老师在你身边随时提点你一样,读这本书绝对是有百益而无一害!当然如果有时间可以阅读《深入分析LINUX内核源代码》这是国内在这个学习阶段比较好的书,可以作为对以上2本书的补充!


再然后该做什么呢?其实我也不知道了,应为这是一个高山仰止的境界,我还差个十万八千里,我估计就是在linux内核那自由的蓝色海洋任你遨游了吧!!作为linux内核的学习的一个完美的收尾就推荐两本书:《Linux内核源代码情景分析上下册》,《Understanding.the.Linux.Kernel.3rd.Edition》(中文名:深入理解linux内核 第3版)。


欢迎讨论,大家一起学习!!
三千世界化为微尘
帖子: 7
注册时间: 2008-08-01 16:18

Re: 对于内核初学者的一点看法和建议!

#2

帖子 三千世界化为微尘 » 2008-09-24 19:36

哎~~自己沙发自己座!!
elvisqin
帖子: 33
注册时间: 2008-06-06 12:26

Re: 对于内核初学者的一点看法和建议!

#3

帖子 elvisqin » 2008-09-24 22:33

楼主,一个帖子你用不着发那么多遍吧????
三千世界化为微尘
帖子: 7
注册时间: 2008-08-01 16:18

Re: 对于内核初学者的一点看法和建议!

#4

帖子 三千世界化为微尘 » 2008-09-24 23:09

楼主,一个帖子你用不着发那么多遍吧????
都怪论坛速度慢,你看人家不是也发几遍嘛!!
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: 对于内核初学者的一点看法和建议!

#5

帖子 Jarson » 2008-09-24 23:12

不错不错,以后学习时要是找不到参考书再到这瞧瞧。
头像
cigerma
帖子: 90
注册时间: 2008-06-13 12:00

Re: 对于内核初学者的一点看法和建议!

#6

帖子 cigerma » 2008-09-25 16:27

前些天买了本《Linux程序设计》,不知是不是你说的那本,全英文的,叫《Linux Programming by Example》,书店里只有2005年的那本。不过不知要硬着头皮看多久!
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 对于内核初学者的一点看法和建议!

#7

帖子 自由建客 » 2008-09-25 20:43

我觉得对初学者来说,也是那些书最大的一个通病,就是动不动就摆代码,过多的拘泥于部分细节而又忽略很多重要的地方。这就是为什么我宁愿去学bsd的内核。
三千世界化为微尘
帖子: 7
注册时间: 2008-08-01 16:18

Re: 对于内核初学者的一点看法和建议!

#8

帖子 三千世界化为微尘 » 2008-09-26 0:55

楼上的,我不觉得bsd的内核设计得比linux优秀,而且bsd内核资料相对较少!市场需求也不大!
回复