Linux內核十二年的風雨
十二年是一個輪回,這里就不得不提提Linux。Linux誕生已經十二年了,你對Linux內核了解么?這里從一個Linux用戶的角度來描述一下Linux十二年成長經歷中的點滴。希望對你了解Linux內核有所幫助。
正因為如此,我的資料都來自于互聯網。盡管年代已久遠,但是廣闊的互聯網空間仍然隨處可見Linux誕生以來的點點滴滴。將它們收集起來,Linux十二年的發展逐漸在眼前展現。
Linux誕生記
目前公認,Linux誕生于1991年8月29日,一切從下面這封郵件的發出開始。
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541 @klaava.Helsinki.FI>
Date: 2***ug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big andprofessional like gnu) for 386(486) AT clones. This has been brewingsince april, and is starting to get ready. I'd like any feedback onthings people like/dislike in minix, as my OS resembles it somewhat(same physical layout of the file-system (due to practical reasons)among other things).
I've currently ported bash(1.08) andgcc(1.40), and things seem to work.This implies that I'll get somethingpractical within a few months, and I'd like to know what features mostpeople would want. Any suggestions are welcome, but I won't promiseI'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threadedfs.It is NOT protable (uses 386 task switching etc), and it probablynever will support anything other than AT-harddisks, as that's all Ihave :-(.
上面這封郵件的譯文如下:
各位使用Minix的朋友們,大家好。
我正在為386(486)的兼容機做一個自由的操作系統。它僅僅是一個業務愛好,不會很大,也不像GNU那么專業。從4月開始我就著手于這項工作,現在差不多就要完成了。我歡迎任何喜歡或不喜歡Minix的朋友能給我反饋,因為在某種程度上我的這個操作系統和它很像。比如,它們都使用了相同的文件系統物理組成(這是由實際情況所決定的)。
目前我已經將Bash 1.08和GCC1.40移植到這個操作系統上,它們都能夠正常地工作。這意味著在這幾個月的努力下,我終于完成了一些實際的東西。我很想知道對于這個操作系統,大多數人到底需要哪些功能和特性。我歡迎各種建議,雖然我并不敢保證能夠實現它們。
Linus (torvalds@kruuna.helsinki.fi)
又及:這個操作系統從Minix代碼而來,有一個多線程的文件系統。它不具備很好的靈活性(使用了386的任務切換機制),而且因為我所擁有的資源有限,它也許永遠都不能支持除了AT硬盤之外的東西。
文中提到的Minix是一個微型的Unix操作系統,完全免費且源代碼公開。作者是荷蘭的AndyTanenbaum教授。他編寫這個操作系統的目的是為了教學和演示,因此他一直拒絕在Minix中加入不必要的特性而使其變得復雜。但是很多愛好者們熱衷于改進Minix,Linus Torvalds就是其中的一個。
現在再看這封信,誰能想到它對今后十多年中IT業造成的沖擊呢?
如果注意到1991年時Linus的許多郵件,我們會發現那個時候的他并不是現在這樣的一個***開發高手。那時候的Linus只是一個OS新手,他自己也在回憶錄中承認,當時向很多人請教了很多基本的問題。
誰又能說十二年后不會再出現這樣一個傳奇呢?
十年磨一劍
1991年11月,Linux0.10版本推出。早期的Linux只有很少的一些程序,直到0.11版本,Linux仍然缺少init/login、rename systemcall、named pipes、symboliclinks這些基本的特性。0.12版本之后,版本號直接跳到了0.95,Linux開始逐漸接近一個真正成熟的系統。
Linux開發的版本號慣例是,中間的數字為偶數代表穩定版,中間的數字為奇數代表開發版。因此到目前為止,Linux經歷了以下幾個穩定版本,他們的版本號和維護者分別如下:1.0.x;1.2.x;2.0.x由David Weinehall負責維護;2.2.x由AlanCox負責維護;2.4.x由Marcelo Tosatti負責維護。
直到2003年12月18日推出Linux 2.6.0,由Linus Torvalds親自負責維護。
微內核與巨內核之爭
Linux以一種難以置信的速度流行起來。在它高速發展的歷程中,不能不提到著名的Linux是否過時之爭。雙方當事人恰恰就是Linus和Minix的作者Andy Tanenbaum教授。在這次爭論中,雙方對操作系統的很多方面都進行了深入的討論,至今看來仍然很有意義。
***發難的是Andy Tanenbaum教授。1992年1月29日,他在題為“Linux is obsolete”的E-mail中說到了對未來一段時間內操作系統發展的觀點。
(1)是微內核還是巨內核
傳統的操作系統使用的都是巨內核結構。這意味著操作系統是一個整體可執行文件,進程管理、內存管理和文件系統全部運行在內核模塊中。而目前較新的一種設計方式是微內核,操作系統的大多數部分作為獨立的進程運行,存在于內核以外,內核通過消息傳遞、中斷處理、低級進程管理,以至于I/O來完成各種工作。
他認為微內核明顯優于巨內核,而Linux使用的恰恰就是巨內核。Andy Tanenbaum教授認為這是歷史的倒退,相當于在20世紀90年代仍然使用70年代的技術。
(2)靈活性(Portability)
Andy Tanenbaum教授還認為,不應該對于一種特定的體系機構編寫操作系統,因為體系結構的進化是非常快的,這樣將導致移植非常困難。目前的Linux過于依賴80386架構,而這樣顯然是不對的。
之后Linus在回復的郵件中承認,微內核的確好一些,至少在理論上是這樣。但是Linus認為在當時擁有一個可用的操作系統更加重要。他說,如果前一年的春天GNU的內核Hurd推出的話,那Linux就沒有存在的必要了。Linus認為,不能僅僅用是否是微內核作為評論操作系統優秀與否的標準。
Linus說的是很重要的一點。微內核模式在開發和調試上都帶來了一定的難度,這也許是Hurd遲遲不能推出的一個重要原因。在很久以后的Revolution OS記錄片中,GNU的主教RichardStallman承認,Hurd各部分之間的配合和調試是個大問題。也許Linus的確有遠見。他認為應該迅速推出能用的系統,而不是在做了***化設計之后再推出系統,這個觀點值得我們深思。
對于靈活性,Linus認為只是某些不愿意寫新程序的人的借口。他認為事實上由于POSIX標準的緣故,Linux比Minix更具靈活性,因為往Linux上移植程序會更加方便。靈活性是一個好主意,但是過猶不及,OS應該***限度地利用架構的特點,這樣會讓開發變得更加容易。
后來雙方又進行了很多爭論,涉及到不少技術細節,也有不少別的人參與進來,他們說的話對于想學習OS的人很有啟發意義。
今天的Linux內核已經不能簡單地說是一個微內核系統或巨內核系統了,它同時具有這兩種系統的不同特點。不過我們可以看到,正是像上面這樣的討論,構成了今天這一龐大的OS理論基礎,這也正是Linux自由、開放的精神所在。
【編輯推薦】