对于内核初学者的一点看法和建议!
发表于 : 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版)。
欢迎讨论,大家一起学习!!
我想先要说明一下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版)。
欢迎讨论,大家一起学习!!