linux 的產生和發展(非常詳細的歷史)

一、簡單的說: 一個名叫Linus Torvalds 的芬蘭大學生想要了解Intel的新CPU386。他認爲比較好的學習方法是自己編寫一個操作系統的內核。出於這種目的,加上他對當時Unix 變種版本(即Minix)對於80386類機器的脆弱支持十分不滿,他決定要開發出一個全功能的、支持POSIX標準的、類Unix的操作系統內核,該系統吸收了BSD和System V的優點,同時摒棄了它們的缺點。Linus獨立把這個內核開發到0.02 版,這個版本已經可以運行gcc、bash 和很少的一些應用程序。這些就是他開始的全部工作了。後來,他又開始在因特網上尋求廣泛的幫助。 
二、具體的分析: Linux 操作系統的誕生、發展和成長過程依賴於以下五個重要支柱: 
          UNIX 操作系統、    MINIX操作系統、      GNU 計劃、       POSIX 標準 
、   Internet 網絡。 

UNIX操作系統
        Linux 操作系統是UNIX 操作系統的一個克隆版本。UNIX 操作系統是美國貝爾實驗室的Ken.Thompson【肯·湯普森】和Dennis Ritchie【丹尼斯·裏奇】 於1969 年夏在DEC PDP-7 小型計算機上開發的一個分時操作系統。Ken Thompson 爲了能在閒置不用的PDP-7 計算機上運行他非常喜歡的星際旅行(Space travel)遊戲,於是在1969 年夏天乘他夫人回家鄉加利福尼亞渡假期間,在一個月內開發出了UNIX 操作系統的原型。當時使用的是BCPL 語言(基本組合編程語言),後經Dennis Ritchie 於1972 年用移植性很強的C語言進行了改寫,使得UNIX 系統在大專院校得到了推廣。
MINIX操作系統
        MINIX 系統是由Andrew S. Tanenbaum(AST)開發的。AST 是在荷蘭Amsterdam 的Vrije 大學數學與計算機科學系統工作,是ACM 和IEEE 的資深會員(全世界也只有很少人是兩會的資深會員)。MINIX 是他1987 年編制的,主要用於學生學習操作系統原理。到1991 年時版本是1.5。目前主要有兩個版本在使用:1.5 版和2.0 版。當然目前MINIX 系統已經是免費的,可以從許多FTP 上下載。
        對於Linux 系統,他後來曾表示對其開發者Linus的稱讚。但他認爲Linux的發展很大原因是由於他爲了保持MINIX 的小型化,能讓學生在一個學期內就能學完,因而沒有接納全世界許多人對MINIX的擴展要求。因此在這樣的前提下激發了Linus 編寫Linux 系統。當然Linus 也正好抓住了這個好時機。
        作爲一個操作系統,MINIX 並不是優秀者,但它同時提供了用C 語言和彙編語言編寫的系統源代碼。這是第一次使得有抱負的程序員或hacker 能夠閱讀操作系統的源代碼。在當時,這種源代碼是軟件商們一直小心守護着的祕密。

GNU計劃
        軟件產業在70年代成就了兩位針鋒相對的領袖人物,來自哈佛大學的比爾·蓋茨和Richard M.Stallman【理查德】。前者宣佈了Copyright(版權)時代的到來,並構建了微軟帝國的輝煌;後者於1984年創立自由軟件體系GNU,擬定普遍公用版權協議(GeneralPublicLicense,簡稱GPL),今天Linux的成功就得益於GPL協議。
        所有GPL協議下的自由軟件都遵循着Richard M. Stallman的"Copyleft"(非版權)原則:即自由軟件允許用戶自由拷貝、修改和銷售,但是對其源代碼的任何修改都必須向所有用戶公開。
        GNU 計劃和自由軟件基金會FSF(the Free Software Foundation)是由Richard M. Stallman 於1984 年一手創辦的。旨在開發一個類似UNIX 並且是自由軟件的完整操作系統:GNU 系統(GNU 是"GNU's Not Unix"的遞歸縮寫,它的發音爲"guh-NEW")。
        各種使用Linux 作爲核心的GNU 操作系統正在被廣泛的使用。雖然這些系統通常被稱作"Linux",但是Stallman 認爲,嚴格地說,它們應該被稱爲GNU/Linux系統。
        到上世紀90 年代初,GNU 項目已經開發出許多高質量的免費軟件,其中包括有名的emacs 編輯系統、bash shell 程序、gcc 系列編譯程序、gdb 調試程序等等。這些軟件爲Linux 操作系統的開發創造了一個合適的環境。這是Linux 能夠誕生的基礎之一,以至於目前許多人都將Linux 操作系統稱爲“GNU/Linux”操作系統。

POSIX標準
        POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 開發的一簇標準。該標準是基於現有的UNIX 實踐和經驗,描述了操作系統的調用服務接口。用於保證編制的應用程序可以在源代碼一級上在多種操作系統上移植和運行。它是在1980 年早期一個UNIX 用戶組(usr/group)的早期工作基礎上取得的。該UNIX 用戶組原來試圖將AT&T 的System V 操作系統和BerkeleyCSRG 的BSD 操作系統的調用接口之間的區別重新調和集成。並於1984 年定製出了/usr/group 標準。
        關於POSIX標準的制定過程:略。
        在90 年代初,POSIX 標準的制定正處在最後投票敲定的時候,那是1991-1993 年間。此時正是Linux剛剛起步的時候,這個UNIX 標準爲Linux 提供了極爲重要的信息,使得Linux 能夠在標準的指導下進行開發,並能夠與絕大多數UNIX 操作系統兼容。在最初的Linux 內核源代碼中(0.01 版、0.11 版)就已經爲Linux 系統與POSIX 標準的兼容做好了準備工作。在Linux 0.01 版內核的/include/unistd.h 文件中就已經定義了幾個有關POSXI 標準要求的符號常數,而且Linus 在註釋中已寫道:“OK,這也許是個玩笑,但我正在着手研究它呢”。

Internet 網絡
        Internet是linux開發、交流、發展的信息和資源的交流平臺。

三、Linux的誕生 
        在1981 年,IBM 公司推出了享譽全球的微型計算機IBM PC。在1981-1991 年間,MS-DOS 操作系統 一直是微型計算機操作系統的主宰。此時計算機硬件價格雖然逐年下降,但軟件價格仍然居高不下 【a】。
        當時Apple 的MACs 操作系統可以說是性能最好的,但是其天價使得沒人能夠輕易靠近 【b】。
        當時的另一個計算機技術陣營就是UNIX 世界。但是UNIX 操作系統就不僅是價格昂貴的問題 了。爲了尋求高利潤率,UNIX 經銷商們把價格擡得極高,PC 小用戶根本不能靠近它。曾經一度收到Bell Labs許可而能在大學中用於教學的UNIX 源代碼也一直被小心地守衛着不許公開 【c】。
        對於廣大的PC 用戶,軟件行業的大型供應商們始終沒有給出有效的解決這個問題的手段。

       正在此時,出現了MINIX 操作系統 【d】,並且有一本描述其設計實現原理的書 同時發行。由於AST的這本書寫的非常詳細,並且敘述得有條有理,於是幾乎全世界的計算機愛好者都開始看這本書,以期能理解操作系統的工作原理。
        其中也包括Linux 系統的創始者Linus Benedict Torvalds。當時(1991 年),Linus Benedict Torvalds 是赫爾辛基大學計算機科學系的二年級學生,也是一個自學的計算機hacker。這個21歲的芬蘭年輕人喜歡鼓搗他的計算機,測試計算機的性能和限制。但當時他所缺乏的就是一個專業級的操作系統。
        在同一年間,GNU 計劃已經開發出了許多工具軟件。其中最受期盼的GNU C 編譯器已經出現,但還沒有開發出免費的GNU 操作系統。 即使是教學使用的MINIX 操作系統也開始有了版權,需要購買才能得到源代碼。雖然GNU 的操作系統HURD一直在開發之中【e】,但在當時看來不能在幾年內完成。

(已經有了【a-e】,但是還沒有一個os)
        爲了能更好地學習計算機知識(或許也只是爲了興趣),Linus 使用聖誕節的壓歲錢和貸款購買了一臺386 兼容電腦 ,並從美國郵購了一套MINIX 系統軟件 。就在等待MINIX 軟件期間,Linus 認真學習了有關Intel 80386 的硬件知識。爲了能通過Modem 撥號連接到學校的主機上,他使用彙編語言並利用80386 CPU的多任務特性編制出一個終端仿真程序。此後爲了將自己一臺老式電腦上的軟件複製到新電腦上,他還爲軟盤驅動器、鍵盤等硬件設備編制出相應的驅動程序。(他編寫了一些os相關的程序)
       通過編程實踐,並在學習過程中認識到MINIX 系統的諸多限制(MINIX 雖然很好,但只是一個用於教學目的簡單操作系統,而不是一個強有力的實用操作系統),而且通過上述實踐Linus 已經有了一些類似於操作系統硬件設備驅動程序的代碼,於是他開始有了編制一個新操作系統的想法。(一個影響深遠的想法誕生了)
       從1991年4月份起(let take this time as thestart),他通過修改終端仿真程序和硬件驅動程序,開始編制起自己的操作系統來。開始,他的目的很簡單,只是爲了學習Intel 386 體系結構保護模式運行方式下的編程技術。但後來Linux發展卻完全改變了初衷。(起始的時間)
       根據Linus 在comp.os.minix 新聞組上發佈的消息,我們可以知道他逐步從學MINIX 系統階段發展到開發自己的Linux 系統的過程。(具體瞭解的來源)
        Linus第1次向comp.os.minix 投遞消息是在1991年3月29日。所發帖子的題目是“gcc on minix-386doesn't optimize”,是有關gcc 編譯器在MINIX-386 系統上運行優化的問題(由此可知,Linus在1991 年初期就已經開始深入究了MINIX 系統,並在這段時間有了改進MINIX 操作系統的思想。在進一步學習MINIX 系統之後,這個想法逐步演變成想重新設計一個基於Intel 80386 體系結構的新操作系統的構思。(思想的轉變)
       他在回答有人提出MINIX 上的一個問題時,所說的第一句話就是“閱讀源代碼”(“RTFSC (Read the F**ing Source Code :-)”)。他認爲答案就在源程序中。這也說明了對於學習系統軟件來說,我們不光需要懂得系統的工作基本原理,還需要結合實際系統,學習實際系統的實現方法。因爲理論畢竟是理論,其中省略了許多枝節,而這些枝節問題雖然沒有太多的理論含量,但卻是一個系統必要的組成部分,就象麻雀身上的一根羽毛。(實踐的重要意義)

(以下是按照時間順序進行介紹)
        從1991 年4 月 份開始,Linus 幾乎花費了全部時間研究MINIX-386 系統(Hacking the kernel),並且嘗試着移植GNU 的軟件到該系統上(GNU gcc、bash、gdb 等)。並於4 月13 日在comp.os.minix 上發佈說自己已經成功地將bash 移植到了MINIX 上,而且已經愛不釋手、不能離開這個shell 軟件了。
        第一個與Linux 有關的消息是在1991 年7 月3日 在comp.os.minix 上發佈的(當然,那時還不存在Linux 這個名稱,當時Linus 腦子裏想的名稱可能是FREAX,FREAX 的英文含義是怪誕的、怪物、異想天開等)。其中透露了他正在進行Linux 系統的開發,並且已經想到要實現與POSIX 兼容的問題了。
        在Linus 另一個發佈的消息中(1991 年8 月25日 comp.os.minix),他向所有MINIX 用戶詢問“Whatwould you like to see in minix?”(“你最想在MINIX系統中見到什麼?”),在該消息中他首次透露出正在開發一個(免費的)386(486)操作系統,並且說只是興趣而已,代碼不會很大,也不會象GNU 的那樣專業。希望大家反饋一些對於MINIX 系統中喜歡哪些特色不喜歡什麼等信息,並且說明由於實際和其它一些原因,新開發的系統剛開始MINIX 很象(並且使用了MINIX的文件系統)。並且已經成功地將bash(1.08版)和gcc(1.40 版)移植到了新系統上,而且在過幾個月就可以實用了。最後,Linus 申明他開發的操作系統沒有使用一行MINIX 的源代碼;而且由於使用了386 的任務切換特性,所以該操作系統不好移植(沒有可移植性),並且只能使用AT 硬盤。對於Linux 的移植性問題,Linus當時並沒有考慮。但是目前Linux 幾乎可以運行在任何一種硬件體系結構上。

       到了1991 年的10 月5 日 ,Linus 在comp.os.minix 新聞組上發佈消息,正式向外宣佈Linux 內核系統的誕生(Free minix-like kernel sources for 386-AT)。這段消息可以稱爲Linux 的誕生宣言,並且一直廣爲流傳。因此10 月5 日對Linux社區來說是一個特殊的日子,許多後來Linux 的新版本發佈時都選擇了這個日子。所以RedHat 公司選擇這個日子發佈它的新系統也不是偶然的。(產生的時間)

原文地址:http://blog.csdn.net/lyonte/article/details/6076003

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章