linux內核

 
Linux內核
內核是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序。它從用戶那裏接受命令並把命令送給內核去執行。

內核是操作系統的內部核心程序,它向外部提供了對計算機設備的核心管理調用。我們將操作系統的代碼分成2部分。內核所在的地址空間稱作內核空間。而在內核以外的統稱爲外部管理程序,它們大部分是對外圍設備的管理和界面操作。外部管理程序與用戶進程所佔據的地址空間稱爲外部空間。通常,一個程序會跨越兩個空間。當執行到內河空間的一段代碼時,我們稱程序處於內核態,而當程序執行到外部空間代碼時,我們稱程序處於用戶態。

從UNIX 起,人們開始用高級語言(UNIX上最具有代表性的就是UNIX的系統級語言C語言)編寫內核代碼,使得內核具有良好的擴展性。單一內核(monolithic kernel)是當時操作系統的主流,操作系統中所有的系統相關功能都被封裝在內核中,它們與外部程序處於不同的內存地址空間中,並通過各種方式(在 Intel IA-32體系中採用386保護模式)防止 外部程序直接訪問內核結構。程序只有通過一套稱作系統調用(system call)的界面訪問內核結構。近些年來,微內核(micro kernel)結構逐漸流行起來,成爲操作系統的主要潮流。1986年,Tanenbaum提出Mach kernel,而後,他的minix和GNU的Hurd操作系統更是微內核系統的典範。

在微內核結構中,操作系統的內核只需要提供最基本、最核心的一部分操作(比如創建和刪除任務、內存管理、中斷管理等)即可,而其他的管理程序(如文件系統、網絡協議棧等)則儘可能的放在內核之外。這些外部程序可以獨立運行,並對外部用戶程序提供操作系統服務,服務之間使用進程間通信機制(IPC)進行交互,只在需要內核的協助時,才通過一套接口對內核發出調用請求。

微內核系統的優點時操作系統具有良好的靈活性。它使得操作系統內部結構簡單清晰。程序代碼的維護非常之方便。但是也有不足之處。微內核系統由於核心態只實現了最基本的系統操作,這樣內核以外的外部程序之間由於獨立運行使得系統難以進行良好的整體優化。另外,進程間互相通信的開銷也較單一內核系統要大許多。從整體上看,在當前的硬件條件下,微內核在效率上的損失小於其在結構上獲得的收益,故而選取微內核成爲操作系統的一大潮流。

然而,Linux系統卻恰恰使用了單一內核結構。這是由於Linux是一個實用主義的操作系統。Linux Tovarlds以代碼執行效率爲自己操作系統的第一要務,並沒有進行過一個系統的設計工作,而是任由Linux在使用中不斷髮展。在這樣的發展過程中,參與Linux開發的程序員大多爲世界各地的黑客們。比起結構的清晰,他們更加註重功能的強大和高效的代碼。於是,他們將大量的精力放在優化代碼上,而這樣的全局性優化必然以喪失結構精簡爲代價,導致Linux中的每個部件都不能輕易被拆除。否則必然破壞整體效率。

雖然Linux是單一內核體系,但是它與傳統的單一內核UNIX操作系統不同。在普通的單一內核系統中,所有的內核代碼都是被靜態編譯聯入的,而在 Linux中,可以動態裝入和卸載內河中的部分代碼。Linux將這些代碼段稱爲模塊。(module),並對模塊給予了強有力的支持。在Linux中,可以在需要時自動裝入和卸載模塊。

Linux不支持用戶態線程。在用戶態中,Linux認爲線程就是共享上下文(Context)的進程。Linux通過LWP(light weight thread)的機制來實現用戶態線程的概念。通過系統調用clone()創建新的線程。

Linux的內核爲非搶佔式的。即,Linux不能通過改變優先權來影響內核當前的執行流程。因此,Linux在實現實時操作時就有問題。Linux並不是一個“硬”實時操作系統。

在Linux 內核中,包括了
進程管理(process management)、        1
定時器(timer)、                2
中斷管理(interrupt management)、    3
內存管理(memory management)、        4
模塊管理(module management)、        5
虛擬文件系統接口(VFS layer)、        6
文件系統(file system)、            7
設備驅動程序(device driver)、        8
進程間通信(inter-process communication)、9   
網絡管理(network management)、        10
系統啓動(system init)等操作系統功能的實現。 11   
發佈了66 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章