1.6.2  Linux内核源代码的结构

 

     Linux内核源代码位于/usr/src/linux目录下,其结构分布如图1.3所示,每一个目录或子目录可以看作一个模块,其目录之间的连线表示“子目录或子模块”的关系。下面是对每一个目录的简单描述。

 

       include/子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其它模块重建内核。

 

      init/ 子目录包含了内核的初始化代码,这是内核开始工作的起点。

 

     arch/子目录包含了所有硬件结构特定的内核代码,如图1.3arch/ 子目录下有i386alpha模块等等。

 

     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, archnet 也可以作为工作单元,例如,可以分配一组人对块文件系统进行维护和进一步的开发,而另一组人对scsi文件系统进行完善。图1.3类似于Linux的自愿者开发队伍一起工作来增强和扩展整个系统的框架。


1.3 Linux源代码的分布结构