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內核源代碼是很困難的!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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