Linux 操作系统内核源码目录结构详解
Linux 内核源码目录结构
代码目录结构
在阅读源码之前,还应知道 Linux 内核源码的整体分布情况。现代的操作系统一般由
进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux 内核源码的各个目录大
致与此相对应,其组成如下(假设相对于 Linux-2.4.23 目录):
arch 目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一
种 Linux 支持的体系结构,例如 i386 就是 Intel CPU 及与之相兼容体系结构的子目录。
PC 机一般都基于此目录。
include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在
include/linux 子目录下。
init 目录包含核心的初始化代码(不是系统的引导代码),有 main.c 和 Version.c
两个文件。这是研究核心如何工作的好起点。mm 目录包含了所有的内存管理代码。与具
体硬件体系结构相关的内存管理代码位于 arch/*/mm 目录下。drivers 目录中是系统中所
有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的
驱动对应于 drivers/sound。
ipc 目录包含了核心进程间的通信代码。modules 目录存放了已建好的、可 动态加
载的模块。fs 目录存放 Linux 支持的文件系统代码。不同的文件系统有不同的子目录对应,
如 ext3 文件系统对应的就是 ext3 子目录。 Kernel 内核管理的核心代码放在这里。同时
与处理器结构相关代码都放在 arch/*/kernel 目录下。net 目录里是核心的网络部分代码,
其每个 子目录对应于网络的一个方面。lib 目录包含了核心的库代码,不过与处理器结构
相关的库代码被放在 arch/*/lib/目录下。scripts 目录包含 用于配置核心的脚本文件。
documentation 目录下是一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend 文件和一个 Make'le 文件。这两 个文件都是编
译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮
助。另外有的目录下还有 Readme 文件,它是对该目录下 文件的一些说明,同样有利于
对内核源码的理解。
评论0