内核是操作系统的核心,操作系统的基本功能都是由内核提供的。文件生成和数据包传输等也是通过内核的功能实现的。但这些都不是简单的任务。平时可能 意识不到,但这其中确实包含了很多先进技术。例如,在文件系统方面,配置文件时尽量减少磁盘扫描,在网络方面,由于路由表的入口数量庞大,因此设计时尽量 保证对系统整体影响较小的设计。在内存管理、进程管理方面也作出了很多努力。解读这种先进技术也是内核构建的魅力之一。
然而,最近的Linux所提供的并不只有基本功能。随着功能的不断发展,现在已经出现了很多特定领域的便捷功能和独特功能。即使是内核黑客也很少有人能够完全掌握。
本书从Linux内核的众多先进功能中选取了一些必备并且有趣的内容进行介绍,同时也对内部的运行机制和结构进行了阐述。此外,本书还介绍了熟练使用这些功能所需的工具、设置方法以及调整方法等。
省电就是其中一项内容。除了使用方法以外,本书还介绍了省电的理念、与硬件的关系等。此外,还提到了当前广受关注的虚拟化、资源管理、标准文件系统 中所采用的ext4等已有功能和新功能。对于已有功能,本书结合最新的源码,介绍它的更改内容和新增功能。其中也包括文档中没有记载,且必须对内核内部有 一定理解才能得知的信息,因此,即使是比较了解这个功能的人也可能会有新的发现。另外,本书还介绍了内核的相关工具,其中gcore在重要的系统中就是非 常可靠的工具。
最新的Linux内核中安装了强大的追踪、概要分析功能,具备很多方便实用的功能。这些功能不仅能够很方便地达到预期的目的,而且对于分析内核功能也非常有用。甚至对于内核构建的高手也有一定帮助。
全书列举了非常多的实例,让读者更快地学会如何使用。对于想要熟练使用内核的读者来说,本书也是非常好的参考书。
本书还为想要了解Linux内核的读者以及读过本书后开始对Linux内核开发产生兴趣的读者,介绍了获取内核源码的方法和内核开发方法等内核构建入门所需的信息。我们希望读者能够通过本书更加了解Linux的世界。
在电脑刚刚诞生的时候,有一段时期人们认为“如果想要提高编程水平就查看UNIX代码”。因为最快的方式就是参考天才所编写的最先进的代码并进行模仿。而在阅读Linux内核的代码时,相信大家也会深有同感。
Linux内核是开源软件,无论是谁都可以参与开发。Linux内核的代码花费了大量的时间和精力来编写。各领域都由具有专业知识的维护人员进行长 期的管理,从而得到不断的改进。基于电子邮件的开发也在不断进行,因此可以看到各种讨论,并了解到当前代码的发展历程。每次看到Linux内核的代码,都 会让人感叹其中凝聚的智慧和努力,也感受到当时的辛苦。希望读者能够从本书开始接触Linux这个不一般的世界,诞生更多的内核高手。
本书介绍的是Linux内核所提供的功能。不仅有比较基础的功能,还有一些功能需要具有一定的知识才能使用。
此外,还介绍了使用功能时需要用到的信息和命令。除了内核以外,本书还将介绍相关的应用程序。基本上是基于TUI进行说明的,但也有一部分关于GUI的介绍。
涉及的主要版本为Linux内核2.6.18到写作时最新的Linux内核3.0。其中一部分还介绍了Red Hat Enterprise Linux 4(RHEL4:基于Linux内核2.6.9)的功能。示例代码已经在工作中经常使用的RHEL和任何用户都可以使用的Fedora、CentOS等中 进行过严格测试。
本书不涉及Linux内核的实际安装和以算法等为主体的内容。
本书可以按顺序依次阅读,另外由于每一节之间都是独立的,因此也可以从感兴趣的章节开始阅读。第1章介绍了内核的基础知识,如果是第一次接触内核, 建议先学习第1章。本书在介绍已有功能时也加入了一些新的信息。相信即使是经验丰富的人也可以在本书中有新的发现,因此希望各位读者能够将本书从头到尾完 整读一遍。本书还收录了一些作者珍藏的信息。详细内容请参见参考文献。
—————————————
高桥浩和(Hirokazu Takahashi),毕业于北海道大学电子工学系。从VAX全盛时代开始致力于各种UNIX系列操作系统的功能强化和内核调整,以及大规模系统的实时操作系统的设计等。以ISP的服务器构建为契机,开始正式研究Linux。
池田宗广(Munehiro IKEDA),大学时代,亲眼看到X68000的gcc生成比主流编译器还要快好几倍的代码,因此开始确信免费软件/开源软件的可能性。此后,在历经咖啡 店店员、生产技术人员、硬件工程师后,终于开始从事Linux内核开发。这个行业最吸引人的就是能够跨公司甚至跨国界与世界最优秀的技术人员进行交流。现 居住在美国,爱好音乐演奏,当过鼓手,也当过主唱,最近几年一直在弹贝斯。不管是作为技术人员还是贝斯手都喜欢做幕后工作,只不过天生就不喜欢半途而废。
大岩尚宏(Naohiro Ooiwa),任职于Miracle Linux株式会社的软件工程师。大学时研究的是类似手机这样使用天线接收无线高频信号的模拟线路。从事Linux开发工作的时候开始深入研究软件。他是 《Debug Hacks》的作者,本书是O扲EILLY JAPAN的第二本Hacks系列图书。
岛本裕志(Hiroshi Shimamoto),软件工程师。负责问题分析和调试。主要工作就是在出现故障时,根据日志和核心转储找出问题所在。因此在工作中会经常用到二进制和 CPU运行的知识。同时也在论坛中从事过一些关于x86架构和调度程序的活动。目前关注虚拟化方面的活动。
竹部晶雄(Akio Takebe),在Xen、KVM等与虚拟化相关的开源论坛参与开发活动。主要负责IA64架构、RAS系列和PCI pass through的开发。在开源论坛认识了专门研究省电技术的工程师,从而开始对省电方面产生兴趣。现在正使用Ruby on Rails开发云计算相关软件。
平松雅巳(Masami Hiramatsu),Linux内核追踪的相关维护人员。主要工作是对perf和ftrace的动态事件进行维护。也参与了SystemTap的开发, 最近热衷于将系统SystemTap的用途从专门用于追踪扩展到游戏编程等。主要使用的是bash和vim,但是因为bash不能用hjkl移动光标,总 的来说属于vim用户。喜欢使用Ubuntu和Fedora。现在的研究方向是ARM Linux、Btrfs等。
畑山 大辅(HATAYAMA Daisuke),crash gcore扩展模块的维护人员。对调试和故障分析感兴趣。最喜欢做的事情就是从元数据对系统进行研究。正在努力练习马拉松长跑,争取在搞技术的同时锻炼出健康的体魄。近期目标是四小时内跑完马拉松。
藤田朗(Akira Fujita),任职于NEC软件东北株式会社。担任软件工程师。大学毕业之后开始转向软件行业。喜欢Linux文件系统(ext3/ext4)。喜欢defrag,爱好五人足球。
刘波,资深Linux内核开发工程师、应用开发工程师和嵌入式开发工程师,现在重庆工商大学计算机科学与信息工程学院担任教师,从事Linux程序 开发和Oracle管理方面的教学工作,在读博士。此外,他还专注于大规模机器学习、数值分析与计算、最优化理论(凸优化)的研究。
—————————————
书名:《Linux内核精髓:精通Linux内核必会的75个绝技》
原书名:Linux Kernel Hacks