標籤:

Unix VS Linux

Linux已經滲透入生活的各個方面,Android,Chrome OS,Raspberry Pi系統使用的內核就是Linux。Linux和UNIX非常相似,以至於有部分人不能明確說出兩者有什麼不同的。為了理清它們的淵源,就必須從UNIX的誕生說起。

UNIX起源

Ken Thompson和Dennis Ritchie於20世紀70年代在貝爾實驗室發明了UNIX,Dennis Ritchie同時也是C語言的創始人,之所以叫C語言,也是因為Thompson搞出了一個B語言,所以就接字母順序叫了C語言,Ken Thompson也是utf-8的發明者,同時也是golang的聯合創始人(co-inventor),當時他倆在貝爾實驗室一起在開發一個叫Multics的操作系統,目標是可以操作系統可以同時運行多個程序。不過團隊在項目的實施上遇到瓶頸,所以他倆在業務時間開始研究有沒有其它的替代方案,最後確定目標變成一次只運行一個程序,所以它不再是Multix,就起了個名字UNiplexed Information and Compution Service --- UNICS,但是因為U後跟一個C非常難記,所以直接改成了X(UNIX)。它最初完全使用C語言編寫。

到1972年時,Ritchie已經把C語言體系搞得很成熟,確定可以用於重寫操作系統(以前的OS大部分都是彙編寫的)。不過由於AT&T由於以前一些法律問題被禁止進入計算機市場。所以他們發布了UNIX的源代碼非商業的許可證,它開始在各個大學傳播並使用,基中也包括在伯克利(Berkeley)的加州大學(University of California)。隨後AT&T和貝爾實驗室分離,所以在1980年代,市場上開始出現UNIX的商業版本—System5,與此同時,加州大學也基於AT&T授權得到的UNIX上繼續開發,這就引出了另一個分支BSD(Berkeley Software Distribution),所以你會看到System5和BSD在1980年代中期都被廣泛流傳和使用,後來的Solaris就來源於System5,Ultrix繼承於BSD。

隨後,BSD開發者開始使用他們自己版本替換來自AT&T的源文件,想把BSD徹底從System5中分離出來,開始對外說明BSD的操作系統是完全免費的,並於90年代初期,開發者為是否完全免費還發生爭端。

爭議導致後來出現了一個完全移除了AT&T提供的UNIX源代碼的版本,叫BSD4.4 light,隨後它快速發展成了現在被我們熟知的FreeBSD。在FreeBSD打磨最成功的就是Mac OS系統。

POSIX標準

隨著各個小分支都百花齊放,各自朝著自己認為正確的道路狂奔,最終大家都意識到了必須要規定出一套UNIX標準(也叫UNIX哲學philosophy)來規範。就如何寫一個程序,如何設計一個程序的輸出成為另一個程序的輸入(pipe),如何去編譯程序等等,只有這些標準制定了,才能同一個程序在各個不同分支的UNIX正常運行起來(兼容性),所以開始制定發布一系列的標準,其中最流行的就是POSIX,它實際說的就是如果你的程序要在這個操作系統上編譯運行,你必須編寫POSIX規範的特定功能API。

GNU Project

在這技術百舸爭流的70年代中期,一幫Hackers成立在矽谷成立了"Homebrew Computer Club",剛成立Microsoft的Bill Gate於1976年1月31號發公開信給此俱樂部,信中他一點點為軟體產權的相關新觀念辯論,指出

"To me the most critical thing in the hobby market right now is lack of good software courses books and software itself, without good software and an owner who understands programming, a hobby computer is wasted, will quality software be written for the hobby market"。

有些大公司開始停止分發源代碼,並使用各種各樣的版權和許可證還禁止複製和再分發,企圖構建自己的技術圍城。Richard Stallman當時在MIT人工智慧實驗室寫代碼,經常遇到如果需要查看代碼,就必須簽署不能隨意分享它的協議。Hackers們認為這把他們從社會和合作的社區分離了,為了打破大家各自封閉的圈子,隨後成立了Free Sofware Foundation, 創建了GNU Project(Emacs就是在GNU項目中產生的)。他還負責新版本C compiler, debugger, text-editor,這些工具用於能夠構建免費版本的UNIX而無需依賴BSD或AT&T的任何源代碼。

Linux崛起

因此在90年代你可以得到公開發布的BSD,System5,除此之外,還有Andrew Tannenbaum編寫用於教學生操作系統設計基礎知識的MINIX。MINIX被遠在芬蘭一名叫Linus Torvalds的大學生所發覺,隨後決心從頭寫一個操作系統。他成功做到了並公開向全世界發布。這份公開聲明的重點在於:

  1. 它是運行在386電腦上的,不是大型機或超級計算機,這可以讓學生在自己的家裡也可開發。
  2. 工具集中的bash,gcc都是使用的GNU工具集。
  3. 完全Free。

隨後Linux開發大部分都參照了UNIX哲學,得到了大量來自有BSD和System5背景開發者的關注。但真正開始起飛來源於1992年Linux開始支持X window。這意味著你可以擁有一個帶window的桌面,你可以找開多個終端,linux開始在開發者中大量被下載使用。迅猛發展直到現在,Android,Chrome OS和相當比例的web server都使用的Linux內核,不過因為Linux不是UNIX或UNIX的克隆版本,所以它通常都叫unix-like,因為它還是繼承了UNIX哲學的。

Summary

  1. 基本Linux內核開發,也派生出了很多版本,如RedHat,fedora, arch等,這些版本打包了一系列增加的工具(KDE 桌面,Gnome桌面,libera office,Chrome),但它的內核是Linux。
  2. FreeBSD是基於不含有AT&T代碼的免費UNIX版本(BSD 4.4 light)。最廣為流傳的是Mac OS。由於嚴格遵循BSD規範,所以在Mac下使用find命令必須加路徑,而在Linux使用的是GNU標準,GNU額外加了很多功能的,比如現在這個find不輸入路徑則使用當前路徑。
  3. Linux是基於MINIX開發的,unix-like系統,與UNIX不共享任何代碼,以現在開源免費軟體的發展來看,Linux參照UNIX哲學,但已有一種青出於藍而勝於藍的趨勢。

說話有這麼多的Linux版本:

如何選擇一款適合自己的呢?,??或者自己google linux distros就會出來相關內容。

PS: 在Steve Job去世後一周,Dennis Richie也過世了,享年70歲。不過這個消息並沒有得到大眾太多關注。

Reference

  1. 操作系統革命-Revolution OS記錄片。

本文最先發佈於

notes.tried.cc/unix_vs_


推薦閱讀:

Linux 0.12上古源碼學習(二)-Bochs模擬Linux 0.12內核的啟動與運行
帶你掌握 VI 編輯器的使用方法和技巧
PowerShell與Linux Shell有什麼不同?
Web 會議系統
centos安裝啟動MongoDB

TAG:Unix | Linux | 歷史 |