Unix 與 Linux 之間是什麼關係?


大致是這樣的,

1965年,貝爾實驗室、MIT和通用一起搞了個項目,要開發一個分時多任務操作系統,叫MULTICS,項目很牛逼,計劃做很大,然後車翻了,沒搞成。

貝爾實驗的一個中二青年肯湯普森經歷翻車後回到實驗室,覺得MULTICS的那幫貨都是腦殘,看我自己搞一個,然後在一台PDP-7小型機(相當於是現在的小霸王學習機)上基於MULTICS中的一些想法,自己開發了一個簡陋的寨版系統,Unics(1969年)。

(這裡多嘴一句,其實從MULTICS失敗,Unics成功也可以看出軟體產品和工業產品製造管理的區別)

系統很好用,很牛逼,但有個毛病,就是只能跑在小霸王上,如果要換平台,就得重新寫一遍代碼,雖然能混KPI,但從設計角度講比較智障。

於是中二青年就拉了個小夥伴組成基佬組,再開發了一個叫C語言的東東(2B的B語言咱略過),然後把Unics用C語言重寫了一編,改名Unix(1971年),其中x就是cross的略寫,跨平台的意思。

那會兒軟體版權意識是不存在的,Unix出來後,很多企業和學校都覺得很好,代碼研究了一番後,都嘗試模仿,其中就有伯克里大學仿寫的BSD系統(1978年)。

其中BSD系統早期基本就是Unix系統,但貝爾實驗室一天不知道哪根筋搭錯(嗯,評論區有帥哥補充說是BSD先商業化導致貝爾實驗室告BSD侵權),突然發現Unix是個大商機,於是將伯克里大學告上了法庭,要求伯克里大學停止使用BSD系統,成了知名的IT業界大案,與後面的巨硬壟斷案基本齊名。

經過各種扯皮後,最終結果是BSD以及一些其他的非貝爾實驗室的UNIX系統去除全部Unix代碼或花錢購買許可而告終。所以,在該案前,BSD和一些其他的山寨Unix系統 = Unix,而該案後,BSD其實與Unix已經沒有了關係,變成了Unix-like系統,也就是類Unix系統。

時間一晃到了1987年,有個叫彈您爸(Andrew Stuart Tanenbaum)的老教授,專門在諸如MIT和加州大學講操作系統,但是各個大學的操作系統各有差異,為了教學方便,就自己開發了一個叫Minix的教學用Unix-Like系統,然後還寫了本叫《操作系統的設計與實現》的鳥書騙老子這樣的傻子錢,Minix的源碼就帶在了下冊里。

1988年,芬蘭赫爾辛基大學又有一個特別特別特別中二的青年(大家都知道是誰)正苦於實驗室里只有一台Unix機器+16個位子,和老闆關係不好的一般占不到,於是想給自己的IBM PC也整個Unix系統。然後偶然發現了譚寧邦的Minix,學習一番後,覺得這東西有點二,於是自己也寫了個玩玩,冠名為Linux。

額,什麼?你問我巨硬的Windows?這是另一個故事了,咱以後有機會再聊。


我補充一種特殊的關係 一種既是Linux又是UNIX的東西

K-UX

Inspur K-UX?

en.wikipedia.org

EulerOS

EulerOS?

developer.huawei.com圖標


最先有個Unix操作系統,但後來商業化了,哪怕是教育機構都得花錢。

常年教操作系統的譚寧邦教授覺得這樣不行,為了教學方便,於是自己寫了個Minix操作系統。通過講Minix,恰好能在一個學期內把操作系統的概念和設計都講完。

很多人用Minix,覺得非常OK,但功能畢竟太簡陋了,於是大夥就自告奮勇的說要給Minix添加一些功能模塊。但譚寧邦教授不同意,說你們加那麼多東西,Minix的代碼量肯定大幅度增加,我還怎麼在一學期內給學生講完?你們這樣是不行的。

有個叫林納斯的小伙,參考了Minix,寫了一個新的系統,就是Linux。早期的Linux也是一個簡陋的玩具,甚至還不如Minix。但不同於Minix系統就是為當做教學用具而生的,Linux則是向一個實用的操作系統發展。很多人一起為Linux寫了無數行的代碼,最終讓它成為了一個使用很廣泛的系統。

Linux兼容Unix系統的很多東西,但二者的不同之處也一點不少。Unix其實在很多程度上就是一個商標,現在經過認證了的真·Unix系統大概也只有Solaris了,像FreeBSD、Linux、Darwin(MacOS的底層系統)都只是類Unix,即類似Unix的系統。


Unix 現在只是一個商標,並沒有哪一個操作系統名稱叫做 "Unix"。如果一個操作系統在技術上符合了 Unix 的規範,又得到了商標使用許可,那麼它可以稱自己為 Unix,否則只能算 Unix-like(類 Unix)。所以你可以將 Unix 看做一種類別,而非具體的操作系統。

Linux 是參照 Unix 設計出來的,但並沒有基於當時現有的任何一款 Unix 系統,所以 Linux 和 Unix 有許多本質上的相似性但也存在大量的差異以及 Linux 獨特的地方。

因為 Unix 操作系統五花八門,為了保證軟體的兼容性,誕生了一套叫做 POSIX 系統介面的標準。其中 POSI 四個字母是 Portable Operating System Interface(可移植操作系統介面)的縮寫,最後的 X 代表其是對 Unix 介面的傳承。

但 POSIX 並不是 Unix 系操作系統特有的,Linux 很早就完整的實現了 POSIX。所以許多軟體能在 Linux 和 Unix 系系統上通用。並且 Windows 也是 POSIX 的實現系統之一。所以部分資料以 Linux 為基礎講 Unix 編程,這是完全可行的,但這不表示 Linux 是 Unix。

在知乎這種地方強調過無數遍了,Linux 不是 Unix!Linux 不是 Unix!Linux 不是 Unix!

如果想了解 Linux 的誕生和發展,推薦看一下 Linus Torvalds 的自傳《只是為了好玩》。這是以 Linux 創始人的角度講的 Linux 的誕生和發展,非常有參考意義。


Unix是70年代和80年代非常流行且非常先進的商業操作系統。unix最大的問題是作為商業操作系統使用成本非常高,所以在1991,出現了一個實現了一個類似unix的操作系統linux。注意,linux不是unix,它是一個外表看上去象unix,但是實現方法上和unix完全無關的新的操作系統。此外linux不是商業軟體,可以免費使用並且開放源代碼。

總而言之:

1,unix出現在前,linux出現在後並且實現了unix大多數功能,但還是存在區別;

2,unix是商業軟體並且不開放源代碼,linux是自由軟體並且開放源代碼;


推薦閱讀:

TAG:操作系統 | Linux | 運維 | Unix |