Linux
用來支持各種體系結(jié)構(gòu)的源代碼包含大約4500個(gè)C語言程序,存放在270個(gè)左右的子目錄下,總共大約包含200萬行代碼,大概占用58MB磁盤空間。
源代碼所有在目錄:/usr/src/linux (大部分linux發(fā)行版本中)
init
內(nèi)核初始化代碼
kernel
內(nèi)核核心部分:進(jìn)程、定時(shí)、程序執(zhí)行、信號、模塊。。。
mm
內(nèi)存處理
arch
平臺相關(guān)代碼
???
i386 IBM
的PC體系結(jié)構(gòu)
??????
kernel
內(nèi)核核心部分
??????
mm
內(nèi)存管理
??????
math-emu
浮點(diǎn)單元軟件仿真
??????
lib
硬件相關(guān)工具函數(shù)
??????
boot
引導(dǎo)程序
?????????
compressed
壓縮內(nèi)核處理
?????????
tools
生成壓縮內(nèi)核映像的程序
???
alpha
康柏的Alpha體系結(jié)構(gòu)
???
s390 IBM
的System/390體系結(jié)構(gòu)
???
sparc Sun
的SPARC體系結(jié)構(gòu)
???
sparc64 Sun
的Ultra-SPARC體系結(jié)構(gòu)
???
mips SGI
的MIPS體系結(jié)構(gòu)
???
ppc Motorola-IBM
的基于PowerPC的體系結(jié)構(gòu)
???
m68k Motorola
的基于MC680x0的體系結(jié)構(gòu)
???
arm
基于ARM處理器的體系結(jié)構(gòu)
fs
文件系統(tǒng)
???
proc /proc
虛擬文件系統(tǒng)
???
devpts /dev/pts
虛擬文件系統(tǒng)
???
ext2 Linux
本地的Ext2文件系統(tǒng)
???
isofs ISO9660
文件系統(tǒng)(CD-ROM)
???
nfs
網(wǎng)絡(luò)文件系統(tǒng)(NFS)
???
nfsd
集成的網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器
???
fat
基于FAT的文件系統(tǒng)的通用代碼
???
msdos
微軟的MS-DOS文件系統(tǒng)
???
vfat
微軟的Windows文件系統(tǒng)(VFAT)
???
nls
本地語言支持
???
ntfs
微軟的Windows NT文件系統(tǒng)
???
smbfs
微軟的Windows服務(wù)器消息塊(SMB)文件系統(tǒng)
???
umsdos UMSDOS
文件系統(tǒng)
???
minix MINIX
文件系統(tǒng)
???
hpfs IBM
的OS/2文件系統(tǒng)
???
sysv SystemV
、SCO、Xenix、Coherent和Version7文件系統(tǒng)
???
ncpfs Novell
的Netware核心協(xié)議(NCP0
???
ufs UnixBSD
、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep文件系統(tǒng)
???
affs Amiga
的快速文件系統(tǒng)(FFS)
???
coda Coda
網(wǎng)絡(luò)文件系統(tǒng)
???
hfs
蘋果的Macintosh文件系統(tǒng)
???
adfs Acorn
磁盤填充文件系統(tǒng)
???
efs SGI IRIX
的EFS文件系統(tǒng)
???
qnx4 QNX4 OS
使用不的文件系統(tǒng)
???
romfs
只讀小文件系統(tǒng)
???
autofs
目錄自動裝載程序的支持
???
lockd
遠(yuǎn)程文件鎖定的支持
Net
網(wǎng)絡(luò)代碼
Ipc System V
的進(jìn)程間通信
Drivers 設(shè)備驅(qū)動程序 ???block 塊設(shè)備驅(qū)動程序 ??????paride 從并口訪問IDE設(shè)備的支持 ???scsi SCSI設(shè)備驅(qū)動程序 ???char 字符設(shè)備驅(qū)動程序 ??????joystick 游戲桿 ??????ftape 磁帶流設(shè)備 ??????hfmodem 無線電設(shè)備 ??????ip2 IntelliPort的多端口串行控制器 ???net 網(wǎng)卡設(shè)備 ???sound 音頻卡設(shè)備 ???video 視頻卡設(shè)備 ???cdrom 專用CD-ROM設(shè)備(除ATAPI和SCSI之外) ???isd0n ISDN設(shè)備 ???apl000 富士的AP1000設(shè)備 ???macintosh 蘋果的Macintosh設(shè)備 ???sgi SGI的設(shè)備 ???fc4 光纖設(shè)備 ???acorn Acorn的設(shè)備 ???misc 雜項(xiàng)設(shè)備 ???pnp 即插即用的支持 ???usb 通用串行總線(USB)的支持 ???pci PCI總線的支持 ???sbus Sun的SPARC SBus的支持 ???nubus 蘋果的Macintosh Nubus的支持 ???zorro Amiga的Zorro總線的支持 ???dio 惠普的HP300 DIO總線的支持 ???tc Sun的TurboChannel支持(尚未完成) Lib 通用內(nèi)核函數(shù) Include 頭文件(.h) ???linux 內(nèi)核核心部分? ??????lockd 遠(yuǎn)程文件加鎖 ??????nfsd 集成的網(wǎng)絡(luò)文件服務(wù)器 ??????sunrpc Sun的遠(yuǎn)程過程調(diào)用 ??????byteorder 字節(jié)交換函數(shù) ??????modules 模塊支持 ???asm-generic 平臺無關(guān)低級頭文件 ???asm-i386 IBM的PC體系結(jié)構(gòu) ???asm-alpha 康柏的Alpha體系結(jié)構(gòu) ???asm-mips SGI的MIPS體系結(jié)構(gòu) ???asm-m68k Motorola-IBM的基于PowerPC的體系結(jié)構(gòu) ???asm-ppc Motorola-IBM的PowerPC體系結(jié)構(gòu) ???asm-s390 IBM的System/390體系結(jié)構(gòu) ???asm-sparc Sun的SPARC體系結(jié)構(gòu) ???asm-sparc64 Sun的Ultra-SPARC體系結(jié)構(gòu) ???asm-arm 基于ARM處理器的體系結(jié)構(gòu) ???net 網(wǎng)絡(luò) ???scsi SCSI支持 ???video 視頻卡支持 ???config 定義內(nèi)核配置的宏所在的頭文件 scripts 生成內(nèi)核映像的外部程序 Documentation有關(guān)內(nèi)核各個(gè)部分的通用解釋和注釋的文本文件
by huihoo.com Allen)
:《UNDERSTANDING THE LINUX KERNEL》 DANIEL P.BOVET & MARCO CESATI 著
-------------------------------------------------
arch
:
包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺占一個(gè)相應(yīng)的目錄。和32位PC相關(guān)的代碼存放在i386目錄下,其中比較重要的包括kernel(內(nèi)核核心部分)、mm(內(nèi)存管理)、math-emu(浮點(diǎn)單元仿真)、lib(硬件相關(guān)工具函數(shù))、boot(引導(dǎo)程序)、pci(PCI總線)和power(CPU相關(guān)狀態(tài))。
?
block
:
部分塊設(shè)備驅(qū)動程序。
?
crypto
:
常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗(yàn)算法。
?
Documentation
:
關(guān)于內(nèi)核各部分的通用解釋和注釋。
?
drivers
:
設(shè)備驅(qū)動程序,每個(gè)不同的驅(qū)動占用一個(gè)子目錄。
?
fs
:
各種支持的文件系統(tǒng),如ext、fat、ntfs等。
?
include
:
頭文件。其中,和系統(tǒng)相關(guān)的頭文件被放置在linux子目錄下。
?
init
:
內(nèi)核初始化代碼(
注意不是系統(tǒng)引導(dǎo)代碼
)。
?
ipc
:
進(jìn)程間通信的代碼。
?
kernel
:
內(nèi)核的最核心部分,包括進(jìn)程調(diào)度、定時(shí)器等,和平臺相關(guān)的一部分代碼放在arch/*/kernel目錄下。
?
lib
:
庫文件代碼。
?
mm
:
內(nèi)存管理代碼,和平臺相關(guān)的一部分代碼放在arch/*/mm目錄下。
?
net
:
網(wǎng)絡(luò)相關(guān)代碼,實(shí)現(xiàn)了各種常見的網(wǎng)絡(luò)協(xié)議。
?
scripts
:
用于配置內(nèi)核文件的腳本文件。
?
security
:
主要是一個(gè)SELinux的模塊。
?
sound
:
常用音頻設(shè)備的驅(qū)動程序等。
?
usr
:
實(shí)現(xiàn)了一個(gè)cpio。
?
在i386體系下,系統(tǒng)引導(dǎo)將從arch/i386/kernel/head.s開始執(zhí)行,并進(jìn)而轉(zhuǎn)移到init/main.c中的main()函數(shù)初始 化內(nèi)核。我個(gè)人認(rèn)為可以按照這個(gè)順序進(jìn)行閱讀(最好首先看完主要的數(shù)據(jù)結(jié)構(gòu)定義等),對于各模塊代碼粗略看看就可以了,重點(diǎn)應(yīng)該放在你所要研究的那個(gè)方 向。要知道,一個(gè)人掌握全部Linux內(nèi)核源代碼是很困難的!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
