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