Linux 内核源码如何学习?
Posted CPP开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核源码如何学习?相关的知识,希望对你有一定的参考价值。
1. 学习主线
linux内核源码大而全,一个人,即使再聪明、再有精力,也不可能完全看完、看懂所有的linux内核源码。
一口君建议按照以下主线进行深入研究:
linux驱动架构
linux网络子系统
linux内核启动过程
linux内存管理机制
linux调度器
linux进程管理
linux虚拟机制(kvm)
沿着某一个主线,深入进去,在研究清楚这个主线的同时,向其他的主线扩展、渗透和学习。
此处之所以将驱动列为学习内核的入口,是因为内核为很多外设驱动实现了架构,比如I2C、SPI、UART、PCIE、字符设备、网络设备、块设备,我们可以从最基本的字符设备学起,学习如何编写一个简单的模块学习如何如何为一些简单的设备比如LED、KEY、ADC等编写驱动可以说驱动是我们学习内核最简单的入口,
由点到线、由线到面、由面到体,层层深入、不断精进,是学习linux内核源码的一个有效的方法。
2. 代码阅读工具对于代码阅读方法从两个角度来介绍,一个方面是需要选择一个比较有效阅读代码的工具。
一口君强烈推荐:source insight这款阅读代码神器!
也可以使用vscode或者vim+ctags的组合。
不过一口君十几年的从业经验,
99%以上的开发人员都选择SI阅读内核代码。
代码并不是写给人看的,而是交给机器运行的。
所以我们去理解别人的代码时,并不能像看小说一样去通篇的阅读代码,而应该是像研究化石一样去调查它,解密它。
有时我们往往也需要把对方的一段代码亲手的实现一遍,然后自己举一反三看自己会怎么去实现它,才能真正的理解。
3. 学习的内核版本有些人推荐先阅读一些低版本的内核,比如0.01版的,总代码量才1万行左右。
阅读这个代码大概一个月应该能比较清晰了。
但是,改代码与现在的代码差异巨大,阅读后可以理解基本思想,但对理解现有代码的帮助不是特别明显。
3.10版本之后的内核都支持设备树!
所以一口君建议是尽量选择3.10版本之后的代码阅读学习。
4. 学习Linux最重要的是培养自己写代码的能力和对Linux框架结构的了解Linux内核中绝大部分代码都是由这个地球上顶尖的技术大牛所编写,
这些代码的高内聚低耦合,
其精准度,简洁度、质量都相当的高,
每每看到一段高质量的代码,
一口君都会被那一行行枯燥的代码背后隐藏的设计思想所震撼,所折服!
阅读内核的代码简直就是在欣赏艺术品!
很多粉丝问我如何提高自己的C语言编程水平,一口君不厌其烦的 重复着同样一句话:看Linux内核!
代码中自由颜如玉!代码中自有黄金屋!
时刻保持激情,任性和耐性!
从量变到质变!
水滴石穿!
愿各位都能够熟练掌握Linux
- EOF -
1、这篇 Linux 总结的很棒啊!
2、深入理解 Linux 内核之内存寻址
3、一个内核网络漏洞详解:容器逃逸
关注『CPP开发者』
看精选C/C++技术文章
点赞和在看就是最大的支持❤️
Linux内核该如何学习?linux内核源码该怎么读?
Linux内核该如何学习?linux内核源码该怎么读?
专注后台服务器开发,包括C/C++,Linux,内核,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等
学习地址:C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂
以上是关于Linux 内核源码如何学习?的主要内容,如果未能解决你的问题,请参考以下文章
RK3399系统移植 | 移植 linux 主线5.4.32内核