Linux操作系统在超级计算机、互联网服务、桌面系统、移动和嵌入式设备等领域使用广泛,相关的从业人员和兴趣爱好者一直对Linux的理论和实践有较大需求。本人作为互联网领域的从业人员之一,非常荣幸可以提前阅读书中的内容,发现不同于市面上常见的Linux书籍,本书的内容从内核层面出发,对各个子系统的设计、实现和演化进行了梳理,并结合作者多年的亲身实践。以下部分是本人阅读后,希望与读者分享的一些感受。
第一个特点是 解释透彻 。Linux发展至今已经超过25年,源代码融合了不同时期的演进和变化,因此回顾当时的背景,有助于更清晰地了解代码作者的意图和目标。以本书第4章“Linux系统的启动”为例子,介绍了BIOS的局限性,如何向EFI演进的历史,另外还重点分析了initrd过渡根文件系统的来龙去脉,让本人对Linux启动的过程有更全面而深入的认识。又例如第12章“虚拟化与云”中的第二节,介绍了一段比较近的融合文件系统的历史,Docker最初使用的AUFS逐渐过渡到合并到内核的Overlay。
第二个特点是 实践性强 。在技术领域,实践往往能加快加深对相关概念的理解,本书有不少例子适合当作实验,感兴趣的读者可在单机环境或者虚拟机环境完成。例如上面提到的initrd文件系统的例子,书中比较完整地介绍了几种可行的制作方法。而在介绍cgroup的章节中,作者介绍了不同子系统可以限制的资源和效果,感兴趣的读者可以通过操作cgroup文件系统来观察实现的效果。再介绍第8章“网络”中的一个有趣的“六次握手”实验,这里可以看到一些很少见到的两端同时发起连接的TCP状态变化。
第三个特点是 指路明灯 。Linux内核的子系统和模块非常多,覆盖的应用范围也很广阔,面面俱到显然是不现实的。作者希望更多地展示代码背后的思想,以及作者思虑后的理解,这比单纯的技术讲解更有营养价值,同时也鼓励读者在阅读时形成自己的见解,学会自己查阅相关的技术资料。例如,第6章“Linux内存管理”中介绍了内存回收算法PFRA,本人阅读前并不是特别清楚匿名页和命名页的不同处理流程,以及系统在内存低水位的行为,阅读后形成线索,可搜索出更多相关的资料。
第四个特点是 与时俱进 。近几年,业界利用Linux构建很多热点应用,本书在很多方面覆盖了Linux较新的功能,对从业者有较大帮助。例如,容器技术在应用服务上非常火热,本书在第12章“虚拟化与云”中对cgroup资源隔离和命名空间有基本的介绍。I/O方面,本书介绍了能大幅改善性能的用户态I/O,包括目前高性能网络中用到的DPDK。在第7章“安全”中,还介绍了内核的eBPF虚拟机,很多新的内核调试工具、审计工具和高性能包处理都依赖这个机制。
总的来说,本人阅读后收获颇丰,对工作也有积极帮助,希望其他读者也能从中获取价值。最后,本人也是一名开源爱好者,感谢作者的辛勤付出,编写出一本内容详尽的Linux著作,希望Linux和其他开源社区发展越来越好。
李文俊