序一
作为一个优秀的开源系统,Linux在业界有很广泛的应用。从1994年发布1.0正式版本开始,Linux内核一直在发展,代码越来越庞大,参伍以变,错综其数,要想深入掌握它,并不是一件轻松的事情。
对于在Linux上开发程序、想修改Linux内核或者理解并用好Linux的软件开发工程师而言,迫切需要这样一本书:从main函数开始,深入浅出地一步步剖析Linux内核,并解释其中的函数关系和数据结构。
我与华兵共事十余年了,两年前听说他开始写一本关于Linux内核的书,我就一直期待这本书的出版。华兵从事Linux内核开发工作十余年,有着丰富的实践经验,使用过不同的版本和硬件平台,从2.x到4.x,从MIPS、x86到ARM。伴随着研发大楼的华灯,当年初出校门的学子,如今萧萧两鬓生华,成为一个在Linux领域有深厚积累的专家。更难得的是,他愿意将这些经验写成一本书,与同道中人共享,并醉心于此,力求至简。
当然,我们在市场上陆续能看到关于Linux内核的技术著作,各有特点,其中也不乏经典。不少作者和华兵一样,既是Linux技术的爱好者,也是长期的实践者,并将知识与经验提炼成文,与读者分享。与已上市的Linux图书相比,《Linux内核深度解析》在内容上有其独特之处。
本书剖析的代码基于Linux 4.12版本,发布于2017年,是Linux内核史上变动较大的版本之一。基于这个版本进行内核代码解析并出版成书,是比较新颖的,既不失通用性,又兼顾4.x版本中引入的不少新技术点。同时,它基于ARM64硬件平台,将两者结合的书,目前还是比较少的。
另外,本书没有过多地介绍操作系统的基础原理,而更多地是以实际代码来解读在Linux内核中是如何实现操作系统的各个子系统的。对于熟悉操作系统基础的读者来说,可以快速地切入到具体代码的理解与实现中。从内核引导和初始化开始,到进程管理、内存管理、中断/异常/系统调用、内核互斥技术和文件系统,本书比较系统地对内核代码进行了深度解析。
Linux内核的知识点相当繁多,很难在一本书中面面俱到,也没有必要。所以,在这本书中,看似不经意间逐层展开的知识点,都是比较基础和常用的。作者以他的实践经历尽量通俗地进行解读,并抓住了其中的重点,可以让读者在实际的开发、调试和维护工作中学以致用。
“行是知之始,知是行之成”,学习Linux内核技术尤其如此。要真正消化理解Linux内核,离不开大量的工程实践。希望本书可以成为你前进路上的好帮手!
锐捷网络研究院副院长 林东豪
2019年2月