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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核的整体架构介绍

發布時間:2025/6/15 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核的整体架构介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 前言

本文是“Linux內核分析”系列文章的第一篇,會以內核的核心功能為出發點,描述Linux內核的整體架構,以及架構之下主要的軟件子系統。之后,會介紹Linux內核源文件的目錄結構,并和各個軟件子系統對應。

注:本文和其它的“Linux內核分析”文章都基于如下約定:??
a) 內核版本為Linux 3.10.29(該版本是一個long term的版本,會被Linux社區持續維護至少2年),可以從下面的鏈接獲取:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.29.tar.xz?
b) 鑒于嵌入式系統大多使用ARM處理器,因此涉及到體系結構部分的內容,都以ARM為分析對象

2. Linux內核的核心功能

如下圖所示,Linux內核只是Linux操作系統一部分。對下,它管理系統的所有硬件設備;對上,它通過系統調用,向Library Routine(例如C庫)或者其它應用程序提供接口。

因此,其核心功能就是:管理硬件設備,供應用程序使用。而現代計算機(無論是PC還是嵌入式系統)的標準組成,就是CPU、Memory(內存和外存)、輸入輸出設備、網絡設備和其它的外圍設備。所以為了管理這些設備,Linux內核提出了如下的架構。

3. Linux內核的整體架構

3.1 整體架構和子系統劃分

上圖說明了Linux內核的整體架構。根據內核的核心功能,Linux內核提出了5個子系統,分別負責如下的功能:

1. Process Scheduler,也稱作進程管理、進程調度。負責管理CPU資源,以便讓各個進程可以以盡量公平的方式訪問CPU。

2. Memory Manager,內存管理。負責管理Memory(內存)資源,以便讓各個進程可以安全地共享機器的內存資源。另外,內存管理會提供虛擬內存的機制,該機制可以讓進程使用多于系統可用Memory的內存,不用的內存會通過文件系統保存在外部非易失存儲器中,需要使用的時候,再取回到內存中。

3. VFS(Virtual File System),虛擬文件系統。Linux內核將不同功能的外部設備,例如Disk設備(硬盤、磁盤、NAND Flash、Nor Flash等)、輸入輸出設備、顯示設備等等,抽象為可以通過統一的文件操作接口(open、close、read、write等)來訪問。這就是Linux系統“一切皆是文件”的體現(其實Linux做的并不徹底,因為CPU、內存、網絡等還不是文件,如果真的需要一切皆是文件,還得看貝爾實驗室正在開發的"Plan 9”的)。

4. Network,網絡子系統。負責管理系統的網絡設備,并實現多種多樣的網絡標準。

5. IPC(Inter-Process Communication),進程間通信。IPC不管理任何的硬件,它主要負責Linux系統中進程之間的通信。

3.2 進程調度(Process Scheduler)

進程調度是Linux內核中最重要的子系統,它主要提供對CPU的訪問控制。因為在計算機中,CPU資源是有限的,而眾多的應用程序都要使用CPU資源,所以需要“進程調度子系統”對CPU進行調度管理。

進程調度子系統包括4個子模塊(見下圖),它們的功能如下:

1. Scheduling Policy,實現進程調度的策略,它決定哪個(或哪幾個)進程將擁有CPU。

2. Architecture-specific Schedulers,體系結構相關的部分,用于將對不同CPU的控制,抽象為統一的接口。這些控制主要在suspend和resume進程時使用,牽涉到CPU的寄存器訪問、匯編指令操作等。

3. Architecture-independent Scheduler,體系結構無關的部分。它會和“Scheduling Policy模塊”溝通,決定接下來要執行哪個進程,然后通過“Architecture-specific Schedulers模塊”resume指定的進程。

4. System Call Interface,系統調用接口。進程調度子系統通過系統調用接口,將需要提供給用戶空間的接口開放出去,同時屏蔽掉不需要用戶空間程序關心的細節。

3.3 內存管理(Memory Manager, MM)

內存管理同樣是Linux內核中最重要的子系統,它主要提供對內存資源的訪問控制。Linux系統會在硬件物理內存和進程所使用的內存(稱作虛擬內存)之間建立一種映射關系,這種映射是以進程為單位,因而不同的進程可以使用相同的虛擬內存,而這些相同的虛擬內存,可以映射到不同的物理內存上。

內存管理子系統包括3個子模塊(見下圖),它們的功能如下:

1. Architecture Specific Managers,體系結構相關部分。提供用于訪問硬件Memory的虛擬接口。

2. Architecture Independent Manager,體系結構無關部分。提供所有的內存管理機制,包括:以進程為單位的memory mapping;虛擬內存的Swapping。

3. System Call Interface,系統調用接口。通過該接口,向用戶空間程序應用程序提供內存的分配、釋放,文件的map等功能。

3.4 虛擬文件系統(Virtual Filesystem, VFS)

傳統意義上的文件系統,是一種存儲和組織計算機數據的方法。它用易懂、人性化的方法(文件和目錄結構),抽象計算機磁盤、硬盤等設備上冰冷的數據塊,從而使對它們的查找和訪問變得容易。因而文件系統的實質,就是“存儲和組織數據的方法”,文件系統的表現形式,就是“從某個設備中讀取數據和向某個設備寫入數據”。

隨著計算機技術的進步,存儲和組織數據的方法也是在不斷進步的,從而導致有多種類型的文件系統,例如FAT、FAT32、NTFS、EXT2、EXT3等等。而為了兼容,操作系統或者內核,要以相同的表現形式,同時支持多種類型的文件系統,這就延伸出了虛擬文件系統(VFS)的概念。VFS的功能就是管理各種各樣的文件系統,屏蔽它們的差異,以統一的方式,為用戶程序提供訪問文件的接口。

我們可以從磁盤、硬盤、NAND Flash等設備中讀取或寫入數據,因而最初的文件系統都是構建在這些設備之上的。這個概念也可以推廣到其它的硬件設備,例如內存、顯示器(LCD)、鍵盤、串口等等。我們對硬件設備的訪問控制,也可以歸納為讀取或者寫入數據,因而可以用統一的文件操作接口訪問。Linux內核就是這樣做的,除了傳統的磁盤文件系統之外,它還抽象出了設備文件系統、內存文件系統等等。這些邏輯,都是由VFS子系統實現。

VFS子系統包括6個子模塊(見下圖),它們的功能如下:

1. Device Drivers,設備驅動,用于控制所有的外部設備及控制器。由于存在大量不能相互兼容的硬件設備(特別是嵌入式產品),所以也有非常多的設備驅動。因此,Linux內核中將近一半的Source Code都是設備驅動,大多數的Linux底層工程師(特別是國內的企業)都是在編寫或者維護設備驅動,而無暇估計其它內容(它們恰恰是Linux內核的精髓所在)。

2. Device Independent Interface, 該模塊定義了描述硬件設備的統一方式(統一設備模型),所有的設備驅動都遵守這個定義,可以降低開發的難度。同時可以用一致的形勢向上提供接口。

3. Logical Systems,每一種文件系統,都會對應一個Logical System(邏輯文件系統),它會實現具體的文件系統邏輯。

4. System Independent Interface,該模塊負責以統一的接口(快設備和字符設備)表示硬件設備和邏輯文件系統,這樣上層軟件就不再關心具體的硬件形態了。

5. System Call Interface,系統調用接口,向用戶空間提供訪問文件系統和硬件設備的統一的接口。

3.5 網絡子系統(Net)

網絡子系統在Linux內核中主要負責管理各種網絡設備,并實現各種網絡協議棧,最終實現通過網絡連接其它系統的功能。在Linux內核中,網絡子系統幾乎是自成體系,它包括5個子模塊(見下圖),它們的功能如下:

1. Network Device Drivers,網絡設備的驅動,和VFS子系統中的設備驅動是一樣的。

2. Device Independent Interface,和VFS子系統中的是一樣的。

3. Network Protocols,實現各種網絡傳輸協議,例如IP, TCP, UDP等等。

4. Protocol Independent Interface,屏蔽不同的硬件設備和網絡協議,以相同的格式提供接口(socket)。

5. System Call interface,系統調用接口,向用戶空間提供訪問網絡設備的統一的接口。

?

至于IPC子系統,由于功能比較單純,這里就不再描述了。

4. Linux內核源代碼的目錄結構

Linux內核源代碼包括三個主要部分:

1. 內核核心代碼,包括第3章所描述的各個子系統和子模塊,以及其它的支撐子系統,例如電源管理、Linux初始化等

2. 其它非核心代碼,例如庫文件(因為Linux內核是一個自包含的內核,即內核不依賴其它的任何軟件,自己就可以編譯通過)、固件集合、KVM(虛擬機技術)等

3. 編譯腳本、配置文件、幫助文檔、版權說明等輔助性文件

下圖示使用ls命令看到的內核源代碼的頂層目錄結構,具體描述如下。

include/ ---- 內核頭文件,需要提供給外部模塊(例如用戶空間代碼)使用。

kernel/ ---- Linux內核的核心代碼,包含了3.2小節所描述的進程調度子系統,以及和進程調度相關的模塊。

mm/ ---- 內存管理子系統(3.3小節)。

fs/ ---- VFS子系統(3.4小節)。

net/ ---- 不包括網絡設備驅動的網絡子系統(3.5小節)。

ipc/ ---- IPC(進程間通信)子系統。

arch// ---- 體系結構相關的代碼,例如arm, x86等等。?
??? arch//mach-?---- 具體的machine/board相關的代碼。?
??? arch//include/asm ---- 體系結構相關的頭文件。?
??? arch//boot/dts ---- 設備樹(Device Tree)文件。

init/ ---- Linux系統啟動初始化相關的代碼。?
block/ ---- 提供塊設備的層次。?
sound/ ---- 音頻相關的驅動及子系統,可以看作“音頻子系統”。?
drivers/ ---- 設備驅動(在Linux kernel 3.10中,設備驅動占了49.4的代碼量)。

lib/ ---- 實現需要在內核中使用的庫函數,例如CRC、FIFO、list、MD5等。?
crypto/ ----- 加密、解密相關的庫函數。?
security/ ---- 提供安全特性(SELinux)。?
virt/ ---- 提供虛擬機技術(KVM等)的支持。?
usr/ ---- 用于生成initramfs的代碼。?
firmware/ ---- 保存用于驅動第三方設備的固件。

samples/ ---- 一些示例代碼。?
tools/ ---- 一些常用工具,如性能剖析、自測試等。

Kconfig, Kbuild, Makefile, scripts/ ---- 用于內核編譯的配置文件、腳本等。

COPYING ---- 版權聲明。?
MAINTAINERS ----維護者名單。?
CREDITS ---- Linux主要的貢獻者名單。?
REPORTING-BUGS ---- Bug上報的指南。

Documentation, README ---- 幫助、說明文檔。

5. 附錄

5.1 參考資料

第3章各個子系統的架構圖,拷貝自如下的網頁:?
http://oss.org.cn/ossdocs/linux/kernel/a1/index.html

?

原創文章,轉發請注明出處。蝸窩科技,www.wowotech.net。

總結

以上是生活随笔為你收集整理的Linux内核的整体架构介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美涩色 | 色网在线视频 | 99精品视频在线看 | 91插插插插插 | 亚洲砖区区免费 | 亚洲欧美乱日韩乱国产 | 色小说在线观看 | 欧美一级久久久 | 欧美z○zo重口另类黄 | 久久久视屏 | 色老头在线一区二区三区 | 亚洲精品一二 | 亚洲国产精品99 | 日韩美女中文字幕 | 亚洲美女综合 | 黄毛片在线观看 | 久久亚洲伊人 | 日韩中文字幕在线观看 | 国产裸体永久免费无遮挡 | 欧美一级性视频 | 老鸭窝av在线 | 亚洲精品嫩草 | 中文字幕一区电影 | 羞羞动漫在线观看 | 国产又黄又粗又猛又爽的视频 | 射精一区二区 | 成人伊人网 | 国产三级三级看三级 | 国产三级视频在线播放 | 麻豆国产一区二区三区四区 | 成人午夜看片 | 性大毛片视频 | 91亚洲国产成人久久精品网站 | 免费av观看 | 日日夜夜av| 麻豆一区二区99久久久久 | 日韩精品在线第一页 | 香蕉视频在线观看网站 | 色婷婷狠狠18禁久久 | 欧美超碰在线观看 | 中文字幕日韩精品亚洲一区小树林 | 日韩欧美一级片 | 国产精品成人一区二区三区 | 亚洲欧美日韩一区 | 日韩一区高清 | 精品一区电影国产 | 午夜视频在线网站 | 一卡二卡久久 | 青青草成人在线 | a级黄视频 | 成人亚洲天堂 | 国产99久久久国产精品成人免费 | 国产尤物在线 | 国产精品久久久久久亚洲毛片 | 91大神小宝寻花在线观看 | 免费看污片的网站 | 欧美性插动态图 | 毛片精品| 亚洲综合在线中文字幕 | av青青草| 无码精品国产一区二区三区免费 | 另类男人与善交video | 免费观看成人在线视频 | 色丁香av | 特黄aaaaaaaaa毛片免费视频 | 中文字幕乱码在线 | 欧美日韩色 | 精产国品一二三产品蜜桃 | 动漫美女揉胸 | 男女性网站 | 亚洲日本欧美 | 91国产免费看 | 国产福利专区 | 亚洲区偷拍 | 精品久久人人妻人人做人人 | 中文字幕超清在线免费观看 | 视频成人免费 | 超碰c| 日韩无码专区 | 黄色片免费在线 | 日韩在线视频网站 | 国产一级一片免费播放 | 亚洲一区久久 | 丁香婷婷深情五月亚洲 | 国产国拍精品亚洲 | 爱情岛论坛亚洲线路一 | 91啪在线观看 | 亚洲永久无码7777kkk | 香蕉视频官网在线观看 | 久久久久久久国产视频 | 激情五月婷婷色 | 在线观看一区视频 | 女尊高h男高潮呻吟 | 超清纯大学生白嫩啪啪 | 久久国色 | 用力挺进新婚白嫩少妇 | 久久99久久精品 | 亚洲国产片 | 日韩深夜在线 |