1. 程式人生 > >linux 的產生和發展(非常詳細的歷史)

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