貝爾實驗室九號計畫(,常简称为Plan 9)是一个分布式操作系统,由贝尔实验室的计算科学研究中心在1980年代中期至2002年开发,以作为UNIX的后继者。它现在仍然被操作系统的研究者和爱好者开发使用。
Plan 9的特色功能有:将所有本地和远程资源以文件形式组织的9P协议,union mounts,改进的进程文件系统以及原生的Unicode支持。在Plan 9中,所有的系统接口(如网络和用户界面接口),都是作为文件系统的一部分呈现,而不像其他操作系统上一样拥有自己独立的接口。
Plan 9得名于艾德·伍德1959年拍摄的B级科幻电影外太空九号计划
,而它的标志格伦达来自同一导演拍摄的另一部电影忽男忽女。
2021年3月21日,目前所屬諾基亞旗下的貝爾實驗室,宣布將一切知識產權以及未來開發工作轉交給新成立的九號計畫基金會(Plan 9 Foundation)。
歷史
九號計畫在貝爾實驗室中取代UNIX成為組織中主要的研究開發平台。與原先的UNIX模型相較,其發展出來的數種改變改善了系統的使用及程式開發,尤其是在分散式多使用者環境中。起先在1980年中期,九號計畫只是貝爾實驗室的內部計劃。到了1992年,貝爾實驗室提供第一個公開版本提供給學院使用。在1995年,商業化的第二版釋出提供一般大眾使用。1990年代後期,朗訊科技繼承了貝爾實驗室後,對商業化九號計畫失去了興趣。到了2000年釋出了非商業化的第三版,採用開放原始碼授權。而2002年的第四版更採用自由軟體授權。
一個包括現任和前任貝爾實驗室成員與麻省理工學院成員參與的使用者與開發人員社群,仍每天以光碟影像檔的形式持續提供每日更新釋出的檔案。貝爾實驗室也仍舊承續九號計畫的開發。開發中的原始碼檔案可以透過9P及HTTP協定加以存取並用於既有安裝檔案的更新。除了光碟映像檔中作業系統所包含的官方套件以外,貝爾實驗室也架設了一個空間供外部開發的應用程式與工具存放。
概觀
貝爾實驗室九號計畫主要是由貝爾實驗室計算科學研究中心(Computing Sciences Research Center)的成員所開發,該團體也曾開發UNIX及C語言。九號計畫團隊原先由羅勃·派克、肯·汤普逊、Dave Presotto及Phil Winterbottom所帶領,及計算科學研究中心主管丹尼斯·里奇所支持。在多年的開發過程中,有許多開發人員對這項專案做出了不小的貢獻,如布萊恩·柯林漢、Tom Duff、道格拉斯·麥克羅伊、比雅尼·史特勞斯特魯普、Bruce Ellis、Steve Simon等人。
九號計畫是針對現代分散式環境而從開始就設計成一種網路作業系統並加以開發。不同於UNIX是在設計後才增加圖形化使用者介面的功能,九號計劃打一開始就內建了。雖然仍未成為大受歡迎的UNIX衍生系統,但仍有持續成長的開發者社群。
九號計畫具備了分散式架構,它可以被安裝並使用於單一自含系統上,也有能力把作業系統的功能套件散佈於分散的硬體平台上。在標準的九號計畫安裝系統中,使用者會以一個輕量化的終端機執行Rio 圖形化使用者介面透過網路連接到CPU伺服器來處理計算密集型(computation-intensive)的程序,並藉由額外的檔案伺服器及歸檔儲存系統提供長期的資料儲存。現有的桌上型電腦亦可以在內部使用多個虛擬機器重現此種架構。
設計概念
九號計畫的設計者對與微核心類似的目標感興趣,但是以不同的架構與設計細節來達成這些目標。九號計畫的設計目標如下:
- 以檔案系統為基礎的裝置:把所有的資源都列在階層式檔案系統中,以節點(Node)表示。
- 命名空間:從應用程式的觀點來看,網路是種單一且清楚的命名空間,能展現階層式檔案系統,也能代表近端或遠端實體分離的資源。每個程序的命名空間皆能獨立建置,使用者也能同時使用採用各式命名空間的應用程式。
- 標準通訊協定:採用名為9P的標準協定,用來存取近端或遠端的所有資源。
一體化的輸入/輸出模型
在UNIX之前,多數的作業系統都各自有不同的機制來存取不同類型的裝置。舉例來說,存取磁碟的API與自序列埠傳送或接收的API、又或是操作印表機所使用的API,彼此之間都有所不同。
UNIX藉由透過磁碟索引節點(disk inodes)執行所有輸入/輸出操作來嘗試移除這些差異。每個裝置都被要求必須要支援帶有意義的讀取和寫入操作用以作為控制的手段。這也允許使用者無須了解底層的實作細節,便能利用如cp及dd等指令從任一裝置送出資料給其他的裝置。然而在此同時,許多關鍵的概念(如控制行程的狀態)並沒有一致地對應到檔案系統上。如同柏克萊接口與X Window系統等的新功能被開發出來以後,以檔案系統之外的方式實作。新的硬體功能(如在軟體中使光碟機退片的功能)也建議採用特定硬體(hardware-specific)控制的機制,如使用ioctl系統呼叫等。
九號計畫不採用這些不同的實作,而且回歸到以檔案系統為中心(file system-centric)的系統觀點。無論是網路或者使用者介面、甚至是視窗本身,所有可用資源對於每個九號計畫的程式來說,都是階層式檔案系統的一部份,而非特定的介面。不過九號計畫僅支援Unicode中基本多文种平面中有定義的部份。
實作
除了x86架構下有可安裝的實行環境之外、九號計畫也移植到MIPS、DEC Alpha、SPARC、PowerPC、ARM及其他硬體平台上。系統以衍生自ISO/ANSI C的語言所編寫。部分應用程式原先以Alef撰寫,但目前皆以C語言改寫。九號計畫支援以POSIX應用程式透過APE來模擬柏克萊接口介面。近來有一套新的應用程式linuxemu被開發用來執行Linux的程式,目前仍有許多要改進的地方。
九號計畫也被用在具代表性的超級電腦上,像是IBM BG/L Supercomputer以及Blue Gene。
影響
UNIX其中一個中心概念是所有系統介面皆可以一組檔案的形式呈現,而九號計畫成功地把這個概念以現代分散式系統實作出來。九號計畫的一些功能,像是Unicode中的UTF-8編碼,也被其他作業系統所實作。一些類UNIX作業系統,例如Linux,也實作9P、九號計畫的檔案系統,以及部份實作的類rfork指令的系統呼叫。除此之外,在Plan 9 from User Space中許多九號計畫所採用的應用程式及工具,例如rc shell,也被移植到UNIX以及LINUX系統上,而且還有一定程度的人氣。Glendix這個專案則嘗試以GNU/Linux作業系統取代九號計畫,或者是說,以Linux核心來取代九號計畫的核心。
然而,九號計畫並未能像UNIX一樣熱門,變成主要只是一種研究用的工具。九號計畫被評為"作用看來不過是能在作業系統研究領域產生有趣論文的裝置"
對於九號計畫的評論像是在作業系統設計中把九號計畫列為糟糕的更好的典範,其他常見的評論則有九號計畫作業系統中缺乏「優雅」(polish)及開發環境、九號計畫中達到商業化程度的軟體支援量不足。
九號計畫的支持者和開發人員聲稱阻礙其發展的問題已被解決,原先作為分散式系統、開發環境、研究平台的目標也都已經達成,而且也慢慢地開始有人採用。可透過Inferno的托管能力將九號計畫的技術帶給其他系統,形成異構網格運算中的一部份。
授權
[https://9p.io/plan9/download.html 完整的原始碼] 可以免費的在朗訊公共許可證1.02版的授權之下取得,而且被開放原始碼促進會認為是開放原始碼軟體及自由軟體基金會認為是自由軟體。它雖然有通過Debian自由軟體指導方針,不過不相容於GNU通用公共許可證。
2021年3月23日之后,所有版本以MIT License授权。
參照
九號計畫標準程式庫
- rc - 九號計畫所採用的shell
- - 文字編輯器
- acme - 提供給程式設計師用的使用者介面
- plumber - 行程間通訊
- mk - 建立軟體用的工具,跟UNIX的make程式類似
- acid - 偵錯器
- rio - 新的九號計畫視窗系統
- 8½ - 舊的九號計畫視窗系統
- Fossil及Venti - 新的歸檔系統及長期資料儲存
實作介面
- 9P(或Styx) - 檔案系統的協定
- rendezvous - 基礎的同步機制
- Brazil - 變成九號計畫第四版的專案
影響
- Plan 9 from User Space - 將九號計畫函式庫及應用程式移植到類UNIX作業系統
- Inferno - 跟隨九號計畫腳步的分散式作業系統
- [http://lsub.org/ls/planb.html B計畫] - 基於九號計畫的實驗作業系統
- [http://lsub.org/ls/octopus.html Octopus] - B計畫的新成果
- 9wm - 複製九號計畫介面的X視窗管理員
- wmii - 採用類似9P協定介面的檔案系統的X視窗管理員
- [http://www.glendix.org/ Glendix] - 將Plan 9 from User Space的工具移植到Linux
參見
- Haiku – 开源桌面操作系统
- FreeRTOS – 微内核,实时操作系统(RTOS)
- Redox - Rust实现的微内核操作系统
- QNX – 符合POSIX,微内核实时操作系统(RTOS)
*INTEGRITY – 微内核实时操作系统(RTOS)
- L4微内核系列 – L4系列,小而快的开源微内核
- MINIX 3 – 类Unix微内核操作系统
參考文獻
外部連結
貝爾實驗室
- [http://plan9.bell-labs.com/plan9/ 九號計畫的網站]
*[https://9p.io/plan9/ 九號計畫的鏡像網站]
文件
- FOSDEM 2006的[https://web.archive.org/web/20071128062452/http://cm.bell-labs.com/sources/contrib/uriel/slides/fosdem06/slides.pdf 投影片]及 [http://ftp.belnet.be/mirror/FOSDEM/2006/FOSDEM2006-plan9.avi 影片檔]
- [https://web.archive.org/web/20160225074407/http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTDEADYET.pdf Plan 9 is not dead] at [https://web.archive.org/web/20100420065709/http://www.cs.unm.edu/~fastos/ FAST-OS 2005]
其他原生及虛擬機器
原生
- [https://web.archive.org/web/20090130034238/http://www.vitanuova.com/plan9/index.html 九號計畫]Vita Nuova Holdings的盒裝版
虛擬
- [http://www.oszoo.org/wiki/index.php/Category:Plan9_images 九號計畫]Qemu映像檔
- [http://www.planb-security.net.nyud.net:8080/plan9 九號計畫]VMware VMPlayer虛擬機器
- [http://swtch.com/9vx/ 九號計畫] Vx32擴充環境的二進位映像檔
其他資源
- [http://mail.9fans.net/listinfo/9fans 9fans] ,http://9fans.net網站上的九號計畫郵件列表
- [http://ninetimes.cat-v.org Ninetimes] ,九號計畫、Inferno、Unix,以及貝爾實驗室作業系統的新聞頁面
- [irc://irc.freenode.net/plan9 #plan9],freenode架設的九號計畫IRC頻道
- [http://dx.doi.org/10.1108/07378830310509772 Reinventing UNIX: An introduction to the Plan 9 operating system], by Hancock, B., Giarlo, M.J., & Triggs, J. A., published in Library Hi Tech, 21(4), 471-476.
评论 (0)