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的自願者開發隊伍一起工作來增強和擴展整個系統的框架。