Linux和UNIX的關係及區別

首頁 > 科技

Linux和UNIX的關係及區別

來源:戲說健康 釋出時間:2023-10-25 19:02

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

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

UNIX的坎坷歷史

UNIX作業系統由肯•湯普森(KenThompson)和丹尼斯•裡奇(DennisRitchie)發明。它的部分技術來源可追溯到從1965年開始的Multics工程計劃,該計劃由貝爾實驗室、美國麻省理工學院和通用電氣公司聯合發起,目標是開發一種互動式的、具有多道程式處理能力的分時作業系統,以取代當時廣泛使用的批處理作業系統。

說明:分時作業系統使一臺計算機可以同時為多個使用者服務,連線計算機的終端使用者互動式發出命令,作業系統採用時間片輪轉的方式處理使用者的服務請求並在終端上顯示結果(作業系統將CPU的時間劃分成若干個片段,稱為時間片)。作業系統以時間片為單位,輪流為每個終端使用者服務,每次服務一個時間片。

可惜,由於Multics工程計劃所追求的目標太龐大、太複雜,以至於它的開發人員都不知道要做成什麼樣子,最終以失敗收場。以肯•湯普森為首的貝爾實驗室研究人員吸取了Multics工程計劃失敗的經驗教訓,於1969年實現了一種分時作業系統的雛形,1970年該系統正式取名為UNIX。想一下英文中的字首Multi和Uni,就明白了UNIX的隱意。

Multi是大的意思,大而且繁;而Uni是小的意思,小而且巧。這是UNIX開發者的設計初衷,這個理念一直影響至今。有意思的是,肯•湯普森當年開發UNIX的初衷是執行他編寫的一款計算機遊戲SpaceTravel,這款遊戲模擬太陽系天體運動,由玩家駕駛飛船,觀賞景色並嘗試在各種行星和月亮上登陸。他先後在多個系統上試驗,但執行效果不甚理想,於是決定自己開發作業系統,就這樣,UNIX誕生了。自1970年後,UNIX系統在貝爾實驗室內部的程式設計師之間逐漸流行起來。

1971-1972年,肯•湯普森的同事丹尼斯•裡奇發明了傳說中的C語言,這是一種適合編寫系統軟體的高階語言,它的誕生是UNIX系統發展過程中的一個重要里程碑,它宣告了在作業系統的開發中,組合語言不再是主宰。到了1973年,UNIX系統的絕大部分原始碼都用C語言進行了重寫,這為提高UNIX系統的可移植性打下了基礎(之前作業系統多采用匯編語言,對硬體依賴性強),也為提高系統軟體的開發效率創造了條件。可以說,UNIX系統與C語言是一對孿生兄弟,具有密不可分的關係。

20世紀70年代初,計算機界還有一項偉大的發明——TCP/IP協議,這是當年美國國防部接手ARPAnet後所開發的網路協議。美國國防部把TCP/IP協議與UNIX系統、C語言捆綁在一起,由AT&T發行給美國各個大學非商業的許可證,這為UNIX系統、C語言、TCP/IP協議的發展拉開了序幕,它們分別在作業系統、程式語言、網路協議這三個領域影響至今。

肯•湯普森和丹尼斯•裡奇因在計算機領域做出的傑出貢獻,於1983年獲得了計算機科學的最高獎——圖靈獎。

隨後出現了各種版本的UNIX系統,目前常見的有SunSolaris、FreeBSD、IBMAIX、HP-UX等。

Solaris和FreeBSD

我們重點介紹一下Solaris,它是UNIX系統的一個重要分支。Solaris除可以執行在SPARCCPU平臺上外,還可以執行在x86CPU平臺上。在伺服器市場上,Sun的硬體平臺具有高可用性和高可靠性,是市場上處於支配地位的UNIX系統。

對於難以接觸到SunSPARC架構計算機的使用者來說,可以透過使用Solarisx86來體驗世界著名大廠的商業UNIX風采。當然,Solarisx86也可以用於實際生產應用的伺服器,在遵守Sun的有關許可條款的情況下,Solarisx86可以免費用於學習研究或商業應用。

FreeBSD源於美國加利福尼亞大學伯克利分校開發的UNIX版本,它由來自世界各地的志願者開發和維護,為不同架構的計算機系統提供了不同程度的支援。FreeBSD在BSD許可協議下發布,允許任何人在留存版權和許可協議資訊的前提下隨意使用和發行,並不限制將FreeBSD的程式碼在另一協議下發行,因此商業公司可以自由地將FreeBSD程式碼融入它們的產品中。蘋果公司的OSX就是基於FreeBSD的作業系統。

FreeBSD與Linux的使用者群有相當一部分是重合的,二者支援的硬體環境也比較一致,所採用的軟體也比較類似。FreeBSD的最大特點就是穩定和高效,是作為伺服器作業系統的不錯選擇;但其對硬體的支援沒有Linux完備,所以並不適合作為桌面系統。其他UNIX版本因應用範圍相對有限,在此不做過多介紹。

Linux的那些往事

Linux核心最初是由李納斯•託瓦茲(LinusTorvalds)在赫爾辛基大學讀書時出於個人愛好而編寫的,當時他覺得教授教養用的迷你版UNIX作業系統Minix太難用了,於是決定自己開發一個作業系統。第1版本於1991年9月釋出,當時僅有10000行程式碼。

李納斯•託瓦茲沒有留存Linux原始碼的版權,公開了程式碼,並邀請他人一起完善Linux。與Windows及其他有專利權的作業系統不同,Linux開放原始碼,任何人都可以免費使用它。

據估計,現在只有2%的Linux核心程式碼是由李納斯•託瓦茲自己編寫的,雖然他仍然擁有Linux核心(作業系統的核心部分),並且留存了選擇新程式碼和需要合併的新方法的最終裁定權。現在大家所使用的Linux,我更傾向於說是由李納斯•託瓦茲和後來陸續加入的眾多Linux好者共同開發完成的。

李納斯•託瓦茲無疑是這個世界上最偉大的程式設計師之一,何況,他還搞出了全世界最大的程式設計師交友社群GitHub(開原始碼庫及版本控制系統)。

關於LinuxLogo的由來是一個很有意思的話題,它是一隻企鵝。

為什麼選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因為李納斯•託瓦茲是芬蘭人,所以選擇企鵝,有人說因為其他動物圖案都被用光了,李納斯•託瓦茲只好選擇企鵝。我更願意相信以下說法,企鵝是南極洲的標誌性動物,根據國際公約,南極洲為全人類共同所有,不屬於世界上的任何國家,可國家都無權將南極洲納入其版圖。Linux選擇企鵝圖案作為Logo,其含義是:開放原始碼的Linux為全人類共同所有,可公司無權將其私有。

UNIX與Linux的親密關係

二者的關係,不是大哥和小弟,"UNIX是Linux的父親"這個說法更怡當。之所以要介紹它們的關係,是因為要告訴讀者,在學習的時候,其實Linux與UNIX有很多的共通之處,簡單地說,如果你已經熟練掌握了Linux,那麼再上手使用UNIX會非常容易。

二者也有兩個大的區別:

UNIX系統大多是與硬體配套的,也就是說,大多數UNIX系統如AIX、HP-UX等是無法安裝在x86伺服器和個人計算機上的,而Linux則可以執行在多種硬體平臺上;

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大部分都是收費的,小公司和個人都難以承受。

UNIX/Linux系統結構

UNIX/Linux系統可以粗糙地抽象為3個層次(所謂粗糙,就是不夠細緻、精準,但是便於初學者抓住重點理解),如圖3所示。底層是UNIX/Linux作業系統,即系統核心(Kernel);中間層是Shell層,即命令解釋層;高層則是應用層。

1)核心層

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

2)Shell層

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

3)應用層

應用層提供基於XWindow協議的圖形環境。XWindow協議定義了一個系統所必須具備的功能(就如同TCP/IP是一個協議,定義軟體所應具備的功能),可系統能滿足此協議及符合X協會其他的規範,便可稱為XWindow。

現在大多數的UNIX系統上(包括Solaris、HP-UX、AIX等)都可以執行CDE(CommonDesktopEnvironment,通用桌面環境,是運行於UNIX的商業桌面環境)的使用者介面;而在Linux上廣泛應用的有Gnome(見圖4)、KDE等。

上一篇:“Premiere Pr... 下一篇:雷軍又吹他的...
猜你喜歡
熱門閱讀
同類推薦