久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 細說(shuo)Linux內核目錄結構

細說Linux內核目錄(lu)結構 時間:2018-01-11      來源:未知

Linux內(nei)核源碼有幾千萬行,包含源文(wen)件和工程文(wen)件有48374個

Linux內核目錄結構

浩瀚的源碼該如何入手?我們學習和研究linux內核必須掌握(wo)一定的方(fang)法,才能(neng)夠提高效率,做到事半功倍,首先我們必須先了解linux內核的主要目錄(lu)。

下(xia)面內(nei)核(he)目錄以linux-3.14內(nei)核(he)作為講解

Linux內核目錄結構

1、documentation:

提供(gong)文檔幫助(zhu)。關于內核的一些(xie)說(shuo)明信息,在這個目錄下會有幫助(zhu)手冊。

比如(ru)linux-3.14-fs4412/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

該文件講解了關于設(she)備數節點(dian) 中斷(duan)設(she)備interrupts屬性的cell的詳細說(shuo)明(ming)。

只要根據文(wen)件(jian)夾名字,便可查找到我們所需的說明(ming)文(wen)檔。

2、arch:

arch是architecture的縮寫(xie)。所有與體(ti)系(xi)結構(gou)相關(guan)的代碼都在這個目(mu)錄以

include/asm-*/目(mu)錄(lu)中。Linux支持(chi)的每(mei)種(zhong)體系(xi)結構在arch目(mu)錄(lu)下(xia)都有對(dui)應的目(mu)錄(lu),又進一

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

|--arm arm及與之(zhi)相兼容(rong)體(ti)系結構的子目(mu)錄

|--boot 引導程序,以及在這種硬(ying)件平(ping)臺上(shang)啟動內核所使(shi)用的內存管理程序的實現。

|--compressed 內(nei)核解壓縮

|--tools 生成壓縮內核映像的程序

| --kernel: 存放支持體系結構特(te)有的(de)諸如(ru)信號量(liang)處(chu)理(li)和SMP之類特(te)征的(de)實現。

| --lib: 存放體系結構特有的(de)對諸如strlen和memcpy之類的(de)通(tong)用函數的(de)實(shi)現。

| --mm: 存放體系(xi)結構特(te)有的內存管(guan)理程序的實現(xian)。

除了(le)這(zhe)3個子目錄以外,大多數體系結構在必(bi)要的情況下還有(you)一個boot子目錄,包(bao)括了(le)在這(zhe)種硬件平臺(tai)上啟動內核所(suo)使用(yong)的內存管(guan)理程(cheng)序的實現(xian)。

3、drivers:

驅動(dong)代(dai)碼,驅動(dong)是(shi)一個控制硬件的(de)軟(ruan)件。這(zhe)個目錄是(shi)內核中龐大的(de)一個目錄,顯卡、網卡、SCSI適配器(qi)、PCI總(zong)(zong)(zong)線、USB總(zong)(zong)(zong)線和其他任何Linux支持的(de)外(wai)圍設備或總(zong)(zong)(zong)線的(de)驅動(dong)程序都可以在這(zhe)兒找到。

4、fs:

虛擬文(wen)(wen)件(jian)(jian)系統(tong)(VFS)的代碼,和各個不同文(wen)(wen)件(jian)(jian)系統(tong)的代碼都在這個目錄中。Linux支持(chi)的所有文(wen)(wen)件(jian)(jian)系統(tong)在fs目錄下(xia)面(mian)都有一(yi)個對應(ying)的子目錄。比如ext2文(wen)(wen)件(jian)(jian)系統(tong)對應(ying)的是(shi)fs/ext2目錄。

一個文件系(xi)統是存(cun)儲(chu)設備(bei)(bei)和(he)需要訪問存(cun)儲(chu)設備(bei)(bei)的進(jin)程之間的媒介。存(cun)儲(chu)設備(bei)(bei)可能是本地(di)的物理上可以訪問的,比如硬盤或者(zhe)CD-ROM驅動器,他們分別使用而系(xi)統ext2/ext3和(he)isofs文件系(xi)統。

還有(you)一些虛擬文(wen)件系統(tong)(proc),它是一個標準文(wen)件系統(tong)出現。然而(er),他其中的文(wen)件只(zhi)存(cun)在于內存(cun)中,并不占磁盤空間(jian)。

5、include:

這個目(mu)錄包(bao)含了內(nei)核中(zhong)大部分(fen)的(de)頭(tou)文件,它按照(zhao)下面(mian)的(de)子(zi)目(mu)錄進行分(fen)組。要(yao)修改處理器結構則只需編輯(ji)核心的(de)makefile并重(zhong)新運行Linux核心配置程序。

| include/asm-*/ 每一個對應著一個arch的(de)子目錄,比如include/asm-alpha、

Include/asm-arm等。每個(ge)子目錄中的文件都定(ding)(ding)義了支持給定(ding)(ding)體系(xi)結構所(suo)必(bi)要的預處理函(han)(han)數(shu)和內(nei)聯函(han)(han)數(shu),這些(xie)內(nei)聯函(han)(han)數(shu)多(duo)數(shu)都是全部或者部分(fen)的匯(hui)編語言實現。

| include/linux 與平臺無關的頭文(wen)件都(dou)在這個(ge)目(mu)錄下(xia),它通常(chang)會被鏈(lian)接到(dao)目(mu)錄

/usr/include/linux(或者它里面的(de)所(suo)有文件都會被復制到(dao)/usrinclude/linux目錄下邊)

6、init:

內核的(de)初始化代碼。包括main.c、創建早起用戶(hu)空(kong)間的(de)代碼及其他初始化代碼。

7、ipc:

IPC(進程(cheng)間通信(xin))。它(ta)包含了(le)共享內存、信(xin)號(hao)量及其他形式的IPC代碼。

8、kernel:

內核中核心的(de)部分,包括進程的(de)調(diao)度(sched.c),以(yi)及(ji)進程的(de)創建和(he)撤銷(xiao)(fork.c和(he)exit.c)和(he)平臺相關的(de)另外一部分核心代碼在arch/*/kernel目錄下。

9、mm

此(ci)目錄(lu)包含了與體系(xi)無關的部(bu)分內存(cun)管理代(dai)碼。與體系(xi)結構相關的內存(cun)管理代(dai)碼位于(yu)arch/*/mm下(xia)。

10、net

核(he)心(xin)的網絡(luo)部(bu)分代碼,實現了各(ge)種常見的網絡(luo)協(xie)議,入TCP/IP、IPX等。

11、lib

此目錄包(bao)(bao)含(han)了核心的(de)(de)庫代(dai)(dai)碼(ma)。實(shi)現了一個標準C庫的(de)(de)通(tong)用子集,包(bao)(bao)括字(zi)符串和(he)(he)內存操作的(de)(de)函(han)(han)數(shu)(strlen、mmcpy等(deng))以及有(you)關sprintf和(he)(he)atoi系(xi)列函(han)(han)數(shu)。與(yu)arch/lib下(xia)的(de)(de)代(dai)(dai)碼(ma)不同,這里的(de)(de)庫代(dai)(dai)碼(ma)都是C編寫的(de)(de),在內核新的(de)(de)移植版(ban)本中可以直接使(shi)用。與(yu)處(chu)理器結構相關庫代(dai)(dai)碼(ma)被放在arch/mm中。

12、block:

塊(kuai)(kuai)設備(bei)(bei)驅(qu)動包(bao)括(kuo)IDE(在ide.c中(zhong))驅(qu)動。塊(kuai)(kuai)設備(bei)(bei)是以數據塊(kuai)(kuai)方式接收和(he)發(fa)送的數據的設備(bei)(bei)。初block層代(dai)碼一部分(fen)位于drivers目錄(lu)(lu),一部分(fen)位于fs目錄(lu)(lu)。從2.6.15開始(shi)(shi),block層的核心代(dai)碼就被提取出來放在頂層的block目錄(lu)(lu)中(zhong)。如(ru)果你想尋找這些可包(bao)含(han)文件系統(tong)的設備(bei)(bei)的初始(shi)(shi)化(hua)過程則應該在drivers/block/genhd.c中(zhong)的device_setup()。當安裝一個nfs文件系統(tong)時不但要初始(shi)(shi)化(hua)硬盤還(huan)需初始(shi)(shi)化(hua)網(wang)絡。塊(kuai)(kuai)設備(bei)(bei)包(bao)括(kuo)IDE與(yu)SCSI設備(bei)(bei)。

13、firmware

fireware中包含了(le)讓計算機(ji)(ji)讀取和(he)理(li)(li)解(jie)(jie)從(cong)設備(bei)發(fa)來(lai)的信號的代(dai)碼(ma)。舉例來(lai)說,一個攝(she)像(xiang)頭管理(li)(li)它自己的硬件(jian),但計算機(ji)(ji)必須了(le)解(jie)(jie)攝(she)像(xiang)頭給計算機(ji)(ji)發(fa)送的信號。Linux系統(tong)會(hui)使用vicam固件(jian)(firmware)來(lai)理(li)(li)解(jie)(jie)攝(she)像(xiang)頭的通訊(xun)。否則,沒(mei)有(you)了(le)固件(jian),Linux系統(tong)將(jiang)不(bu)知道如何(he)處理(li)(li)攝(she)像(xiang)頭發(fa)來(lai)的信息。另外(wai),固件(jian)同樣有(you)助于將(jiang)Linux系統(tong)發(fa)送消(xiao)息給該設備(bei)。這樣Linux系統(tong)可以告訴攝(she)像(xiang)頭重新(xin)調整或關(guan)閉攝(she)像(xiang)頭。

14、usr:

實現用于打包和壓(ya)縮的cpio等。這(zhe)個文件(jian)夾中(zhong)的代(dai)碼(ma)在內核編譯完成后創(chuang)建(jian)這(zhe)些文件(jian)。

15、securtity:

這(zhe)個目錄下(xia)包(bao)含了不同(tong)的Linux安(an)全模型的代(dai)碼。它對計(ji)算機免(mian)于受到(dao)(dao)病毒和黑客(ke)的侵害很(hen)重要(yao)。否則,Linux系統可能會遭(zao)到(dao)(dao)損壞。

16、crypto:

內核本身所用的加密(mi)API,實現了常用的加密(mi)和散列算(suan)法(fa),還有(you)一些壓縮和CRC校驗算(suan)法(fa)。例:“sha1_generic.c”這個(ge)文件包含了SHA1加密(mi)算(suan)法(fa)的代碼(ma)。

17、scripts:

該目錄下沒有內核(he)代碼(ma),只(zhi)是包含了用來配置內核(he)的(de)(de)腳本(ben)文(wen)件(jian)。當運行make menuconfig或者make xconfig之類的(de)(de)命(ming)令配置內核(he)時,用戶(hu)就是和位于這(zhe)個目錄下的(de)(de)腳本(ben)進行交互的(de)(de)。

18、sound:

聲(sheng)卡(ka)驅動以及其他聲(sheng)音相關的源(yuan)碼(ma)。

19、samples

一些內核編程的范(fan)例(li)

20、virt

此文件夾包含了虛(xu)擬(ni)化代碼,它允許用戶一(yi)次運行多個操作(zuo)系統。通(tong)過虛(xu)擬(ni)化,客(ke)戶機操作(zuo)系統就像任何(he)其(qi)他運行在Linux主(zhu)機的應用程(cheng)序一(yi)樣運行。

21、tools

這(zhe)個文件夾中(zhong)包含了(le)和內核交互的(de)工具。

COPYING:許(xu)可和(he)(he)授權信息。Linux內核(he)在GPLv2許(xu)可證下授權。該許(xu)可證授予任何人有(you)權免費去(qu)使用、修改、分發和(he)(he)共(gong)享源代(dai)碼和(he)(he)編(bian)譯代(dai)碼。然而(er),沒有(you)人可以出售(shou)源代(dai)碼。

CREDITS : 貢獻者列表

Kbuild : 這(zhe)(zhe)(zhe)是(shi)一個(ge)(ge)設(she)置一些(xie)內(nei)核設(she)定的(de)腳本(ben)。打(da)個(ge)(ge)比方,這(zhe)(zhe)(zhe)個(ge)(ge)腳本(ben)設(she)定一個(ge)(ge)ARCH變量,這(zhe)(zhe)(zhe)是(shi)開發(fa)者想要(yao)生成的(de)內(nei)核支(zhi)持的(de)處理器類(lei)型。

Kconfig: 這個(ge)腳本會在開發(fa)人(ren)員配置(zhi)內核的時候用到

MAINTAINERS : 這是(shi)一個目前維(wei)護(hu)者列表,他(ta)們的(de)電(dian)子郵件地址,主頁(ye),和(he)(he)他(ta)們負(fu)責開發(fa)(fa)和(he)(he)維(wei)護(hu)的(de)內(nei)核的(de)特定部(bu)分或文件。當一個開發(fa)(fa)者在內(nei)核中發(fa)(fa)現一個問題,并希望(wang)能夠報告給能夠處(chu)理這個問題的(de)維(wei)護(hu)者時(shi),這是(shi)是(shi)很有用(yong)的(de)。

Makefile :這(zhe)個(ge)腳本是編(bian)譯內核的(de)(de)主要(yao)文件(jian)。這(zhe)個(ge)文件(jian)將(jiang)編(bian)譯參(can)數和編(bian)譯所需的(de)(de)文件(jian)和必要(yao)的(de)(de)信息(xi)傳給編(bian)譯器。

README : 這個(ge)文檔(dang)提供給開發者想要知(zhi)道(dao)的如何編譯內(nei)核的信息。

REPORTING-BUGS : 這個文檔提供(gong)如何報告問題的(de)信息(xi)。

內核(he)(he)的(de)(de)(de)代(dai)(dai)(dai)碼(ma)(ma)是以“.c”或“.h”為(wei)擴(kuo)展名的(de)(de)(de)文(wen)(wen)件(jian)(jian)。 “.c”的(de)(de)(de)擴(kuo)展名表明(ming)內核(he)(he)是用眾多的(de)(de)(de)編程(cheng)語言(yan)(yan)之一(yi)的(de)(de)(de)C語言(yan)(yan)寫的(de)(de)(de), “h”的(de)(de)(de)文(wen)(wen)件(jian)(jian)是頭(tou)(tou)文(wen)(wen)件(jian)(jian),而他們(men)也是用C寫成。頭(tou)(tou)文(wen)(wen)件(jian)(jian)包含了(le)許(xu)多“.c”文(wen)(wen)件(jian)(jian)需要使用的(de)(de)(de)代(dai)(dai)(dai)碼(ma)(ma),因為(wei)他們(men)可(ke)以引入(ru)已(yi)有(you)的(de)(de)(de)代(dai)(dai)(dai)碼(ma)(ma)而不是重新(xin)編寫代(dai)(dai)(dai)碼(ma)(ma),這節(jie)省了(le)程(cheng)序員的(de)(de)(de)時間。否則,一(yi)組執行相同的(de)(de)(de)動作的(de)(de)(de)代(dai)(dai)(dai)碼(ma)(ma),將存在許(xu)多或全部都是“c”文(wen)(wen)件(jian)(jian)。這也會(hui)消(xiao)耗(hao)和浪費硬盤空(kong)間。(譯(yi)注:頭(tou)(tou)文(wen)(wen)件(jian)(jian)不僅(jin)僅(jin)可(ke)節(jie)省重復編碼(ma)(ma),而且代(dai)(dai)(dai)碼(ma)(ma)復用也會(hui)降低代(dai)(dai)(dai)碼(ma)(ma)錯(cuo)誤的(de)(de)(de)幾率)

上一篇:數據結構排序算法有哪些常用的

下一篇:AprilTags論文解讀

熱點文章推薦(jian)
華清(qing)學員就業榜單(dan)
高(gao)薪學(xue)員經驗分享
熱(re)點新聞(wen)推薦
前臺專線(xian):010-82525158 企業培(pei)訓(xun)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部