第一章 Linux核心簡介
阿新 • • 發佈:2019-01-06
1.1 Unix 特點
- Unix 很簡潔,不像其他動輒幾千個系統呼叫並且設計目的不明確的系統,Unix 僅僅提供幾百個系統呼叫並且有一個非常明確的設計目的。
- Unix 中所有的東西都被當作檔案對待。
- Unix 核心和相關的系統工具軟體是用 C 語言編寫而成。
- Unix 程序建立非常迅速,並且有一個非常獨特的 fork()系統呼叫。
1.2 Linux 簡介
- Linux 是類 Unix 系統,但它不是 Unix 。
- Linux 是非商業化的產品,它使用 GNU 的 General Public License(GPL) 第二版本作為限制條款。
1.3 作業系統和核心簡介
作業系統:指在整個系統中負責完成最基本功能和系統管理的那些部分。這些包括核心、塊裝置驅動程式、啟動載入程式、命令列 shell 或者其他種類的使用者介面、基本的檔案管理工具和系統工具。
核心:系統的其他部分必須依賴核心這部分軟體提供的服務,像管理硬體裝置、分配資源等。核心有時候被稱作管理者或者操作者核心。通常一個核心由負責相應中斷的中斷服務程式,負責管理多個程序而分享處理器時間的排程程式,負責管理程序地址空間的記憶體管理程式和網路、程序間通訊等系統服務程式共同組成。
系統呼叫:當一個程式執行一條系統呼叫,我們說核心正在代其執行,這種情況下,應用程式被稱為通過系統呼叫在核心空間執行,而核心被稱作運行於程序上下文中。
中斷處理:許多作業系統的中斷服務程式,包括 Linux 的,都不在程序上下文中。它們在一個與所有程序無關的、專門的中斷上下文中執行。之所以存在這樣一個專門的執行環境,是為了保證中斷服務程式能夠在第一時間相應和處理中斷請求,然後快速地退出。
上下文代表著核心的活動範圍,實際上我們可以將每個處理器在任何指定時間點上的活動概括為下列三者之一:
- 運行於使用者空間,執行使用者程序。
- 運行於核心空間,處理程序上下文,代表某個特定的程序執行。
- 運行於核心空間,處於中斷上下文,與任何程序無關,處理某個特定的中斷。
以上所列幾乎包括所有情況,即使邊邊角角的情況也不列外,例如當 CPU 空閒時,核心執行一個空程序,處於程序上下文,但運行於核心空間。
單核心與微核心:
單核心:所有的服務都在這樣一個大核心地址空間上執行,核心之間的通訊微不足道的,因為大家都執行在核心態,並處於同一個地址空間。
微核心:微核心的功能劃分為多個獨立的過程,沒一個過程叫做一個服務。理想情況下,只有強烈請求特權服務的伺服器才執行在特權模式,其他執行在使用者空間。
Linux 是一個單核心,也就是說,Linux 核心執行在單獨的核心地址空間上,不過 Linux 汲取了微核心的精華。
Linux 核心和傳統 Unix 系統之間存在的顯著差異:
- Linux 支援動態載入核心模組。
- Linux 支援對稱多處理 (SMP) 機制。
- Linux 核心可以搶佔,2.6版本以後的核心支援核心態搶佔。
- Linux 對執行緒的支援實現比較有意思,核心並不區分執行緒和其它的一般程序,對於核心來說所有的程序都一樣——只不過是其中的一些共享資源而已。
- Linux 忽略了一些 Unix 設計拙劣的特性。
- Linux 體現了自由一詞的精髓。
1.4 Linux 核心版本
從版本號可以看出該核心是穩定版還是處於開發中的版本,如果是偶數,此核心是穩定版,如果是奇數,那麼它就是開發板。