第五期 Linux核心原始碼結構(1)

2021-10-23 03:12:22 字數 2055 閱讀 3231

在上一期中,我們介紹了linux核心發展的歷史,也介紹了與其相關的unix和gnu的相關知識。從這一期開始,我們將介紹linux核心的原始碼結構。我們將先根據linux原始碼的目錄結構進行分析,到本文章發布前,linux 4.19的最新版本為linux 4.19.94,我們將依據openeuler開源社群原始碼並參考linux 4.19.94版核心原始碼進行分析。

下圖列出了截至文章發表前openeuler開源社群kernel目錄下的目錄結構[5]:

其中各個資料夾中源**的功能如下表所示[1][3]:

目錄/檔名原始碼功能簡介

/documentation說明文件,對每個目錄的具體作用進行說明。

/arch不同cpu架構下的核心**。其中的每乙個子目錄都代表linux支援的cpu架構。

/block塊裝置通用函式。

/certs與證書相關。

/crypto常見的加密演算法的c語言實現**,譬如crc32、md5、sha1等。

/drivers核心中所有裝置的驅動程式,其中的每乙個子目錄對應一種裝置驅動。

/include核心編譯通用的標頭檔案。

/init核心初始化的核心**。

/ipc核心中程序間的通訊**。

/kernel核心的核心**,此目錄下實現了大多數linux系統的核心函式。與處理器架構相關的核心**在/kernel/$arch/kernel

/lib核心共用的函式庫,與處理器架構相關的庫在/kernel/$arch/lib

/mm記憶體管理**,譬如頁式儲存管理記憶體的分配和釋放等。與具體處理器架構相關的記憶體管理**位於/arch/$arch/mm目錄下。

/net網路通訊相關**。

/samples示例**。

/scripts用於核心配置的指令碼檔案,用於實現核心配置的圖形介面。

/security安全性相關的**。

/sound與音訊有關的**,包括與音訊有關的驅動程式[2]。

/toolslinux中的常用工具。

/usr該目錄中的**為核心尚未完全啟動時執行使用者空間**提供了支援。

/virt此資料夾包含了虛擬化**,它允許使用者一次執行多個作業系統。

copying許可和授權資訊。

credits貢獻者列表。

kbuild核心設定指令碼,可以對核心中的變數進行設定。

kconfig配置哪些檔案編譯,那些檔案不用編譯[4]。

makefile該檔案將編譯引數、編譯所需的檔案和必要的資訊傳給編譯器。

本期我們根據openeuler的目錄,並參考linux目錄結構簡要介紹了openeuler kernel中各個子目錄的功能,下一期我們將結合linux 核心的kernel map介紹linux核心的基本功能和抽象層級

參考文獻

[1][2]

[3][4]

[5]

第五期c語言答案

輸入兩個字串,從第一字串中刪除第二個字串中所有的字元,例如,輸入 they are students 和 aeiou 則刪除之後的第乙個字串變成 thy r studnts 編寫乙個函式,求乙個數字是否是回文數,回文數的概念 給定乙個數,這個數順讀和逆讀都是一樣的,例如 121,1221是回文數,1...

程式筆記 第五期 你好,NOIP

解釋一下 這篇 blog 不是我自發地要寫的,因此可能會有點水,不要在意 老師讓程式設計社的全體學員在這noip的暴風雨來臨之前的寧靜中寫下了這一篇blog,就這樣,數篇世界級的水部落格誕生了!然後再說一下,本來這篇 blog 是準備在noip開始之前寫好給自己打打底氣的,不過現在看來好像沒有什麼用...

《收穫》 06年第五期 太糟了

這個週末把這一期的 收穫 2006年第五期,總第181期 看完了。最近幾期的內容糟糕透了。今年每一期 收穫 買回來,我基本是先看李輝的 封面中國 隨著敘事的時間線逐漸逼近 1949 年,李輝下筆也多有收攏,總有種言猶未盡的感覺。還好,這是 收穫 還值得看的乙個欄目。本期的長篇是 土豆網的王微 的 等...