[学习]学习&精进
《精进2》这本书对学习 linux 内核也是很有指导意义的。基于这3个培养洞察力的方法,我们来看看如何学习 linux 内核:
1, 一回熟,二回生
把 linux 下你所熟悉的、习以为常的用法陌生化。比如黑洞洞的 terminal 我们经常使用,想想看它的由来、它的实现?
2, 片面的深入观察,每次只深入到一个维度
针对 linux 下某些复杂的代码片段,可以多阅读几次,每次都以不同的维度。比如阅读 netif_receive_if() 代码实现的时候,可以分别从下面的维度或主线去阅读:
(1) 第一遍看核心功能
(2) 第二遍以 skb 生命周期为主线
(3) 第三遍以 lock 为主线
(4) 第四遍以 traceing 为主线
3, 模块化观察,把完整事物拆分成小模块后进行观察
比如,对 linux 内核这个庞然大物的学习,我们就可以按照模块来拆分:
(1) 内存管理模块
(2) 进程调度模块
(3) 网络协议栈模块
(4) 进程间通信模块
(5) 驱动模块,又可拆分成字符设备、块设备、网络设备模块等。