当前位置:首页 > 计算机网络 > 操作系统/系统开发 > 深入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爱好者学习使用。
图书封面