日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux内核目录结构(2.6版本以上的kernel)

發(fā)布時(shí)間:2025/3/21 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核目录结构(2.6版本以上的kernel) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、documentation:

沒(méi)有內(nèi)核代碼,提供文檔幫助。

2、arch:

arch是architecture的縮寫(xiě)。所有與體系結(jié)構(gòu)相關(guān)的代碼都在這個(gè)目錄以

include/asm-*/目錄中。Linux支持的每種體系結(jié)構(gòu)在arch目錄下都有對(duì)應(yīng)的目錄,又進(jìn)一

步分解為boot,mm,kernel等子目錄:

???????? | kernel:? ???????? 存放支持體系結(jié)構(gòu)特有的諸如信號(hào)量處理和SMP之類特征的實(shí)現(xiàn)。

???????? | lib:?????????????????? 存放體系結(jié)構(gòu)特有的對(duì)諸如strlen和memcpy之類的通用函數(shù)的實(shí)現(xiàn)。

???????? | mm:??????????????? 存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實(shí)現(xiàn)。

除了這3個(gè)子目錄以外,大多數(shù)體系結(jié)構(gòu)在必要的情況下還有一個(gè)boot子目錄,包括了在這種硬件平臺(tái)上啟動(dòng)內(nèi)核所使用的內(nèi)存管理程序的實(shí)現(xiàn)。

3、drivers:

驅(qū)動(dòng)代碼,驅(qū)動(dòng)是一個(gè)控制硬件的軟件。這個(gè)目錄是內(nèi)核中最龐大的一個(gè)目錄,顯卡、網(wǎng)卡、SCSI適配器、PCI總線、USB總線和其他任何Linux支持的外圍設(shè)備或總線的驅(qū)動(dòng)程序都可以在這兒找到。

4、fs:

虛擬文件系統(tǒng)(VFS)的代碼,和各個(gè)不同文件系統(tǒng)的代碼都在這個(gè)目錄中。Linux支持的所有文件系統(tǒng)在fs目錄下面都有一個(gè)對(duì)應(yīng)的子目錄。比如ext2文件系統(tǒng)對(duì)應(yīng)的是fs/ext2目錄。

一個(gè)文件系統(tǒng)是存儲(chǔ)設(shè)備和需要訪問(wèn)存儲(chǔ)設(shè)備的進(jìn)程之間的媒介。存儲(chǔ)設(shè)備可能是本地的物理上可以訪問(wèn)的,比如硬盤(pán)或者CD-ROM驅(qū)動(dòng)器,他們分別使用而系統(tǒng)ext2/ext3和isofs文件系統(tǒng)。

還有一些虛擬文件系統(tǒng)(proc),它是一個(gè)標(biāo)準(zhǔn)文件系統(tǒng)出現(xiàn)。然而,他其中的文件只存在于內(nèi)存中,并不占磁盤(pán)空間。

5、include:

這個(gè)目錄包含了內(nèi)核中大部分的頭文件,它按照下面的子目錄進(jìn)行分組。要修改處理器結(jié)構(gòu)則只需編輯核心的makefile并重新運(yùn)行Linux核心配置程序。

?????? | include/asm-*/??????????? 每一個(gè)對(duì)應(yīng)著一個(gè)arch的子目錄,比如include/asm-alpha、

Include/asm-arm等。每個(gè)子目錄中的文件都定義了支持給定體系結(jié)構(gòu)所必要的預(yù)處理函數(shù)和內(nèi)聯(lián)函數(shù),這些內(nèi)聯(lián)函數(shù)多數(shù)都是全部或者部分的匯編語(yǔ)言實(shí)現(xiàn)。

| include/linux ??????????? 與平臺(tái)無(wú)關(guān)的頭文件都在這個(gè)目錄下,它通常會(huì)被鏈接到目錄?????????????????????????????????????? ?????? /usr/include/linux(或者它里面的所有文件都會(huì)被復(fù)制到

?????????????????????????????????? ?????? /usrinclude/linux目錄下邊)??????

6、init:?? ?

??? ?內(nèi)核的初始化代碼。包括main.c、創(chuàng)建早起用戶空間的代碼及其他初始化代碼。

7、ipc:

IPC(進(jìn)程間通信)。它包含了共享內(nèi)存、信號(hào)量及其他形式的IPC代碼。

8、kernel:

內(nèi)核中最核心的部分,包括進(jìn)程的調(diào)度(sched.c),以及進(jìn)程的創(chuàng)建和撤銷(fork.c和exit.c)和平臺(tái)相關(guān)的另外一部分核心代碼在arch/*/kernel目錄下。

9、mm

此目錄包含了與體系無(wú)關(guān)的部分內(nèi)存管理代碼。與體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼位于arch/*/mm下。
10、net
??? 核心的網(wǎng)絡(luò)部分代碼,實(shí)現(xiàn)了各種常見(jiàn)的網(wǎng)絡(luò)協(xié)議,入TCP/IP、IPX等。
11、lib
??? 此目錄包含了核心的庫(kù)代碼。實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)C庫(kù)的通用子集,包括字符串和內(nèi)存操作的函數(shù)(strlen、mmcpy等)以及有關(guān)sprintf和atoi系列函數(shù)。與arch/lib下的代碼不同,這里的庫(kù)代碼都是C編寫(xiě)的,在內(nèi)核新的移植版本中可以直接使用。與處理器結(jié)構(gòu)相關(guān)庫(kù)代碼被放在arch/mm中。
12、block:
??? 塊設(shè)備驅(qū)動(dòng)包括IDE(在ide.c中)驅(qū)動(dòng)。塊設(shè)備是以數(shù)據(jù)塊方式接收和發(fā)送的數(shù)據(jù)的設(shè)備。最初block層代碼一部分位于drivers目錄,一部分位于fs目錄。從2.6.15開(kāi)始,block層的核心代碼就被提取出來(lái)放在頂層的block目錄中。如果你想尋找這些可包含文件系統(tǒng)的設(shè)備的初始化過(guò)程則應(yīng)該在drivers/block/genhd.c中的device_setup()。當(dāng)安裝一個(gè)nfs文件系統(tǒng)時(shí)不但要初始化硬盤(pán)還需初始化網(wǎng)絡(luò)。塊設(shè)備包括IDE與SCSI設(shè)備。

13、firmware

fireware中包含了讓計(jì)算機(jī)讀取和理解從設(shè)備發(fā)來(lái)的信號(hào)的代碼。舉例來(lái)說(shuō),一個(gè)攝像頭管理它自己的硬件,但計(jì)算機(jī)必須了解攝像頭給計(jì)算機(jī)發(fā)送的信號(hào)。Linux系統(tǒng)會(huì)使用vicam固件(firmware)來(lái)理解攝像頭的通訊。否則,沒(méi)有了固件,Linux系統(tǒng)將不知道如何處理攝像頭發(fā)來(lái)的信息。另外,固件同樣有助于將Linux系統(tǒng)發(fā)送消息給該設(shè)備。這樣Linux系統(tǒng)可以告訴攝像頭重新調(diào)整或關(guān)閉攝像頭。

13、usr:

實(shí)現(xiàn)用于打包和壓縮的cpio等。這個(gè)文件夾中的代碼在內(nèi)核編譯完成后創(chuàng)建這些文件。

14、securtity:

這個(gè)目錄下包含了不同的Linux安全模型的代碼。它對(duì)計(jì)算機(jī)免于受到病毒和黑客的侵害很重要。否則,Linux系統(tǒng)可能會(huì)遭到損壞。

15、crypto:

內(nèi)核本身所用的加密API,實(shí)現(xiàn)了常用的加密和散列算法,還有一些壓縮和CRC校驗(yàn)算法。例:“sha1_generic.c”這個(gè)文件包含了SHA1加密算法的代碼。

16、scripts:

該目錄下沒(méi)有內(nèi)核代碼,只是包含了用來(lái)配置內(nèi)核的腳本文件。當(dāng)運(yùn)行make menuconfig或者make xconfig之類的命令配置內(nèi)核時(shí),用戶就是和位于這個(gè)目錄下的腳本進(jìn)行交互的。
17、sound:

聲卡驅(qū)動(dòng)以及其他聲音相關(guān)的源碼。

18、samples
一些內(nèi)核編程的范例

19、virt

此文件夾包含了虛擬化代碼,它允許用戶一次運(yùn)行多個(gè)操作系統(tǒng)。通過(guò)虛擬化,客戶機(jī)操作系統(tǒng)就像任何其他運(yùn)行在Linux主機(jī)的應(yīng)用程序一樣運(yùn)行。

20、tools

這個(gè)文件夾中包含了和內(nèi)核交互的工具。

?

COPYING:許可和授權(quán)信息。Linux內(nèi)核在GPLv2許可證下授權(quán)。該許可證授予任何人有權(quán)免費(fèi)去使用、修改、分發(fā)和共享源代碼和編譯代碼。然而,沒(méi)有人可以出售源代碼。

CREDITS?: 貢獻(xiàn)者列表

Kbuild?: 這是一個(gè)設(shè)置一些內(nèi)核設(shè)定的腳本。打個(gè)比方,這個(gè)腳本設(shè)定一個(gè)ARCH變量,這是開(kāi)發(fā)者想要生成的內(nèi)核支持的處理器類型。

Kconfig: 這個(gè)腳本會(huì)在開(kāi)發(fā)人員配置內(nèi)核的時(shí)候用到

MAINTAINERS?: 這是一個(gè)目前維護(hù)者列表,他們的電子郵件地址,主頁(yè),和他們負(fù)責(zé)開(kāi)發(fā)和維護(hù)的內(nèi)核的特定部分或文件。當(dāng)一個(gè)開(kāi)發(fā)者在內(nèi)核中發(fā)現(xiàn)一個(gè)問(wèn)題,并希望能夠報(bào)告給能夠處理這個(gè)問(wèn)題的維護(hù)者時(shí),這是是很有用的。

Makefile?:這個(gè)腳本是編譯內(nèi)核的主要文件。這個(gè)文件將編譯參數(shù)和編譯所需的文件和必要的信息傳給編譯器。

README?: 這個(gè)文檔提供給開(kāi)發(fā)者想要知道的如何編譯內(nèi)核的信息。

REPORTING-BUGS?: 這個(gè)文檔提供如何報(bào)告問(wèn)題的信息。

內(nèi)核的代碼是以“.c”或“.h”為擴(kuò)展名的文件。 “.c”的擴(kuò)展名表明內(nèi)核是用眾多的編程語(yǔ)言之一的C語(yǔ)言寫(xiě)的, “h”的文件是頭文件,而他們也是用C寫(xiě)成。頭文件包含了許多“.c”文件需要使用的代碼,因?yàn)樗麄兛梢砸胍延械拇a而不是重新編寫(xiě)代碼,這節(jié)省了程序員的時(shí)間。否則,一組執(zhí)行相同的動(dòng)作的代碼,將存在許多或全部都是“c”文件。這也會(huì)消耗和浪費(fèi)硬盤(pán)空間。(譯注:頭文件不僅僅可節(jié)省重復(fù)編碼,而且代碼復(fù)用也會(huì)降低代碼錯(cuò)誤的幾率)

總結(jié)

以上是生活随笔為你收集整理的Linux内核目录结构(2.6版本以上的kernel)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。