linux發(fā)展史:
一、簡單的說: 一個名叫Linus Torvalds 的芬蘭大學(xué)生想要了解Intel的新CPU386。他認(rèn)為比較好的學(xué)習(xí)方法是自己編寫一個操作系統(tǒng)的內(nèi)核。出于這種目的,加上他對當(dāng)時Unix 變種版本(即Minix)對于80386類機器的脆弱支持十分不滿,他決定要開發(fā)出一個全功能的、支持POSIX標(biāo)準(zhǔn)的、類Unix的操作系統(tǒng)內(nèi)核,該系統(tǒng)吸收了BSD和System V的優(yōu)點,同時摒棄了它們的缺點。Linus獨立把這個內(nèi)核開發(fā)到0.02 版,這個版本已經(jīng)可以運行g(shù)cc、bash 和很少的一些應(yīng)用程序。這些就是他開始的全部工作了。后來,他又開始在因特網(wǎng)上尋求廣泛的幫助。? 二、具體的分析: Linux 操作系統(tǒng)的誕生、發(fā)展和成長過程依賴于以下五個重要支柱:? ? ? ? ? ? UNIX 操作系統(tǒng)、? ? MINIX操作系統(tǒng)、? ? ? GNU 計劃、? ? ? POSIX 標(biāo)準(zhǔn) 、? Internet 網(wǎng)絡(luò)。? UNIX操作系統(tǒng)? ? ? ? Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一個克隆版本。UNIX 操作系統(tǒng)是美國貝爾實驗室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型計算機上開發(fā)的一個分時操作系統(tǒng)。Ken Thompson 為了能在閑置不用的PDP-7 計算機上運行他非常喜歡的星際旅行(Space travel)游戲,于是在1969 年夏天乘他夫人回家鄉(xiāng)加利福尼亞渡假期間,在一個月內(nèi)開發(fā)出了UNIX 操作系統(tǒng)的原型。當(dāng)時使用的是BCPL 語言(基本組合編程語言),后經(jīng)Dennis Ritchie 于1972 年用移植性很強的C語言進行了改寫,使得UNIX 系統(tǒng)在大專院校得到了推廣。 MINIX操作系統(tǒng)? ? ? ? MINIX 系統(tǒng)是由Andrew S. Tanenbaum(AST)開發(fā)的。AST 是在荷蘭Amsterdam 的Vrije 大學(xué)數(shù)學(xué)與計算機科學(xué)系統(tǒng)工作,是ACM 和IEEE 的資深會員(全世界也只有很少人是兩會的資深會員)。MINIX 是他1987 年編制的,主要用于學(xué)生學(xué)習(xí)操作系統(tǒng)原理。到1991 年時版本是1.5。目前主要有兩個版本在使用:1.5 版和2.0 版。當(dāng)然目前MINIX 系統(tǒng)已經(jīng)是免費的,可以從許多FTP 上下載。? ? ? ? 對于Linux 系統(tǒng),他后來曾表示對其開發(fā)者Linus的稱贊。但他認(rèn)為Linux的發(fā)展很大原因是由于他為了保持MINIX 的小型化,能讓學(xué)生在一個學(xué)期內(nèi)就能學(xué)完,因而沒有接納全世界許多人對MINIX的擴展要求。因此在這樣的前提下激發(fā)了Linus 編寫Linux 系統(tǒng)。當(dāng)然Linus 也正好抓住了這個好時機。? ? ? ? 作為一個操作系統(tǒng),MINIX 并不是優(yōu)秀者,但它同時提供了用C 語言和匯編語言編寫的系統(tǒng)源代碼。這是第一次使得有抱負(fù)的程序員或hacker 能夠閱讀操作系統(tǒng)的源代碼。在當(dāng)時,這種源代碼是軟件商們一直小心守護著的秘密。 GNU計劃? ? ? ? 軟件產(chǎn)業(yè)在70年代成就了兩位針鋒相對的領(lǐng)袖人物,來自哈佛大學(xué)的比爾·蓋茨和Richard M.Stallman。前者宣布了Copyright(版權(quán))時代的到來,并構(gòu)建了微軟帝國的輝煌;后者于1984年創(chuàng)立自由軟件體系GNU,擬定普遍公用版權(quán)協(xié)議(GeneralPublicLicense,簡稱GPL),今天Linux的成功就得益于GPL協(xié)議。? ? ? ? 所有GPL協(xié)議下的自由軟件都遵循著Richard M. Stallman的"Copyleft"(非版權(quán))原則:即自由軟件允許用戶自由拷貝、修改和銷售,但是對其源代碼的任何修改都必須向所有用戶公開。? ? ? ? GNU 計劃和自由軟件基金會FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手創(chuàng)辦的。旨在開發(fā)一個類似UNIX 并且是自由軟件的完整操作系統(tǒng):GNU 系統(tǒng)(GNU 是"GNU's Not Unix"的遞歸縮寫,它的發(fā)音為"guh-NEW")。? ? ? ? 各種使用Linux 作為核心的GNU 操作系統(tǒng)正在被廣泛的使用。雖然這些系統(tǒng)通常被稱作"Linux",但是Stallman 認(rèn)為,嚴(yán)格地說,它們應(yīng)該被稱為GNU/Linux系統(tǒng)。? ? ? ? 到上世紀(jì)90 年代初,GNU 項目已經(jīng)開發(fā)出許多高質(zhì)量的免費軟件,其中包括有名的emacs 編輯系統(tǒng)、bash shell 程序、gcc 系列編譯程序、gdb 調(diào)試程序等等。這些軟件為Linux 操作系統(tǒng)的開發(fā)創(chuàng)造了一個合適的環(huán)境。這是Linux 能夠誕生的基礎(chǔ)之一,以至于目前許多人都將Linux 操作系統(tǒng)稱為“GNU/Linux”操作系統(tǒng)。 POSIX標(biāo)準(zhǔn)? ? ? ? POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 開發(fā)的一簇標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)是基于現(xiàn)有的UNIX 實踐和經(jīng)驗,描述了操作系統(tǒng)的調(diào)用服務(wù)接口。用于保證編制的應(yīng)用程序可以在源代碼一級上在多種操作系統(tǒng)上移植和運行。它是在1980 年早期一個UNIX 用戶組(usr/group)的早期工作基礎(chǔ)上取得的。該UNIX 用戶組原來試圖將AT&T 的System V 操作系統(tǒng)和BerkeleyCSRG 的BSD 操作系統(tǒng)的調(diào)用接口之間的區(qū)別重新調(diào)和集成。并于1984 年定制出了/usr/group 標(biāo)準(zhǔn)。? ? ? ? 關(guān)于POSIX標(biāo)準(zhǔn)的制定過程:略。? ? ? ? 在90 年代初,POSIX 標(biāo)準(zhǔn)的制定正處在最后投票敲定的時候,那是1991-1993 年間。此時正是Linux剛剛起步的時候,這個UNIX 標(biāo)準(zhǔn)為Linux 提供了極為重要的信息,使得Linux 能夠在標(biāo)準(zhǔn)的指導(dǎo)下進行開發(fā),并能夠與絕大多數(shù)UNIX 操作系統(tǒng)兼容。在最初的Linux 內(nèi)核源代碼中(0.01 版、0.11 版)就已經(jīng)為Linux 系統(tǒng)與POSIX 標(biāo)準(zhǔn)的兼容做好了準(zhǔn)備工作。在Linux 0.01 版內(nèi)核的/include/unistd.h 文件中就已經(jīng)定義了幾個有關(guān)POSXI 標(biāo)準(zhǔn)要求的符號常數(shù),而且Linus 在注釋中已寫道:“OK,這也許是個玩笑,但我正在著手研究它呢”。
一、簡單的說: 一個名叫Linus Torvalds 的芬蘭大學(xué)生想要了解Intel的新CPU386。他認(rèn)為比較好的學(xué)習(xí)方法是自己編寫一個操作系統(tǒng)的內(nèi)核。出于這種目的,加上他對當(dāng)時Unix 變種版本(即Minix)對于80386類機器的脆弱支持十分不滿,他決定要開發(fā)出一個全功能的、支持POSIX標(biāo)準(zhǔn)的、類Unix的操作系統(tǒng)內(nèi)核,該系統(tǒng)吸收了BSD和System V的優(yōu)點,同時摒棄了它們的缺點。Linus獨立把這個內(nèi)核開發(fā)到0.02 版,這個版本已經(jīng)可以運行g(shù)cc、bash 和很少的一些應(yīng)用程序。這些就是他開始的全部工作了。后來,他又開始在因特網(wǎng)上尋求廣泛的幫助。? 二、具體的分析: Linux 操作系統(tǒng)的誕生、發(fā)展和成長過程依賴于以下五個重要支柱:? ? ? ? ? ? UNIX 操作系統(tǒng)、? ? MINIX操作系統(tǒng)、? ? ? GNU 計劃、? ? ? POSIX 標(biāo)準(zhǔn) 、? Internet 網(wǎng)絡(luò)。? UNIX操作系統(tǒng)? ? ? ? Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一個克隆版本。UNIX 操作系統(tǒng)是美國貝爾實驗室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型計算機上開發(fā)的一個分時操作系統(tǒng)。Ken Thompson 為了能在閑置不用的PDP-7 計算機上運行他非常喜歡的星際旅行(Space travel)游戲,于是在1969 年夏天乘他夫人回家鄉(xiāng)加利福尼亞渡假期間,在一個月內(nèi)開發(fā)出了UNIX 操作系統(tǒng)的原型。當(dāng)時使用的是BCPL 語言(基本組合編程語言),后經(jīng)Dennis Ritchie 于1972 年用移植性很強的C語言進行了改寫,使得UNIX 系統(tǒng)在大專院校得到了推廣。 MINIX操作系統(tǒng)? ? ? ? MINIX 系統(tǒng)是由Andrew S. Tanenbaum(AST)開發(fā)的。AST 是在荷蘭Amsterdam 的Vrije 大學(xué)數(shù)學(xué)與計算機科學(xué)系統(tǒng)工作,是ACM 和IEEE 的資深會員(全世界也只有很少人是兩會的資深會員)。MINIX 是他1987 年編制的,主要用于學(xué)生學(xué)習(xí)操作系統(tǒng)原理。到1991 年時版本是1.5。目前主要有兩個版本在使用:1.5 版和2.0 版。當(dāng)然目前MINIX 系統(tǒng)已經(jīng)是免費的,可以從許多FTP 上下載。? ? ? ? 對于Linux 系統(tǒng),他后來曾表示對其開發(fā)者Linus的稱贊。但他認(rèn)為Linux的發(fā)展很大原因是由于他為了保持MINIX 的小型化,能讓學(xué)生在一個學(xué)期內(nèi)就能學(xué)完,因而沒有接納全世界許多人對MINIX的擴展要求。因此在這樣的前提下激發(fā)了Linus 編寫Linux 系統(tǒng)。當(dāng)然Linus 也正好抓住了這個好時機。? ? ? ? 作為一個操作系統(tǒng),MINIX 并不是優(yōu)秀者,但它同時提供了用C 語言和匯編語言編寫的系統(tǒng)源代碼。這是第一次使得有抱負(fù)的程序員或hacker 能夠閱讀操作系統(tǒng)的源代碼。在當(dāng)時,這種源代碼是軟件商們一直小心守護著的秘密。 GNU計劃? ? ? ? 軟件產(chǎn)業(yè)在70年代成就了兩位針鋒相對的領(lǐng)袖人物,來自哈佛大學(xué)的比爾·蓋茨和Richard M.Stallman。前者宣布了Copyright(版權(quán))時代的到來,并構(gòu)建了微軟帝國的輝煌;后者于1984年創(chuàng)立自由軟件體系GNU,擬定普遍公用版權(quán)協(xié)議(GeneralPublicLicense,簡稱GPL),今天Linux的成功就得益于GPL協(xié)議。? ? ? ? 所有GPL協(xié)議下的自由軟件都遵循著Richard M. Stallman的"Copyleft"(非版權(quán))原則:即自由軟件允許用戶自由拷貝、修改和銷售,但是對其源代碼的任何修改都必須向所有用戶公開。? ? ? ? GNU 計劃和自由軟件基金會FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手創(chuàng)辦的。旨在開發(fā)一個類似UNIX 并且是自由軟件的完整操作系統(tǒng):GNU 系統(tǒng)(GNU 是"GNU's Not Unix"的遞歸縮寫,它的發(fā)音為"guh-NEW")。? ? ? ? 各種使用Linux 作為核心的GNU 操作系統(tǒng)正在被廣泛的使用。雖然這些系統(tǒng)通常被稱作"Linux",但是Stallman 認(rèn)為,嚴(yán)格地說,它們應(yīng)該被稱為GNU/Linux系統(tǒng)。? ? ? ? 到上世紀(jì)90 年代初,GNU 項目已經(jīng)開發(fā)出許多高質(zhì)量的免費軟件,其中包括有名的emacs 編輯系統(tǒng)、bash shell 程序、gcc 系列編譯程序、gdb 調(diào)試程序等等。這些軟件為Linux 操作系統(tǒng)的開發(fā)創(chuàng)造了一個合適的環(huán)境。這是Linux 能夠誕生的基礎(chǔ)之一,以至于目前許多人都將Linux 操作系統(tǒng)稱為“GNU/Linux”操作系統(tǒng)。 POSIX標(biāo)準(zhǔn)? ? ? ? POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 開發(fā)的一簇標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)是基于現(xiàn)有的UNIX 實踐和經(jīng)驗,描述了操作系統(tǒng)的調(diào)用服務(wù)接口。用于保證編制的應(yīng)用程序可以在源代碼一級上在多種操作系統(tǒng)上移植和運行。它是在1980 年早期一個UNIX 用戶組(usr/group)的早期工作基礎(chǔ)上取得的。該UNIX 用戶組原來試圖將AT&T 的System V 操作系統(tǒng)和BerkeleyCSRG 的BSD 操作系統(tǒng)的調(diào)用接口之間的區(qū)別重新調(diào)和集成。并于1984 年定制出了/usr/group 標(biāo)準(zhǔn)。? ? ? ? 關(guān)于POSIX標(biāo)準(zhǔn)的制定過程:略。? ? ? ? 在90 年代初,POSIX 標(biāo)準(zhǔn)的制定正處在最后投票敲定的時候,那是1991-1993 年間。此時正是Linux剛剛起步的時候,這個UNIX 標(biāo)準(zhǔn)為Linux 提供了極為重要的信息,使得Linux 能夠在標(biāo)準(zhǔn)的指導(dǎo)下進行開發(fā),并能夠與絕大多數(shù)UNIX 操作系統(tǒng)兼容。在最初的Linux 內(nèi)核源代碼中(0.01 版、0.11 版)就已經(jīng)為Linux 系統(tǒng)與POSIX 標(biāo)準(zhǔn)的兼容做好了準(zhǔn)備工作。在Linux 0.01 版內(nèi)核的/include/unistd.h 文件中就已經(jīng)定義了幾個有關(guān)POSXI 標(biāo)準(zhǔn)要求的符號常數(shù),而且Linus 在注釋中已寫道:“OK,這也許是個玩笑,但我正在著手研究它呢”。
Internet 網(wǎng)絡(luò)? ? ? ? Internet是linux開發(fā)、交流、發(fā)展的信息和資源的交流平臺。 三、Linux的誕生? ? ? ? ? 在1981 年,IBM 公司推出了享譽全球的微型計算機IBM PC。在1981-1991 年間,MS-DOS 操作系統(tǒng) 一直是微型計算機操作系統(tǒng)的主宰。此時計算機硬件價格雖然逐年下降,但軟件價格仍然居高不下 【a】。? ? ? ? 當(dāng)時Apple 的MACs 操作系統(tǒng)可以說是性能最好的,但是其天價使得沒人能夠輕易靠近 【b】。? ? ? ? 當(dāng)時的另一個計算機技術(shù)陣營就是UNIX 世界。但是UNIX 操作系統(tǒng)就不僅是價格昂貴的問題 了。為了尋求高利潤率,UNIX 經(jīng)銷商們把價格抬得極高,PC 小用戶根本不能靠近它。曾經(jīng)一度收到Bell Labs許可而能在大學(xué)中用于教學(xué)的UNIX 源代碼也一直被小心地守衛(wèi)著不許公開 【c】。? ? ? ? 對于廣大的PC 用戶,軟件行業(yè)的大型供應(yīng)商們始終沒有給出有效的解決這個問題的手段。? ? ? ? 正在此時,出現(xiàn)了MINIX 操作系統(tǒng) 【d】,并且有一本描述其設(shè)計實現(xiàn)原理的書 同時發(fā)行。由于AST的這本書寫的非常詳細(xì),并且敘述得有條有理,于是幾乎全世界的計算機愛好者都開始看這本書,以期能理解操作系統(tǒng)的工作原理。? ? ? ? 其中也包括Linux 系統(tǒng)的創(chuàng)始者Linus Benedict Torvalds。當(dāng)時(1991 年),Linus Benedict Torvalds 是赫爾辛基大學(xué)計算機科學(xué)系的二年級學(xué)生,也是一個自學(xué)的計算機hacker。這個21歲的芬蘭年輕人喜歡鼓搗他的計算機,測試計算機的性能和限制。但當(dāng)時他所缺乏的就是一個專業(yè)級的操作系統(tǒng)。? ? ? ? 在同一年間,GNU 計劃已經(jīng)開發(fā)出了許多工具軟件。其中最受期盼的GNU C 編譯器已經(jīng)出現(xiàn),但還沒有開發(fā)出免費的GNU 操作系統(tǒng)。 即使是教學(xué)使用的MINIX 操作系統(tǒng)也開始有了版權(quán),需要購買才能得到源代碼。雖然GNU 的操作系統(tǒng)HURD一直在開發(fā)之中【e】,但在當(dāng)時看來不能在幾年內(nèi)完成。 (已經(jīng)有了【a-e】,但是還沒有一個os)? ? ? ? 為了能更好地學(xué)習(xí)計算機知識(或許也只是為了興趣),Linus 使用圣誕節(jié)的壓歲錢和貸款購買了一臺386 兼容電腦 ,并從美國郵購了一套MINIX 系統(tǒng)軟件 。就在等待MINIX 軟件期間,Linus 認(rèn)真學(xué)習(xí)了有關(guān)Intel 80386 的硬件知識。為了能通過Modem 撥號連接到學(xué)校的主機上,他使用匯編語言并利用80386 CPU的多任務(wù)特性編制出一個終端仿真程序。此后為了將自己一臺老式電腦上的軟件復(fù)制到新電腦上,他還為軟盤驅(qū)動器、鍵盤等硬件設(shè)備編制出相應(yīng)的驅(qū)動程序。(他編寫了一些os相關(guān)的程序)? ? ? ? 通過編程實踐,并在學(xué)習(xí)過程中認(rèn)識到MINIX 系統(tǒng)的諸多限制(MINIX 雖然很好,但只是一個用于教學(xué)目的簡單操作系統(tǒng),而不是一個強有力的實用操作系統(tǒng)),而且通過上述實踐Linus 已經(jīng)有了一些類似于操作系統(tǒng)硬件設(shè)備驅(qū)動程序的代碼,于是他開始有了編制一個新操作系統(tǒng)的想法。(一個影響深遠(yuǎn)的想法誕生了)? ? ? ? 從1991年4月份起(let take this time as thestart),他通過修改終端仿真程序和硬件驅(qū)動程序,開始編制起自己的操作系統(tǒng)來。開始,他的目的很簡單,只是為了學(xué)習(xí)Intel 386 體系結(jié)構(gòu)保護模式運行方式下的編程技術(shù)。但后來Linux發(fā)展卻完全改變了初衷。(起始的時間)? ? ? ? 根據(jù)Linus 在comp.os.minix 新聞組上發(fā)布的消息,我們可以知道他逐步從學(xué)MINIX 系統(tǒng)階段發(fā)展到開發(fā)自己的Linux 系統(tǒng)的過程。(具體了解的來源)? ? ? ? Linus第1次向comp.os.minix 投遞消息是在1991年3月29日。所發(fā)帖子的題目是“gcc on minix-386doesn't optimize”,是有關(guān)gcc 編譯器在MINIX-386 系統(tǒng)上運行優(yōu)化的問題(由此可知,Linus在1991 年初期就已經(jīng)開始深入究了MINIX 系統(tǒng),并在這段時間有了改進MINIX 操作系統(tǒng)的思想。在進一步學(xué)習(xí)MINIX 系統(tǒng)之后,這個想法逐步演變成想重新設(shè)計一個基于Intel 80386 體系結(jié)構(gòu)的新操作系統(tǒng)的構(gòu)思。(思想的轉(zhuǎn)變)? ? ? ? 他在回答有人提出MINIX 上的一個問題時,所說的第一句話就是“閱讀源代碼”(“RTFSC (Read the F**ing Source Code :-)”)。他認(rèn)為答案就在源程序中。這也說明了對于學(xué)習(xí)系統(tǒng)軟件來說,我們不光需要懂得系統(tǒng)的工作基本原理,還需要結(jié)合實際系統(tǒng),學(xué)習(xí)實際系統(tǒng)的實現(xiàn)方法。因為理論畢竟是理論,其中省略了許多枝節(jié),而這些枝節(jié)問題雖然沒有太多的理論含量,但卻是一個系統(tǒng)必要的組成部分,就象麻雀身上的一根羽毛。(實踐的重要意義) (以下是按照時間順序進行介紹)? ? ? ? 從1991 年4 月 份開始,Linus 幾乎花費了全部時間研究MINIX-386 系統(tǒng)(Hacking the kernel),并且嘗試著移植GNU 的軟件到該系統(tǒng)上(GNU gcc、bash、gdb 等)。并于4 月13 日在comp.os.minix 上發(fā)布說自己已經(jīng)成功地將bash 移植到了MINIX 上,而且已經(jīng)愛不釋手、不能離開這個shell 軟件了。? ? ? ? 第一個與Linux 有關(guān)的消息是在1991 年7 月3日 在comp.os.minix 上發(fā)布的(當(dāng)然,那時還不存在Linux 這個名稱,當(dāng)時Linus 腦子里想的名稱可能是FREAX,F(xiàn)REAX 的英文含義是怪誕的、怪物、異想天開等)。其中透露了他正在進行Linux 系統(tǒng)的開發(fā),并且已經(jīng)想到要實現(xiàn)與POSIX 兼容的問題了。? ? ? ? 在Linus 另一個發(fā)布的消息中(1991 年8 月25日 comp.os.minix),他向所有MINIX 用戶詢問“Whatwould you like to see in minix?”(“你最想在MINIX系統(tǒng)中見到什么?”),在該消息中他首次透露出正在開發(fā)一個(免費的)386(486)操作系統(tǒng),并且說只是興趣而已,代碼不會很大,也不會象GNU 的那樣專業(yè)。希望大家反饋一些對于MINIX 系統(tǒng)中喜歡哪些特色不喜歡什么等信息,并且說明由于實際和其它一些原因,新開發(fā)的系統(tǒng)剛開始MINIX 很象(并且使用了MINIX的文件系統(tǒng))。并且已經(jīng)成功地將bash(1.08版)和gcc(1.40 版)移植到了新系統(tǒng)上,而且在過幾個月就可以實用了。最后,Linus 申明他開發(fā)的操作系統(tǒng)沒有使用一行MINIX 的源代碼;而且由于使用了386 的任務(wù)切換特性,所以該操作系統(tǒng)不好移植(沒有可移植性),并且只能使用AT 硬盤。對于Linux 的移植性問題,Linus當(dāng)時并沒有考慮。但是目前Linux 幾乎可以運行在任何一種硬件體系結(jié)構(gòu)上。? ? ? ? 到了1991 年的10 月5 日 ,Linus 在comp.os.minix 新聞組上發(fā)布消息,正式向外宣布Linux 內(nèi)核系統(tǒng)的誕生(Free minix-like kernel sources for 386-AT)。這段消息可以稱為Linux 的誕生宣言,并且一直廣為流傳。因此10 月5 日對Linux社區(qū)來說是一個特殊的日子,許多后來Linux 的新版本發(fā)布時都選擇了這個日子。所以RedHat 公司選擇這個日子發(fā)布它的新系統(tǒng)也不是偶然的。(產(chǎn)生的時間)
哈哈
一、簡單的說: 一個名叫Linus Torvalds 的芬蘭大學(xué)生想要了解Intel的新CPU386。他認(rèn)為比較好的學(xué)習(xí)方法是自己編寫一個操作系統(tǒng)的內(nèi)核。出于這種目的,加上他對當(dāng)時Unix 變種版本(即Minix)對于80386類機器的脆弱支持十分不滿,他決定要開發(fā)出一個全功能的、支持POSIX標(biāo)準(zhǔn)的、類Unix的操作系統(tǒng)內(nèi)核,該系統(tǒng)吸收了BSD和System V的優(yōu)點,同時摒棄了它們的缺點。Linus獨立把這個內(nèi)核開發(fā)到0.02 版,這個版本已經(jīng)可以運行g(shù)cc、bash 和很少的一些應(yīng)用程序。這些就是他開始的全部工作了。后來,他又開始在因特網(wǎng)上尋求廣泛的幫助。? 二、具體的分析: Linux 操作系統(tǒng)的誕生、發(fā)展和成長過程依賴于以下五個重要支柱:? ? ? ? ? ? UNIX 操作系統(tǒng)、? ? MINIX操作系統(tǒng)、? ? ? GNU 計劃、? ? ? POSIX 標(biāo)準(zhǔn) 、? Internet 網(wǎng)絡(luò)。? UNIX操作系統(tǒng)? ? ? ? Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一個克隆版本。UNIX 操作系統(tǒng)是美國貝爾實驗室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型計算機上開發(fā)的一個分時操作系統(tǒng)。Ken Thompson 為了能在閑置不用的PDP-7 計算機上運行他非常喜歡的星際旅行(Space travel)游戲,于是在1969 年夏天乘他夫人回家鄉(xiāng)加利福尼亞渡假期間,在一個月內(nèi)開發(fā)出了UNIX 操作系統(tǒng)的原型。當(dāng)時使用的是BCPL 語言(基本組合編程語言),后經(jīng)Dennis Ritchie 于1972 年用移植性很強的C語言進行了改寫,使得UNIX 系統(tǒng)在大專院校得到了推廣。 MINIX操作系統(tǒng)? ? ? ? MINIX 系統(tǒng)是由Andrew S. Tanenbaum(AST)開發(fā)的。AST 是在荷蘭Amsterdam 的Vrije 大學(xué)數(shù)學(xué)與計算機科學(xué)系統(tǒng)工作,是ACM 和IEEE 的資深會員(全世界也只有很少人是兩會的資深會員)。MINIX 是他1987 年編制的,主要用于學(xué)生學(xué)習(xí)操作系統(tǒng)原理。到1991 年時版本是1.5。目前主要有兩個版本在使用:1.5 版和2.0 版。當(dāng)然目前MINIX 系統(tǒng)已經(jīng)是免費的,可以從許多FTP 上下載。? ? ? ? 對于Linux 系統(tǒng),他后來曾表示對其開發(fā)者Linus的稱贊。但他認(rèn)為Linux的發(fā)展很大原因是由于他為了保持MINIX 的小型化,能讓學(xué)生在一個學(xué)期內(nèi)就能學(xué)完,因而沒有接納全世界許多人對MINIX的擴展要求。因此在這樣的前提下激發(fā)了Linus 編寫Linux 系統(tǒng)。當(dāng)然Linus 也正好抓住了這個好時機。? ? ? ? 作為一個操作系統(tǒng),MINIX 并不是優(yōu)秀者,但它同時提供了用C 語言和匯編語言編寫的系統(tǒng)源代碼。這是第一次使得有抱負(fù)的程序員或hacker 能夠閱讀操作系統(tǒng)的源代碼。在當(dāng)時,這種源代碼是軟件商們一直小心守護著的秘密。 GNU計劃? ? ? ? 軟件產(chǎn)業(yè)在70年代成就了兩位針鋒相對的領(lǐng)袖人物,來自哈佛大學(xué)的比爾·蓋茨和Richard M.Stallman。前者宣布了Copyright(版權(quán))時代的到來,并構(gòu)建了微軟帝國的輝煌;后者于1984年創(chuàng)立自由軟件體系GNU,擬定普遍公用版權(quán)協(xié)議(GeneralPublicLicense,簡稱GPL),今天Linux的成功就得益于GPL協(xié)議。? ? ? ? 所有GPL協(xié)議下的自由軟件都遵循著Richard M. Stallman的"Copyleft"(非版權(quán))原則:即自由軟件允許用戶自由拷貝、修改和銷售,但是對其源代碼的任何修改都必須向所有用戶公開。? ? ? ? GNU 計劃和自由軟件基金會FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手創(chuàng)辦的。旨在開發(fā)一個類似UNIX 并且是自由軟件的完整操作系統(tǒng):GNU 系統(tǒng)(GNU 是"GNU's Not Unix"的遞歸縮寫,它的發(fā)音為"guh-NEW")。? ? ? ? 各種使用Linux 作為核心的GNU 操作系統(tǒng)正在被廣泛的使用。雖然這些系統(tǒng)通常被稱作"Linux",但是Stallman 認(rèn)為,嚴(yán)格地說,它們應(yīng)該被稱為GNU/Linux系統(tǒng)。? ? ? ? 到上世紀(jì)90 年代初,GNU 項目已經(jīng)開發(fā)出許多高質(zhì)量的免費軟件,其中包括有名的emacs 編輯系統(tǒng)、bash shell 程序、gcc 系列編譯程序、gdb 調(diào)試程序等等。這些軟件為Linux 操作系統(tǒng)的開發(fā)創(chuàng)造了一個合適的環(huán)境。這是Linux 能夠誕生的基礎(chǔ)之一,以至于目前許多人都將Linux 操作系統(tǒng)稱為“GNU/Linux”操作系統(tǒng)。 POSIX標(biāo)準(zhǔn)? ? ? ? POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 開發(fā)的一簇標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)是基于現(xiàn)有的UNIX 實踐和經(jīng)驗,描述了操作系統(tǒng)的調(diào)用服務(wù)接口。用于保證編制的應(yīng)用程序可以在源代碼一級上在多種操作系統(tǒng)上移植和運行。它是在1980 年早期一個UNIX 用戶組(usr/group)的早期工作基礎(chǔ)上取得的。該UNIX 用戶組原來試圖將AT&T 的System V 操作系統(tǒng)和BerkeleyCSRG 的BSD 操作系統(tǒng)的調(diào)用接口之間的區(qū)別重新調(diào)和集成。并于1984 年定制出了/usr/group 標(biāo)準(zhǔn)。? ? ? ? 關(guān)于POSIX標(biāo)準(zhǔn)的制定過程:略。? ? ? ? 在90 年代初,POSIX 標(biāo)準(zhǔn)的制定正處在最后投票敲定的時候,那是1991-1993 年間。此時正是Linux剛剛起步的時候,這個UNIX 標(biāo)準(zhǔn)為Linux 提供了極為重要的信息,使得Linux 能夠在標(biāo)準(zhǔn)的指導(dǎo)下進行開發(fā),并能夠與絕大多數(shù)UNIX 操作系統(tǒng)兼容。在最初的Linux 內(nèi)核源代碼中(0.01 版、0.11 版)就已經(jīng)為Linux 系統(tǒng)與POSIX 標(biāo)準(zhǔn)的兼容做好了準(zhǔn)備工作。在Linux 0.01 版內(nèi)核的/include/unistd.h 文件中就已經(jīng)定義了幾個有關(guān)POSXI 標(biāo)準(zhǔn)要求的符號常數(shù),而且Linus 在注釋中已寫道:“OK,這也許是個玩笑,但我正在著手研究它呢”。