萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

點擊上方 "程序員小樂"關注, 星標或置頂一起成長

每天凌晨00點00分, 第一時間與你相約


每日英文

Everyone would get tired.Nobody can take the sorrow for you.We some time need to grow up by ourselves.

每個人都會累,沒人能為你承擔所有傷悲,人總有一段時間要學會自己長大。


每日掏心話

人生的三大悲:和憎恨的人生活在一起無法擺脫,你深愛的人離開了你,你很想得到的東西一直無法得到。拿得起,放得下,不強求,才能活出精彩。



來自:c.biancheng.net/view/707.html | 責編:樂樂

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

程序員小樂(ID:study_tech)第 748 次推文 圖片來自 Pexels


往日回顧:15歲成殺人犯,監獄裡學編程,37歲獲釋後年薪70萬


00 前言


UNIX 與 Linux 之間的關係是一個很有意思的話題。在目前主流的服務器端操作系統中,UNIX 誕生於 20 世紀 60 年代末,Windows 誕生於 20 世紀 80 年代中期,Linux 誕生於 20 世紀 90 年代初,可以說 UNIX 是操作系統中的"老大哥",後來的 Windows 和 Linux 都參考了 UNIX。

現代的 Windows 系統已經朝著“圖形界面”的方向發展了,和 UNIX 系統有了巨大的差異,從表面上甚至看不出兩者的關聯。


01 正文


UNIX 的坎坷歷史

UNIX 操作系統由肯•湯普森(Ken Thompson)和丹尼斯•裡奇(Dennis Ritchie)發明。它的部分技術來源可追溯到從 1965 年開始的 Multics 工程計劃,該計劃由貝爾實驗室、美國麻省理工學院和通用電氣公司聯合發起,目標是開發一種交互式的、具有多道程序處理能力的分時操作系統,以取代當時廣泛使用的批處理操作系統。
上個世紀六十年代,那個計算機還沒有很普及,只有少數人才能使用,而且當時的計算機系統都是批處理的,就是把一批任務一次性提交給計算機,然後就等待結果。並且中途不能和計算機交互。往往準備作業都需要花費很長時間,並且這個時候別人也不能用,導致了計算機資源的浪費。說明:分時操作系統使一臺計算機可以同時為多個用戶服務,連接計算機的終端用戶交互式發出命令,操作系統採用時間片輪轉的方式處理用戶的服務請求,並在終端上顯示結果(操作系統將CPU的時間劃分成若干個片段,稱為時間片)。操作系統以時間片為單位,輪流為每個終端用戶服務,每次服務一個時間片。但是由於Multics項目太複雜,加上其他原因導致了項目進展緩慢,1969年貝爾實驗室覺得這個項目可能不會成功,於是就退出不玩了。貝爾實驗室退出Multics計劃之後,Bell實驗室的那批科學家就沒有什麼事做了,其中一個叫做Ken Thompson的人在研發Multics的時候,寫了一個叫做太空大戰(Space Travel)的遊戲,大概就是一個很簡單的打飛機的遊戲,但是這個遊戲運行在Multics上。當Bell退出了Multics後,Thompson就沒有了Multics的使用環境了,為了能夠繼續遊戲,於是他花了一個月的時間寫了一個小型的操作系統,用於運行Space Travel,當完成之後,Thompson懷著激動的心情把身邊同事叫過來,讓他們來玩他的遊戲,大家玩過之後紛紛表示對他的遊戲不感興趣,但是對他的系統很感興趣。這個時候的操作系統還是用匯編語言寫。因為MULTICS是“Multiplexed informtion and Computing Service”的縮寫(多路信息計算系統),於是他們命名這個系統為:“UNiplexed Information and Computing Service”,縮寫為“UNICS”(沒路信息計算系統,與Multics相反)。後來大家取其諧音,就稱其為“UNIX”了。這個時候已經是1970年了,於是就將1970年定為Unix元年,因此UTC時間就是從這一年開始計算的。後來Unix這個小操作系統就在Bell實驗室內部流行開,並經過不斷地改良最終在1974年7月Unix發展到第5個版本,Bell實驗室公開了Unix,結果引起了學術界的廣泛興趣並對其源碼索取。所以,Unix第五個版本就以“僅用於教育目的”的協議,提供給各大學作為教學之用,成為當時操作系統課程的範例教材。各大學公司開始通過Unix源碼對Unix進行了各種各樣的改進和拓展。1978年學術界的老大伯克利大學,推出了一份以第六版為基礎,加上一些改進和新功能而成的Unix。並命名為BSD(Berkeley Software Distribution伯克利分發版),開創了Unix的另一分支:BSD系列,這就是著名的“1 BSD(1st Berkeley Software Distribution)”。


 
於是乎Unix就有了兩個分支,一個就是BSD系列的分支,一個就是Bell本身發放的分支,當時因為Bell屬於AT&T,AT&T受到了美國《謝爾曼反托拉斯法》的影響,不能銷售除了電話機電報機等之外的商品,後來AT&T分解,Bell可以賣Unix了,Unix走向了商業化,如果想繼續使用就需要購買授權,一份授權4萬美元。C語言的誕生和unix的發展密不可分。前面提及1969—1970 年,美國貝爾實驗室的 KenThompson 和 DennisRitchie 等使用匯編語言編寫了第一個版本的 UNIX 操作系統。由於 UNIX 操作系統良好的性能,在其發佈初期,就得到迅速的推廣和應用。1973 年,KenThompson 和 DennisRitchie 在做系統內核移植開發時,感覺使用匯編語言很難實現。後來決定使用一種稱為BCPL(BasicCombinedProgrammingLanguage) 的語言進行開發,在開發過程中,他們在 BCPL 的基礎上做了進一步的改進,推出了 B 語言(取 BCPL 第一個字母)。後來發現使用 B 語言開發的 UNIX 內核,還是無法達到他們的預期要求,於是在 B 語言的基礎上,做了進一步的改進,設計出了具有豐富的數據類型,並支持大量運算符的編程語言。改進後的語言較B語言有質的飛躍,取名為 C 語言,並使用 C 語言成功重新編寫了 UNIX內核。至此,使用 C 語言編寫內核的 UNIX 版本已相當穩定,且具有良好的可移植性,為 UNIX 的進一步推廣和普及奠定了堅實的基礎,也展現了 C 語言與 UNIX 的完美結合及 C 語言在編寫系統軟件時得天獨厚的優勢。到了 1973 年,UNIX 系統的絕大部分源代碼都用C語言進行了重寫,這是UNIX的第三版本,這為提高 UNIX 系統的可移植性打下了基礎(之前操作系統多采用匯編語言,對硬件依賴性強),也為提高系統軟件的開發效率創造了條件。可以說,UNIX 系統與C語言是一對孿生兄弟,具有密不可分的關係。20 世紀 70 年代初,計算機界還有一項偉大的發明——TCP/IP 協議,這是當年美國國防部接手 ARPAnet 後所開發的網絡協議。美國國防部把 TCP/IP 協議與 UNIX 系統、C語言捆綁在一起,由 AT&T 發行給美國各個大學非商業的許可證,這為 UNIX 系統、C語言、TCP/IP 協議的發展拉開了序幕,它們分別在操作系統、編程語言、網絡協議這三個領域影響至今。肯•湯普森和丹尼斯•裡奇因在計算機領域做出的傑出貢獻,於 1983 年獲得了計算機科學的最高獎——圖靈獎。

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

圖為肯•湯普森與丹尼斯•裡奇的合影,天才都是不修邊幅的……


隨後出現了各種版本的 UNIX 系統,目前常見的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。AT&T和BSD的糾紛前面提及,1978年,學術界的老大柏克利大學 (UC Berkeley),推出了一份以第六版為基礎,加上一些改進和新功能而成的 Unix。1979年,AT&T推出第七版System V,支持x86架構。但同時特別聲明“不可對學生提供源碼”。雖然 AT&T的Unix System V也是非常優秀的Unix版本,但是BSDUnix在Unix領域內的影響更大。AT&T的Unix系統實驗室一直關注著BSD的發展,在1992年,Unix系統實驗室指控BSDI──一家發行商業BSDUnix的公司,違反了AT&T的許可權,發佈自己的Unix版本,並進一步指控伯克利計算機系統研究組洩漏了Unix的商業機密(此時的4.3BSD中來自AT&T Unix的代碼已經不足10%)。這個官司影響了很多Unix廠商,使他們不得不從BSD Unix轉向UnixSystem V,以避免法律問題。以至於當今大多數商業Unix版本都是基於Unix System V的。由於最後判決懸而未決,這樁法律訴訟將BSD後裔的開發,特別是自由軟件,延遲了兩年,這導致沒有法律問題的Linux內核獲得了極大的支持。Linux跟386BSD的開發幾乎同時起步,Linus說,當時如果有自由的基於386的Unix-like操作系統,他就可能不會創造Linux。儘管無法預料這給以後的軟件業究竟造成了什麼樣的影響,但有一點可以肯定,Linux更加豐富了這塊土壤。這場官司一直打到 AT&T將自己的Unix系統實驗室賣掉,這個時候已經是1993年,新接手的Novell公司採取了一種比較開明的做法,允許BSDI自由發佈自己的BSD,但是前提是必須將來自於AT&T的代碼完全刪除,於是誕生了4.4 BSD Lite版,由於這個版本不存在法律問題,4.4BSD Lite成為了現代BSD系統的基礎版本。由於BSD系統已經十分成熟,作為對操作系統進行研究的目標已經達到,伯克利計算機系統研究組(CSRG)在發佈了4.4BSD-lite2之後就解散了,小組的科研人員有些進入了Unix商業公司,有些繼續進行其他計算機領域的研究。此時,嚴格意義上的Unix System V和BSDUnix都不復存在了,存在的只是他們的各種後續版本。此後,BSD Unix走上了復興的道路。BSD的開發也走向了幾個不同的方向,並最終導致了FreeBSD、OpenBSD和NetBSD的出現。Unix的版權曾經為AT&T所有,之後Novell擁有了Unix,再之後Novell又將版權出售給了SCO(這一事實雙方尚存在爭議)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix產品。開源領袖--斯托曼AT&T不再開發源碼的這種商業態度,讓當時許許多的Unix的愛好者和軟件開發者們感到相當的痛心和憂慮,他們認為商業化的種種限制並不利於產生的發展,相反還能導制產品出現諸多的問題。隨著商業化Unix的版本的種種限制和諸多問題,引起了大眾的不滿和反對。於是,大家開始有組織地結成“反叛聯盟”以此對抗欺行罷市的AT&T等商業化行為。另一方面,關於“大教堂”(集權、封閉、受控、保密)和“集市”(分權、公開、精細的同僚複審)兩種開發模式的對比成為了新思潮的中心思想。這個新思潮對IT業產生了非常深遠影響。為整個計算機世界帶來了革命性的價值觀。此時,一個名叫Richard Stallman的領袖出現了,他認為Unix是一個相當好的操作系統,如果大家都能夠將自己所學貢獻出來,那麼這個系統將會更加的優異!他倡導的Open Source的概念,就是針對Unix這一事實反對實驗室裡的產品商業化私有化。儘管Stallman既不是、也從來沒有成為一個Unix程序員,但在後1980的大環境下,實現一個仿Unix操作系統成了他追求的明確戰略目標。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強烈。為了這個理想,Richard Stallman於1984年創業了GNU,計劃開發一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來為 GNU 計劃提供技術、法律以及財政支持。儘管 GNU 計劃大部分時候是由個人自願無償貢獻,但 FSF 有時還是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被 Red Hat 兼併的 Cygnus Solutions。GNU組織的建立,延續了當年Unix剛出現時的情形,併為這種情形建立了可靠的法律和財務保障。GNU 工程十幾年以來,已經成為一個對軟件開發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。從那時開始,許多程序員聚集起來開始開發一個自由的、高質量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。自90年代發起這個計劃以來,GNU 開始大量的產生或收集各種系統所必備的組件,像是——函數庫(libraries)、編譯器(compilers)、調試工具(debugs)、文本編輯器(text editors)、網站服務器(web server),以及一個Unix的使用者接口(Unix shell)等等,等等。但由於種種原因,GNU一直沒有開發操作系統的kernel。正當Richard Stallman在為操作系統內核傷腦筋的時候,Linux出現了。正是因為Unix的不開源路線促成了Linux的誕生,Linus Torvalids 在1991年創造了Linux –這並不是一個簡單的Unix克隆版本,只不過它長得像Unix(系統結構和功能上),該內核和GNU套件整合後形成了如今各式各樣的Linux版本。GNUGNU計劃,又稱革奴計劃,是由Richard Stallman在1983年9月27日公開發起的。它的目標是創建一套完全自由的操作系統。Richard Stallman最早是在net.unix-wizards新聞組上公佈該消息,並附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟件界合作互助的團結精神”。為保證GNU軟件可以自由地“使用、複製、修改和發佈”,所有GNU軟件都在一份在禁止其他人添加任何限制的情況下授權所有權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL)。即“反版權”(或稱Copyleft)概念。

簡介

GNU是“GNU's Not Unix”的遞歸縮寫。Stallman宣佈GNU應當發音為Guh-NOO以避免與new這個單詞混淆(注:Gnu在英文中原意為非洲牛羚,發音與new相同)。UNIX是一種廣泛使用的商業操作系統的名稱。由於GNU將要實現UNIX系統的接口標準,因此GNU計劃可以分別開發不同的操作系統部件。GNU計劃採用了部分當時已經可自由使用的軟件,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟件。

歷史

1985年Richard Stallman又創立了自由軟件基金會(Free Software Foundation)來為GNU計劃提供技術、法律以及財政支持。儘管GNU計劃大部分時候是由個人自願無償貢獻,但FSF有時還是會聘請程序員幫助編寫。當GNU計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被Red Hat兼併的Cygnus Solutions。到了1990年,GNU計劃已經開發出的軟件包括了一個功能強大的文字編輯器Emacs。GCC(GNU Compiler Collection,GNU編譯器集合),是一套由 GNU 開發的編程語言編譯器。以及大部分UNIX系統的程序庫和工具。唯一依然沒有完成的重要組件就是操作系統的內核(稱為HURD)。1991年Linus Torvalds編寫出了與UNIX兼容的Linux操作系統內核並在GPL條款下發布。Linux之後在網上廣泛流傳,許多程序員參與了開發與修改。1992年Linux與其他GNU軟件結合,完全自由的操作系統正式誕生。該操作系統往往被稱為“GNU/Linux”或簡稱Linux。(儘管如此GNU計劃自己的內核Hurd依然在開發中,目前已經發布Beta版本。)許多UNIX系統上也安裝了GNU軟件,因為GNU軟件的質量比之前UNIX的軟件還要好。GNU工具還被廣泛地移植到Windows和Mac OS上。GNU 包含3個協議條款,  GPL:GNU通用公共許可證(GNU General Public License)  LGPL:GNU較寬鬆公共許可證 (GNU Lesser General Public License), ) ,舊稱 GNU Library General Public License (GNU 庫通用公共許可證);  GFDL :GNU自由文檔許可證(GNU Free Documentation License )的縮寫形式。  這裡指的自由,並不是價格免費,這和價格無關而是使用軟件對所有的用戶來說是自由的。GPL 通過如下途徑實現這一目標:  1.它要求軟件以源代碼的形式發佈,並規定任何用戶能夠以源代碼的形式將軟件複製或發佈給別的用戶。  2.如果用戶的軟件使用了受 GPL 保護的任何軟件的一部分,那麼該軟件就繼承了 GPL 軟件,並因此而成為 GPL 軟件,也就是說必須隨應用程序一起發佈源代碼。  3.GPL 並不排斥對自由軟件進行商業性質的包裝和發行,也不限制在自由軟件的基礎上打包發行其他非自由軟件。  由於GPL很難被商業軟件所應用,它要求調用它的庫的代碼也得GPL,全部開放,並且一同發佈,不能直接連接。所以後來GNU推出了LGPL許可證  在GPL與LGPL許可證保護下發布源代碼的結果很相似,對舊代碼所做的任何修改對於想知道這些代碼的人必須是公開的,唯一真正的不同之處在於私人版權代碼是否可以與開放源代碼相互連接,LGPL允許實體連接私人代碼到開放源代碼,並可以在任何形式下發布這些合成的二進制代碼。只有這些代碼是動態連接的就沒有限制。(使用動態鏈接時,即使是程序在運行中調用函數庫中的函數時,應用程序本身和函數庫也是不同的實體)Solaris 和 FreeBSD我們重點介紹一下 Solaris,它是 UNIX 系統的一個重要分支。Solaris 除可以運行在 SPARC CPU 平臺上外,還可以運行在 x86 CPU 平臺上。在服務器市場上,Sun 的硬件平臺具有高可用性和高可靠性,是市場上處於支配地位的 UNIX 系統。對於難以接觸到 Sun SPARC 架構計算機的用戶來說,可以通過使用 Solaris x86 來體驗世界知名大廠的商業 UNIX 風采。當然,Solaris x86 也可以用於實際生產應用的服務器,在遵守 Sun 的有關許可條款的情況下,Solaris x86 可以免費用於學習研究或商業應用。FreeBSD 源於美國加利福尼亞大學伯克利分校開發的 UNIX 版本,它由來自世界各地的志願者開發和維護,為不同架構的計算機系統提供了不同程度的支持。FreeBSD 在 BSD 許可協議下發布,允許任何人在保留版權和許可協議信息的前提下隨意使用和發行,並不限制將 FreeBSD 的代碼在另一協議下發行,因此商業公司可以自由地將 FreeBSD 代碼融入它們的產品中。蘋果公司的 OS X 就是基於 FreeBSD 的操作系統。FreeBSD 與 Linux 的用戶群有相當一部分是重合的,二者支持的硬件環境也比較一致,所採用的軟件也比較類似。FreeBSD 的最大特點就是穩定和高效,是作為服務器操作系統的不錯選擇;但其對硬件的支持沒有 Linux 完備,所以並不適合作為桌面系統。其他 UNIX 版本因應用範圍相對有限,在此不做過多介紹。Linux 的那些往事在Unix代碼不開源之後,有昂貴的授權費用,很多大學不得不停止對其研究,老師導致上課也不知道講什麼了。在1987年荷蘭有個大學教授安德魯寫了一個Minix,類似於Unix,專用於教學。當Minix流傳開來之後,世界各地的黑客們紛紛開始使用並改進,希望把改進的東西合併到Minix中,但是安德魯覺得他的系統是用於教學的,不能破壞純淨性,於是拒絕了。1990年,Linus Torvalds 還是芬蘭赫爾辛基大學的一名學生,最初是用匯編語言寫了一個在80386保護模式下處理多任務切換的程序,後來從 Minix(Andy Tanenbaum教授所寫的很小的 Unix 操作系統,主要用於操作系統教學)得到靈感,進一步產生了自認為狂妄的想法——寫一個比 Minix 更好的Minix,於是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的 Linux 就出來了,但是它只具有操作系統內核的勉強的雛形,甚至不能運行,你必須在有Minix的機器上編譯以後才能玩。這時候Linus已經完全著迷而不想停止,決定踢開 Minix,於是在1991年10 月5號發佈Linux 0.0.2版本,在這個版本中已經可以運行 bash 和 gcc。從一開始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引起黑客們(hacker)的注意,通過計算機網絡加入了Linux的內核開發。Linux傾向於成為一個黑客的系統——直到今天,在Linux社區裡內核的開發被認為是真正的編程。由於一批高水平黑客的加入,使Linux 發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到1993年底94年初,Linux 1.0 終於誕生了!Linux 1.0已經是一個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬件的性能,在4M內存的80386機器上也表現得非常好,至今人們還在津津樂道。


萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版
圖 李納斯關於 Linux Logo 的由來是一個很有意思的話題,它是一隻企鵝。
萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版
圖 linux logo


為什麼選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因為李納斯•託瓦茲是芬蘭人,所以選擇企鵝,有人說因為其他動物圖案都被用光了,李納斯•託瓦茲只好選擇企鵝。還有一種說法是李納斯曾經被企鵝咬過手指。我更願意相信以下說法,企鵝是南極洲的標誌性動物,根據國際公約,南極洲為全人類共同所有,不屬於世界上的任何國家,可國家都無權將南極洲納入其版圖。Linux 選擇企鵝圖案作為 Logo,其含義是:開放源代碼的 Linux 為全人類共同所有,可公司無權將其私有。嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和應用程序的操作系統(也被稱為GNU/Linux)。基於這些組件的Linux軟件被稱為Linux發行版。一般來講,一個Linux發行套件包含大量的軟件,比如軟件開發工具,數據庫,Web服務器(例如Apache),X Window,桌面環境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。1991至1995年間,Linux從概念型的 0.1 版本內核原型,發展成為能夠在性能和特性上均堪媲美專有Unix的操作系統,並且在連續正常工作時間等重要統計數據上打敗了這些Unix中的絕大部分。1995年,Linux找到了自己的殺手級應用——開源的web服務器Apache。就像Linux,Apache出眾地穩定和高效。很快,運行 Apache 的 Linux 機器成了全球ISP平臺的首選。約60%的網站選用Apache,輕鬆擊敗了另兩個主要的專有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經成為了架構 Web 服務器的主要首選。李納斯•託瓦茲無疑是這個世界上最偉大的程序員之一,何況,他還搞出了全世界最大的程序員交友社區 GitHub (開源代碼庫及版本控制系統)。現如今的Linux不但可以裝在幾乎所有的主流服務器上,當然也包括桌面的X86系統中。其還常常被用於嵌入式系統,機頂盒、手機、交換機、遊戲機、PDA、網絡交換機、路由器、等等,都是因為 Linux 那精彩的內核。Linux 的出現,不僅僅給世界帶來了一個免費的操作系統,也不僅僅是對 Unix 自由、共享的文化的延續,它的出現帶給了計算機世界自 Unix、GNU 以來更為成熟的思想和文化。UNIX與Linux的親密關係二者的關係,不是大哥和小弟,"UNIX 是 Linux 的父親"這個說法更怡當。之所以要介紹它們的關係,是因為要告訴讀者,在學習的時候,其實 Linux 與 UNIX 有很多的共通之處,簡單地說,如果你已經熟練掌握了 Linux,那麼再上手使用 UNIX 會非常容易。二者也有兩個大的區別:1、UNIX 系統大多是與硬件配套的,也就是說,大多數 UNIX 系統如 AIX、HP-UX 等是無法安裝在 x86 服務器和個人計算機上的,而 Linux 則可以運行在多種硬件平臺上;


2、UNIX 是商業軟件,而 Linux 是開源軟件,是免費、公開源代碼的。Linux 受至曠大計算機愛好者的喜愛,主要原因也有兩個:
它屬於開源軟件,用戶不用支付可費用就可以獲得它和它的源代碼,並且可以根據自己的需要對它進行必要的修改,無償使用,無約束地繼續傳播;
它具有 UNIX 的全部功能,任何使用 UNIX 操作系統或想要學習 UNIX 操作系統的人都可以從 Linux 中獲益。開源軟件是不同於商業軟件的一種模式,從字面上理解,就是開放源代碼,大家不用擔心裡面會搞什麼貓膩,這會帶來軟件的革新和安全。另外,開源其實並不等同於免費,而是一種新的軟件盈利模式。目前很多軟件都是開源軟件,對計算機行業與互聯網影響深遠。近年來,Linux 已經青出於藍而勝於藍,以超常的速度發展,從一個醜小鴨變成了一個擁有龐大用戶群的真正優秀的、值得信賴的操作系統。歷史的車輪讓 Linux 成為 UNIX 最優秀的傳承者。

總結一下 Linux 和 UNIX 的關係/區別

Linux 是一個類似 Unix 的操作系統,Unix 要早於 Linux,Linux 的初衷就是要替代 UNIX,並在功能和用戶體驗上進行優化,所以 Linux 模仿了 UNIX(但並沒有抄襲 UNIX 的源碼),使得 Linux 在外觀和交互上與 UNIX 非常類似。說模仿可能會被人噴,你也可以說微創新或者改進。


相比於 UNIX,Linux 最大的創新是開源免費,這是它能夠蓬勃發展的最重要原因;而目前的 UNIX 大部分都是收費的,小公司和個人都難以承受。正是由於 Linux 和 UNIX 有著千絲萬縷的聯繫,所以人們把 Linux 叫做“類UNIX系統”,下節我們將會著重講解。UNIX/Linux系統結構UNIX/Linux 系統可以粗糙地抽象為 3 個層次(所謂粗糙,就是不夠細緻、精準,但是便於初學者抓住重點理解),如圖 3 所示。底層是 UNIX/Linux 操作系統,即系統內核(Kernel);中間層是 Shell 層,即命令解釋層;高層則是應用層。

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

UNIX/Linux 系統結掏層次概要


1) 內核層

內核層是 UNIX/Linux 系統的核心和基礎,它直接附著在硬件平臺之上,控制和管理系統內各種資源(硬件資源和軟件資源),有效地組織進程的運行,從而擴展硬件的功能,提高資源的利用效率,為用戶提供方便、高效、安全、可靠的應用環境。
2) Shell層

Shell 層是與用戶直接交互的界面。用戶可以在提示符下輸入命令行,由 Shell 解釋執行並輸出相應結果或者有關信息,所以我們也把 Shell 稱作命令解釋器,利用系統提供的豐富命令可以快捷而簡便地完成許多工作。
3) 應用層

應用層提供基於 X Window 協議的圖形環境。X Window 協議定義了一個系統所必須具備的功能(就如同 TCP/IP 是一個協議,定義軟件所應具備的功能),可系統能滿足此協議及符合 X 協會其他的規範,便可稱為 X Window。
現在大多數的 UNIX 系統上(包括 Solaris、HP-UX、AIX 等)都可以運行 CDE (Common Desktop Environment,通用桌面環境,是運行於 UNIX 的商業桌面環境)的用戶界面;而在 Linux 上廣泛應用的有 Gnome(見圖4)KDE 等。


X Window 與微軟的 Windows 圖形環境有很大的區別:

UNIX/Linux 系統與 X Window 沒有必然捆綁的關係,也就是說,UNIX/Linux 可以安裝 X Window,也可以不安裝;而微軟的 Windows 圖形環境與內核捆綁密切。

UNIX/Linux 系統不依賴圖形環境,依然可以通過命令行完成 100% 的功能,而且因為不使用圖形環境還會節省大量的系統資源。

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版
圖 Gnome圖形界面作為服務器部署,絕大多數 Linux 並不安裝或並不啟用圖形環境.Linux的發行版本我們知道Linux或者Unix是一個操作系統,1991年的Linus Torvalds公佈的是Linux的內核(kernel)。但是要注意的是,公佈的是源碼,並不是編譯好的直接可安裝的操作系統,我們如何安裝一個操作系統呢?很簡單啊,就是先下載一份源碼,然後進行編譯安裝,但是編譯的時候程序需要運行在操作系統上啊,操作系統呢?還沒有編譯呢。於是就陷入了一個死循環中,就是我們要安裝操作系統,就需要編譯,編譯的時候需要操作系統,這樣就是雞生蛋,蛋生雞。這裡就需要引入交叉編譯了,具體做法是假設我們要在電腦上安裝Linux,我們把A的硬盤拆下來,放到已經安裝了操作系統的電腦B上,然後編譯,將編譯好的操作系統放到硬盤上,再把硬盤裝回去,開機啟動,這就是交叉編譯安裝系統。這得有多難啊,入門難度實在太高了,所以我們迫切需要一種簡單的方式來安裝。於是就出現了這麼一種公司,他們將已經公開好的Kernel(內核)再加上一些開源的周邊軟件收集起來編譯成二級制文件放到網上供別人使用,其中Red Hat(紅帽)就是其中著名的一家。我們知道Linux是遵循GPL協議的,也就是公開免費的,那麼他們怎麼盈利呢?既然不能賣軟件,那麼就賣服務唄,比如說,發現了Linux漏洞,然後Red Hat修復,如果你買了我們的服務,我們就將補丁程序給你,並指導你安裝,所有問題都幫你解決。世界上總是不缺好事者,RedHat既然可以這麼做,為什麼就不能有好心人免費做呢?是的,有這樣一個社區,他們把RedHat的源碼拿過來,然後編譯成操作系統放出去,這就是CentOS,就是社區版的RedHat,所以基本RedHat的補丁包出來一個月之後,CentOS就出現對應的補丁包了。這對於Red Hat是好事還是壞事呢?這恐怕只有當事人知道了,不過在2014年年初傳來消息,RedHat收編了CentOS的團隊。就像MSDN I TELL YOU 上面都是微軟的正版軟件,可以隨便下載,但是這不也是為微軟做了免費宣傳嗎。當別人說Linux的版本時,一般來說有兩個版本,一個是內核的版本,一個是發行的版本。例如登錄到我的ubuntu終端執行命令uname -a:root@AI-Machine:~# uname -a

Linux AI-Machine 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:26:51 UTC 2018 i686 i686 i686 GNU/Linux
root@AI-Machine:~#
4.13.0是內核版本,16.04是指ubunut發行版本。現在常見的linux操作系統有:
ubuntu
萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

紅帽

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

深度

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版

Centos

萬字長文!Unix 和 Linux 你不知道的那些歷史,詳解版


歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。


猜你還想看


阿里、騰訊、百度、華為、京東最新面試題彙集

前後端分離開發,六大方案全揭秘:HTTP API 認證授權術

濃縮就是精華!106頁的《Python進階》中文版(附下載)

IDEA的這幾個調試的騷操作,用了都說爽!


關注「程序員小樂」,收看更多精彩內容
嘿,你在看嗎?



分享到:


相關文章: