Linux發展史

Linux發展史

摘要:因為學習linux過程中對整個linux發展歷史只有一些模糊的理解,以本文來對linux發展史進行梳理來加深學習。

 

一、linux是什么

linux就是一套操作系統,如下圖操作系統就是內核與系統調用接口那

Linux只是一套操作系統并不包含其他應用程序。

blob.png

Linux提供了一個完整的操作系統當中最底層的硬件控制和資源管理的完整構架,這個是沿襲了Unix良好傳統而來的,所以相當穩定并且功能強大。

雖然linux僅是其內核與內核提供的工具,不過由于內核、內核工具與軟件開發者提供的軟件的整合使得linux成為一個更完整的、功能強大的操作系統

二、 Unix的歷史

Multics: 

    1969年以前:一個偉大的夢想——1965年左右美國AT&T公司貝爾實驗室(Bell),麻省理工學院(MIT),通用電氣公司(GE)的Multics.

但是到1969年前后,項目進度落后,資金也短缺,雖然該項目仍繼續在研究,但貝爾實驗室還是退出了該項目的研究工作。(最后雖然開發成功但是沒有受到很大重視,但是他培養的人才是相當優秀的)

1969年Ken Thompsonde的小型File Server System

      Ken Thompsonde為了移植一套太空旅行的游戲,用一臺PDP-7經過四個星期的奮斗終于以匯        編語言寫出了一組內核程序,同時包括一些內核工具程   序,以及一個小的文件系統,該系統就      是UNIX的原型

1973年:UNIX正式誕生,Ritchie等人以C語言寫出第一個正式的UNIX內核

     Ken Thompsonde與Ritchie合作想將UNIX該以更高級的程序語言來編寫,當時的高級程序有B語言,但     是B語言所編譯出來的內核性能不是很好,后來Dennis Ritchie將B語言重新改寫成C語言,再以C語言重新     改寫與編譯Unix的內核,最后發行出Unix的正式版本

   1977年:重要的UNIX分支——BSD誕生

       伯克利大學的Bill Joy將UNIX修改成適合自己機器的版本并且同時增加了很多工具軟件與編譯程序,最終將它命名為Berkeley Software Distrbution(BSD)。Bill Joy也是Sun公司的創辦者

   1979年:重要的System V 構架與版權聲明

       早期的UNIX只能與服務器(Server)或者大型工作站(Workstation)劃上等號,1979年AT&T推出      System V 第七版UNIX可以支持X86構架的個人計算機系統,可以在個人計算機上安裝與運行了。

   1984年之一:X86構架的Minix操作系統誕生

 Andrew Tanenbaum出于教學目的,在完全不看UNIX內核源碼的情況下,自己動手編寫出Minix,由于Andrew Tanenbaum認為Minix主要用在教育上所以對Minix是點到為止。

1984年之二:GNU項目與FSF基金成立

   1983年,理查德·馬修·斯托曼創立GNU計劃。這個計劃有一個目標,是為了發展一個完全自由的類  Unix操作系統。自1984年發起這個計劃以來,在1985年,理查德·馬修·斯托曼發起自由軟件基金會并  且在1989年撰寫GPL。1990年代早期,GNU開始大量的產生或收集各種系統所必備的組件,像是——庫、  編譯器、調試工具、文本編輯器、網頁服務器,以及一個Unix的用戶界面(Unix shell)——但是像一  些底層環境,如硬件驅動、守護進程運行內核(kernel)仍然不完整和陷于停頓,GNU計劃中是在馬赫微  核(Mach microkernel)的架構之上開發系統內核,也就是所謂的GNU Hurd,但是這個基于Mach的設計  異常復雜,發展進度則相對緩慢。林納斯·托瓦茲曾說過如果GNU內核在1991年時可以用,他不會自己去  寫一個。                      

blob.png

 理查德·馬修·斯托曼

Richard M. Stallman

 GNU計劃的創立者。

GNU的通用公共許可證:

    1985年,為了避免GNU所開發的自由軟件被其他人所利用而成為專利軟件, 所以他與律師草擬了有名    的通用公共許可證(General Public License,   GPL), 并且稱呼他為copyleft(相對于專利軟件的        copyright!)

1988年:圖形接口XFree86計劃

   有鑒于圖形用戶接口(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT與其他第三  方首次發表了X Window System ,并且更在1988年成立了非營利性質的XFree86這個組織。所謂的XFree86其實  是X Window System + Free + x86的整合名稱呢! 而這個XFree86GUI界面更在Linux的核心1.0版于1994年  釋出時,整合于Linux操作系統當中!

 1991年:芬蘭大學生Linus Torvalds的一則簡訊

     1991年,芬蘭的赫爾辛基大學的Linus TorvaldsBBS上面貼了一則消息, 宣稱他以bash, gcc等工    具寫了一個小小的核心程序,這個核心程序可以在Intel386機器上面運作, 讓很多人很感興趣!從此開始    了Linux不平凡的路程!

三、GUN:GNU計劃對于整個自由軟件來說是占有非常重要的角色!

自由的軟件活動:

1984年創立GNU計劃與FSF基金會的Stallman先生認為,寫程序最大的快樂就是讓自己發展的良好的軟件讓大家來使用了! 而既然程序是想要分享給大家使用的,不過,每個人所使用的計算機軟硬件并不相同, 既然如此的話,那么該程序的原始碼(Source code)就應該要同時釋出, 這樣才能方便大家修改而適用于每個人的計算機中呢!這個將原始碼連同軟件程序釋出的舉動, 就稱為自由軟件(Free Software)運動!

自由軟件的版權GNU GPL

而為了避免自己的開發出來的Open source自由軟件被拿去做成專利軟件, 于是Stallman同時將GNUFSF發展出來的軟件,都掛上GPL的版權宣告~ 這個FSF的核心觀念是『版權制度是促進社會進步的手段, 版權本身不是自然權力。

自由(Free)的真諦

          自由軟件的重點并不是指『免費』的,而是指具有『自由度, freedom』的軟件

自由度的意義是: 使用者可以自由的執行、復制、再發行、學習、修改與強化自由軟件。

取得軟件與原始碼:你可以根據自己的需求來執行這個自由軟件;

復制:你可以自由的復制該軟件;

修改:你可以將取得的原始碼進行程序修改工作,使之適合你的工作;

再發行:你可以將你修改過的程序,再度的自由發行,而不會與原先的撰寫者沖突;

回饋:你應該將你修改過的程序代碼回饋于社群!

特別注意:

修改授權:你不能將一個GPL授權的自由軟件,在你修改后而將他取消GPL授權~

單純販賣:你不能單純的販賣自由軟件。

三、Torvalds的Linux發展

Minix之間

Linus Torvalds (托瓦茲, 1969年出生)的外祖父是赫爾辛基大學的統計學家,1988Linus Torvalds進入赫爾辛基大學,在大學期間有接觸Minix的原始碼,托瓦茲也經由這個原始碼學習到了很多的核心程序設計的設計概念。

386硬件的多任務測試

     為了徹底發揮386的效能,于是托瓦茲花了不少時間在測試386機器上! 他的重要測試就是在測試386的多功效      能。首先,他寫了三個小程序,一個程序會持續輸出A、一個會持續輸出B 最后一個會將兩個程序進行切換。他將三個程序同時執行,結果,他看到屏幕上很順利的一直出現ABABAB…… 他知道,他成功了! ^_^ 

    

blob.png

初次發布Linux0.02

GNU計劃提供的bash工作環境軟件以及gcc編譯程序等自由軟件, 讓托瓦茲得以順利的撰寫核心程序。他參考Minix的設計理念與書上的程序代碼,然后仔細研究出386個人計算機的效能優化, 然后使用GNU的自由軟件將核心程序代碼與386緊緊的結合在一起,最終寫出他所需要的核心程序。 而這個小玩意竟然真的可以在386上面順利的跑起來~還可以讀取Minix的文件系統。 真是太好了!不過還不夠,他希望這個程序可以獲得大家的一些修改建議, 于是他便將這個核心放置在網絡上提供大家下載,同時在BBS上面貼了一則消息:

blob.png

他說,他完成了一個小小的操作系統,這個核心是用在386機器上的, 同時,他真的僅是好玩,并不是想要做一個跟GNU一樣大的計劃! 另外,他希望能夠得到更多人的建議與回饋來發展這個操作系統!這個概念跟Minix剛好背道而馳呢! 這則新聞引起很多人的注意,他們也去托瓦茲提供的網站上下載了這個核心來安裝。 有趣的是,因為托瓦茲放置核心的那個FTP網站的目錄為:Linux 從此,大家便稱這個核心為Linux了。(請注意,此時的Linux就是那個kernel喔! 另外,托瓦茲所丟到該目錄下的第一個核心版本為0.02呢!

Linux 的發展:虛擬團隊的產生

  • 單一個人維護階段

Linux雖然是托瓦茲發明的,而且內容還絕不會涉及專利軟件的版權問題。 不過,如果單靠托瓦茲自己一個人的話,那么Linux要茁壯實在很困難~ 因為一個人的力量是很有限的。好在托瓦茲選擇Linux的開發方式相當的務實! 首先,他將釋出的Linux核心放置在FTP上面,并請告知大家新的版本信息, 等到使用者下載了這個核心并且安裝之后,如果發生問題, 或者是由于特殊需求亟需某些硬件的驅動程序,那么這些使用者就會主動回報給托瓦茲。 在托瓦茲能夠解決的問題范圍內,他都能很快速的進行Linux核心的更新與除錯。

  • 廣大黑客志愿者加入階段

不過,托瓦茲總是有些硬件無法取得的啊,那么他當然無法幫助進行驅動程序的撰寫與相關軟件的改良,這個時候官大黑客志愿者自發加入寫出兼容的驅動程序或者軟件。 托瓦茲將該驅動程序/軟件帶入核心中,并且加以測試。 只要測試可以運行,并且沒有什么主要的大問題,那么他就會很樂意的將志愿者寫的程序代碼加入核心中!另外,為適應這種隨時都有程序代碼加入的狀況,于是Linux便逐漸發展成具有模塊的功能

  • 內核功能細部分工發展階段

§  因為Linux核心加入了太多的功能,光靠托瓦茲一個人進行核心的實際測試并加入核心原始程序實在太費力~ 結果,就有很多的朋友跳出來幫忙這個前置作業!例如考克斯(Alan Cox)、與崔迪(Stephen Tweedie)等等, 這些重要的副手會先將來自志工們的修補程序或者新功能的程序代碼進行測試, 并且結果上傳給托瓦茲看,讓托瓦茲作最后核心加入的原始碼的選擇與整并! 這個分層負責的結果,讓Linux的發展更加的容易!

§  特別值得注意的是,這些托瓦茲的Linux發展副手,以及自愿傳送修補程序的黑客志工, 其實都沒有見過面,而且彼此在地球的各個角落,大家群策群力的共同發展出現今的Linux, 我們稱這群人為虛擬團隊!而為了虛擬團隊數據的傳輸,于是Linux便成立的核心網站: http://www.kernel.org!而這群素未謀面的虛擬團隊們,在1994年終于完成的Linux的核心正式版!version 1.0。 這一版同時還加入了X Window System的支持呢!更于1996年完成了2.0版。此外,托瓦茲指明了企鵝為Linux的吉祥物。                 

blob.png

              

Linux的核心版本

Linux的核心版本編號有點類似如下的樣子:

blob.png

托瓦茲將內核的發展趨勢分為兩種并根據這兩股核心的發展分別給予不同的核心編號,那就是:

主、次版本為奇數:發展中版本(development)

主、次版本為偶數:穩定版本(stable)

Linux distributions

因為Linux早期都是由黑客工程師所開發維護的,他們并沒有考慮到一般使用者的能力…… 為了讓使用者能夠接觸到Linux,于是很多的商業公司或非營利團體, 就將Linux Kernel(tools)與可運行的軟件整合起來,加上自己具有創意的工具程序, 這個工具程序可以讓用戶以光盤/DVD或者透過網絡直接安裝/管理Linux系統。 這個『Kernel + Softwares + Tools的可完全安裝』的咚咚,我們稱之為Linux distribution, 一般中文翻譯成可完全安裝套件,或者Linux發行版等。    

blob.png

各大Linux Distributions的主要異同:支持標準!

為了讓所有的Linux distributions開發不致于差異太大,且讓這些開發商在開發的時候有所依據,還有Linux Standard Base (LSB)等標準來規范開發者,以及目錄架構的File system Hierarchy Standard (FHS)標準規范! 唯一差別的,可能就是該開發者自家所開發出來的管理工具,以及套件管理的模式。

Linux的特色

自由與開放的使用與學習環境

由于Linux是基于GPL的授權之下,因此他是自由軟件, 也就是任何人都可以自由的使用或者是修改其中的原始碼的意思!

配置需求低廉

Linux可以支持個人計算機的x86架構,系統資源不必像早先的Unix系統那般,僅適合于單一公司所出產的設備!

核心功能強大而穩定

而且由于Linux功能并不會輸給一些大型的Unix工作站,因此,近年來越來越多的公司或者是團體、 個人投入這一個操作系統的開發與整合工作!

獨立作業

由于很多的軟件套件逐漸被這套操作系統拿來使用,而很多套件軟件也都在 Linux這個操作系統上面進行發展與測試,因此,Linux近來已經可以獨力完成幾乎所有的工作站或服務器的服務了。

Linux的優缺點

優點:

穩定的系統、免費或少許費用、安全性、漏洞的快速修補、多任務、多使用者、使用者與群組的規劃、相對比較不耗資源的系統、適合需要小核心程序的嵌入式系統、整合度佳且多樣的圖形用戶接口(GUI)

缺點:

沒有特定的支持廠商、游戲的支持度不足、專業軟件的支持度不足、教育訓練作的還不夠好。

總結:

·  操作系統(Operation System)主要在管理與驅動硬件,因此必須要能夠管理內存、管理裝置、 負責行程管理以    及系統呼叫等等。因此,只要能夠讓硬件準備妥當(Ready)的情況, 就是一個性價比最好操作系統了。

·  性價比最好操作系統僅在驅動與管理硬件,而要使用硬件時,就得需要透過應用軟件或者是殼程序(shell) 的    功能,來呼叫操作系統操縱硬件工作。因此,目前稱為操作系統的, 除了上述功能外,通常已經包含了日常    工作所需要的應用軟件在內了。

·  Unix的前身是由貝爾實驗室(Bell lab.)的Ken Thompson利用匯編語言寫成的, 后來在1971-1973年間由Dennis    Ritchie以C程序語言進行改寫,才稱為Unix。

·  1977年由Bill Joy釋出BSD (Berkeley Software Distribution),這些稱為Unix-like的操作系統。

·  1984年由Andrew Tanenbaum制作出Minix操作系統,該系統可以提供原始碼以及軟件;

·  1984年由Richard Stallman提倡GNU計劃,倡導自由軟件(Free software), 強調其軟件可以『自由的取得、復    制、修改與再發行』,并規范出GPL授權模式, 任何GPL(General Public License)軟件均不可單純僅販賣其    軟件,也不可修改軟件授權。

·  1991年由芬蘭人Linus Torvalds開發出Linux操作系統。簡而言之,Linux成功的地方主要在于: Minix(Unix),    GNU, Internet, POSIX 及虛擬團隊的產生。

·  Linux本身就是個性價比最好的操作系統,其開發網站設立在http://www.kernel.org,我們亦稱Linux操作系統    最底層的數據為『核心(Kernel)』。

·  目前Linux核心的發展分為兩種版本,分別是穩定版本的偶數版,如2.6.X,適合于商業與家用環境使用; 一種    是發展中版本的奇數版如2.5.X 版,適合開發特殊功能的環境。

·  Linux distributions的組成含有:『Linux Kernel + Free Software + Documentations(Tools) + 可完全安    裝的程序』所制成的一套完整的系統。

原創文章,作者:征(_少,如若轉載,請注明出處:http://www.www58058.com/51040

(0)
征(_少征(_少
上一篇 2016-10-14
下一篇 2016-10-14

相關推薦

  • linux中的vim

    什么是vim:     Linux 在命令行下的文本編輯器,很多個別軟件的編輯接口都會主動調用vim,所以在 Linux 的系統中使用文字編輯器來編輯你的Linux參數配置文件,在 Linux 的世界中,絕大部分的配置文件都是以 ASCII 的純文本形態存在,因此利用簡單的文字編輯軟件就能夠修改設置.所有的Unix L…

    Linux干貨 2016-08-11
  • 文本處理(1)

    文本處理工具最全整理上半部

    Linux干貨 2018-03-15
  • 實驗:路由、bonding、team

    實驗:路由實驗 路由表構成目標網絡:網絡ID 子網掩碼接口:到達目標網絡,從哪個接口出來,此接口網關:gateway,下一個鄰近路由器的鄰近接口的IP地址,如果目標網絡和本路由器直接,網關的地址為接口的IP centos6 關閉NetworkManager服務chkconfig NetworkManagerservice NetworkManager sto…

    Linux干貨 2017-05-06
  • MooseFS性能圖表[原創]

    對MooseFS有了一定的了解,現在可以壓壓它的性能了,使用的是iozone IO測試工具。測試命令為:./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C測試說明1、/mnt/mfs/logs/test.tar.gz大小為9.2G,大于服務器…

    Linux干貨 2015-03-27
  • 文本處理工具之sed

                         文本處理工具之sed 一 、sed的簡介    1、Stream EDitor…

    2017-05-01
  • 編程語言編年史

          我們都知道,編程語言是一組用來定義計算機程序的語法規則。它是一種被標準化的交流語言,用來向計算機發出指令。一種計算機語言讓程序員能夠準確地定義計算機所需要使用的數據,并精確地定義在不同情況下所應當采取的行動。盡管人們多次試圖創造一種通用的程序設計語言,卻沒有一次嘗試是成功的。之所以有那么多種不同的編程語言存在的原因是…

    Linux干貨 2017-03-30
欧美性久久久久