Linux内核源代码位于/usr/src/linux目录下,其结构分布如图1.3所示,每一个目录或子目录可以看作一个模块,其目录之间的连线表示“子目录或子模块”的关系。下面是对每一个目录的简单描述。
include/子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其它模块重建内核。
init/ 子目录包含了内核的初始化代码,这是内核开始工作的起点。
arch/子目录包含了所有硬件结构特定的内核代码,如图1.3,arch/ 子目录下有i386和alpha模块等等。
drivers/ 目录包含了内核中所有的设备驱动程序,如块设备,scsi 设备驱动程序等等。
fs/ 目录包含了所有文件系统的代码,如:ext2, vfat模块的代码等等。
net/ 目录包含了内核的连网代码。
mm/ 目录包含了所有的内存管理代码。
ipc/ 目录包含了进程间通信的代码。
kernel/ 目录包含了主内核代码
图1.3
显示了八个目录,即 init, kernel, mm, ipc, drivers, fs, arch 及
net 的包含文件都在"include/" 目录下。在Linux内核中包含了 drivers, fs,
arch及 net 模块,这就使得Linux内核既不是一个层次式结构,也不是一个微内核结构,而是一个“整体式”结构。因为系统调用可以直接调用内核层,因此,该结构使得整个系统具有较高的性能,其缺点是内核修改起来比较困难,除非遵循严格的规则和编码标准。
在图1.3中所显示的模块结构,代表了一种工作分配单元,利用这种结构,我们期望Linus Torvalds能维护和增强内核的核心服务,即,init/,
kernel/, mm/及 ipc/,其它的模块drivers, fs, arch及net
也可以作为工作单元,例如,可以分配一组人对块文件系统进行维护和进一步的开发,而另一组人对scsi文件系统进行完善。图1.3类似于Linux的自愿者开发队伍一起工作来增强和扩展整个系统的框架。
图1.3 Linux源代码的分布结构