深入Linux内核架构

当前位置:首页 > 计算机网络 > 操作系统/系统开发 > 深入Linux内核架构

出版社:人民邮电出版社
出版日期:201005
ISBN:9787115227430
作者:Wolfgang Mauerer
页数:1038页

章节摘录

插图:内核很神奇,但归根结底它只是一个大的C程序,带有一些汇编代码(不时出现很少量的“黑巫术”)。是什么使得内核如此吸引人?原因有几个。首要一点在于,内核是由世界上最好的程序员编写的,源代码可以证实这一点。其结构良好,细节一丝不苟,巧妙的解决方案在代码中处处可见。一言以蔽之:内核应该是什么样子,它现在就是什么样子。但这并不意味着内核是应用教科书风格的程序设计方法学得出的产品。尽管内核采用了设计得非常干净的抽象,以保持代码的模块化和易管理性,但这一点与内核的其他方面混合起来,使得代码非常有趣和独特。在必要的情况下,内核会以上下文相关的方式重用比特位置,多次重载结构成员,从指针已经对齐的部分压榨出又一个存储位,自由地使用goto语句,还有很多其他东西,这些都会使任何强调结构的程序员因痛苦而尖叫。教科书答案中难以想象的那些技巧,对于实现能够在真正的现实世界中正常工作的内核不仅是有益的,甚至是必需的。正是因为找到了一条在内核完全对立的两面之间保持平衡的路径,内核才如此令人兴味盎然、富有挑战性并且妙趣横生!颂扬了内核源代码之后,还有许多不同于用户层程序的严肃问题需要说明。口调试内核通常要比调试用户层程序困难。对后者来说有大量的调试器可用,而对于后者来说调试器的实现难度要高得多。附录B讨论了在内核开发中使用调试器的各种技巧,但与用户层对应的方法相比都需要更多的工作。口内核提供了许多辅助函数,类似于用户空间的c语言库,但内核领域中的东西总是朴素得多。口用户层应用程序的错误可能会导致段错误(segmentation fault)或内存转储(core dump),但内核错误会导致整个系统故障。甚至更糟的是:内核会继续运行,在错误发生若干小时之后系统离奇地崩溃。如上所述,因为在内核空间调试比用户层应用程序更困难,所以在内核代码投入使用之前要进行更多的考虑。口必须考虑到内核运行的许多体系结构上根本不支持非对齐的内存访问。由于编译器插入的填充(padding)字段,也会影响到数据结构在不同体系结构之间的可移植性。附录C会进一步讨论这个问题。口所有的内核代码都必须是并发安全的。由于对多处理器计算机的支持,Linux内核代码必须是可重入和线程安全的。也就是说,程序必须允许同时执行,而数据必须针对并行访问进行保护。口内核代码必须在小端序和大端序计算机上都能够工作。口大多数的体系结构根本不允许在内核中执行浮点计算,因此计算需要想办法用整型来替代。后面读者会看到如何处理这些问题。

媒体关注与评论

“这本书叙述深入浅出,内容全面详尽,是学习掌握Lmux所有内在工作机理最理想的参考书之一”。   ——C.Glovanni,资深Linux程序开发者

内容概要

Wolfgang Mauerer 资深Linux专家,有数十年Linux开发经验。从1997年最初发表关于内核的系列文章开始,他就醉心于解释Linux核心的内部机制、编写相关的文档。此外,他还著有LaTeX排版方面的图书,其撰写的大量文章已经被翻译成7种语言。

书籍目录

第1章 简介和概述
第2章 进程管理和调度
第3章 内存管理
第4章 进程虚拟内存
第5章 锁与进程间通信
第6章 设备驱动程序
第7章 模块
第8章 虚拟文件系统
第9章 Ext文件系统族
第10章 无持久存储的文件系统
第11章 扩展属性和访问控制表
第12章 网络
第13章 系统调用
第14章 内核活动
第15章 时间管理
第16章 页缓存和块缓存
第17章 数据同步
第18章 页面回收和页交换
第19章 审计
附录A 体系结构相关知识
附录B 使用源代码
附录C 有关C语言的注记附录D 系统启动
附录E ELF二进制格式
附录F 内核开发过程参考文献

编辑推荐

《深入Linux内核架构》编辑推荐:众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。《深入Linux内核架构》结合内核版本2.6.24源代码中最关键的部分。深入讨论Lirnux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等。《深入Linux内核架构》引导你阅读内核源代码,熟悉Linux妍有的内在工作机理,充分展现Linux系统的魅力。《深入Linux内核架构》适合Linux系统编程人员、系统管理者以及Linux爱好者学习使用。内容全面深入全球开源社区集体智慧结晶领略Linux内核的绝美风光

作者简介

众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。本书结合内核版本2.6.24源代码中最关键的部分,深入讨论Linux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等方面的内容。本书引导你阅读内核源代码,熟悉Linux所有的内在工作机理,充分展现Linux系统的魅力。
本书适合Linux的系统编程人员、系统管理者以及Linux爱好者学习使用。

图书封面


 深入Linux内核架构下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计16条)

  •     如果仅仅是想要了内核的基本原理的话,没必要去挑选这么大部头的书去读,学过操作系统的可以去看看<<linux内核完全注释>>这本书这本书更适合那些想要知道操作系统底层运如何和机器结合运作的人去读.结构更加清晰.如果看完内核注释的话在回过头来看这本书会觉得简单很多,因为你也觉得顺畅了很多,毕竟你已经知道了操作系统如何和硬件结合的,再回头看高一点的架构分析就好很多了,不觉得悬空了!这本书非常不错,值得一读!
  •     里面的代码不是随便找的,而是将内核代码中的难以理解的部分和最最核心的代码部分提了出来。当你阅读源代码的时候,某些关键的函数你不知道是干什么用的,你可以从里面找到相关的说明,这些说明对于理解代码都是非常有益的。不要说翻译的问题,当然你也可以读英文的。不过英文的也是翻译的,对吧。
  •     几个月前看到当当上有一个评论说翻译的不准确,列了几处不准确之处,我刚好看过,就回复批驳了一番。最近这位评论者跑到互动网上去为《linux内核设计与实现》第3版做托,大肆诋毁《深入Linux内核架构》,所以把几个月前批驳他的评论发到此处,以为钧鉴!==========================看到有个评论说“翻译得一般,有很多处不准确”,所以去看了一遍“不准确”之处,发现译文其实很准确,当然可能是评论者没看懂,呵呵!摘录评论如下(横线之间部分),并逐一评价之:----------------------------P175"paging_init is responsible for setting up the page tables that can be used only by the kernel and are not accessible in userspace"似应为:"paging_init 负责建立由内核访问的页表..."发表于 2011-03-16 19:42----------------------------中文版在p140页下部,“paging_init负责建立只能用于内核的页表,用户空间无法访问”,事实上没有错,当然可以改进为“负责建立只能由内核使用的页表”----------------------------P174"Various memory areas are then reserved, for instance, for the initial RAM disk needed when running the first userspace processes"似应该为:"为特定用途的memory area保留内存"发表于 2011-03-16 19:31----------------------------中文版在p139,“接下来分配各种内存区”,与原文语义完全一致,reserved应当翻译为分配,评论者认为当译为“保留”的作法属于中国式英语----------------------------P173"If this information is not provided by the BIOS (this may be the case on some older machines), the kernel itself generates a table to mark memory in the ranges 0–640 KiB and 1 MiBend as usable."似应为:"如BIOS不能提供那些信息(内存占用),the kernel自己就生成0-640K和1M之下的内存占用表归自己使用"发表于 2011-03-15 21:26---------------------------中文版在p139,“如果BIOS没有提供该信息(在较古老的机器上是这样),内核自身会生成一个表,将0~640KiB和1MiB之下的内存标记为可用”,这应该是正确的译法---------------------------原版P163:On SMP systems, setup_per_cpu_areas initializes per-CPU variables defined statically in the source code (using the per_cpu macro) and of which there is a separate copy for each CPU in the system. Variables of this kind are stored in a separate section of thekernel binaries. The purpose of setup_per_cpu_areas is to create a copy of these data for each system CPU. This function is a null operation on non-SMP systems.这段话意思是针对per_cpu这个宏?义的变量对每个CPU进行初始化的意思.本书的翻译:"在SMP系统上,setup_per_cpu_areas初始化源代码中(使用per_cpu宏)定义的静态per_cpu变量....."----------------------------中文版在p131,“在SMP系统上,setup_per_cpu_areas初始化源代码中(使用per_cpu宏)定义的静态per-cpu变量,这种变量对系统中的每个CPU都有一个独立的副本。此类变量保存在内核二进制映像的一个独立的段中。setup_per_cpu_areas的目的是为系统的各个CPU分别创建一份这些数据的副本。”译文的意思是没有问题的,"per-cpu变量"的意思是指此类用per_cpu宏定义的数组,数组的每个元素分别对应于系统中的一个CPU。评论者完全是断章取义,将正确的译文错误引用为“静态per_cpu变量”,他的看法估计是认为去初始化per_cpu这个变量了,一个下划线和连字符之差,谬误千里之外,呵呵==========================

精彩短评 (总计101条)

  •     很系统,全面,列出了程序中的关键位置,要抽时间仔细看看
  •     这本书 不错,可是 纸质 有点一般了。
  •     经典巨著和understanding the linux kernel不相上下,买来两本配套看
  •     每本书都都有其精彩阐述的章节,部分书写的真的很赞。个人感觉可以以一本书为主,参考《深入理解Linux内核》、《Linux内核设计与实现》以及中科大李香兰老师的课件、chinaunix的精华帖学习,感觉至少能对内核的一些基础的理论有所深入理解。学习内核的终极武器肯定是:Read The Fucking Source:)
  •     Linux内核最好的三本书依次是:LKD, ULK和情景分析。这个估计很难改变了。
  •     是想学linux内核原理的一本很好的参考书.
  •     很厚重的一本书,印刷很好
  •     简单的浏览了一遍,是我看过的最好的kernel相关的书了
  •     搞内核开发也有蛮长时间了,不过一直没系统看过内核架构。
    最近做安卓开发,看了这本书还是有很多启发的。
    如果是linux新手入门就不要看这本书了。
  •     忧郁了很久关于linux内核的书买哪本,终于下定决定买了这本。
  •     非常好看,但是很可惜没有完整的时间把这个大部头通读一遍。等时间合适的时候再拾起来吧。
  •     读完了,最终确定我不适合做Linux内核方面的开发:)
  •     学习Linux内核的经典书,看过pdf所以才想入手的!
  •     真是一本厚书,确是一本好书啊,能为我勾勒出linux的骨骼。
  •     主要是讲linux内核关键代码的流程及功能,虽然也有一小部分是讲理论基础(个人觉得写得恰到好处,就是篇幅小了点),看来还是要先把《深入理解linux内核》之类的偏理论的书看一看,再继续深入看下去。另外翻译一级棒。
  •     纸上谈来终觉浅;作者怎么会是做量子物理的?
  •     作者功底深厚 足够研究很长时间了
  •     之前觉得这本书很烂,不如《深入理解linux内核》,甚至连书名都觉得是山寨《深入理解》。工作以后需要熟悉内核中的各模块,又回头找了这本书。我完全扭转了之前的看法,如果你要研究内核,这绝对是一本不可多得的引灯级书。我决定再买一本正版书籍收藏,并支持一下作者!
  •     相当给力,到目前为止只看了网络和虚拟文件系统这两章,觉得自己还是有了一些提高的,最近工作中经常需要设计一些网络编程方面的东西,有参考价值,这种涉及底层的书就应该坚持看下去,虽然一千多页有点让人望而生畏,但看完应该会受益匪浅
  •     终于没白买……
  •     本书讲的内容比较详细,但是没有一个完整的主题含义!
  •     推荐
  •     不错,,,详细,,,
  •     还不错,不过给区别内核和内核架构,市面是有讲内核的书。 因为是内核架构,实际阅读的时候,阅读者还需要了解下硬件架构、程序链接加载以及多任务系统等相关的内容。
  •     拿回来看了一小节,内容讲的很细,内容安排合理
  •     好书,
    不过包装有点破裂,还有就是对快递员处理质量异议的态度很感冒. 很气人.
  •     比utlk好!!!
  •     内容全面,翻译的也还行,作为参考吧
  •     对全面了解内核很有帮助
  •     这本书一直等着看,很好,舒服
  •     确实很深入~~
    有点深奥~~
  •     这本书实在是厚,内容非常详尽,很棒的东西啊~!它里面的代码非常丰富,讲解非常透彻,这点让我非常满意。和其它linux书不同的就是,作者不厌其烦,写的很仔细,很用心
  •     深入Linux内核架构 这本书,不错,Very good.慢慢去看了
  •     Linux内核学习者的必读之书!
  •     看样子不错,很详细,具体内容还没看
  •     光鲜的架构,泥泞的细节。。
  •     好厚的一本书,看了一些,感觉内容好丰富。。。慢慢研究
  •     内容丰富,经典;买来当枕头书,好好学习
  •     书不错,但是要花时间研究
  •     很nice的linux 书
  •     好书,内容比较深奥,需要慢慢消化。
  •     大概看了一下,写的很详细,内容很丰富,是非常实用的一本工具书
  •     包装不错,书本身是用薄塑料包好的,没有拆封,关键是外边还包了一层泡沫塑料,很好。内容就不多说了,经典著作,从来都买正版。
  •     还没有时间仔细拜读,相信一定受益匪浅!
  •     虽然我现在看不懂,但是我发现它对linux内核讲得还是很深入的,该书不适合初学者。
  •     很好的一本书,北京发货速度很快。
  •     不错,看了电子版的还是决定买
  •     适合老公
  •     对于理解类LINUX架构很有用的一本书。
  •     详细讲述各个子系统
  •     一大半没有看懂,只有对内核有一定功底的人才能理解,等研究了内核代码之后,再重读此书。
  •      本书讨论了Linux内核的概念、结构和实现。主要内容包括多任务、调度和进程管理,物理内存的管理以及内核与相关硬件的交互,用户空间的进程如何访问虚拟内存,如何编写设备驱动程序,模块机制以及虚拟文件系统,Ext文件系统属性和访问控制表的实现方式,内核中网络的实现,系统调用的实现方式,内核对时间相关功能的处理,页面回收和页交换的相关机制以及审计的实现等。此外,本书借助内核源代码中最关键的部分进行讲解,帮助读者掌握重要的知识点,从而在运用中充分展现Linux系统的魅力。  本书适合Linux内核爱好者阅读。
  •     书很不错,好厚啊,不过有的页印刷不是特别好
  •     这本书也不错,讲的很详细,很好,研究中!
  •     不错,这个书不错哦。
    详细,和bsd内核架构设计一起看,对系统架构了解的跟彻底。







    读书笔记我会放我博客上
    ***.sklinux****
  •     挺好的书 不适合对Linux了解不多的人看
  •     从一定的高度,勾勒出内核最重要的实现细节 突出了重点 点明了关键 既有深度,也有广度 了解内核的必备深入书籍
  •     感觉这本书不如《深入理解linux内核》。刚才忘了选读过了。
  •     讲述的Linux内核版本比较低,很多都已经被抛弃了,这本书讲述内核的代码实现比较详细,可以和《深入理解Linux内核》一起作为Linux内核的参考书!
  •     这本当作工具书了,很强悍的工具书~
    具体内容还没看多少,正在专心拜读中。
  •     之前逛书城的时候就看中了这本书,内容很详实,对自己的工作学习有非常大的帮助。
  •     BT大块头完全啃不过来,还好后来直接买了love的内核编程看。
  •     但是还没有那个能力阅读
  •     书很好,内容很丰富, 需要用很长时间去认真学习.
  •     经典又权威的书,就不用多说了。
    第一天中午下的订单,第二天下午就到了,只是书边有一点点磨破了,希望注意点。
  •     挺好的一本书,但需要时间去读
  •     发货很快,书的质量不错。具体书的内容还没看,不错网上评价不错,应该不错。
  •     书本质量很好,里面的内容更加强大,经典的书籍啊,估计要消化里面的知识非得几年不可。
  •     百分百推荐 学习linux内核态推荐这本 无论是进程时间片 还是内存管理 在开发linux内核代码都是帮助很大 工作后开始读 一年左右才看完 好书
  •     纸张不错,内容很好,有些翻译语法错误
  •     这本书很好,我正在看,想对内核有深入了解
  •     讲的比较细,用来学习操作系统结构还是不错的。当然书中也夹杂了一些内核开发的代码段,可以作为参考。我觉得学习这本书最大的收获,不是怎么开发内核,而是对系统有一个全面的了解,可以帮助我们开发系统相关的程序。
  •     目前看过最好内核书
  •     实用的一本书,长度少于10字的评论得不到积分
  •     很详细,可以当作工具书了
  •     研究操作系统必备图书
  •     这书经典之极
  •     仔细看完的话对linux的内核理解就狠厉害了...
  •     读过十几遍了 非常牛逼的一部著作
  •     传说中的经典,不过看起来有点难度呀,源码很多,要有一定基础看才好,正在学习中
  •     还没看完...正在研究中....
  •     经典之作不容错过,但要有耐心,比板砖还厚
  •     不错的好书,超值
  •     虽然书的后边有一个书评说是深入浅出,但个人的感觉是,非常深入,但说得并不是那么浅白,如果没有对Linux内核的初步结构的认识,那么会看得比较吃力。
    个人建议可以一边去翻在国内已经闻名已经久的四本Linux内核著作(《Linux内核原代码情景分析》、《Linux内核设计与实现》、《深入理解Linux内核》、《Linux设备驱动程序》),再一边看这本书,把这本书当作一个补充或者当作一个内核框架图谱说明书来阅读,收效会更好。
  •     里面内容复杂,不适合初学者
  •     深入Linux内核架构这本书很好。。。。
  •     这一遍有些章节看得比较粗略。需要了解细节的时候再看吧
  •     如果想深入掌握linux这书是肯定要看的
  •     还没细看内容,书质量还行
  •     基于代码的讲解,让读者对linux内核有一个大概具体的印象
  •     看了评论后才买的,确实很不错,就是纸张不是很好,书这么贵,弄点好的纸张来印刷就更好了。从书的内容上来讲,还是值得收藏的。
  •     此书要和深入理解内核结合起来看,简直完美极了。不过我的导师对它评价没有深入理解内核高,不过依然是内核界不可否认的好书。
  •     内容比较深,初学者可能会不理解。适合有开发基础并实践过的人阅读。
  •     好书,厚的就是好啊!!两本差不多2000多页,有的看了
  •     操作系统课程+C程序设计+看代码~~~ 好书以后慢慢看~~~
  •     确实经典,必读
  •     书大概翻看了一下,内容写的很深,有基础的学习更好,是好收,喜欢德国人写的书,思维缜密
  •     买了好几本书,衷心想评价此书!不愧为linux专家的用心之作,内容很给力;翻译也不错的。人民邮电出版社的书纸张挺白挺厚,印刷很清晰有力!很喜欢这本书。
  •     还算不错的Linux内核书籍。
  •     内容太多太杂 入门太累,精通太难
  •     这本书非常非常的不错,但看这本书要不错的基础才行,否则看起有些吃力,一个字,好
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024