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