天天看點

Unix的起源

不得不說的 Unix

【内容摘要】

  • Unix誕生于1969年,此後快速被廣泛應用;
  • Unix一開始是開源的,後來AT&T收回版權,并且不公開源代碼;
  • Unix的代碼是由90%的C語言和10%的彙編組成;
  • Unix後來的兩大分支:AT&T的System V和BSD。

  由于早期的計算機并不像現在的個人計算機一樣普遍,隻有極少數人才有機會接觸到,并且當時的計算機架構很難使用,操作接口麻煩。是以在1965年前後,由貝爾實驗室(Bell)、麻省理工學院(MIT)及通用電氣公司(GE)共同發起了Multics的項目,Multics(全稱:MULTiplexed Information and Computing System)是一個全面的、通用的分時作業系統,Multics項目的目的是想讓大型主機可以同時提供300台以上的終端機連接配接使用的目标。

  可是,到了1969年前後,項目進度落後,資金也短缺,在認為Multics項目不可能成功之後,貝爾實驗室退出了該項目的研究工作。最終Multics項目還是成功地開發出了他們的系統,Multics系統雖然後來沒有受到很大的重視,但是該項目培養出了很多優秀的人才,包括Ken Thompson、Dennis Ritchie、Joe Ossanna、Douglas McIlroy、Peter Neumann、Stan Dunten、Rudd Canaday等等。

Unix的起源

圖1. Multics 分時作業系統的曆史

  參與Multics項目的工程師們調回貝爾實驗室後,面對實驗室落後的仍以批處理工作的計算機環境,他們非常懷念Multics。其中一位工程師Ken Thompson,他因為想移植一套名為“太空旅遊”的遊戲,希望開發一個小的作業系統以供使用。1969年8月,萬般無奈的Thompson在庫房裡發現了一個閑置的PDP-7,剛好此時處于休假期并且他的妻兒探親去了,于是Thompson有了額外的一個月時間實施他的計劃。經過4個星期的奮鬥,以彙編語言寫出了一組核心程式,還包括一些核心工具程式,以及一個小的檔案系統。在作業系統、Shell程式、編輯器和彙程式設計式上,他各花了一周時間。

  由于當時Thompson從Multics項目中獲得想法,将Multics龐大而複雜的系統進行簡化,于是同實驗室的朋友都戲稱這個系統為Unics(該系統就是Unix的原型)。

  Thompson的這個檔案系統有兩個重要的概念,分别是:

  • 所有的程式或系統裝置都是檔案。
  • 不管建構編輯器還是附屬檔案,所寫的程式隻有一個目的,就是要有效地完成目标。

這些概念在後來對于Linux的開發有相當重要的影響。這也就是著名的KISS(keep it simple, stupid)原則,即“簡單原則”——盡量用簡單的方法解決問題,這是“Unix哲學”的根本原則。

Unix的起源

圖2. 最初運作Unix系統的DEC PDP-7

  由于Thompson寫的Unics實在太好用了,是以在貝爾實驗室内部廣為流傳,并且多次經過改版。但是因為Unics是以彙編語言寫的,高度依賴硬體,是以每次安裝到不同的機器上都需要重新編寫彙編語言。于是Thompson與Ritchie合作想将Unics改用更進階的程式語言來編寫,進而提高可移植性。他們先選擇了BCPL(簡稱B語言),然後又嘗試PASCAL,發現編譯出來的核心性能都不是很好,因為這些語言都不太貼近硬體操作。于是,兩人(主要是Dennis Ritchie)決定自己開發一套新的語言:這就是大名鼎鼎的 C 語言。

Unix的起源

圖3. Ken Thompson(坐着)和Dennis Ritchie在PDP-11前工作

  1973年,Dennis Ritchie 用C 語言重寫與編譯Unics的核心,最後發行出Unix的正式版本。“重寫”說起來簡單,實際上并不是簡單的彙編到C語言的翻譯,這裡邊包含了很多的發明和創造。在此期間引入的“pipe”(管道)功能後來成為了Unix的一大優勢,這種功能使得程式間輸出結果的傳遞非常容易。管道的概念是貝爾實驗室的Douglas McIlroy發明的,後被很多作業系統大量拷貝,其中包括Unix的所有變體、Linux、DOS和Windows。

  重寫過的Unix很快就流行起來,此後便一直應用于生産領域。40多年過去了,雖然出現了很多的類Unix系統(例如Linux),但是他們都繼承了Unix 中的基本思想,并且發揚光大。著名的類Unix系統包括Berkeley Unix、Minix、Linux、AIX、A/UX、HP-UX以及Solaris,蘋果的Mac OS X則是基于Berkeley Software Distribution(簡稱BSD)Unix。

Unix的起源

圖4. 1998年被授予國家科技獎章(左起分别是Thompson、Ritchie和克林頓)

  Unix是以C語言寫成的,理論上是具有可移植性的,隻要獲得Unix的源碼,并且針對大型主機的特性加以修改,就可能将Unix移植到另一台不同的主機上。

  1973年以後,Unix開始與學術界合作開發,其中最重要的是與加州大學伯克利分校(Berkeley)的合作。伯克利大學的Bill Joy在移植Unix的過程中加入了很多工具軟體與編譯程式,最終将它命名為Berkeley Software Distribution (BSD)。BSD是Unix很重要的一個分支。同時Bill Joy也是Sun這家公司的創辦者。Sun公司即是以BSD開發的核心進行自己的商業Unix版本的開發的。(後來可以安裝在x86硬體架構上面FreeBSD即是BSD改版而來!)

  由于Unix的高度可移植性與強大的性能,加上當時并沒有版權的糾紛,是以讓很多商業公司開始了Unix作業系統的開發。但每一家公司自己出品的Unix雖然在架構上大同小異,但是卻僅能支援自身的硬體,是以,早些年的Unix隻能與伺服器(Server)或者大型工作站(Workstation)劃上等号。直到1979年,AT&T推出了System V第七版Unix,才支援x86架構的個人計算機系統。後來因為AT&T出于商業考慮,想将Unix的版權收回去,是以在第七版System V中特别提到了“不可對學生提供源碼”的嚴格限制。

  目前被稱為純種UNIX的指的就是System V和BSD這兩套。

Unix的起源

圖5. 類Unix系統家譜

繼續閱讀