Linux内核学习的误区相关书籍

时间:2011-09-04

    说内核经典书籍之前,我觉得应该先明确学习linux的方向。之前看到一篇关于linux学习方向的文章,觉得写的很有道理,他把学习linux分为这么几个方向:

  桌面系统:应用,像XP

  内核源代码学习:研究,爱好,研发

  系统管理:工作

  应用开发:研发

  服务器领域:服务器应用

  系统集成:这个不知道

  常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需:

  1, 关于操作系统理论的初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨着,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线内存的关系(很粗略即可),等等。

  2, 关于C语言。不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译器,就可以了。当然,如果已经精通C语言显然是大占便宜的。

  3, 关于CPU的知识。这块儿可以在学习内核过程中补,但这样的话你就需要看讲解很详细的书,比方后面将会提到的《情景分析》。你是否熟悉Intel 80386 CPU?尝试着回答这几个问题来判断一下:1)说出80386的中断门和陷阱门的区别;2)说出保护模式与实模式的区别;3)多处理器机器上,普通的读- 改-写回一块内存这样的动作,为什么需要特殊的手段来保护。等等。讲解基于其它CPU的Linux内核的书,目前好象只有一本《IA64Linux内核:设计与实现》──也还是Intel的,其它都是讲解基于IA32的。

  Linux内核完全剖析,0.11版本内核,赵炯写的,觉得麻雀虽小,五脏具全。一本书中差不多包含了所有的代码,而且加了很多注释。分析的很透彻,不错的内核研度入门书。 深入理解LINUX内核第二版,关于2.4内核的,如果有一些linux操作系统的基础,读着相当爽, 内容全面,而且用大量数据结构、宏名和函数,贯穿其中。遇到重点时,又附以代码、图解,理解起来比较容易。其中有些概念不是很正统,可能是作者有意为之吧!第三版是关于2.6。

  linux内核源代码情景分析 ,中国人写的,博大精深呀。经常在细节上深入进去,看的时候,要记得经常切换回来。不是很容易看懂。因为有太多细节,经常看着前面的,就忘了后面的,特别是函数、宏名,要是觉得自己内存堆栈空间够大的话。可以拿来试试。

  Linux设备驱动程序,虽是挂着设备驱动,但是大多是讲内核,也讲了很多系统接口

  内核2.4版源代码分析大全,李善平写的,典型的中国人写的书,概念都很清楚,整体框架也不错。比较理解“中国国情”。

  还有UC/OS_II,5000多行代码的嵌入式操作系统,也是开源的,有了任哲、邵贝贝的那两本书,足以搞定了。感觉比较适合本科操作系统课程的课程设计,可惜俺哪会还看到。

  好了,我们接下来走。好多人装上Linux之后,件事找到内核源码所在的路径,打开一个C程序文件,开始哗哗哗翻页,看看大名鼎鼎的Linux内核代码到底长啥模样──然后关闭。这是可理解的,但却不是学习的方法。刚开始,必须从读书入手。至少要对内核有一个Overview之后,才有可能带着问题去试图阅读源代码本身。 下面就讲一下我读过的几本书:

  1, 《Linux内核设计与实现》,英文名Linux Kernel Development(所以有人叫它LKD),机械工业出版社,¥35, 美国Robert Love着,陈莉君译者。 评说:

  此书是当今首屈一指的入门图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的,因此本书是很权威的。这本书讲解浅显易懂,全书没有列举一条汇编语句,但是给出了整个Linux操作系统2.6内核的概观,使你能通过阅读迅速获得一个overview。而且对内核中较为混乱的部分(如下半部),它的讲解是透彻的。对没怎么深入内核的人来说,这是强烈推荐的一本书。

  2, 《Linux内核源代码情景分析》上、下。毛德操、胡希明着,浙江大学出版社,上册¥80,下册¥70. 评说:

  本书是基于2.4.0内核的,比较早,也没听说会出第二版。上册讲解内存管理、中断、异常与系统调用、进程控制、文件系统与传统Unix IPC;下册讲解socket、设备驱动、SMP和引导。关于这套书的评价褒贬不一,我个人认为其深度是同类着作中秀的。本书基于Intel IA32体系,由于厚度大,很多体系上的知识都捎带讲解了,所以如果你想深入了解内核的工作机制而又不非常熟悉Intel CPU的体系构造,本书是合适的。缺点是:版本较老,没有TCP/IP协议栈部分(它讲的socket只是Unix域协议的),图表太少,不适合初学者入门。还有就是对学生朋友来说,可能书价偏高,这样的话可以考虑先买上册,因为上册是部分,下册一大部分都在讲具体PCI/ISA/USB设备的驱动。

  3, 《深入理解Linux内核》第二版。中国电力出版社。也是陈莉君译。此书是Linux内核黑客在推荐图书时的。 评说:

  此书C版的converse兄送了我一本版,因此就没买第二版,比较后悔。因此只就版说一说,版基于2.2,第二版2.4 。我见O'Reilly主页上说第三版的英文版将于2005年11月出版,也不知咱们何时才能见到。此书图表很多,形象地给出了关键数据结构的定义,与《情景分析》相比,本书内容紧凑,不会一个问题讲解动辄上百页,有提纲挈领的功用,但是深度上要逊于《情景分析》。

  4, 其它的几本书。市面上能见到的其它的Linux内核的图书,象《Linux设备驱动程序》、《Linux内核源代码完全注释》以及新出的《Linux内核分析及编程》等。

  《Linux设备驱动程序》第二版是基于2.4的,中文翻译不错,中国电力出版。这书强调动手实践,但它是讲解“设备驱动”的,不是的东西,而且有些东西没硬件的话无法实践,可能更适合驱动开发的程序员吧,不太适合那些For fun and profit的人。此书有第三版英文版,东南大学出版社影印,讲解2.6的,行文流畅,讲解的面也比第二版更广泛,我读过其中关于同步与互斥、内存分配的部分,感觉很不错。

  《Linux内核源代码完全注释》(机械工业出版社)是同济大学的博士生赵炯的着作,讲解0.1Linux内核,我没买也没看,有看过的朋友说一说。

  《Linux内核分析及编程》(电子工业出版社)是刚刚出版的,国人写的,讲解2.6.11 。很多人说好,但有人说不够系统,我没买,不敢评说。

  还有一本清华出的《Linux内核编程指南(第三版)》,原书应该是好书,但是翻译、排版十分糟烂,脱字跳行,根本没法看,我买了一本又扔掉了 



  
上一篇:详解Linux内核定义的常量
下一篇:Linux下C语言编程综合基础知识

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料