Hello,大家好我是硬核王同学,是一名刚刚工作一年多的Linux工程师,很感谢EEWorld的本次活动,让我有机会参与评测这本和Linux内核相关的的这本书。
因为本人是刚开始参加嵌入式开发的工作,对于Linux内核了解还不够多,所以只能以初学者的角度来评测本书,文章中有失偏颇的地方还请各路大神指教~
一、初识本书
本书基于Linux 5.0内核的源代码讲述Linux内核中核心模块的实现,主要内容包括ARM64架构,ARM64架构在Linux内核中的实现,内存管理的理论知识和案例,以及进程管理的基础知识与案例等。本书适合Linux系统开发人员、嵌入式系统开发人员及Android开发人员阅读。
拿到这本书已经有一段时间了,确实因个人水平能力有限,读了本书只觉得深奥晦涩、难以读懂,所以一直迟迟没有写出来心得文章,不过好在有着章节打卡助读活动,才发现该如何阅读此书。
二、如何阅读本书
本书严格来说应该是一本Linux内核学习参考书籍,如同从小阅读的字典。文中从硬件、ARM架构、Linux内核等等底层知识开始介绍,像我这样的初学者自然一头雾水,无法理解。好在作者在每一章节中都添加了高频面试题,带着这些问题再去阅读本书,才发现豁然开朗,一个个问题迎刃而解。
三、文章大体结构介绍
本书主要介绍ARM64架构、Linux内核内存管理以及进程管理和调度。本书重点介绍 Linux内核中基础架构的实现原理。本书基于Linux内核的话题或者技术点展开讨论,本书共9章。
-
第1章简单介绍ARM64架构、ARMv8寄存器、A64指令集等。
-
第2章介绍ARM64内存管理、高速缓存管理、TLB管理、内存屏障并分析Linux内核的汇编代码等。
-
第3章讲述如何从硬件角度看内存管理、从软件角度看内存管理以及物理内存管理之预备知识等内容。
-
第4章讨论页面分配之快速路径、slab分配器、vmalloc()、虚拟内存管理之进程地址空间、malloc()、mmap以及缺页异常处理等内容。
-
第5章探讨page、RMAP、页面回收、匿名页面生命周期、页面迁移、内存规整、KSM、页面分配之慢速路径以及内存碎片化管理等内容。
-
第6章探讨内存管理日志信息和调试信息、内存管理调优参数、内存管理实战案例等内容。
-
第7章讲述进程的基本概念、进程的创建和终止、进程调度原语等内容。
-
第8章讲述CFS、负载计算、SMP负载均衡、绿色节能调度器、实时调度等内容。
-
第9章介绍进程管理中的调试、综合案例等内容。
在我看来,关于Linux内核知识体系内容繁杂,不成系统,内容大多为网状的,并不是线性的,所以初学者开始学习Linux内核可以先囫囵吞枣,当前看不懂的地方先跳过去,阅读一遍之后有个大致的框架,再回过头来一遍又一遍学习,当遇到工作中需要详细研究的再抽丝剥茧,将其融会贯通。
四、阅读心得体会
刚开始看这类书籍时,确实完全看不下去,一句话每一个文字都认识,一但连起来如同天书一般,晦涩难懂。好在找到了阅读本书的方法,才一点一点开始有些收获,可能阅读本书,在目前工作中不会有很大的帮助,但这种书籍如同武侠小说中的内功,一通则百通,底层研究透了才有可能自创武功走向武林巅峰,等到真正用到的时候才会凸显出它的价值所在。
最近几周大致浏览了本书几个章节,大致内容是内容管理和进程管理两部分,对于各种内核机制以及内存映射、进程管理、调试与案例的分析都有着详细描述,像我这样的初学者可以先从各个高频面试题入手,从文中寻找这些问题的答案,慢慢会对作者描写的Linux内核及基础架构有一定的认识,再经过时间的沉淀从基础部分到内核中各种机制的熟悉。
后面我会开始分享对于本书中描述的某一部分专题的自己的心得体会,以及对于工作中可能会用到的这部分的分析,感谢大家持续的关注以及批评指教,也希望通过本书可以对Linux内核有更加深刻的了解~