随想录(如何学习内核)

时间:2022-03-14 15:30:31

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    很多学习linux kernel的同学都会陷入到一个误区当中。一方面,他们希望自己学习的东西大而全,恨不能理解全部的kernel代码;另外一方面,他们常常无法将学习到的知识应用到工作当中,这会导致一种感觉,好像学习了很多东西,但是基本上都没有什么用。


    所以,这里我建议同学们可以从这几个角度去理解内核就可以了。既可以学习到知识,也可以在现实中发挥作用。


1)注重对kernel整体结构的把握

    这主要包括kernel怎么启动,怎么加载驱动,怎么加载文件系统,怎么编译等等。


2)了解kernel内核层、中断的处理流程

    这主要包括了kernel是如何处理系统调用和中断的。


3)了解kernel的编译和调试。

    大多数同学喜欢看linux的书籍,却不怎么去调试,其实用qemu仿真学习是最好的学习方法,没有之一。


4)了解vmlinux.txt

    了解vmlinux.txt,即kernel dump出来的文件,这是学习汇编最好的方法,没有之一。


5)了解arch目录下某一个体系结构的代码

    现在的代码分工非常严格,比如kernel支持很多的cpu,每一个cpu又可以有很多的soc,每一个soc又可以有很多的platform。一定要了解一款。


6)了解kernel驱动代码

    大部分kernel开发的同学都是以驱动开发为主,所以platform device/ platform driver/bus一定要好好掌握。


7)signal机制

    signal机制是unix/linux os的重要特性,一定要好好掌握。


8)实践比理论更重要

    看太多的书,不如自己实践一下。代码十行不如手写一行,手写十行不如汇编一行,说的就是这个基本道理。


希望大家都能找到适合自己的kernel学习方法。:-)