Linux發(fā)展史以及簡介

姓名:家康育

學(xué)號(hào):21041211993

學(xué)院:機(jī)電工程學(xué)院

【嵌牛導(dǎo)讀】 了解一下Linux操作系統(tǒng)的發(fā)展史

【嵌牛鼻子】UNIX?MINIX Linux

【嵌牛提問】Linux發(fā)展的脈絡(luò)是什么?Linux的優(yōu)缺點(diǎn)是什么?

【嵌牛正文】

操作系統(tǒng)介紹

? ? ? ? 內(nèi)核負(fù)責(zé)控制硬件資源分配,而如果只有內(nèi)核,則只能讓計(jì)算機(jī)硬件運(yùn)行,而不能有任何功能,因此需要系統(tǒng)調(diào)用提供給開發(fā)者使用,從而開發(fā)應(yīng)用程序;內(nèi)核能夠控制硬件,比如:讓CPU可以運(yùn)算、讓硬盤可以讀寫數(shù)據(jù)等;只有內(nèi)核的話,只能讓計(jì)算機(jī)運(yùn)行,但是我們不能控制計(jì)算機(jī);而系統(tǒng)調(diào)用是操作系統(tǒng)提供給開發(fā)者的調(diào)用接口;任何硬件都不會(huì)默認(rèn)就被操作系統(tǒng)控制,而需要開發(fā)商根據(jù)操作系統(tǒng)提供的接口開發(fā)驅(qū)動(dòng)程序,只有安裝了驅(qū)動(dòng)程序才能夠控制硬件設(shè)備。

UNIX操作系統(tǒng)

? ? ? ? Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一個(gè)克隆版本。UNIX操作系統(tǒng)是美國貝爾實(shí)驗(yàn)室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型計(jì)算機(jī)上開發(fā)的一個(gè)分時(shí)操作系統(tǒng)。Ken Thompson 為了能在閑置不用的PDP-7 計(jì)算機(jī)上運(yùn)行他非常喜歡的星際旅行(Space travel)游戲,于是在1969 年夏天乘他夫人回家鄉(xiāng)加利福尼亞渡假期間,在一個(gè)月內(nèi)開發(fā)出了UNIX 操作系統(tǒng)的原型。當(dāng)時(shí)使用的是BCPL 語言(基本組合編程語言),后經(jīng)Dennis Ritchie 于1972 年用移植性很強(qiáng)的C語言進(jìn)行了改寫,使得UNIX 系統(tǒng)在大專院校得到了推廣。

MINIX操作系統(tǒng)

? ? ? ? MINIX 系統(tǒng)是由Andrew S. Tanenbaum(AST)開發(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),他后來曾表示對(duì)其開發(fā)者Linus的稱贊。但他認(rèn)為Linux的發(fā)展很大原因是由于他為了保持MINIX 的小型化,能讓學(xué)生在一個(gè)學(xué)期內(nèi)就能學(xué)完,因而沒有接納全世界許多人對(duì)MINIX的擴(kuò)展要求。因此在這樣的前提下激發(fā)了Linus 編寫Linux 系統(tǒng)。當(dāng)然Linus 也正好抓住了這個(gè)好時(shí)機(jī)。

? ? ? ? 作為一個(gè)操作系統(tǒng),MINIX 并不是優(yōu)秀者,但它同時(shí)提供了用C語言和匯編語言編寫的系統(tǒng)源代碼。這是第一次使得有抱負(fù)的程序員或hacker能夠閱讀操作系統(tǒng)的源代碼。在當(dāng)時(shí),這種源代碼是軟件商們一直小心守護(hù)著的秘密。

GNU計(jì)劃

? ? ? ? 軟件產(chǎn)業(yè)在70年代成就了兩位針鋒相對(duì)的領(lǐng)袖人物,來自哈佛大學(xué)的比爾·蓋茨和Richard M.Stallman。前者宣布了Copyright(版權(quán))時(shí)代的到來,并構(gòu)建了微軟帝國的輝煌;后者于1984年創(chuàng)立自由軟件體系GNU,擬定普遍公用版權(quán)協(xié)議(GeneralPublicLicense,簡稱GPL),今天Linux的成功就得益于GPL協(xié)議。

? ? ? ? 所有GPL協(xié)議下的自由軟件都遵循著Richard M. Stallman的"Copyleft"(非版權(quán))原則:即自由軟件允許用戶自由拷貝、修改和銷售,但是對(duì)其源代碼的任何修改都必須向所有用戶公開。

? ? ? ? GNU計(jì)劃和自由軟件基金會(huì)FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手創(chuàng)辦的。旨在開發(fā)一個(gè)類似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 項(xiàng)目已經(jīng)開發(fā)出許多高質(zhì)量的免費(fèi)軟件,其中包括有名的emacs 編輯系統(tǒng)、bash shell 程序、gcc 系列編譯程序、gdb 調(diào)試程序等等。這些軟件為Linux 操作系統(tǒng)的開發(fā)創(chuàng)造了一個(gè)合適的環(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 實(shí)踐和經(jīng)驗(yàn),描述了操作系統(tǒng)的調(diào)用服務(wù)接口。用于保證編制的應(yīng)用程序可以在源代碼一級(jí)上在多種操作系統(tǒng)上移植和運(yùn)行。它是在1980 年早期一個(gè)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)。

? ? ? ? 在90 年代初,POSIX 標(biāo)準(zhǔn)的制定正處在最后投票敲定的時(shí)候,那是1991-1993 年間。此時(shí)正是Linux剛剛起步的時(shí)候,這個(gè)UNIX 標(biāo)準(zhǔn)為Linux 提供了極為重要的信息,使得Linux 能夠在標(biāo)準(zhǔn)的指導(dǎo)下進(jìn)行開發(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)定義了幾個(gè)有關(guān)POSXI 標(biāo)準(zhǔn)要求的符號(hào)常數(shù),而且Linus 在注釋中已寫道:“OK,這也許是個(gè)玩笑,但我正在著手研究它呢”。

Internet 網(wǎng)絡(luò)

? ? ? ? Internet是linux開發(fā)、交流、發(fā)展的信息和資源的交流平臺(tái)。

Linux簡單介紹

Linux核心理念:萬物皆文件;

? ? ? ? Linux:是一個(gè)內(nèi)核,而不是一個(gè)操作系統(tǒng);因此我們平常說的“操作系統(tǒng)用的是Windows、Mac還是Linux啊?”是錯(cuò)誤的,Ubuntu、Fedora等才是操作系統(tǒng)的名字,他們都使用Linux內(nèi)核;

? ? ? ? 1991年最初由Linus Torvalds針對(duì)386(個(gè)人計(jì)算機(jī))開發(fā);Linus Torvalds那時(shí)是芬蘭的一名研究生;

? ? ? ? Unix Like:很像Unix的操作系統(tǒng);

? ? ? ? 蘋果電腦為什么現(xiàn)在能裝Windows操作系統(tǒng)?因?yàn)樘O果使用了Intel的X86架構(gòu),而windows也是針對(duì)此架構(gòu)的,因此按理論來說一般的PC上也可以安裝mac操作系統(tǒng);

? ? ? ? Linux的吉祥物是企鵝(英文名:Tux),因?yàn)門orvalds在小時(shí)候被企鵝咬過,因此印象非常深刻;

? ? ? ? Unix和Linux的代碼是由90%的C語言和10%的匯編組成,因此只需要稍加修改,就能移植到其他硬件上;

Linux的優(yōu)缺點(diǎn)

1、Linux的優(yōu)點(diǎn)

? ? ? ? 1.開放的學(xué)習(xí)環(huán)境;

? ? ? ? 2.漏洞快速修補(bǔ);

? ? ? ? 3.因?yàn)閮?nèi)核只有幾百k,因此適合嵌入式系統(tǒng);

2、Linux的缺點(diǎn)

? ? ? ? 1.有些專業(yè)軟件沒有Linux版本;

Linux發(fā)展史

* 1969年以前:一個(gè)沒有完成的夢(mèng)想:Bell,MIT與GE的‘Multics’系統(tǒng)

? ? ? ? 早期的電腦并不像現(xiàn)在的個(gè)人電腦一樣普遍,他可不是一般人碰的起的呢~ 除非是軍事或者是高科技用途,或者是學(xué)術(shù)單位的學(xué)術(shù)研究,否則真的很難接觸到。 非但如此,早期的電腦架構(gòu)還很難使用,除了運(yùn)算速度并不快之外,操作介面也很困擾的! 因?yàn)槟莻€(gè)時(shí)候的輸入設(shè)備只有讀卡機(jī)、輸出設(shè)備只有印表機(jī), 使用者也無法與作業(yè)系統(tǒng)互動(dòng)(批次型作業(yè)系統(tǒng))。

? ? ? ? 在那個(gè)時(shí)候,寫程式是件很可憐的事情,因?yàn)槌淌皆O(shè)計(jì)者,必須要將程式相關(guān)的資訊在讀卡紙上面打洞, 然后再將讀卡紙插入讀卡機(jī)來將資訊讀入主機(jī)中運(yùn)算。光是這樣就很麻煩了,如果程式有個(gè)小地方寫錯(cuò), 哈哈!光是重新打卡就很慘,加上主機(jī)少,使用者眾多,光是等待,就耗去很多的時(shí)間了!

? ? ? ? 在那之后,由于硬體與作業(yè)系統(tǒng)的改良,使得后來可以使用鍵盤來進(jìn)行資訊的輸入。 不過,在一間學(xué)校里面,主機(jī)畢竟可能只有一部,如果多人等待使用,那怎么辦?大家還是得要等待?。?好在1960年代初期麻省理工學(xué)院(MIT)發(fā)展了所謂的: ‘相容分時(shí)系統(tǒng)(Compatible Time-Sharing System, CTSS)’, 它可以讓大型主機(jī)透過提供數(shù)個(gè)終端機(jī)(terminal)以連線進(jìn)入主機(jī),來利用主機(jī)的資源進(jìn)行運(yùn)算工作。 架構(gòu)有點(diǎn)像這樣:

? ? ? ? Tips:這個(gè)相容分時(shí)系統(tǒng)可以說是近代作業(yè)系統(tǒng)的始祖呢!他可以讓多個(gè)使用者在某一段時(shí)間內(nèi)分別使用CPU的資源, 感覺上你會(huì)覺得大家是同時(shí)使用該主機(jī)的資源!事實(shí)上,是CPU在每個(gè)使用者的工作之間進(jìn)行切換, 在當(dāng)時(shí),這可是個(gè)劃時(shí)代的技術(shù)喔!

? ? ? ? 如此一來,無論主機(jī)在哪里,只要在終端機(jī)前面進(jìn)行輸入輸出的作業(yè),就可利用主機(jī)提供的功能了。 不過,需要注意的是,此時(shí)終端機(jī)只具有輸入/輸出的功能,本身完全不具任何運(yùn)算或者軟體安裝的能力。 而且,比較先進(jìn)的主機(jī)大概也只能提供30個(gè)不到的終端機(jī)而已。

? ? ? ? 為了更加強(qiáng)化大型主機(jī)的功能,以讓主機(jī)的資源可以提供更多使用者來利用,所以在1965年前后, 由貝爾實(shí)驗(yàn)室(Bell)、麻省理工學(xué)院(MIT)及奇異公司(GE)共同發(fā)起了Multics的計(jì)畫, Multics計(jì)畫的目的是想要讓大型主機(jī)可以達(dá)成提供300個(gè)以上的終端機(jī)連線使用的目標(biāo)。 不過,到了1969年前后,計(jì)畫進(jìn)度落后,資金也短缺,所以該計(jì)畫雖然繼續(xù)在研究,但貝爾還是退出了該計(jì)畫的研究工作。 (注:Multics有復(fù)雜、多數(shù)的意思存在。)

? ? ? ? Tips:最終Multics還是有成功的發(fā)展出他們的系統(tǒng),完整的歷史說明可以參考: http://www.multicians.org/網(wǎng)站內(nèi)容。 Multics計(jì)畫雖然后來沒有受到很大的重視,但是他培養(yǎng)出來的人才是相當(dāng)優(yōu)秀的! ^_^

* 1969年:Ken Thompson的小型file server system

? ? ? ? 在認(rèn)為Multics計(jì)劃不可能成功之后,貝爾研究室就退出該計(jì)畫。不過,原本參與Multics計(jì)畫的人員中,已經(jīng)從該計(jì)畫當(dāng)中獲得一些點(diǎn)子, Ken Thompson 就是其中一位!

? ? ? ? Thompson因?yàn)樽约旱男枰?,希望開發(fā)一個(gè)小小的作業(yè)系統(tǒng)以提供自己的需求。 在開發(fā)時(shí),有一部DEC(Digital Equipment Corporation)公司推出的PDP-7剛好沒人使用, 于是他就準(zhǔn)備針對(duì)這部主機(jī)進(jìn)行作業(yè)系統(tǒng)核心程式的撰寫。本來Thompson應(yīng)該是沒時(shí)間的(有家有小孩的宿命?), 無巧不巧的是,在1969年八月份左右,剛好Thompson的妻兒去了美西探親, 于是他有了額外的一個(gè)月的時(shí)間好好的待在家將一些構(gòu)想實(shí)現(xiàn)出來!

? ? ? ? 經(jīng)過四個(gè)星期的奮斗,他終于以組合語言(Assembler)寫出了一組核心程式,同時(shí)包括一些核心工具程式, 以及一個(gè)小小的檔案系統(tǒng)。那個(gè)系統(tǒng)就是Unix的原型! 當(dāng)時(shí)Thompson將Multics龐大的復(fù)雜系統(tǒng)簡化了不少,于是同實(shí)驗(yàn)室的朋友都戲稱這個(gè)系統(tǒng)為:Unics。(當(dāng)時(shí)尚未有Unix的名稱)。

? ? ? ? Thompson 的這個(gè)檔案系統(tǒng)有兩個(gè)重要的概念,分別是:

? ? ? ? ? ? ? ? * 所有的程式或系統(tǒng)裝置都是檔案

? ? ? ? ? ? ? ? * 不管建構(gòu)編輯器還是附屬檔案,所寫的程式只有一個(gè)目的,且要有效的完成目標(biāo)。

? ? ? ? 這些概念在后來對(duì)于Linux的發(fā)展有相當(dāng)重要的影響喔!

? ? ? ? Tips:套一句常聽到的廣告詞:‘科技始終來自于人性’,當(dāng)初Thompson會(huì)寫這套Unix核心程式,卻是想要移植一套名為‘太空旅游’的游戲呢! ^_^。

* 1973年:Unix的正式誕生,Ritchie等人以C語言寫出第一個(gè)正式Unix核心

? ? ? ? 由于Thompson寫的那個(gè)作業(yè)系統(tǒng)實(shí)在太好用了,所以在貝爾實(shí)驗(yàn)室內(nèi)部廣為流傳,并且數(shù)度經(jīng)過改版。 但是因?yàn)閁nics本來是以組合語言寫成的,而如第零章計(jì)算機(jī)概論談到的, 組合語言具有專一性,加上當(dāng)時(shí)的機(jī)器都不太相同,所以每次要安裝到不同的機(jī)器都得要重新編寫組合語言,真不方便!

? ? ? ? 后來Thompson與Ritchie合作想將Unics改以高階程式語言來撰寫。當(dāng)時(shí)現(xiàn)成的高階程式語言有B語言。 但是由B語言所編譯出來的核心效能不是很好。后來Dennis Ritchie將B語言重新改寫成C語言,再以C語言重新改寫與編譯Unics的核心, 最后正名與發(fā)行出Unix的正式版本!

? ? ? ? Tips:這群高級(jí)駭客實(shí)在很厲害!因?yàn)樽约旱男枨髞黹_發(fā)出這么多好用的工具! C程式語言開發(fā)成功后,甚至一直沿用至今呢!你說厲不厲害?。∵@個(gè)故事也告訴我們,不要小看自己的潛能喔! 你想作的,但是現(xiàn)實(shí)生活中沒有的,就動(dòng)手自己搞一個(gè)來玩玩吧!

? ? ? ? 由于貝爾實(shí)驗(yàn)室是隸屬于美國電信大廠AT&T公司的, 只是AT&T當(dāng)時(shí)忙于其他商業(yè)活動(dòng),對(duì)于Unix并不支持也不排斥。此外,Unix在這個(gè)時(shí)期的發(fā)展者都是貝爾實(shí)驗(yàn)室的工程師, 這些工程師對(duì)于程式當(dāng)然相當(dāng)有研究,所以,Unix在此時(shí)當(dāng)然是不容易被一般人所接受的!

? ? ? ? 需要特別強(qiáng)調(diào)的是,由于Unix是以較高階的C語言寫的,相對(duì)于組合語言需要與硬體有密切的配合, 高階的C語言與硬體的相關(guān)性就沒有這么大了!所以,這個(gè)改變也使得Unix很容易被移植到不同的機(jī)器上面喔!

* 1977年:重要的Unix分支:BSD的誕生

? ? ? ? 雖然貝爾屬于AT&T,但是AT&T此時(shí)對(duì)于Unix是采取較開放的態(tài)度,此外,Unix是以高階的C語言寫成的, 理論上是具有可移植性的!亦即只要取得Unix的原始碼,并且針對(duì)大型主機(jī)的特性加以修訂原有的原始碼(Source Code), 就可能將Unix移植到另一部不同的主機(jī)上頭了。所以在1973年以后,Unix便得以與學(xué)術(shù)界合作開發(fā)! 最重要的接觸就是與加州柏克萊(Berkeley)大學(xué)的合作了。

? ? ? ? 柏克萊大學(xué)的Bill Joy在取得了Unix的核心原始碼后,著手修改成適合自己機(jī)器的版本, 并且同時(shí)增加了很多工具軟體與編譯程式,最終將它命名為Berkeley Software Distribution (BSD)。這個(gè)BSD是Unix很重要的一個(gè)分支,Bill Joy也是Unix業(yè)者‘Sun(升陽)’這家公司的創(chuàng)辦者! Sun公司即是以BSD發(fā)展的核心進(jìn)行自己的商業(yè)Unix版本的發(fā)展的。 (后來可以安裝在x86硬體架構(gòu)上面FreeBSD即是BSD改版而來!)

* 1979年:一個(gè)措手不及的版權(quán)宣告!

? ? ? ? 由于Unix的高度可移植性與強(qiáng)大的效能,加上當(dāng)時(shí)并沒有版權(quán)的糾紛, 所以讓很多商業(yè)公司開始了Unix作業(yè)系統(tǒng)的發(fā)展,例如AT&T自家的System V、IBM的AIX以及HP與DEC等公司, 都有推出自家的主機(jī)搭配自己的Unix作業(yè)系統(tǒng)。

? ? ? ? 但是,如同我們前面提到的,作業(yè)系統(tǒng)的核心(Kernel)必須要跟硬體配合, 以提供及控制硬體的資源進(jìn)行良好的工作!而在早期每一家生產(chǎn)電腦硬體的公司還沒有所謂的‘協(xié)定’的概念, 所以每一個(gè)電腦公司出產(chǎn)的硬體自然就不相同啰!因此他們必須要為自己的電腦硬體開發(fā)合適的Unix系統(tǒng)。 例如在學(xué)術(shù)機(jī)構(gòu)相當(dāng)有名的Sun、Cray與HP就是這一種情況。 他們開發(fā)出來的Unix作業(yè)系統(tǒng)以及內(nèi)含的相關(guān)軟體并沒有辦法在其他的硬體架構(gòu)下工作的! 另外,由于沒有廠商針對(duì)個(gè)人電腦設(shè)計(jì)Unix系統(tǒng),因此,在早期并沒有支援個(gè)人電腦的Unix作業(yè)系統(tǒng)的出現(xiàn)。

? ? ? ? Tips:如同相容分時(shí)系統(tǒng)的功能一般,Unix強(qiáng)調(diào)的是多人多工的環(huán)境! 但早期的286個(gè)人電腦架構(gòu)下的CPU是沒有能力達(dá)到多工的作業(yè),因此,并沒有人對(duì)移植Unix到x86的電腦上有興趣。

? ? ? ? 每一家公司自己出的Unix雖然在架構(gòu)上面大同小異,但是卻真的僅能支援自身的硬體, 所以啰,早先的Unix只能與伺服器(Server)或者是大型工作站(Workstation)劃上等號(hào)!

? ? ? ? 但是這個(gè)高度開放的Unix系統(tǒng)在1979年有了重大的轉(zhuǎn)折~因?yàn)锳T&T由于商業(yè)的考量, 以及在當(dāng)時(shí)現(xiàn)實(shí)環(huán)境下的思考,于是將想U(xiǎn)nix的版權(quán)收回去。因此,AT&T在1979年發(fā)行的第七版Unix中,特別提到了 ‘不可對(duì)學(xué)生提供原始碼’的嚴(yán)格限制! 同時(shí),也造成Unix業(yè)界之間的緊張氣氛,并且也引爆了很多的商業(yè)糾紛~。

? ? ? ? Tips:AT&T這一版開發(fā)出來的Unix被稱為System V,目前被稱為純種的Unix指的就是System V以及BSD這兩套啰!

* 1984年之一:x86架構(gòu)的Minix誕生

? ? ? ? 關(guān)于1979年的版權(quán)聲明中,影響最大的當(dāng)然就是學(xué)校教Unix核心原始碼相關(guān)學(xué)問的教授了! 想一想,如果沒有核心原始碼,那么如何教導(dǎo)學(xué)生認(rèn)識(shí)Unix呢?這問題對(duì)于Andrew Tanenbaum(譚寧邦)教授來說,實(shí)在是很傷腦筋的!不過,學(xué)校的課程還是得繼續(xù)啊!那怎么辦?

? ? ? ? 既然1979年的Unix第七版可以在Intel的x86架構(gòu)上面進(jìn)行移植, 那么是否意味著可以將Unix改寫并移植到x86上面了呢?在這個(gè)想法上, 譚寧邦教授于是乎自己動(dòng)手寫了Minix這個(gè)Unix Like的核心程式! 在撰寫的過程中,為了避免版權(quán)糾紛,譚寧邦完全不看Unix核心原始碼! 并且強(qiáng)調(diào)他的Minix必須能夠與Unix相容才行!譚寧邦在1984年開始撰寫核心程式, 到了1986年終于完成,并于次年出版Minix相關(guān)書籍,同時(shí)與新聞群組(BBS及News)相結(jié)合~。

? ? ? ? Tips:之所以稱為Minix的原因,是因?yàn)樗莻€(gè)Mini的Unix系統(tǒng)啰!^_^。

? ? ? ? 這個(gè)Minix版本比較有趣的地方是,他并不是完全免費(fèi)的,無法在網(wǎng)路上提供下載! 必須要透過磁片/磁帶購買才行!雖然真的很便宜~不過,畢竟因?yàn)闆]有在網(wǎng)路上流傳, 所以Minix的傳遞速度并沒有很快速!此外,購買時(shí),隨磁片還會(huì)附上Minix的原始碼! 這意味著使用者可以學(xué)習(xí)Minix的核心程式設(shè)計(jì)概念喔! (這個(gè)特色對(duì)于Linux的啟始開發(fā)階段,可是有很大的關(guān)系喔!)

? ? ? ? 此外,Minux作業(yè)系統(tǒng)的開發(fā)者僅有譚寧邦教授,因?yàn)閷W(xué)者很忙啊!加上譚寧邦始終認(rèn)為Minix主要用在教育用途上面, 所以對(duì)于Minix是點(diǎn)到為止!沒錯(cuò),Minix是很受歡迎,不過,使用者的要求/需求的聲音可能就比較沒有辦法上升到比較高的地方了! 這樣說,你明白吧?^_^。

* 1984年之二:GNU計(jì)畫與FSF基金會(huì)的成立

? ? ? ? Richard Mathew Stallman(史托曼)在1984年發(fā)起的GNU計(jì)畫,對(duì)于現(xiàn)今的自由軟體風(fēng)潮, 真有不可磨滅的地位!目前我們所使用得很多自由軟體,幾乎均直接或間接助益于GNU這個(gè)計(jì)畫呢! 那么史托曼是何許人也?為何他會(huì)發(fā)起這個(gè)GNU計(jì)畫呢?

?* 一個(gè)分享的環(huán)境:

? ? ? ? Richard Mathew Stallman(生于1953年, 網(wǎng)路上自稱的ID為RMS)從小就很聰明!他在1971年的時(shí)候,進(jìn)入駭客圈中相當(dāng)出名的人工智慧實(shí)驗(yàn)室(AI Lab.), 這個(gè)時(shí)候的駭客專指電腦功力很強(qiáng)的人,而非破壞電腦的怪客(cracker)喔!

? ? ? ? 當(dāng)時(shí)的駭客圈對(duì)于軟體的著眼點(diǎn)幾乎都是在‘分享’,所以并沒有專利方面的困擾! 這個(gè)特色對(duì)于史托曼的影響很大!不過,后來由于管理階層的問題,導(dǎo)致實(shí)驗(yàn)室的優(yōu)秀駭客離開該實(shí)驗(yàn)室, 并且進(jìn)入其他商業(yè)公司繼續(xù)發(fā)展優(yōu)秀的軟體。但史托曼并不服輸,仍然持續(xù)在原來的實(shí)驗(yàn)室開發(fā)新的程式與軟體。 后來,他發(fā)現(xiàn)到,自己一個(gè)人并無法完成所有的工作,于是想要成立一個(gè)開放的團(tuán)體來共同努力!

? ? ? ? * 使用Unix開發(fā)階段:

? ? ? ? 1983年以后,因?yàn)閷?shí)驗(yàn)室硬體的更換,使得史托曼無法繼續(xù)以原有的硬體與作業(yè)系統(tǒng)繼續(xù)自由程式的撰寫~ 而且他進(jìn)一步發(fā)現(xiàn)到,過去他所使用的Lisp作業(yè)系統(tǒng),是麻省理工學(xué)院的專利軟體, 是無法共享的,這對(duì)于想要成立一個(gè)開放團(tuán)體的史托曼是個(gè)阻礙。于是他便放棄了Lisp這個(gè)系統(tǒng)。 后來,他接觸到Unix這個(gè)系統(tǒng),并且發(fā)現(xiàn),Unix在理論與實(shí)際上,都可以在不同的機(jī)器間進(jìn)行移植。 于是他開始轉(zhuǎn)而使用Unix系統(tǒng)。

? ? ? ? 因?yàn)長isp與Unix是不同的系統(tǒng),所以,他原本已經(jīng)撰寫完畢的軟體是無法在Unix上面運(yùn)行的!為此, 他就開始將軟體移植到Unix上面。并且,為了讓軟體可以在不同的平臺(tái)上運(yùn)作, 因此,史托曼將他發(fā)展的軟體均撰寫成可以移植的型態(tài)!也就是他都會(huì)將程式的原始碼公布出來!

? ? ? ? * GNU計(jì)畫的推展:

? ? ? ? 1984年,史托曼開始GNU計(jì)畫, 這個(gè)計(jì)畫的目的是想要:建立一個(gè)自由的開放的Unix作業(yè)系統(tǒng)(Free Unix)。 但是建立一個(gè)作業(yè)系統(tǒng)談何容易??!而且在當(dāng)時(shí)的GNU是僅有自己一個(gè)人單打獨(dú)斗的史托曼~ 這實(shí)在太麻煩,但又不能不做這個(gè)計(jì)畫,于是史托曼反其道而行~‘既然作業(yè)系統(tǒng)太復(fù)雜, 我就先寫可以在Unix上面運(yùn)行的小程式,這總可以了吧?呵呵!’在這個(gè)想法上, 史托曼便開始了程式的寫作。在寫作期間,為了不讓自己吃上官司,他絕對(duì)不看專利軟體的原始碼! 為了這個(gè)計(jì)畫,他開始使用原本Unix上面跑的軟體, 并自行撰寫功能與Unix原有專利軟體相仿的軟體。

?但不論是什么軟體,都得要進(jìn)行編譯成為二進(jìn)位檔案(binary file)后才能夠執(zhí)行, 因此他便開始撰寫C語言的編譯器,那就是現(xiàn)在相當(dāng)有名的GNU C Compiler(gcc)! 這個(gè)點(diǎn)相當(dāng)?shù)闹匾?!這是因?yàn)镃語言編譯器版本眾多,但都是專利軟體, 如果他寫的C編譯器夠棒,效能夠佳,那么將會(huì)大大的讓GNU計(jì)畫出現(xiàn)在眾人眼前!

? ? ? ? Tips:電腦僅認(rèn)識(shí)0/1的資料,但是人類不認(rèn)識(shí)啊!人類對(duì)于純文字的資料(就是所謂的ASCII檔案格式)比較有感覺。 但是偏偏電腦又不認(rèn)識(shí)ASCII格式的文字,很頭痛,不是嗎? 后來就有所謂的‘編譯器’來輔助我們。

? ? ? ? 我們一般使用文字編輯器以ASCII純文字格式來撰寫程式, 再透過所謂的‘編譯器(compiler)’將剛剛完成的文字檔案‘編譯’成為電腦認(rèn)識(shí)的二進(jìn)位制(binary file)的檔案, 以讓電腦認(rèn)識(shí)且可以執(zhí)行的程式??!

? ? ? ? 但開始時(shí)并不順利,為此,他先轉(zhuǎn)而將Emacs編輯器寫成可以在Unix上面跑的軟體,并公開公布原始碼。 Emacs是一種程式編輯器,他可以在使用者撰寫程式的過程中就進(jìn)行程式語法的檢驗(yàn),此一功能可以減少程式設(shè)計(jì)師除錯(cuò)的時(shí)間! 因?yàn)镋macs太優(yōu)秀了,因此,很多人便直接向他購買。

? ? ? ? 此時(shí)網(wǎng)際網(wǎng)路尚未流行,所以,史托曼便藉著Emacs以磁帶(tape)出售,賺了一點(diǎn)錢 ,進(jìn)而開始全力撰寫其他軟體。并且成立自由軟體基金會(huì)(FSF, Free Software Foundation),請(qǐng)更多工程師與志工撰寫軟體。終于還是完成了GCC,這比Emacs還更有幫助! 此外,了更他還撰寫多可以被呼叫的C函式庫(GNU C library),以及可以被使用來操作作業(yè)系統(tǒng)的基本介面BASH shell! 這些都在1990年左右完成了!

? ? ? ? Tips:如果純粹使用文字編輯器來編輯程式的話,那么程式語法如果寫錯(cuò)時(shí), 只能利用編譯時(shí)發(fā)生的錯(cuò)誤訊息來修訂了,這樣實(shí)在很沒有效率。 Emacs則是一個(gè)很棒的編輯器!注意!是編輯(editor)而非編譯(compiler)! 他可以很快的立刻顯示出你寫入的語法可能有錯(cuò)誤的地方,這對(duì)于程式設(shè)計(jì)師來說, 實(shí)在是一個(gè)好到不能再好的工具了!所以才會(huì)這么的受到歡迎??!

* GNU的通用公共許可證:

? ? ? ? 到了1985年,為了避免GNU所開發(fā)的自由軟體被其他人所利用而成為專利軟體, 所以他與律師草擬了有名的通用公共許可證(General Public License, GPL), 并且稱呼他為copyleft(相對(duì)于專利軟體的copyright!)。有GNU所開發(fā)的幾個(gè)重要軟體,如:

? ? ? ? * Emacs

? ? ? ? * GNU C (GCC)

? ? ? ? * GNU C Library (glibc)

? ? ? ? * Bash shell

? ? ? ? 造成后來很多的軟體開發(fā)者可以藉由這些基礎(chǔ)的工具來進(jìn)行程式開發(fā)! 進(jìn)一步壯大了自由軟體團(tuán)體!這是很重要的!不過,對(duì)于GNU的最初構(gòu)想 ‘建立一個(gè)自由的Unix作業(yè)系統(tǒng)’來說,有這些優(yōu)秀的程式是仍無法滿足, 因?yàn)?,?dāng)下并沒有‘自由的Unix核心’存在...所以這些軟體仍只能在那些有專利的 Unix平臺(tái)上工作~~一直到Linux的出現(xiàn)...更多的FSF開發(fā)的軟體可以參考如下網(wǎng)頁:

? ? ? ? * https://www.fsf.org/resources

* 1988年:圖形介面XFree86計(jì)畫

? ? ? ? 有鑒于圖形使用者介面(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT與其他協(xié)力廠商首次發(fā)表了X Window System ,并且更在1988年成立了非營利性質(zhì)的XFree86這個(gè)組織。所謂的XFree86其實(shí)是 X Window System + Free + x86的整合名稱呢! 而這個(gè)XFree86的GUI介面更在Linux的核心1.0版于1994年釋出時(shí),整合于Linux作業(yè)系統(tǒng)當(dāng)中!

? ? ? ? Tips:為什么稱圖形使用者介面為X呢?因?yàn)橛捎⑽膯巫謥砜矗琖indow的W 接的就是X啦!意指Window的下一版就是了! 需注意的是,X Window并不是X Windows喔!

* 1991年:芬蘭大學(xué)生Linus Torvalds的一則簡訊

? ? ? ? 到了1991年,芬蘭的赫爾辛基大學(xué)的Linus Torvalds在BBS上面貼了一則消息, 宣稱他以bash, gcc等工具寫了一個(gè)小小的核心程式,這個(gè)核心程式可以在Intel的386機(jī)器上面運(yùn)作, 讓很多人很感興趣!從此開始了Linux不平凡的路程!

Linux重要人物

1、Ken Thompson:C語言之父和Unix之父

2.Dennis Ritchie:C語言之父和Unix之父;

3.Stallman:著名黑客,GNU創(chuàng)始人,開發(fā)了Emacs、gcc、bash shell;

4.Bill Joy:BSD開發(fā)者;

5.Tanenbaum:Minix開發(fā)者;

6.Linus Torvalds:Linux之父,芬蘭赫爾辛基大學(xué);

轉(zhuǎn)載:https://blog.csdn.net/zengxiantao1994/article/details/53141747

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容