科技典故
 
 
Unix是怎麼來的?
不管是IBM 的AIX、Sun 的Solaris、HP 的HP-UX、還是Linux等等,都是源自1969年AT&T貝爾實驗室(Bell Labs)所開發出來的Unix,回顧這段歷史,MULTICS(MULTiplexed Information and Computing Service)計劃是重要的關鍵。。
UNIX(Uniplexed Information and Computing System)是第一套由C語言所開發出來的作業系統,採用簡化縮小的核心程式,具有分時(Time Sharing)、交談式、支援多工(Multi-Tasking)、多使用者(Multi-User)、與多元程式(Multi-Programming)的功能,普遍應用在伺服器上,在工作站方面以Sun公司的SunOS為代表,PC的版本有Microsoft公司的XENIX,Sun公司的Solaris,及共享軟體的Unix版本如Linux、FreeBSD等。不管是IBM 的AIX、Sun 的Solaris、HP 的HP-UX、還是Linux等等,都是源自1969年AT&T貝爾實驗室(Bell Labs)所開發出來的Unix。 回顧Unix 歷史,MULTICS(MULTiplexed Information and Computing Service)計劃是重要的關鍵。當時大部份電腦都是採用批次處理(Batch Processing)的方式:批次處理的概念就像是在洗衣服,將衣服(Jobs)累積到一定的數量後才丟到洗衣機(CPU)處理,平時洗衣機(CPU)是閒置不用的。為了提升CPU的效能,AT&T、G.E.及MIT計畫合作開發MULTICS作業系統。當時MIT設計的CTSS(Compatible Time-Sharing System)已相當成功,所以MULTICS就是以CTSS做基礎,建置在G.E.的大型電腦GE-645。 當時仍和AT&T同屬一家公司的Bell Labs已在60年代末期參與此計劃,Unix 之父Ken Thompson則恭逢其時,由加州柏克萊分校換到Bell Labs,成為MULTICS 研究小組的一員。不過MULTICS發展進度緩慢,過了兩年預定期卻遲遲不見進展,以致1969年2月Bell Labs決定退出,不過MULTICS仍持續發展著。1972年Honeywell併購G.E.的電腦部門後,MULTICS進入商業市場,在MULTICS相對盛行的80年代,約有75至100台價值數百萬美元的大型電腦使用MULTICS。然而1977年MIT退出MULTICS的開發、80年代中期Honeywell把電腦事業賣給Bull後,MULTICS的發展也在1988年劃上休止符。 Ken Thompson在MULTICS中,為GE-645寫了名為太空旅行(Space Travel)的遊戲程式,當Bell Labs退出MULTICS後,Ken Thompson打算找一台機器把此遊戲移植過去,於是便和Dennis Ritchie向Bell Labs申請一台DEC-10以建立一台分時系統,申請並未通過。最後他們採用一台巳棄置在旁的Digital PDP-7(1964年DEC生產的迷你電腦),Ken Thompson就以MULTICS中的技術經驗─包括樹狀結構(tree-structured)檔案系統、命令解譯器(Command Interpreter)及對周邊設備的存取控制方式─為基礎,為這台過時的電腦撰寫一套新作業系統。 受限於機器的效能,PDP-7只能支援兩個使用者,實在稱不上多使用者(Multi-User)。當時和Ken Thompson一起共事的Brian W. Kernighan便玩弄MUITICS這字本身,開玩笑地戲稱他們的系統其實是UNiplexed Information and Computing System,並縮寫為UNICS,後來取其諧音,就稱其為Unix。 由於PDP-7的計算能力有限,也不太可能提供平行處理的服務,於是Ken Thompson和Dennis Ritchie再次提出申請,以研究文書處理系統的名義請購一台PDP-11/20。因為PDP-11/20的磁碟比主機足足慢了三個月才運到實驗室,就在等候磁碟的空閒時間,Ken Thompson用PDP-11的組合語言重新編寫整個Unix核心及基本命令。此時,Bell Labs的專利局正在尋找一個系統作為處理文件的工具,Ken Thompson所開發的文書處理系統剛好符合需求,Bell Labs的專利局就成了Unix的第一家商業用戶。於是在1971年11月,Unix小組終於將Unix第1版的說明手冊定稿,該系統的手冊被標示為First Edition,因此由Bell Labs發展的Unix版本,都是以同時出版的說明文件版本號碼為基準。 爾後Unix版本眾多,茲不贅述。其中重要的是1973年11月Unix V4,用C語言重新編寫,只要稍微修改原始碼,便可在不同的硬體架構上面執行。因此,這促使許多商業軟體公司及學術機構加速研發Unix,成為可攜式作業系統的一個里程碑。這情況下自1974年起,AT&T公司不得不把Unix的原始碼提供給學術性機構研究,使得Unix的穩定性與執行效率更好,並增加更多功能。1975年的Unix V6第一次在Bell Labs以外使用,並推動了加州柏克萊分校於1978年開發的1 BSD(1st Berkeley Software Distribution)Unix版本的基礎,開啟Unix分支BSD系列。1979年的Unix V7被認為是空前絕後的完整作業系統,被移植到VAX上,稱為32V。由於其輕薄短小,如伊利諾、哈佛、柏克萊等成果影響深遠,柏克萊的Bill Joy和Ozalp Baboglu以32V為基礎,加入虛擬記憶體、需求分頁及分頁替換等重要功能後,發表3 BSD Unix,因為其具有大型的記憶體管理機制,因而獲得美國防部高等防衛研究所(DARPA)的支持。 同時期,AT&T 成立USG(Unix Support Group),催生Unix成為市場化的商品,對外發表的首版是System III,再來是System IV。從此Unix版本便有BSD和AT&T相互抗衡,因而分為System IV和4.x BSD這兩大主流。然AT&T向法院控告BSD剽竊AT&T 的原始碼,終結了頗受好評的BSD系統,AT&T本身則因反拖拉斯法被拆解成幾個子公司,反而加速Unix商品投入市場的速度。但由於AT&T讓Unix在商業應用改良、修改散佈的自由度受限,使得Open Source此一新觀念重要性為世人所注重。1984年Richard M. Stallman創立GNU(GNU is Not Unix)計劃,開發一套與Unix向上兼容、名為GNU的自由軟體系統,並在1985年成立自由軟體基金會(Free Software Foundation;FSF),研發許多自由軟體供大眾使用,也帶給日後風起雲湧的Linux落地生根的紮實基礎。