本帖最后由 rtyu789 于 2024-12-26 22:59 编辑
十分感谢EEWorld和人民邮电出版社提供了此次书籍阅读和分享的机会.
这本书是由异步社区出品的,是国内比较比较好的IT图书品牌,出版的IT书籍都比较的高质量。
现在公司主要是做嵌入式产品的,也是在Linux系统上做开发,只是用的内核还是Linux 3.x版本的。
市面上对于较新版本,深入介绍linux的书籍较少,也是有幸阅读这本书,加强对内核的了解。
一、书籍概览
这是书籍的大概展示,整体看起来还是不错的。里面的有丰富的流程图、表格,来解释内核的处理处理过程,还是很好的帮助理解的。整本书有将近600页左右,算是比较厚了




粗略的翻了翻书籍的目录,内存管理的内容有将近300页,占到书籍的二分之一了,果然内存管理是内核中非常重要的一部分了,阅读计划中的一章阅读完感觉是不太可能了。
从目录看到,书籍整体讲解的还是比较细致,对Linux内核的方方面面都会讲解到。同时由于书籍十分庞大,面面俱到的阅读也是不好的,引用作者在前言中的话:“学习内核关键是要理解数据结构之间的关系和函数调用关系。建议读者在学习时抓住主要线索,弄清楚执行流程,不要过多的关注函数的细节”
二、环境准备
1) 源码下载:linux-4.12.1
2) 阅读工具:
- 作者推荐使用Source Insight,但是由于平时开发看代码都使用VSCode,所以也继续用这个了
- 试了下,也不怎么卡顿,就是有的时候变量、函数转跳的时候有点吃力
- 书本中对于代码片段都给出了详细的文件路径,未来阅读代码时候考虑使用手动查找目录的方式,提高对文件结构的熟悉度
- 缺点,汇编文件不支持转跳,语法支持比较差,没有安装插件直接抓瞎
- 推荐插件
- C/C++、C/C++ Extension Pack、C/C++ Themes-C/C++语法支持
- Makefile Tools-Makefile语法支持,很大部分的kbuild被VSCode自身Makefile语法支持了
- kconfig-第三方小插件,源码中大量KConfig配置,支持较弱,
- Arm Assembly-帮助.s文件高亮
- MASM/TASM-汇编语言支持,

3) 作者推荐资料:
- Cortex-A Series Programmer's Guide for ARMv8-A
- 官网上只搜索到了一个在线的版本
- 第三方网站找到了一个离线的版本
- 链接都放在下方
- ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile
- 从官网可以下载到
4) 辅助工具:
大模型:现在大模型非常的多,我这边使用的是阿里的通义千问,这是看代码的一个很好的工具,特别对于内核的代码,有许多地方不明白为什么要这么设计的。
可以直接将自己不懂的代码抛给大模型,让他帮忙做出解释

参考资料
The Linux Kernel Archives
kernal 4.12
Cortex-A Series Programmers Guide for ARMv8-A-ARM官网在线版本
Cortex-A Series Programmers Guide for ARMv8-A-从一个学校的网站上下载的
ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile
The U-Boot Documentation
sourceinsight