推荐序二
非常荣幸接到张天飞的邀请,为《奔跑吧Linux内核》一书写序。
初识天飞,大概是十几年前了。那时的天飞大学毕业不久,我已经当了十多年的大学教师。由于共同的爱好和热情,我们有缘在计算机底层系统软件,尤其是Linux操作系统内核这一神秘而充满乐趣的领域中一起摸爬滚打、专研内核技术。跟他的名字一样,天飞给我的印象就像一个活力四射的雄鹰,有着渴望求知的翅膀,永远不知疲倦地在Linux内核这一广阔天空自由自在地翱翔。虽然我年长于天飞,但是我们习惯称呼他为“飞哥”,因为他有一个很酷的网名叫Figo,我猜想他是足球天才菲戈的粉丝。又正巧我也非常喜爱足球,这加深了我们惺惺相惜的战斗情谊。十几年前,我们俩在一个“战壕”里工作了很长一段时间,并且合作出版了一本嵌入式系统相关的教材书籍。
转眼间,当年的飞哥如今已经成为稳健成熟的“笨叔叔”,从事Linux内核和驱动开发有十余年的时间,也曾在多家芯片公司从事过手机芯片底层软件开发和客户支持工作,还从事Android手机底层软件开发和项目管理工作。十几年的技术浸润,使得他从身体到灵魂都烙上Linux的印记。从一个飞天少年,到一个内功深厚的Linux“笨企鹅”,他永远在Linux内核的自由世界里不停地奔跑。这一次,他还要带上他的作品,跟广大读者朋友一起分享Linux内核的乐趣。
言归正传,说一说《奔跑吧Linux内核》。在物联网、大数据、云计算这些充满创新的领域,操作系统作为计算机系统软件的基石,吸引着无数技术爱好者投身其中。社会在奔跑,技术也在奔跑,Linux内核发展至今已经越来越复杂、越来越庞大。许多新技术、新算法、新补丁不断融入到Linux内核之中,同时也有许多内核初学者和开发工程师加入到研究Linux内核的队伍之中。要充分阅读和理解Linux内核代码越来越不容易。各种Linux内核学习经典著作如同不灭的火种,点燃学习者思想的火把,使他们在Linux内核这条崎岖不平的道路上勇敢追寻理想、探索光明。这些经典著作,我认为大致可以分为3类。
(1)内核原理类:从理论层面上为读者介绍操作系统设计与实现中所涉及的技术原理,代表作有《操作系统:精髓与设计原理》《现代操作系统》《操作系统概念》。
(2)内核剖析类:从代码实现角度为读者分析操作系统主要模块的设计与实现,代表作有《FreeBSD操作系统设计与实现》《Linux内核设计与实现》《深入理解Linux内核》。
(3)动手实践类:从零开始带领读者实现一个小型内核,代表作有《Orange's:一个操作系统的实现》《30天自制操作系统》,以及我的拙著《操作系统设计与实现》。
与上述这些书相比,《奔跑吧\2inux内核》有着自己的独特之处。
第一,该书采用问题导向式的内核源代码分析方式。这是非常有益的尝试,颠覆了传统内核分析书籍的做法。我们都知道,Linux内核代码动辄几百万行,阅读起来时间成本呈指数式上升,难免会让读者望而却步或者昏昏欲睡。本书作者创新性地在每一章的开头以提问的方式抛出相应问题,以吸引读者的注意力和好奇心。而且这些问题非常有趣并且贴近读者需求,它们有的来源于作者长期实际工程项目中遇到的问题并抽象总结,有的是作者在阅读和学习内核代码时产生过的疑问,有的是作者及其朋友在相关面试中关于\2inux内核的题目。
第二,该书基于最新的Linux内核版本,力求反映Linux内核社区最新的开发技术,一些热点话题令我印象深刻,例如内存管理漏洞Dirty COW的分析、手机操作系统Android 7.1.1中各种新算法等内容。
第三,作者别出心裁地在本书开篇提供一份Linux内核奔跑卷,读者可以将它作为水平测量、面试题目准备之用,希望能提高读者兴趣,让读者在快乐中开始奔跑。
第四,该书内容选择少而精,以ARM32和ARM64体系结构为基础,重点介绍了Linux内核中最基本最常用的内存管理、进程管理、并发与同步、中断管理等模块。
相信本书的特色和内容将使读者受益匪浅。
自由软件的精神在天上飞,Linux的企鹅在地上跑。非常诚挚地欢迎大家跟着昔日的“飞哥”、现在的“笨叔叔”一起翱翔、一起奔跑!
“奔跑吧!Linux内核学习者!”
陈文智
2017年6月于浙江大学