單核心與微核心設計之比較
單核心就是從整體上把核心作為一個大過程來實現,同時也運行在一個單獨的地址空間上,這樣的核心通常以單個靜態二進位檔案的形式存放於磁碟中,而所有核心服務都在這樣的一個大核心地址空間上運行,進程管理、記憶體管理等是其中的一個個模組,模組之間可以直接調用相關的函數。
微核心的功能被劃分為多個獨立的過程,每個過程叫做一個伺服器,所有伺服器都保持獨立並運行在各自的地址空間上,通過訊息傳遞處理微核心通訊,因為微核心工作中會涉及核心空間和使用者空間的環境切換,訊息傳遞需要一定的周期,通訊開銷 大。 Linux核心的技術特點
Linux核心被設計成單核心結構
(1)Linux核心支援動態載入核心模組
使用者在需要時可以現場動態載入,使用完畢可以動態卸載,使用者可以選擇適合自己的功能,將不需要的部分剔除核心,這些都保證了核心的緊湊、可擴充性好。
(2)Linux支援對稱式多處理(SMP)機制
(3)Linux核心可以搶佔 與傳統的Unix變體不同,Linux核心具有允許在核心啟動並執行任優先執行的能力
(4)Linux核心被動地提供服務
它為使用者服務的唯一方式是通過系統調用來請求在核心空間執行某種任務,核心本身是一種函數和資料結構的集合,不存在運行著的核心進程為使用者提供服務
(5)Linux核心採用了虛擬記憶體技術
(6)Linux的檔案系統實現了一種抽象檔案模型——虛擬檔案系統
通過虛擬檔案系統,核心屏蔽了各種不同檔案系統的內在差別,使得使用者可以通過統一的介面訪問各種不同格式的檔案系統
(7)Linux提供了一套很有效順延強制機制——下半部分、非強制中斷、Tasklet、工作隊列
(8)Linux提供具有裝置類的物件導向的裝置模型,熱插拔事件,以及使用者空間的裝置檔案系統 Linux核心版本
Linux核心有兩種:實驗版本(處於開發中的)和產品化版本(穩定的)
Linux通過一個簡單的命名機制來區分穩定的和處於開發中的核心。這種機制使用三個或四個用“.”分隔的數字來代表不同的核心版本。
第一個數字是主要版本號
第二個數字是從版本號碼
第三個數字是修訂版本號碼
第四個可選的數字為穩定版本號碼
從版本號碼可以反映出該核心是一個穩定版本還是一個處於開發的中的版本:如果該數字是偶數,那麼此核心就是穩定版;如果是奇數,那麼它就是開發版
Linux的兩種版本是相互關聯的,實驗版本最初是產品化版本的拷貝,然後產品化版本只修改錯誤,實驗版本繼續增加新功能,到實驗版本測試證明穩定後拷貝成新的產品化版本,不斷迴圈。
Linux核心的位置
整個系統由以下4個部分組成
(1)使用者進程
(2)系統調用介面
(3)Linux核心
(4)硬體 Linux核心體繫結構
(1)進程調度——控制著進程對CPU的訪問
(2)記憶體管理——允許多個進程安全地共用記憶體地區。作業系統只講當前使用的程式塊保留在記憶體中,其餘的程式塊則保留在磁碟上,必要時,作業系統負責在磁碟和記憶體之間交換程式塊。
(3)虛擬檔案系統——隱藏各種不同硬體的具體細節,為所有裝置提供系統介面。
虛擬檔案系統可分為邏輯檔案系統和裝置驅動程式兩部分。邏輯檔案系統是指Linux所支援的檔案系統。如Ext2/Ext3,NTFS等;裝置驅動程式指為每一種硬體控制器所編寫的裝置驅動程式模組。
(4)網路介面——提供了對各種網路標準協議的存取和各種網路硬體的支援。
網路子系統可分為網路通訊協定和網路驅動程式兩部分。
(5)處理序間通訊——支援進程間各種通訊機制,包括共用記憶體、訊息佇列及管道等 Linux核心原始碼的結構
include/子目錄包含了建立核心代碼時所需的大部分包含檔案
init/子目錄包含了核心的初始化代碼,這是核心開始工作的起點
arch/子目錄包含了Linux支援的所有硬體結構的核心代碼
drivers/子目錄包含了核心中所有的裝置驅動程式,如字元裝置、塊裝置、scsi裝置
驅動程式等
fs/子目錄包含了所有檔案系統的代碼
net/子目錄包含了核心中關於網路的代碼
mm/子目錄包含了所有記憶體管理代碼
ipc/子目錄包含了處理序間通訊的代碼
kernel/子目錄包含了主核心代碼