Linux内核源代码的阅读和工具介绍.docLinux内核源代码的阅读和工具介绍|第1
Linux的内核源代码可以从好多途径得到。通常来讲,在安装的linux系统下linux内核源代码分析工具,/usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件通常也都坐落linux目录下。内核源代码有好多版本,。许多人对于阅读Linux内核有一种焦虑感,虽然大可毋须。其实,象Linux内核这样大而复杂的系统代码,阅读上去确实有好多困难,而且也不象想像的这么高不可攀。只要有恒心,困难都是可以克服的。任何事情做上去都须要有技巧和工具。正确的方式可以指导工作,良好的工具可以事半功倍。对于Linux内核源代码的阅读也同样这么。下边我就把自己阅读内核源代码的一点经验介绍一下,最后介绍此目录包含了所有的显存管理代码。与具体硬件体系结构相关的显存管理代码坐落arch/*/mm目录下,如对应于X86的就是arch/i386/mm/。
drivers系统中所有的设备驱动都坐落此目录中。它又进一步界定成几类设备驱动查看系统版本linux,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc此目录包含了核心的进程间通信代码。
modules此目录包含已建好可动态加载的模块。
fsLinux支持的文件系统代码。不同的文件系统有不同的子目录对应linux vi,如ext2文件系统对应的就是ext2子目录。
kernel主要核心代码。同时与处理器结构相关代码都置于arch/*/kernel目录下。
核心的网路部份代码。上面的每位子目录对应于网路的一个方面。
lib此目录包含了核心的库代码。与处理器结构相关库代码被置于arch/*/lib/目录下。
scripts此目录包含用于配置核心的脚本文件。
Documentation此目录是一些文档linux内核源代码分析工具,起参考作用。
清楚了源代码的结构组成后就可以着手阅读。对于阅读技巧或则说次序,有所谓的横向与纵向之分。所谓横向就是沿着程序的执行次序逐渐进行;所谓纵向,就是分模块进行。这不是绝对的,而是常常结合在一起进行。对于Linux源代码来讲,启动的代码就可以沿着linux的启动次序一步一步来,它的大致流程如下(以X86平台为例):
./larch/i386/boot/-->./larch/i386/boot/-->./larch/i386/kernel/-->./init/()。而对于象显存管理等部份,则可以单独掏出来进行阅读剖析。我的感受是:开始最好按次序阅读启动代码,之后进行专题阅读,如进程部份,显存管理部份等。在每位功能函数内部应当一步步来。实际上这是一个反复的过程,不可能读一遍就理解。
老话说:“工欲善其事,必先利其器”。阅读象Linux核心代码这样的复杂程序令人望而