Sunday, July 9, 2017

A Narrative History of BSD 心得

A Narrative History of BSD

這篇文為我修課時做的心得,由於原文是用hackmd寫的,在這裡版型會有差異(原文)
  • 什麼是BSD
    • 全名:Berkeley Software Distribution(柏克萊軟體套件)
    • 類型:作業系統(UNIX-like)
    • 創立者;Bill Joy
    • 程式語言:C
    • license:BSD license
    • 描述:常用於工作站與伺服器
    • 下圖為UNIX譜系
  • 全片大綱
    以下是以影片中Dr. Kirk McKusick的解說分段。
    • Bill Joy Era
      • 在柏克萊大學建立
      • Bill Joy時期(1BSD,2BSD)納入的軟體套件:EX(vi),pascal interpreter,C Shell
    • TCP create
      • BSD 4以後的TCP/IP建立
      • BNN與柏克萊團隊的衝突
    • lawsuit of license
      • 與AT&T的著作權問題
  • BSD歷史與<A Narrative History of BSD>提及的對照
    以下是BSD的歷史與影片中的內容相互參照。
    • 1BSD
      • 釋出:1978年
      • 由Bill Joy創立,從早期貝爾實驗室的UNIX改寫而來
        原本是Bill Joy對AT&T的UNIX進行修改,雙方彼此間是合作關係,後來Bill Joy版本與AT&T差異加大,Bill Joy因此打包釋出1BSD
      • 加入ex(vi前身)、Pascal等
      • 執行環境:PDP-11
    • 2BSD
      • 釋出:1979年
      • 主要仍由Bill Joy開發(後期版本,如:2.9、2.10、2.11等多由別人改寫)
        這些後期版本的釋出時間比3BSD來得晚多是針對在PDP-11下的BSD進行維護與修改,甚至在2.9BSD納入了一些4.1cBSD的code。
      • 加入vi、C shell、Network package(Berknet、區網服務)
      • 執行環境:PDP-11
    • 3BSD
      • 釋出:1979年
      • 柏克萊團隊合作撰寫
      • 主要是將BSD port到VAX
      • 這版的BSD開始受到DARPA(美國國防高等研究計劃署)的重視,要求柏克萊成立CSRG(Computer Systems Research Group)來維護BSD。
        • DARPA開始注重BSD的原因是因為當時美國國防部底下的協力廠商使用太多種程式語言與環境,造成統合困難,所以選用BSD。
        • BSD當時效能超越AT&T發行的UNIX,不過因為BSD內含AT&T的程式碼,所以在當時很多購買AT&T license然後使用BSD。
        • VAX + VMS(IBM建立的作業系統)與VAX+BSD的競爭
          VMS的效能測試(micro benchmark)原本都比BSD好(pipe、取得PID、ping等),後來Bill Joy等人修改至相同(4.1BSD)。另外由於BSD的可移值性比較好所以獲得DARPA青睞。
    • 4BSD
      • 釋出:1980年
      • 特色:Job Control、deliver mail、PRAM’list(待查明)、Curses library(ncurese前身,terminal的控制函式庫)、Signal
      • 開始受到DARPA注資
      • 執行環境:VAX
    • 4.1BSD
      • 釋出:1981年
      • 效能改善
      • 4.1a BSD:
        當時DARPA請BNN(Bolt, Beranek and Newman ,BBN Technologies前身)與柏克萊團隊來實做TCP/IP協定,柏克萊負責介面(socket、connect等),BBN負責底層實做。由於Bill Joy進度超前,所以他向BBN的此專案領導Rob Gurvitz要了些雛型程式,並做了Rlogin與RCP在VAX 750上測試,多次測驗後達到該測試環境的上限表現。而這些進度後來納入了4.1a BSD中。
      • 4.1b BSD:
        • 後來Samuel J Lefflerr加入CSRG,並改寫TCP/IP介面,使得4.1b BSD可以開始支援多個連線。(主要修改為,當建立連線後會回傳一個新的socket,而不是同一個socket重複使用)。
        • 另外影片講者Marshall Kirk McKusick也協助開發新的檔案系統Berkeley Fast File System。
      • 4.1c BSD:修改完Signal後,成為4.1中散布最廣版本。
    • 4.2BSD
      • 釋出:1983年
      • Bill Joy離開建立Sun公司,Mike Kareks加入
      • 納入更完整的TCP/IP程式,造成柏克萊團隊與BBN的紛爭
        由於BBN的程式未被納入,影響其聲譽,所以釋出可自行編譯版本的TCP/IP程式,造成是市面上有兩種TCP/IP程式實做的BSD,最後在效能評估上由柏克萊團隊勝出,所以4.3使用柏克萊的TCP/IP。
    • 4.3BSD
      • 釋出:1986年
      • 實做OSI分層、對虛擬記憶體系統改善
      • 用BSD license發行不含AT&T license的BSD,也就是NET/1(Networking Release 1)。
        趣事:柏克萊釋出NET/1有兩個管道,一是用1000美元購買實體版,二是透過網路下載,結果由超過千人付錢購買。
    • NET/2
      • 釋出:1991年
      • 柏克萊認為他們的BSD已經與AT&T的UNIX原始碼完全不同,所以以低價開始釋出NET/2,但也因此激怒AT&T,造成了BSDi與AT&T得訴訟。
        最後雙方和解,柏克萊針對有問題原始碼做修正
    • 4.4BSD
      • 釋出:1994年
      • 訴訟結束後的clean code與一些修正所作的釋出。
    • other distribution
      • freeBSD,NetBSD等社群版本。
  • 名詞解釋與補充
    • ZFS lawsuit
      • 時間:2007年
      • 雙方:NetApp , Sun(Oracle)
      • 內容:NetApp控告Sun開發的自由軟體ZFS(常用於freeBSD、BSD上,擁有snapshot功能的檔案系統)侵權,Sun後來也反訴回去。
      • 結果:和解收場
      • 其他:Sun贏得訴訟後,將ZFS技術帶到linux,變成Btrfs。
    • Sun lawsuit
      • 影片中Dr. Kirk McKusick提到其為Sun lawsuit專家,指的可能為Sun在JVM上的訴訟。
      • JVM lawsuit:
        • Sun vs Microsoft
        • 爭端源於MSJVM(微軟開發的JVM)
        • 結果為和解,但Microsoft結束MSJVM開發
  • 心得
    • 這影片的資訊量有點大,因為Dr. Kirk McKusick他把三小時課程壓到50分鐘內說完,而且幾乎完整敘述了BSD的歷史,還有在這歷史中衍生的TCP/IP開發事件與BSDi和AT&T的法律訴訟。從這個BSD的歷史,可以了解BSDi與AT&T訴訟的源頭。而從UNIX分出來的BSD最後也影響整個資訊產業生態。BSD對於可移植性的要求,也讓BSD仍存活於世上。
    • 我覺得Dr. Kirk McKusick對於Bill Joy的描述很有趣。他形容Bill Joy是一個可以快速找到處理一件事情的最短路徑,程式寫的很快,問題一下就解決了。不過他的code有點亂,所以需要後人的維護。沒想到早年的程式設計大師也有程式碼不易維護的問題。
    • Dr. Kirk McKusick好喜歡用at any rate這片語喔,整片大約說了50幾次吧。
  • Question
  • BSD前期(1BSD、2BSD、3BSD)的license採用BSD license與AT&T license,這個混亂的授權是AT&T許可的嘛?
  • 為什麼BSD開發到BSD 4.4 lite2就停了?變成其他發行版本?
  • DARPA為什麼會讓柏克萊以開源釋出BSD,而不是讓這些變成國防部的祕密武器?
  • 有些縮寫如PMAC、PRAM找不太到只得是甚麼

No comments:

Post a Comment

精選文章

使用Ardunio Atmega2560 連接 nRF24L01+

使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...