第一图书网

Linux内核完全剖析

赵炯 机械工业出版社
出版时间:

2008.10  

出版社:

机械工业出版社  

作者:

赵炯  

页数:

945  

字数:

1494000  

Tag标签:

无  

前言

本书是一本有关Linux操作系统内核基本工作原理的入门读物。本书的主要目标本书的主要目标是使用尽量少的篇幅,对完整的Linux内核源代码进行解剖,使读者对操作系统的基本功能和实际实现方式获得全方位的理解。本书读者应是知晓Linux系统的一般使用方法或具有一定的编程基础,但比较缺乏阅读目前最新内核源代码的基础知识,又急切希望能够进一步理解IJNIX类操作系统内核工作原理和实际代码实现的爱好者。这部分读者的水平应该界于初级与中级水平之间。目前,这部分读者人数在Linux爱好者中所占的比例是很高的,而面向这部分读者以比较易懂和有效的手段讲解内核的书籍资料不多。 现有书籍不足之处 目前已有的描述Linux内核的书籍,均尽量选用最新Linux内核版本(例如Fedora 8使用的2.6.24稳定版等)进行描述,但由于目前Linux内核整个源代码的大小已经非常大(例如2.2.20版就已具有268万行代码!),因此这些书籍仅能对LJnux内核源代码进行选择性或原理性的说明,许多系统实现细节被忽略。因此并不能使读者对实际L,inux内核有清晰而完整的理解。Scott Maxwell的《Linux内核源代码分析》基本上是面对Linux中、高级水平的读者,需要较为全面的基础知识才能完全理解。而且可能是由于篇幅所限,该书并没有对所有Linux内核代码进行注释,略去了很多内核实现细节,例如内核中使用的各个头文件(*.h)、生成内核代码映像文件的工具程序、各个make文件的作用和实现等均没有涉及。因此对于处于初、中级水平之间的读者来说阅读该书有些困难。John Lions的《莱昂氏LINIX源代码分析》虽然是一本学习UNIX类操作系统内核源代码很好的书,但是由于其采用的是UNIX V6版,其中系统调用等部分代码是用早已废弃的PDP.11系列机的汇编语言编制的,因此在阅读和理解与硬件部分相关的源代码时就会遇到较大的困难。A.S.Tanenbaum的《操作系统:设计与实现》是有关操作系统内核实现很好的入门书籍,但该书所叙述的M1NⅨ系统是一种基于消息传递的内核实现机制,与IAnux内核的实现有所区别。因此在学习该书之后,并不能很顺利地即刻着手进一步学习较新的Linux内核源代码实现。在使用这些书籍进行学习时会有一种“盲人摸象”的感觉,不容易真正理解Linux内核系统具体实现的整体概念,尤其是对那些Linux系统初学者,或刚学会如何使用Linux系统的人在使用那些书学习内核原理时,内核的整体运作结构并不能清晰地在脑海中形成。这在本人多年的Linux内核学习过程中也深有体会。在1991年10月,Linux的创始人Linus’Forvalds在开发出Linux 0.03版后写的一篇文章中也提到了同样的问题。在这篇题为《IJnux-aFree unix.386Kernel》目的文章中,他说:“开发Linux是为了那些操作系统爱好者和计算机科学系的学生使用、学习和娱乐”。“自由软件基金会的GN2J Hurd系统如果开发出来就已经显得太庞大而不适合学习和理解。”

内容概要

本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,介绍了Linux的历史,同时着重说明了各个内核版本的主要区别和改进,给出了选择0.12版内核源代码作为研究对象的原因。在正式描述内核源代码之前,概要介绍了运行Linux的PC的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80x86处理器在保护模式下运行的编程方法。接着详细介绍了Linux内核源代码目录树组织结构,并依据该结构对所有内核程序和文件进行了注释和详细说明。有关代码注释的章节安排基本上都分为具体研究对象的概述、每个文件的功能介绍、代码内注释、代码中难点及相关资料介绍等部分。为了加深读者对内核工作原理的理解,书中最后一章给出了围绕Linux 0.12系统的多个试验。 本书适合Linux爱好者作为学习内核工作原理的自学参考书籍,也适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,还可供一般技术人员作为开发嵌入式系统的参考书使用。

书籍目录

序第1章 概述 1.1 Linux的诞生和发展 1.1.1 UNIX操作系统的诞生 1.1.2 MINIX操作系统 1.1.3 GNU计划 1.1.4 POSIX标准 1.1.5 Linux操作系统的诞生 1.1.6 Linux操作系统版本的变迁 1.1.7 Linux名称的由来 1.1.8 早期Linux系统开发的主要贡献者 1.2 内容综述 1.3 本章小结第2章 微型计算机组成结构 2.1 微型计算机组成原理 2.2 I/O端口寻址和访问控制方式 2.2.1 I/O端口和寻址 2.2.2 接口访问控制 2.3 主存储器、BIOS和CMOS存储器 2.3.1 主存储器 2.3.2 基本输入/输出程序BIOS 2.3.3 CMOS存储器 2.4 控制器和控制卡 2.4.1 中断控制器 2.4.2 DMA控制器 2.4.3 定时/计数器 2.4.4 键盘控制器 2.4.5 串行控制卡 2.4.6 显示控制 2.4.7 软盘和硬盘控制器 2.5 本章小结第3章 内核编程语言和环境 3.1 as86汇编器 3.1.1 as86汇编语言语法 3.1.2 as86汇编语言程序 3.1.3 as86汇编语言程序的编译和链接 3.1.4 as86和1d86使用方法和选项 3.2 CNU as汇编 3.2.1 编译as汇编语言程序 3.2.2 as汇编语法 3.2.3 指令语句、操作数和寻址 3.2.4 区与重定位 3.2.5 符号 3.2.6 as汇编命令 3.2.7 编写16位代码 3.2.8 AS汇编器命令行选项 3.3 C语言程序 3.3.1 C程序编译和链接 3.3.2 嵌入汇编 3.3.3 圆括号中的组合语句 3.3.4 寄存器变量 3.3.5 内联函数 3.4 C与汇编程序的相互调用 3.4.1 C函数调用机制 3.4.2 在汇编程序中调用C函数 3.4.3 在C程序中调用汇编函数 3.5 Linux 0.12目标文件格式 3.5.1 目标文件格式 3.5.2 Linux0.12中的目标文件格式 3.5.3 链接程序输出 3.5.4 链接程序预定义变量一 3.5.5 System.map文件 3.6 Make程序和Makefile文件 3.6.1 Makefite文件内容 3.6.2 Makefile文件中的规则 3.6.3 Makefile文件示例 3.6.4 make处理Makefile文件的方式 3.6.5 Makefile中的变量 ……第4章 80X86保护模式及其编程第5章 Linux内核体系结构第6章 引导启动程序第7章 初始化程序第8章 内核代码第9章 块设备驱动程序第10章 字符设备驱动程序第11章 数学协处理器第12章 文件系统第13章 内存管理第14章 头文件第15章 库文件第16章 建造工具第17章 实验环境设置与使用方法附录参考文献

章节摘录

第1章 概述本章首先回顾了Linux操作系统的诞生、开发和成长过程,由此读者可以理解本书选择Linux系统早期版本作为学习对象的一些原因;然后具体说明了选择早期Linux内核版本进行学习的优点和不足之处以及如何开始进一步学习;最后对各章的内容进行了简要介绍。1.1Linux的诞生和发展Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年10月5日(这是第一次正式向外公布的时间)。此后借助于Internet网络,经过全世界计算机爱好者的共同努力,现已成为当今使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。Linux操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet。下面根据这五个基本线索来回顾一下Linux的酝酿过程、开发历程以及最初的发展。首先分别介绍其中的四个基本要素,然后根据Linux的创始人Linus Torvalds从对计算机感兴趣而自学计算机知识,到心里开始酝酿编制一个自己的操作系统,到最初Linux内核0.O1版公布以及从此如何艰难地一步一个脚印地在全世界黑客的帮助下推出比较完善的1.0版本这段经过,对Linux的早期发展历史进行详细介绍。当然,目前Linux内核版本已经开发到了2.6.X版。而大多数Linux系统中所用到的内核是稳定的2.6.12版内核(其中第2个数字若是奇数则表示正在开发的版本,不能保证系统的稳定性)。对于Linux的一般发展史,许多文章和书籍都有介绍,这里不再重复。1.1.1UNIX操作系统的诞生UNIX操作系统最早是美国贝尔实验室的Ken Thompson于1969年夏在DEC PDP-7小型计算机上开发的一个分时操作系统。Ken Thompson为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(Star Trek)游戏,于1969年夏天趁他夫人回家乡加利福尼亚度假期间,在一个月内开发出了UNIX操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经Dennis Ritchie于1972年用移植性很强的C语言进行了改写,使得UNIX系统在大学得到了推广。


编辑推荐

《Linux内核完全剖析:基于0.12内核》适合Linux爱好者作为学习内核工作原理的自学参考书籍,也适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,还可供一般技术人员作为开发嵌入式系统的参考书使用。

图书封面

图书标签Tags

广告

下载页面


Linux内核完全剖析 PDF格式下载



本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作原理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中还给出了围绕Linux0.12的多个实验。
  微型计算机组成结构、内核编程语言和环境、80×86保护模式及其编程、Linux内核体系结构、引导启动程序、初始化程序、内核代码、块设备驱动程序、字符设备驱动程序、数学协处理器、文件系统、内存管理、头文件、库文件、建造工具、实验环境设置与使用方法。


以下是《程序员》杂志2008年11月刊中对本书的推荐,不知道出自哪位大师之手,对选择本书的读者很具指导意义。这不是一本哗众取宠的书,而是一本定位于学习和了解Linux操作系统内核基本工作原理的入门读物。作者选取对早期Linux内核(v0.12)全部代码文件进行剖析。作者认为,此版本虽然较低,但已包含Linux工作原理的精髓,可以让读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究当前最新Linux打下坚实的基础。该书先从Linux源代码版本变迁开始,介绍了Linux的历史,说明各个内核版本的主要区别和改进,接着概述运行Linux的PC的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,重点说明80x86处理器在保护模式下运行的编程方法。全书用最大篇幅来详细介绍Linux内核源代码目录树组织结构,并依据该结构对所有内核程序和文件进行了注释和详细说明。通过对完整的Linux内核源代码进行解剖,使读者对操作系统的基本功能和实际实现方式有了全面的理解。


如果说要选一本书来囊括大学本科课程中的计算机组成原理、操作系统、80x86汇编语言程序设计的精华,那我只推荐这本书!
或许你会说一本900多页的书怎么可能涵盖这三门课程的所有基础,的确,是没有这三门课程的基础。书里不会跟你说计算机组成原理要考什么知识点;不会告诉你操作系统里地址是如何计算的;也不会一条条地告诉你汇编的指令如何写。但是我说的精华!如果一位计算机专业的本科生大学里没学好这三门课程,我只能引用某某的话说“内核是大人玩的游戏,你还是去玩连连看吧!”
言归正传,这本书和看过的很多书不一样,从看第一章我就知道作者是在用自己的语言告诉他真是想表达的内容。作者不会一上来就给你来个“HelloWorld”,也不会像其他的内核书籍,一上来就告诉你如何用WinDbg调试内核。首先,作者很多地方用让人通俗易懂的语言和比喻告诉你原理,这对玩“连连看”的同学很有帮助;其次,作者提及的知识点都是三门课程中的精髓;再次,作者一直在很有意的强调书中的知识和现实中的硬件真正的联系及区别,可以有一个从原理到实践的提升;而且,作者讲解内核的顺序非常符合认知的逻辑,章节设计不会出现一章章死板的“内存管理”“I/O控制”;最后,0.12版的内核,这也是这本书最大的特色,小生初探Linux内核,入门终归入门,这本书不会让你瞬间成为Linux内核大师,但是还是侯老师那句话:“勿在浮沙在高楼”,你懂得!


这本书是基于0.12内核的,修正了此书介绍0.11的一些错误。介绍的很全面,内容很丰富。适合初学者和有一定经验的编程爱好者使用。我们操作系统的实验我全靠它了,从中学到了很多,真的很不错。作为一本学习linux内核的书,很有参考价值。


实话讲,Linux老版本内核并不难理解,但是如果有一本书能从头到尾把他娓娓道来,非付出巨大精力不能为之。个人认为所有开发Linux程序(包括只做GUI的)的人最好都对内核有了解,而此书当真是一本相当好的入门书,写得浅显易懂,强力推荐。


这本书详细的讲解了linux早起内核的所有代码,虽然不是现在linux的代码,若是看透了这本书,所有linux版本相信也会一看即透。


经典书之一,想学linux内核的人,应该是必看的一本书吧,个人感觉很不错,非常详细,很有代码分析功底,没仔细看过,只能大概说一下,没有有专业分析水平,初学者评论而已,呵呵。


研究操作系统需要做很多准备工作,往往使人不知从何下手,“Linux内核完全剖析”则讲解非常全面,绝对是Linux内核入门经典。


看了电子版的基于0.11内核的书,感觉相当不错,对于Linux内核入门起了相当大的帮助。所以买了基于0.12版本的。好书值得收藏。


内容很详细,采用0.12的内核进行讲解,比现在的2.6内核要好,可以更快的进入linux内核的世界!


一个寒假终于看完了。我是看完了Linux0.11内核后才看的这本书,终于从困惑走到了明白。


我看了一个多星期了,觉得还不错,现在很多人做技术,根本不重视原始的东西,一上来就是看2.1.6的内核,说实在的,能看得懂几行……相比之下,赵博士用8年时间完成这本书,而且是原创著作,我确实很佩服,并且愿意把电子书在网上分享,我们这个时代最缺少的就是这种位技术奉献的人了。书中是有些错误,很正常,哪本书没错呢,何况人无完人,错误都是些打印方面的错误,用心看的话都看得出来……而且网站上勘误,更重要的是,看得懂的地方可以在网站上提问,基本上都是赵博士亲自解答……因为我不喜欢看电子书,所以我才买了纸质的书,如果你愿意看电子书的话,其实去他的网站下就可以了,都是不用注册的,免费下载


这真是一本比较好的书.可以比较系统的了解linux的整个执行过程.


不错,是一本理想的学习Linux教材。


晕,刚拿到书就降价了!不过怎么没货了,呼呼。。。还是买的及时!准备慢慢啃,好厚的书。爱死linux了。。


好书 对初学linux很有帮助


早就对这本书仰慕已久电子版的也看过听说出了0.12内核的干脆一口气买下来了好厚的一本~好书当然要买了品味珍藏很多前辈都推荐过这本书不会错的呵呵


it'sagoodbooktolearnLinuxOS.ihavereadsomepages,andihopepeoplewhofavoriteLinuxOSandEmbeddedSystemtoreadit.andithinkyouwillbenefitalot.thanks.


一点一点的看,估计我看完要半年,但是我要坚持下去。。。因我身在云中,此书能让我走出迷团,内容我就不多说了,做底层,学习内核。。。


男友做软件的,一起买了四本,就这本没看完,一般很少用到内核,除非去做半导体企业这种地方。。。


内容不错,代码注释清晰,深入浅出


这系列的书内容没的说,看吧。尽管晦涩,总比看源代码自己揣摩强啊。值得推荐。


建议读这本书之前先学习些X86汇编的基础知识。


非常好,内容非常全面详细,很专业。值得购买!


这本书看网上推荐的很多,有助于学习计算机的很多知识,好书一本


书挺好,内容比较详细,刚刚开始看。快递也是很快


书写的很详细,包装也很好还有塑料包着书我收到的是2010年5月印刷的


书不错,内容很完善,讲的很全面,对赵老很敬佩。以前看过,不过是图书馆的,现在自己终于有了一本~~~


很早就想买这本书了,只是但心没时间看,一直不买。拿到书感觉纸质不大好!


书的内容很棒,学习ing


对各个方面都讲的比较详细


非常详细,看完后3遍后,感觉豁然开朗


内容很丰富,讲解也很详细!实例很有代表性!


看了前言和第一章的部分章节,应该还不错啦。。。只是要有很大毅力才能看完。。。


之前图书馆借过,看了内容不错才买的。该书适合有初学者入门,很不错。


看了前四章,挺不错!继续学习


内容比较的充实,就是老了一些,但不影响对kernel的理解.但是图书的质量不是很好,纸张太薄了,当拿到手一页纸就掉了


很不错,实验最好跟着做一做,就更明白了


这本书我是看过电子版的,但是我觉得电子版的不好看菜买书的,方便,这本书确实这的一看。


很厚的一本,要努力学习。推荐推荐。


老早就想买了,呵呵,现在写完论文有时间看了


谢谢,书很好


不错,书的质量有保证


书的内容很好,回去仔细看看,还会来当当


书收到了,还没来的及看 是朋友推荐的。内容就不评价


貌似当当每次买的书都是皱巴巴的


内容很充实,书也很厚,要慢慢看


书不错,慢慢研读。


书太厚,看了几次都放弃了。哎,没办法!


不错 书的质量一般般 正版吧!


书 质量可以,服务满意
很厚啊 要慢慢阅读


经典书籍需要慢慢品味


要能把1.0解析下就好了


刚拿到,粗略看了下印刷质量还行,对得起这价格


感觉值的买,静下心来看


很好,我很喜欢这本书


这本书质量内容都不错,七折入手。


本书的内容不错,不过纸张不是太好,薄了些~~~


这是老师推荐的,看了以后,真的还挺好了,对初学者很好的一本书。


还算满意,比较不错,赞。


送得飞快,但是包装破了


刚买来 暂时还没看 以后在评价


good;very good


值得好好珍藏!


送货很快,质量可以,还没来的及看


刚入手在看。也是在网上看了有多人的评价后决定买的


打算认真看完


讲的很精辟 很底层 不过很难


写的过于细致


你好,能给我发票吗?谢谢


纸质不太好,比较薄。但内容绝对值得一看,内容也很充实。


内容不错,就不知什么能看完。。


只有一个字——“好”


书市真心不错。推荐。就是太厚了,实在太厚了……


这个商品感觉不错这个商品感觉不错


看过电子书,觉得不错买的


当然这本书是国内难得的好书,对于学习Linux内核有着无可替代的功效!但是就这次购物而言,并不是很满意,书在运输的过程中产生较严重的损坏,虽然不影响阅读,但对于爱书的人而言,这是很不能接受的!


能总体把握linux结构,不过现代linux已加入太多新的特性。


看介绍不错,现在正在抽时间慢慢看.对Linux很感兴趣,但没有太多时间来研究.


仔细研读中,系统的体会下linux的思想。


还可以,只不过觉得代码注释大都是相隔几行代码注释一下,使得源代码看起来有点不连续。其他的还可以


感觉这本书的纸张的质量不行,我是想通过这本书学习编程的,所以感觉还行吧!


这是一部很经典的入门级书籍,书籍的内容不错,当当的反应速度还可以啦。只是对书籍的相关内容介绍的太少了,想购买的朋友若是不了解,可能就错过了。建议多做些介绍了,另外以往相关的书籍提及的比较少哈


书很好,比上一版有改进


书挺不错的,买了之后没时间看....


还行 但是有不少错误 出版的错误。。。字打错 该是栈写成帧 b写成p 什么的。。。应该是出版社校对不行。。书内容还可以 个别内容稍微有点罗嗦。。。at&t汇编那节讲的很繁琐 而且乱。。。还是后面好一些


书的质量不错,就是纸张有点薄


书的质量不错,想了很久了


这本书,除了纸张不大好,有点透明。但是这厚度还是很对的起这价格~。质量很不错~。强大,支持下


内容当然是没话说。字体大了些,没有0。11的剖析看起来舒服


还不错,要是又arm版的就好了


帮别人买的,听说有几本书还不错


纸张很薄,其他还可以。暂时还没看,看完再做评价


很不错,傎得一看


感觉还是不错的,好评。


啊,用老内核有利有弊啊,利在于确实很简单,也比较完整,缺点在于太简单了,里面的算法太差劲了,还有就是,里面代码的位置不对,建议看时最好用上 vim+cscope 来看代码


剖析一书是本好书,新版-基于0.12的只是在前作上的修改,可是出现了许多问题,内容对不上,希望作者认真修改,出好第二版,跟希望作者能出个版本高点的指导内核学习的书


价格公道,正版很赞,书的质量很好,感觉内容不是很好。


内容倒是不错的,能学到很多东西。就是书的周围切的不齐,不好看!!


帮助蛮大的


相关图书