PaperTan: 写论文从未如此简单

计算机应用

一键写论文

Linux内核源代码的阅读和工具介绍

作者:未知 时间:2006-09-07

Linux内核源代码获取途径多样,可通过/usr/src/linux目录或网络下载获取,最新版本为2.2.14。阅读Linux内核源代码虽具挑战性,但并非高不可攀,需具备操作系统基础知识、C语言熟悉度及汇编语言知识,了解内核代码结构,如arch、include、init、mm、drivers等目录分别对应硬件架构、头文件、启动代码、内存管理、设备驱动等。阅读方法可采用纵向执行顺序或横向模块分析,结合两者逐步深入。推荐使用Windows平台下的Source Insight工具,该软件能高效分析和管理源代码,提升阅读效率,值得尝试。

Linux的内核源代码可以从很多途径得到。一般来讲,在安装的inux系统下,/usr/src/inux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件一般也都位于inux目录下。内核源代码有很多版本,目前最新的版本是2.2.14。

许多人对于阅读Linux内核有一种恐惧感,其实大可不必。当然,象Linux内核这样大而复杂的系统代码,阅读起来确实有很多困难,但是也不象想象的那么高不可攀。只要有恒心,困难都是可以克服的。任何事情做起来都需要有方法和工具。正确的方法可以指导工作,良好的工具可以事半功倍。对于Linux 内核源代码的阅读也同样如此。下面我就把自己阅读内核源代码的一点经验介绍一下,最后介绍Window平台下的一种阅读工具。

对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于inux内核源代码来讲,基本要求是:⑴ 操作系统的基本知识;⑵ 对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于inux目录):

arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。

incude 这个目录包括了核心的大多数incude文件。另外对于每种支持的体系结构分别有一个子目录。

init 此目录包含核心启动代码。

mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/faut.c 。

drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。

ipc 此目录包含了核心的进程间通讯代码。

modues 此目录包含已建好可动态加载的模块。

fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。

kerne 主要核心代码。同时与处理器结构相关代码都放在arch/*/kerne目录下。

net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。

ib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/ib/目录下。

scripts此目录包含用于配置核心的脚本文件。