Linux 核心架構分析

2022-09-16 02:18:10 字數 2306 閱讀 4755

2.核心架構

2.1 核心之作用

2.2 核心之結構

核心主要由以下五大組成部分:

從依賴性的角度分析:

2.3 核心之重要資料結構

3.各子系統架構分析

3.1 程序排程器架構

程序排程器是linux核心中最重要的子系統。其目的是控制對計算機cpu的訪問。這不僅包括使用者程序的訪問,還包括其他核心子系統的訪問。

由上圖可知,程序排程器可分為四大模組:

如前所述,程序排程程式將呼叫記憶體管理器子系統。因此,程序排程程式子系統依賴於記憶體管理器子系統。此外,所有其他核心子系統都依賴程序排程程式來掛起和恢復程序,同時等待硬體請求完成。這些依賴關係通過函式呼叫和對共享任務列表資料結構的訪問來表示。所有核心子系統都讀取和寫入代表當前任務的資料結構,從而導致整個系統中的雙向資料流。

除了核心層中的資料和控制流之外,o / s服務層還為使用者程序提供了乙個介面,用於註冊計時器通知。這對應於[garlan 1994]中描述的隱式執行體系結構樣式。這導致控制從排程程式流向使用者程序。恢復休眠過程的通常情況在正常情況下不視為控制流程,因為使用者程序無法檢測到此操作。最後,排程程式與cpu通訊以掛起和恢復程序。這導致資料流和控制流。cpu負責中斷當前正在執行的程序,並允許核心排程另乙個程序。

3.2 記憶體管理器架構

記憶體管理器子系統負責控制對硬體記憶體資源的程序訪問。這是通過硬體記憶體管理系統完成的,該系統提供了程序記憶體引用與機器物理記憶體之間的對映。記憶體管理器子系統在每個程序的基礎上維護此對映,以便兩個程序可以訪問相同的虛擬記憶體位址並實際使用不同的物理記憶體位置。此外,記憶體管理器子系統還支援交換。它將未使用的記憶體頁面移至永續性儲存,以使計算機支援的虛擬記憶體多於物理記憶體。

3.2.1 模組結構分析

記憶體管理器主要由以下三個模組組成:

3.2.2 從資料表徵的角度分析:

記憶體管理器儲存實體地址到虛擬位址的每個程序的對映。該對映作為參考儲存在流程排程程式的任務列表資料結構中。除了此對映之外,資料塊中的其他詳細資訊還告訴記憶體管理器如何獲取和儲存頁面。例如,可執行**可以將可執行映像用作後備儲存,但是必須將動態分配的資料備份到系統頁面檔案中。最後,記憶體管理器在此資料結構中儲存許可權和記帳資訊,以確保系統安全。

3.2.3 資料流,控制流和依賴關係

記憶體管理器控制記憶體硬體,並在發生頁面錯誤時從硬體接收通知-這意味著記憶體管理器模組和記憶體管理器硬體之間存在雙向資料和控制流。另外,記憶體管理器使用檔案系統來支援交換和記憶體對映的i / o。此要求意味著記憶體管理器需要對檔案系統進行過程呼叫以儲存和從永續性儲存中獲取記憶體頁面。由於無法立即完成檔案系統請求,因此記憶體管理器需要暫停乙個過程,直到將記憶體換回為止。此要求導致記憶體管理器對過程排程程式進行過程呼叫。同樣,由於每個程序的記憶體對映都儲存在程序排程程式的資料結構中,因此在記憶體管理器和程序排程程式之間存在雙向資料流。使用者程序可以在程序位址空間內設定新的記憶體對映,並可以註冊自己以在新對映的區域內通知頁面錯誤。這引入了從記憶體管理器到系統呼叫介面模組再到使用者程序的控制流。從傳統意義上講,沒有來自使用者程序的資料流,但是使用者程序可以使用系統呼叫介面模組中的選擇系統呼叫從記憶體管理器中檢索某些資訊。

3.3 虛擬檔案系統架構

虛擬檔案系統旨在提供儲存在硬體裝置上的資料的一致檢視。計算機中幾乎所有的硬體裝置都是使用通用裝置驅動程式介面表示的。虛擬檔案系統進一步發展,並允許系統管理員在任何物理裝置上安裝一組邏輯檔案系統中的任何乙個。邏輯檔案系統促進與其他作業系統標準的相容性,並允許開發人員使用不同的策略來實現檔案系統。虛擬檔案系統抽象了物理裝置和邏輯檔案系統的詳細資訊,並允許使用者程序使用通用介面訪問檔案,而不必知道檔案駐留在哪個物理或邏輯系統上。

除了傳統的檔案系統目標之外,虛擬檔案系統還負責載入新的可執行程式。該責任由邏輯檔案系統模組完成,這使linux支援多種可執行格式。

故簡言之:

3.3.1 模組結構分析

可分為四大模組:

3.4 網路介面層架構

網路子系統允許linux系統通過網路連線到其他系統。支援許多可能的硬體裝置,以及可以使用的許多網路協議。網路子系統抽象了這兩個實現細節,因此使用者程序和其他核心子系統可以訪問網路而不必知道正在使用什麼物理裝置或協議。

3.4.1 模組結構組成

簡言之:

Linux核心分析

從根本上看,核心是為了管理好程序來設計的,需要建立各種結構體來描述程序管理過程中需要用到的一切。首先,為什麼要劃分核心空間與使用者空間,出於安全的考慮,需要把使用者程式與核心隔離,這就帶來各種複雜性的東西,當然這是值得的。對於模組與模組的互動,使用者通過系統呼叫進入核心,這裡又包含中斷管理,異常管理...

Linux核心架構及核心裁剪

linux系統分為核心空間和使用者空間 使用者空間主要包括 使用者應用程式和基本的庫檔案 核心空間主要包括 系統呼叫介面sci 系統封裝給使用者空間的應用函式呼叫介面 程序管理pm 管理程序排程 虛擬檔案系統vfs 針對各種檔案系統封裝的統一呼叫介面層 記憶體管理mm 與cpu無關的記憶體管理 與c...

了解 Linux核心架構 2

程序,程序切換,排程 傳統上,unix作業系統下執行的應用程式,伺服器及其他程式都稱為程序 processes 每個程序都在cpu的虛擬記憶體中分配位址空間 各程序的位址空間是完全獨立的,因此程序並不會意識到彼此的存在 從程序的角度來看,它會認為自己是系統中唯一的程序 如果程序想要彼此通訊 例如交換...