内核文件夹作用

来源:互联网 发布:淘宝卖的韩国直邮真假 编辑:程序博客网 时间:2024/06/05 09:32

Linux内核源代码的组成如下(假设相对于linux目录): 

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

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

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

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

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

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

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

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

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

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

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

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

  Documentation 此目录是一些文档,起参考作用。 

  清楚了源代码的结构组成后就可以着手阅读。对于阅读方法或者说顺序,有所谓的纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是分模块进行。这不是绝对的,而是经常结合在一起进行。对于Linux源代码来讲,启动的代码就可以顺着linux的启动顺序一步一步来,它的大致流程如下(以X86平台为例): 

  ./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而对于象内存管理等部分,则可以单独拿出来进行阅读分析。我的体会是:开始最好按顺序阅读启动代码,然后进行专题阅读,如进程部分,内存管理部分等。在每个功能函数内部应该一步步来。实际上这是一个反复的过程,不可能读一遍就理解。 


原创粉丝点击