標籤:style color os 使用 io strong 檔案 資料 ar
Linux用來支援各種體繫結構的原始碼包含大約4500個C語言程式,存放在270個左右的子目錄下,總共大約包含200萬行代碼,大概佔用58MB磁碟空間。
原始碼所有在目錄:/usr/src/linux (大部分linux發行版本中)
init 核心初始化代碼
kernel 核心核心部分:進程、定時、程式執行、訊號、模組。。。
mm 記憶體處理
arch 平台相關代碼
i386 IBM的PC體繫結構
kernel核心核心部分
mm 記憶體管理
math-emu浮點單位軟體模擬
lib 硬體相關工具函數
boot 引導程式
compressed壓縮核心處理
tools產生壓縮核心映像的程式
alpha 康柏的Alpha體繫結構
s390 IBM的System/390體繫結構
sparc Sun的SPARC體繫結構
sparc64 Sun的Ultra-SPARC體繫結構
mips SGI的MIPS體繫結構
ppc Motorola-IBM的基於PowerPC的體繫結構
m68k Motorola的基於MC680x0的體繫結構
arm 基於ARM處理器的體繫結構
fs 檔案系統
proc /proc虛擬檔案系統
devpts /dev/pts虛擬檔案系統
ext2 Linux本地的Ext2檔案系統
isofs ISO9660檔案系統(CD-ROM)
nfs 網路檔案系統(NFS)
nfsd 整合的網路檔案系統伺服器
fat 基於FAT的檔案系統的通用代碼
msdos 微軟的MS-DOS檔案系統
vfat 微軟的Windows檔案系統(VFAT)
nls 本地語言支援
ntfs 微軟的Windows NT檔案系統
smbfs 微軟的Windows伺服器訊息區(SMB)檔案系統
umsdos UMSDOS檔案系統
minix MINIX檔案系統
hpfs IBM的OS/2檔案系統
sysv SystemV、SCO、Xenix、Coherent和Version7檔案系統
ncpfs Novell的Netware核心協議(NCP0
ufs UnixBSD、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep檔案系統
affs Amiga的快速檔案系統(FFS)
coda Coda網路檔案系統
hfs 蘋果的Macintosh檔案系統
adfs Acorn磁碟填充檔案系統
efs SGI IRIX的EFS檔案系統
qnx4 QNX4 OS使用不的檔案系統
romfs 唯讀小檔案系統
autofs 目錄自動裝載程式的支援
lockd 遠程檔案鎖定的支援
Net 網路代碼
Ipc System V的處理序間通訊Drivers 裝置驅動程式 block 塊裝置驅動程式 paride從並口訪問IDE裝置的支援 scsi SCSI裝置驅動程式 char 字元裝置驅動程式 joystick遊戲杆 ftape磁帶流裝置 hfmodem無線電裝置 ip2 IntelliPort的多連接埠串列控制器 net 網卡裝置 sound 音訊卡裝置 video 視訊卡裝置 cdrom 專用CD-ROM裝置(除ATAPI和SCSI之外) isd0n ISDN裝置 apl000 富士的AP1000裝置 macintosh蘋果的Macintosh裝置 sgi SGI的裝置 fc4 光纖裝置 acorn Acorn的裝置 misc 雜項裝置 pnp 隨插即用的支援 usb 通用序列匯流排(USB)的支援 pci PCI匯流排的支援 sbus Sun的SPARC SBus的支援 nubus 蘋果的Macintosh Nubus的支援 zorro Amiga的Zorro匯流排的支援 dio 惠普的HP300 DIO匯流排的支援 tc Sun的TurboChannel支援(尚未完成)Lib 通用核心功能 Include 標頭檔(.h) linux 核心核心部分 lockd遠程檔案加鎖 nfsd 整合的網路檔案伺服器 sunrpc Sun的遠端程序呼叫 byteorder位元組交換函數 modules模組支援 asm-generic平台無關低級標頭檔 asm-i386 IBM的PC體繫結構 asm-alpha康柏的Alpha體繫結構 asm-mips SGI的MIPS體繫結構 asm-m68k Motorola-IBM的基於PowerPC的體繫結構 asm-ppc Motorola-IBM的PowerPC體繫結構 asm-s390 IBM的System/390體繫結構 asm-sparc Sun的SPARC體繫結構 asm-sparc64 Sun的Ultra-SPARC體繫結構 asm-arm 基於ARM處理器的體繫結構 net 網路 scsi SCSI支援 video 視訊卡支援 config 定義核心配置的宏所在的標頭檔 scripts 產生核心映像的外部程式Documentation有關核心各個部分的通用解釋和注釋的文字檔
by huihoo.com Allen)
:《UNDERSTANDING THE LINUX KERNEL》 DANIEL P.BOVET & MARCO CESATI 著
-------------------------------------------------
arch:包含和硬體體繫結構相關的代碼,每種平台佔一個相應的目錄。和32位PC相關的代碼存放在i386目錄下,其中比較重要的包括kernel(核心核心部分)、mm(記憶體管理)、math-emu(浮點單位模擬)、lib(硬體相關工具函數)、boot(引導程式)、pci(PCI匯流排)和power(CPU相關狀態)。
block:部分塊裝置驅動程式。
crypto:常用加密和散列演算法(如AES、SHA等),還有一些壓縮和CRC校正演算法。
Documentation:關於核心各部分的通用解釋和注釋。
drivers:裝置驅動程式,每個不同的驅動佔用一個子目錄。
fs:各種支援的檔案系統,如ext、fat、ntfs等。
include:標頭檔。其中,和系統相關的標頭檔被放置在linux子目錄下。
init:核心初始化代碼(注意不是系統引導代碼)。
ipc:處理序間通訊的代碼。
kernel:核心的最核心部分,包括進程調度、定時器等,和平台相關的一部分代碼放在arch/*/kernel目錄下。
lib:庫檔案代碼。
mm:記憶體管理代碼,和平台相關的一部分代碼放在arch/*/mm目錄下。
net:網路相關代碼,實現了各種常見的網路通訊協定。
scripts:用於配置核心檔案的指令檔。
security:主要是一個SELinux的模組。
sound:常用音訊裝置的驅動程式等。
usr:實現了一個cpio。
在i386體系下,系統引導將從arch/i386/kernel/head.s開始執行,並進而轉移到init/main.c中的main()函數初始化核心。我個人認為可以按照這個順序進行閱讀(最好首先看完主要的資料結構定義等),對於各模組代碼粗略看看就可以了,重點應該放在你所要研究的那個方向。要知道,一個人掌握全部Linux核心原始碼是很困難的!
linux核心源碼目錄(轉)