linux內核剖析

總結一下最近對linux內核的淺在瞭解,主要從兩個方面:Linux操作系統的體系架構和子系統

Linux操作系統的體系架構主要分爲用戶空間和內核空間

用戶空間包括:包含glibc,提供了連接內核的系統調用接口,還提供了用戶空間應用程序和內核之間進行轉換的機制。(提供轉換機制的原因:因爲內核和用戶應用程序之間使用的是不同的保護地址空間。每個用戶空間的進程都是使用自己的 虛擬地址空間,而內核佔用單獨的地址空間。

內核空間包括三部分:sci:系統調用接口實現了一些基本功能,如read,write。內核代碼:獨立於體系結構的內核代碼,這些代碼是linux所支持的所有處理器體系結構所通用的,bsp:依賴於體系結構代碼,這些代碼用作給定體系結構的處理器和特定於平臺的代碼。


子系統:

系統調用接口:sci層提供了某些機制執行從用戶空間到內核的函數調用。依賴於體系結構。

進程管理:

進程管理的重點是進程的執行。在內核中,這些進程稱爲線程,代表了單獨的處理器虛擬化(線程代碼、數據、堆棧和 CPU 寄存器)。在用戶空間,通常使用進程 這個術語,不過 Linux 實現並沒有區分這兩個概念(進程和線程)。內核通過 SCI 提供了一個應用程序編程接口(API)來創建一個新進程(fork、exec 或 Portable Operating System Interface [POSIX] 函數),停止進程(kill、exit),並在它們之間進行通信和同步(signal 或者 POSIX 機制)。

進程管理還包括處理活動進程之間共享 CPU 的需求。內核實現了一種新型的調度算法,不管有多少個線程在競爭 CPU,這種算法都可以在固定時間內進行操作。這種算法就稱爲 O(1) 調度程序,這個名字就表示它調度多個線程所使用的時間和調度一個線程所使用的時間是相同的。 O(1) 調度程序也可以支持多處理器(稱爲對稱多處理器或 SMP)。

內存管理:爲了提高效率,由硬件管理虛擬內存,內存是按照所謂的內存頁方式進行管理的(4k)Linux包括了管理可用內存的方式,以及物理和虛擬映射所使用的硬件機制。內存管理要管理的不止4kb緩衝區,linux提供了對4kb緩衝區的抽象,例如slab分配器。這種內存管理模式使用4kb緩衝區爲基數,然後從中分配結構,並跟蹤內存頁使用情況,比如哪些內存頁是滿的,哪些頁面沒有完全使用,哪些是空的。這就允許該模式根據系統需要來動態調整內存使用。爲了支持多個用戶使用內存,有時會出現可能內存被銷燬光的情況。由於這個原因,頁面可以移除內存並放入磁盤中。這個過程稱爲交換,因爲頁面會被從內存交換到硬盤上。

網絡堆棧:網絡堆棧在設計上遵循模擬協議本身的分層體系結構TCP 上面是 socket 層,它是通過 SCI 進行調用的。socket 層是網絡子系統的標準 API,它爲各種網絡協議提供了一個用戶接口。從原始幀訪問到 IP 協議數據單元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 層提供了一種標準化的方法來管理連接,並在各個終點之間移動數據。

虛擬文件系統:vfs爲文件系統提供了一個通用的接口抽象。Vfssci和內核所支持的文件系統之間提供了一個交換層。在vfs上面是對諸如open,close,read,write之類的函數的一個通用api抽象。在vfs下面是文件系統抽象,定義了上層函數的實現方式。文件系統層下面是緩衝區緩存,它爲文件系統層提供了一個通用函數集(與具體文件系統無關)。這個緩存層通過將數據保留一段時間優化了對物理設備的訪問。緩衝區緩存之下是設備驅動程序,它實現了特定物理設備的接口。

發佈了20 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章