內核是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,并且內核決定一個程序在什么時候對某部分硬件操作多長時間。內核的分類可分為單內核和雙內核以及微內核。嚴格地說,內核并不是計算機系統中必要的組成部分。
內核,是一個操作系統的核心。是基于硬件的第一層軟件擴充,提供操作系統的最基本的功能,是操作系統工作的基礎,它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩(wěn)定性。
現代操作系統設計中,為減少系統本身的開銷,往往將一些與硬件緊密相關的(如中斷處理程序、設備驅動程序等)、基本的、公共的、運行頻率較高的模塊(如時鐘管理、進程調度等)以及關鍵性數據結構獨立開來,使之常駐內存,并對他們進行保護。通常把這一部分稱之為操作系統的內核。
程序可以直接地被調入計算機中執(zhí)行,這樣的設計說明了設計者不希望提供任何硬件抽象和操作系統的支持,它常見于早期計算機系統的設計中。最終,一些輔助性程序,例如程序加載器和調試器,被設計到機器核心當中,或者固化在只讀存儲器里。這些變化發(fā)生時,操作系統內核的概念就漸漸明晰起來了。
Linux的第一個公開版本是1991年10月的0.02版本,兩個月以后,在1991年12月,Linux發(fā)布了0.11版本,這是第一個可以不依賴于Minix就可以使用的獨立內核。0.12版本發(fā)布一個月以后,在3月,版本號跳到了0.95,反映出系統正變得成熟,不僅如此,直到兩年后,也就是1994年3月,具有里程碑意義的1.0.0才完成。
大約從這時起開始使用兩“路”編號方法標注內核的開發(fā),偶數號的內核(比如1.0、2.2、2.4、2.6)是穩(wěn)定的,“產品”型號,同時,奇數號的內核版本(1.1、2.3)是前沿的或者“發(fā)展中的”內核。一個穩(wěn)定的內核發(fā)布以后幾個月就開始新內核的開發(fā)工作。然而,2.5的開發(fā)工作是在2.4完成后幾十個月以后才開始的。 [6] post-halloween文檔的大部分討論內容是用戶需要注意的主要改變,以及需要更新的系統工具(為了利用它們)。關心這一信息人的主要是那些期望提前了解2.6內核中有哪些內容的Linux發(fā)行商,還有終端用戶,這可以讓他們確定為了能利用新部件是否有需要升級的程序。KernelJanitors項目保持了一個列表,內容是需要修復的較小缺陷和解決方法。這些缺陷解決方法中大部分是由于向內核打較大的補丁時需要改動很多部分代碼而導致的,比如有些地方會影響設備驅動程序。那些新近從事內核開發(fā)的人開始時的工作可以選擇列表中的條目,這樣讓他們可以通過小項目學習如何編寫內核代碼,同時有機會為社區(qū)做出貢獻。還有,在另一個預發(fā)布的項目中,JohnCherry追蹤了在對每個已經發(fā)布的內核版本進行編譯時發(fā)現的錯誤和警告。這些編譯統計數字隨著時間的流逝一直持續(xù)下降,而且,以系統的形式來發(fā)布這些結果使得所取得的進展一目了然。在很多情況下,可以像使用KernelJanitors列表一樣來利用這些警告和錯誤消息中的一部分,因為編譯錯誤通常是由小的缺陷引起的,需要一些努力去修復。最后,還有AndrewMorton的“must-fix”列表。由于他已經被選定為2.6內核發(fā)布后的維護者,他運用他的特權概括地列出了那些他認為在最終的2.6內核發(fā)布前最迫切需要解決方案的問題。must-fix列表中包含了內核Bugzilla系統中的缺陷,需要完成的部件,以及其他已知的問題,這些問題如不解決將阻礙2.6發(fā)布。這一信息可以幫助指明在新內核發(fā)布前還需要哪些步驟;對那些關心這一萬眾期待的2.6內核發(fā)布何時能完成的人來說,它還可以提供有價值的信息。