fbpx
维基百科

貝爾實驗室九號計畫

貝爾實驗室九號計畫(英語:Plan 9 from Bell Labs,常简称为Plan 9)是一个分布式操作系统,由贝尔实验室的计算科学研究中心在1980年代中期至2002年开发,以作为UNIX的后继者。它现在仍然被操作系统的研究者和爱好者开发使用。[4][5]

貝爾實驗室九號計畫
格伦达,九號計畫的吉祥物,由Renée French英语Renée French繪製[1]
rio (視窗介面)
开发者貝爾實驗室
(現已交由Plan 9 Foundation接手)
编程语言衍生自ISO/ANSI C
作業系統家族類Unix系統
運作狀態支援中
源码模式自由及開源軟體
首次发布1992年(僅供學院)
1995年(一般大眾)
当前版本Fourth Edition (2015年1月10日,​8年前​(2015-01-10)[2]
支援平台x86MIPSDEC AlphaSPARCPowerPCARM
内核类别單核心[3]
默认用户界面rio / rc
许可证MIT
官方網站https://p9f.org/
https://plan9foundation.org/

Plan 9的特色功能有:将所有本地和远程资源以文件形式组织的9P协议,union mounts,改进的进程文件系统以及原生的Unicode支持。在Plan 9中,所有的系统接口(如网络和用户界面接口),都是作为文件系统的一部分呈现,而不像其他操作系统上一样拥有自己独立的接口。

Plan 9得名于艾德·伍德1959年拍摄的B级科幻电影外太空九号计划 [6],而它的标志格伦达来自同一导演拍摄的另一部电影忽男忽女

2021年3月21日,目前所屬諾基亞旗下的貝爾實驗室,宣布將一切知識產權以及未來開發工作轉交給新成立的九號計畫基金會(Plan 9 Foundation)。[7]

歷史 编辑

日期 发行版本 註釋
1992 Plan 9第一版 贝尔实验室向各大学发布
1995 Plan 9第二版 贝尔实验室发布,允许非商业使用[8]
2000 Plan 9第三版(巴西 朗讯科技在开源许可下发布,允许非商业使用
2002 Plan 9第四版 朗讯科技在自由软件许可MIT下发布[9]

九號計畫在貝爾實驗室中取代UNIX成為組織中主要的研究開發平台。與原先的UNIX模型相較,其發展出來的數種改變改善了系統的使用及程式開發,尤其是在分散式多使用者環境中。起先在1980年中期,九號計畫只是貝爾實驗室的內部計劃。到了1992年,貝爾實驗室提供第一個公開版本提供給學院使用。在1995年,商業化的第二版釋出提供一般大眾使用。1990年代後期,朗訊科技繼承了貝爾實驗室後,對商業化九號計畫失去了興趣。到了2000年釋出了非商業化的第三版,採用開放原始碼授權。而2002年的第四版更採用自由軟體授權。

一個包括現任和前任貝爾實驗室成員與麻省理工學院成員參與的使用者與開發人員社群,仍每天以光碟影像檔的形式持續提供每日更新釋出的檔案。貝爾實驗室也仍舊承續九號計畫的開發[10]。開發中的原始碼檔案可以透過9PHTTP協定加以存取並用於既有安裝檔案的更新[11]。除了光碟映像檔中作業系統所包含的官方套件以外,貝爾實驗室也架設了一個空間供外部開發的應用程式與工具存放。

概觀 编辑

貝爾實驗室九號計畫主要是由貝爾實驗室計算科學研究中心(Computing Sciences Research Center)的成員所開發,該團體也曾開發UNIXC語言[12]。九號計畫團隊原先由羅勃·派克肯·汤普逊、Dave Presotto及Phil Winterbottom所帶領,及計算科學研究中心主管丹尼斯·里奇所支持。在多年的開發過程中,有許多開發人員對這項專案做出了不小的貢獻,如布萊恩·柯林漢、Tom Duff、道格拉斯·麥克羅伊比雅尼·史特勞斯特魯普、Bruce Ellis、Steve Simon等人[13]

九號計畫是針對現代分散式環境而從開始就設計成一種網路作業系統並加以開發。不同於UNIX是在設計後才增加圖形化使用者介面的功能,九號計劃打一開始就內建了。雖然仍未成為大受歡迎的UNIX衍生系統,但仍有持續成長的開發者社群。

九號計畫具備了分散式架構,它可以被安裝並使用於單一自含系統上,也有能力把作業系統的功能套件散佈於分散的硬體平台上。在標準的九號計畫安裝系統中,使用者會以一個輕量化的終端機執行Rio 圖形化使用者介面透過網路連接到CPU伺服器來處理計算密集型(computation-intensive)的程序,並藉由額外的檔案伺服器及歸檔儲存系統提供長期的資料儲存。現有的桌上型電腦亦可以在內部使用多個虛擬機器重現此種架構。

設計概念 编辑

九號計畫的設計者對與微核心類似的目標感興趣,但是以不同的架構與設計細節來達成這些目標。九號計畫的設計目標如下:

  • 以檔案系統為基礎的裝置:把所有的資源都列在階層式檔案系統中,以節點(Node)表示。
  • 命名空間:從應用程式的觀點來看,網路是種單一且清楚的命名空間,能展現階層式檔案系統,也能代表近端或遠端實體分離的資源。每個程序的命名空間皆能獨立建置,使用者也能同時使用採用各式命名空間的應用程式。
  • 標準通訊協定:採用名為9P的標準協定,用來存取近端或遠端的所有資源。

一體化的輸入/輸出模型 编辑

在UNIX之前,多數的作業系統都各自有不同的機制來存取不同類型的裝置。舉例來說,存取磁碟API與自序列埠傳送或接收的API、又或是操作印表機所使用的API,彼此之間都有所不同。

UNIX藉由透過磁碟索引節點(disk inodes)執行所有輸入/輸出操作來嘗試移除這些差異。每個裝置都被要求必須要支援帶有意義的讀取寫入操作用以作為控制的手段。這也允許使用者無須了解底層的實作細節,便能利用如cpdd等指令從任一裝置送出資料給其他的裝置。然而在此同時,許多關鍵的概念(如控制行程的狀態)並沒有一致地對應到檔案系統上。如同柏克萊接口與X Window系統等的新功能被開發出來以後,以檔案系統之外的方式實作。新的硬體功能(如在軟體中使光碟機退片的功能)也建議採用特定硬體(hardware-specific)控制的機制,如使用ioctl系統呼叫等。

九號計畫不採用這些不同的實作,而且回歸到以檔案系統為中心(file system-centric)的系統觀點。無論是網路或者使用者介面、甚至是視窗本身,所有可用資源對於每個九號計畫的程式來說,都是階層式檔案系統的一部份,而非特定的介面[10]

檔案系統、檔案與名稱 编辑

九號計畫擴充系統到超越檔案的概念,來到了「名稱」的層次。無論是電腦的檔案顯示器使用者電腦本身,都是一個獨一無二的路徑名稱。這些都是透過既有的UNIX標準來處理,並擴充至所有的物件皆可以用一致的方式來命名及定址。這跟全球資訊網所使用的URI的概念很相似。在UNIX中,像印表機這樣的裝置會透過軟體轉換的方式在/dev以名稱代表,但這種定址方式只對實體連接到硬體上的裝置有效,並不能套用到網路裝置上。在九號計畫系統中,所有的印表機都會以檔案的方式呈現,而且可以透過網路被任何工作站存取。

九號計畫的另一個創新點則是使用者可以對相同的「真實世界」物件各自分別取不同的名稱。每個使用者都可以藉由在他們的命名空間中收集各式各樣不同的物件來創造屬於他們自己的個人化環境。UNIX也有類似的觀念,使用者可以複製其他使用者來獲取權限。但是九號計畫則把這種作法擴充到所有的物件,使用者可以輕易地產生自身的「複製品」,加以修改,就算移除這些複製品也不會影響他們創造過的資源。

合併目錄 编辑

UNIX允許從不同的資源透過「連結」或檔案系統「掛載」的觀念來建立檔案系統。這些功能會屏蔽掉原先的目錄,如果有人在名為「net」的目錄下掛載了新的檔案系統,會導致無法存取先前可以在「net」目錄下存取的內容,除非取消掛載的操作。

九號計畫則採用合併目錄的想法,從不同媒體或網路資源合併的目錄會以透明(transparently)的方式繫結。舉例來說,可以把別台電腦的/bin(應用程式)目錄跟本機端繫結,接下來這個目錄就會同時有本地端以及遠端的應用程式在裡面,使用者可以無障礙的存取近端或是遠端的程式。使用相同系統的情況下,九號計畫所控制的外部裝置與資源可以繫結到/dev目錄下,這可以讓裝置不需要任何額外的程式,就可以透過網路進行分享。

現今有許多Linux發行版Live CD,一定程度上的以合併掛載的方式實做了這個功能。

/proc 编辑

列出所有執行中行程/proc目錄,描繪出這些功能是如何在共同運作時能夠帶來更好的整體結果。九號計畫特別的"檔案系統"也為Linux及其他之後的作業系統所採用。不同於其他核心資源的是,行程以/proc目錄下的命名物件(內含資訊與控制檔案的子目錄)的形式表現,並給予使用者一組動態的輸入/輸出通道來對行程傳送指令及讀取資料。使用者無須使用受限的系統呼叫來與編譯過的程式核心互動,相反的,它可以使用如ls以及cat等指令來搜尋、查詢、以及操作行程。

使用者也可以從其他的機器上將/proc目錄(以及任何其他特定的檔案系統)掛載到自己的命名空間中,就如同這些程序是在本機端一般地與它們互動。結果就是利用個別的機器架構出一套分散式運算環境,這些機器可能是使用者桌上的終端機、儲存長期資料的檔案伺服器、提供較快CPU及運算能力、使用者稽核、閘道器等服務之其他伺服器,全部都採用為大多數電腦使用者所熟悉的既有的階層式目錄/命名系統。使用者可以藉由終端機來收集檔案伺服器、伺服器上所運行的應用程式、網路上的印表機等設備,繫結進自己的命名空間進而"建構"出一套系統。

/net 编辑

九號計畫並沒有使用任何系統呼叫來處理眾多的通訊協定或裝置驅動程式的介面。舉例來說,/net目錄下包含了所有TCP/IPAPI,並可藉由使用腳本語言命令列介面的工具來撰寫可以控制檔案對連線進行寫入或讀取的程式。底下的子目錄如/net/tcp/net/udp等目錄用來對應各種協定的介面。使用者可以藉由掛載一台具有公開(public)IP位址的外部機器的/net目錄,來讓使用9P網路協定的內部網路私有(private)IP位址,能透過該外部機器進行連線的方式,進而達到實做NAT的效果。又或者使用者可以藉由掛載遠端閘道器的/net目錄,在公開網路上使用加密(secured)的9P協定達成實做VPN的效果。

以下是在/net目錄中採用合併(或稱堆疊(stack))目錄的例子:就像物件導向程式語言的繼承觀念一樣,你可以把一個(可能是遠端的)/special目錄繫結到其他的本地端特定目錄下,增加一些控制檔案以及是需要隱藏其他的檔案。這個合併目錄線再就像是原先目錄的子物件一般,原先的功能可以僅更動一部份就好。對照到/net檔案系統的情況,使用者可以藉由更動或隱藏底下的/net/udp子目錄,增加本地端過濾程序來達成控制或擴充UDP介面的功能,而不會更動到原本正在運行的(可能是遠端機器上的)/net/tcp子目錄的資料。命名空間是針對每個行程來設定的,如果使用者更動對/net合併目錄來一個不受信任的應用程式設定限制,就可以限制該程式存取網路的能力。

這讓程式設計師很容易就可以在採用檔案系統的標準命名格式、存取控制、安全機制的情況下,從不同的系統上使用不同的語言合併「物件」或檔案系統,大大增加了使用上的透明度。

這也跟BSDmount_portal 的指令所提供的功能類似,只是掛載的目錄不是/net而是/p,提供的網路協定也只有/tcp而已。

網路與分散式運算 编辑

九號計畫雖然是基於UNIX,但是設計上則是想達成運算系統核心功能間彼此溝通的觀念。所有系統資源都被當成檔案般地命名及存取,並提供可根據在特定機器上各個程式設定的多種分散式系統視圖(view)。這種讓伺服器以類似傳統檔案的方式,把任何資訊都呈現給使用者及應用程式的實作方式,增進了應用程式設計上的一般化與模組化的能力。

九號計畫支援網路通透性的關鍵在於採用一種新的底層網路協定9P。9P協定實作了連結到命名網路物件並以類檔案(file-like)系統呈現的方式。藉由快速的位元導向(而非區塊導向),分散式檔案系統可以把任何物件視覺化的呈現,而非透過遠端機器上的一個NFS伺服器再加以呈現。這個協定可以用來跟行程、程式、資料、以及包含使用者介面及網路以及彼此之間進行通訊。在第四版中,這個協定作了一些修改並且更名為9P2000。

Unicode 编辑

九號計畫的系統採用Unicode作為編碼機制。九號計畫中運用由Ken Thompson提出重大修改的UTF-8作為整個系統中的原生編碼,並在1992年將整個系統提供作一般使用[14]。不過九號計畫僅支援Unicode中基本多文种平面中有定義的部份。

實作 编辑

 
用rio進行安裝的GUI畫面

除了x86架構下有可安裝的實行環境之外、九號計畫也移植到MIPSDEC AlphaSPARCPowerPCARM及其他硬體平台上。系統以衍生自ISO/ANSI C的語言所編寫。部分應用程式原先以Alef撰寫,但目前皆以C語言改寫。九號計畫支援以POSIX應用程式透過APE來模擬柏克萊接口介面。近來有一套新的應用程式linuxemu被開發用來執行Linux的程式,目前仍有許多要改進的地方。

九號計畫也被用在具代表性的超級電腦上,像是IBM BG/L Supercomputer[15]以及Blue Gene

影響 编辑

UNIX其中一個中心概念是所有系統介面皆可以一組檔案的形式呈現,而九號計畫成功地把這個概念以現代分散式系統實作出來。九號計畫的一些功能,像是Unicode中的UTF-8編碼,也被其他作業系統所實作。一些類UNIX作業系統,例如Linux,也實作9P、九號計畫的檔案系統,以及部份實作的類rfork指令的系統呼叫。除此之外,在Plan 9 from User Space中許多九號計畫所採用的應用程式及工具,例如rc shell,也被移植到UNIX以及LINUX系統上,而且還有一定程度的人氣。Glendix這個專案則嘗試以GNU/Linux作業系統取代九號計畫,或者是說,以Linux核心來取代九號計畫的核心。

然而,九號計畫並未能像UNIX一樣熱門,變成主要只是一種研究用的工具。九號計畫被評為"作用看來不過是能在作業系統研究領域產生有趣論文的裝置"[16]Eric S. Raymond在他的著作The Art of Unix Programming中則推測九號計畫缺乏被接受度。

"九號計畫會失敗單純只是因為它的改進程度沒大能取代Unix。與九號計畫相較,雖然UNIX看來破破爛爛又有明顯缺失,但是它還是能好好的把工作完成,這就足以保住它的地位了。這件事情給那些有雄心壯志的系統架構的一堂課是:比更佳解決方案相比之下來的最危險的敵人是那些能把事情已經做的夠好的程式。"[16]

對於九號計畫的評論像是在作業系統設計中把九號計畫列為糟糕的更好的典範,其他常見的評論則有九號計畫作業系統中缺乏「優雅」(polish)及開發環境[17]、九號計畫中達到商業化程度的軟體支援量不足[18]

九號計畫的支持者和開發人員聲稱阻礙其發展的問題已被解決,原先作為分散式系統、開發環境、研究平台的目標也都已經達成,而且也慢慢地開始有人採用。可透過Inferno的托管能力將九號計畫的技術帶給其他系統,形成異構網格運算中的一部份[19][20][21][22]

授權 编辑

完整的原始碼 (页面存档备份,存于互联网档案馆)可以免費的在朗訊公共許可證1.02版的授權之下取得,而且被開放原始碼促進會認為是開放原始碼軟體及自由軟體基金會認為是自由軟體。它雖然有通過Debian自由軟體指導方針,不過不相容於GNU通用公共許可證。 2021年3月23日之后,所有版本以MIT License授权。[23]

參照 编辑

九號計畫標準程式庫 编辑

  • rc - 九號計畫所採用的shell
  • Sam (文本编辑器)英语Sam_(text_editor) - 文字編輯器
  • acme - 提供給程式設計師用的使用者介面
  • plumber - 行程間通訊
  • mk - 建立軟體用的工具,跟UNIX的make程式類似
  • acid - 偵錯器
  • rio - 新的九號計畫視窗系統
  • 8½ - 舊的九號計畫視窗系統
  • Fossil及Venti - 新的歸檔系統及長期資料儲存

實作介面 编辑

  • 9P(或Styx) - 檔案系統的協定
  • rendezvous - 基礎的同步機制
  • Brazil - 變成九號計畫第四版的專案

影響 编辑

  • Plan 9 from User Space - 將九號計畫函式庫及應用程式移植到類UNIX作業系統
  • Inferno - 跟隨九號計畫腳步的分散式作業系統
  • B計畫 (页面存档备份,存于互联网档案馆) - 基於九號計畫的實驗作業系統
  • Octopus (页面存档备份,存于互联网档案馆) - B計畫的新成果
  • 9wm - 複製九號計畫介面的X視窗管理員
  • wmii - 採用類似9P協定介面的檔案系統的X視窗管理員
  • Glendix (页面存档备份,存于互联网档案馆) - 將Plan 9 from User Space的工具移植到Linux

參見 编辑

參考文獻 编辑

  1. ^ Plan 9 Foundation. Glenda, the Plan 9 Bunny. 2006 [2023-04-20]. (原始内容于2023-05-30). 
  2. ^ . Bell Labs. [2019-07-25]. (原始内容存档于2017-06-01). Sat Jan 10 04:04:55 EST 2015 ... plan9.iso.bz2 
  3. ^ Crawford, Diane. Forum. Communications of the ACM (Association for Computing Machinery (ACM)). 1999, 42 (8): 11–15. ISSN 0001-0782. doi:10.1145/310930.310939. 
  4. ^ Robertson, James. Plan 9 Forked, Continues as 9front. OSNews. 2011-07-16 [2011-12-31]. (原始内容于2018-11-02). 
  5. ^ 9atom. [2011-11-11]. (原始内容于2019-09-11). 
  6. ^ Raymond, Eric S. . Unix編程藝術. Addison-Wesley. 2003-09-17 [2007-05-07]. ISBN 0-13-142901-9. (原始内容存档于2007-04-16). 
  7. ^ Marcus Weldon, Former Corporate CTO and President. Plan 9 from Bell Labs in Cyberspace!. Nokia Bell Labs. [2023-04-20]. (原始内容于2023-06-10). 
  8. ^ . [2013-03-07]. (原始内容存档于2008-07-06). 
  9. ^ /usr/web/sources/plan9/sys/src - Plan 9 from Bell Labs. 9p.io. [2022-09-15]. (原始内容于2022-12-02). 
  10. ^ 10.0 10.1 . 朗訊科技. 2006 [April 27, 2006]. (原始内容存档于2006-04-28). 
  11. ^ . 九號計畫社群. 2006 [April 27, 2006]. (原始内容存档于2006-04-17). 
  12. ^ From the inventors of UNIX system comes Plan 9 from Bell Labs. Lucent Technologies. 1995 [April 2, 2006]. (原始内容存档于2006年2月9日). 
  13. ^ McIlroy, Doug. . 朗訊科技. 1995 [April 2, 2006]. (原始内容存档于2006-03-14). 
  14. ^ Pike, Rob. UTF-8歷史. 2003 [April 27, 2006]. (原始内容于2011-03-01). 
  15. ^ (PDF). [2010-04-03]. (原始内容 (PDF)存档于2011-05-14). 
  16. ^ 16.0 16.1 Raymond, Eric S. . [March 28, 2006]. (原始内容存档于2005-08-18). 
  17. ^ Dennis Ritchie的訪談中第25條回應. [2006-09-09]. (原始内容于2007-09-26). 
  18. ^ Dennis Ritchie的訪談中第23條回應. [2006-09-10]. (原始内容于2007-09-26). 
  19. ^ . 九號計畫wiki. 2006 [March 28, 2006]. (原始内容存档于2006-03-14). 
  20. ^ "Press Release: Vita Nuova Supplies Inferno Grid to Evotec OAI (PDF). Vita Nuova Holdings Limted. 2004 [March 28, 2006]. (原始内容 (PDF)于2021-03-08). 
  21. ^ "Press Release: Rutgers University Libraries Install Inferno Data Grid" (PDF). Vita Nuova Holdings Limited. 2004 [March 28, 2006]. (原始内容 (PDF)于2021-03-08). 
  22. ^ "Press Release: The University of York Department of Biology install Vita Nuova's Inferno Data Grid" (PDF). Vita Nuova Holdings Limited. 2004 [March 28, 2006]. (原始内容 (PDF)于2021-03-07). 
  23. ^ Plan 9 from Bell Labs. [2021-03-25]. (原始内容于2021-03-24). 

外部連結 编辑

貝爾實驗室 编辑

文件 编辑

其他原生及虛擬機器 编辑

原生 编辑

  • Vita Nuova Holdings的盒裝版

虛擬 编辑

其他資源 编辑

  • 9fans Archive.is的存檔,存档日期2013-02-21,http://9fans.net網站上的九號計畫郵件列表
  • Ninetimes (页面存档备份,存于互联网档案馆),九號計畫、Inferno、Unix,以及貝爾實驗室作業系統的新聞頁面
  • #plan9,freenode架設的九號計畫IRC頻道
  • 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.
  • , by Francisco J Ballesteros
  • Das Netzbetriebssystem Plan 9., 1999, ISBN 3-446-18881-9 by Hans-Peter Bischof, Gunter Imeyer, Bernhard Wellhöfer (born as Kühl), Axel-Tobias Schreiner.此書已絕版,但可透過隨選列印的服務供應商取得,如Lulu.com。

貝爾實驗室九號計畫, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2010年4月3日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 此條目需要精通或熟悉计算机科学的编者参与及协助编辑, 2010年4月3日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 英語, plan, from, bell, labs, 常简称为plan, 是一个分布式操作系统, 由贝尔实验室的计算科学研究中心在1980年. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2010年4月3日 請按照校對指引 幫助编辑這個條目 幫助 討論 此條目需要精通或熟悉计算机科学的编者参与及协助编辑 2010年4月3日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 貝爾實驗室九號計畫 英語 Plan 9 from Bell Labs 常简称为Plan 9 是一个分布式操作系统 由贝尔实验室的计算科学研究中心在1980年代中期至2002年开发 以作为UNIX的后继者 它现在仍然被操作系统的研究者和爱好者开发使用 4 5 貝爾實驗室九號計畫格伦达 九號計畫的吉祥物 由Renee French 英语 Renee French 繪製 1 rio 視窗介面 开发者貝爾實驗室 現已交由Plan 9 Foundation接手 编程语言衍生自ISO ANSI C作業系統家族類Unix系統運作狀態支援中源码模式自由及開源軟體首次发布1992年 僅供學院 1995年 一般大眾 当前版本Fourth Edition 2015年1月10日 8年前 2015 01 10 2 支援平台x86 MIPS DEC Alpha SPARC PowerPC ARM内核类别單核心 3 默认用户界面rio rc许可证MIT官方網站https p9f org https plan9foundation org Plan 9的特色功能有 将所有本地和远程资源以文件形式组织的9P协议 union mounts 改进的进程文件系统以及原生的Unicode支持 在Plan 9中 所有的系统接口 如网络和用户界面接口 都是作为文件系统的一部分呈现 而不像其他操作系统上一样拥有自己独立的接口 Plan 9得名于艾德 伍德1959年拍摄的B级科幻电影外太空九号计划 6 而它的标志格伦达来自同一导演拍摄的另一部电影忽男忽女 2021年3月21日 目前所屬諾基亞旗下的貝爾實驗室 宣布將一切知識產權以及未來開發工作轉交給新成立的九號計畫基金會 Plan 9 Foundation 7 目录 1 歷史 2 概觀 3 設計概念 3 1 一體化的輸入 輸出模型 3 1 1 檔案系統 檔案與名稱 3 2 合併目錄 3 3 proc 3 4 net 3 5 網路與分散式運算 3 6 Unicode 4 實作 5 影響 6 授權 7 參照 7 1 九號計畫標準程式庫 7 2 實作介面 7 3 影響 8 參見 9 參考文獻 10 外部連結 10 1 貝爾實驗室 10 2 文件 10 3 其他原生及虛擬機器 10 3 1 原生 10 3 2 虛擬 10 4 其他資源歷史 编辑日期 发行版本 註釋1992 Plan 9第一版 贝尔实验室向各大学发布1995 Plan 9第二版 贝尔实验室发布 允许非商业使用 8 2000 Plan 9第三版 巴西 朗讯科技在开源许可下发布 允许非商业使用2002 Plan 9第四版 朗讯科技在自由软件许可MIT下发布 9 九號計畫在貝爾實驗室中取代UNIX成為組織中主要的研究開發平台 與原先的UNIX模型相較 其發展出來的數種改變改善了系統的使用及程式開發 尤其是在分散式多使用者環境中 起先在1980年中期 九號計畫只是貝爾實驗室的內部計劃 到了1992年 貝爾實驗室提供第一個公開版本提供給學院使用 在1995年 商業化的第二版釋出提供一般大眾使用 1990年代後期 朗訊科技繼承了貝爾實驗室後 對商業化九號計畫失去了興趣 到了2000年釋出了非商業化的第三版 採用開放原始碼授權 而2002年的第四版更採用自由軟體授權 一個包括現任和前任貝爾實驗室成員與麻省理工學院成員參與的使用者與開發人員社群 仍每天以光碟影像檔的形式持續提供每日更新釋出的檔案 貝爾實驗室也仍舊承續九號計畫的開發 10 開發中的原始碼檔案可以透過9P及HTTP協定加以存取並用於既有安裝檔案的更新 11 除了光碟映像檔中作業系統所包含的官方套件以外 貝爾實驗室也架設了一個空間供外部開發的應用程式與工具存放 概觀 编辑貝爾實驗室九號計畫主要是由貝爾實驗室計算科學研究中心 Computing Sciences Research Center 的成員所開發 該團體也曾開發UNIX及C語言 12 九號計畫團隊原先由羅勃 派克 肯 汤普逊 Dave Presotto及Phil Winterbottom所帶領 及計算科學研究中心主管丹尼斯 里奇所支持 在多年的開發過程中 有許多開發人員對這項專案做出了不小的貢獻 如布萊恩 柯林漢 Tom Duff 道格拉斯 麥克羅伊 比雅尼 史特勞斯特魯普 Bruce Ellis Steve Simon等人 13 九號計畫是針對現代分散式環境而從開始就設計成一種網路作業系統並加以開發 不同於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 的系統觀點 無論是網路或者使用者介面 甚至是視窗本身 所有可用資源對於每個九號計畫的程式來說 都是階層式檔案系統的一部份 而非特定的介面 10 檔案系統 檔案與名稱 编辑 九號計畫擴充系統到超越檔案的概念 來到了 名稱 的層次 無論是電腦的檔案 顯示器 使用者或電腦本身 都是一個獨一無二的路徑名稱 這些都是透過既有的UNIX標準來處理 並擴充至所有的物件皆可以用一致的方式來命名及定址 這跟全球資訊網所使用的URI的概念很相似 在UNIX中 像印表機這樣的裝置會透過軟體轉換的方式在 dev以名稱代表 但這種定址方式只對實體連接到硬體上的裝置有效 並不能套用到網路裝置上 在九號計畫系統中 所有的印表機都會以檔案的方式呈現 而且可以透過網路被任何工作站存取 九號計畫的另一個創新點則是使用者可以對相同的 真實世界 物件各自分別取不同的名稱 每個使用者都可以藉由在他們的命名空間中收集各式各樣不同的物件來創造屬於他們自己的個人化環境 UNIX也有類似的觀念 使用者可以複製其他使用者來獲取權限 但是九號計畫則把這種作法擴充到所有的物件 使用者可以輕易地產生自身的 複製品 加以修改 就算移除這些複製品也不會影響他們創造過的資源 合併目錄 编辑 UNIX允許從不同的資源透過 連結 或檔案系統 掛載 的觀念來建立檔案系統 這些功能會屏蔽掉原先的目錄 如果有人在名為 net 的目錄下掛載了新的檔案系統 會導致無法存取先前可以在 net 目錄下存取的內容 除非取消掛載的操作 九號計畫則採用合併目錄的想法 從不同媒體或網路資源合併的目錄會以透明 transparently 的方式繫結 舉例來說 可以把別台電腦的 bin 應用程式 目錄跟本機端繫結 接下來這個目錄就會同時有本地端以及遠端的應用程式在裡面 使用者可以無障礙的存取近端或是遠端的程式 使用相同系統的情況下 九號計畫所控制的外部裝置與資源可以繫結到 dev目錄下 這可以讓裝置不需要任何額外的程式 就可以透過網路進行分享 現今有許多Linux發行版的Live CD 一定程度上的以合併掛載的方式實做了這個功能 proc 编辑 列出所有執行中行程的 proc目錄 描繪出這些功能是如何在共同運作時能夠帶來更好的整體結果 九號計畫特別的 檔案系統 也為Linux及其他之後的作業系統所採用 不同於其他核心資源的是 行程以 proc目錄下的命名物件 內含資訊與控制檔案的子目錄 的形式表現 並給予使用者一組動態的輸入 輸出通道來對行程傳送指令及讀取資料 使用者無須使用受限的系統呼叫來與編譯過的程式核心互動 相反的 它可以使用如 a href Ls html title Ls ls a 以及 a href Cat Unix html title Cat Unix cat a 等指令來搜尋 查詢 以及操作行程 使用者也可以從其他的機器上將 proc目錄 以及任何其他特定的檔案系統 掛載到自己的命名空間中 就如同這些程序是在本機端一般地與它們互動 結果就是利用個別的機器架構出一套分散式運算環境 這些機器可能是使用者桌上的終端機 儲存長期資料的檔案伺服器 提供較快CPU及運算能力 使用者稽核 閘道器等服務之其他伺服器 全部都採用為大多數電腦使用者所熟悉的既有的階層式目錄 命名系統 使用者可以藉由終端機來收集檔案伺服器 伺服器上所運行的應用程式 網路上的印表機等設備 繫結進自己的命名空間進而 建構 出一套系統 net 编辑 九號計畫並沒有使用任何系統呼叫來處理眾多的通訊協定或裝置驅動程式的介面 舉例來說 net目錄下包含了所有TCP IP的API 並可藉由使用腳本語言或命令列介面的工具來撰寫可以控制檔案對連線進行寫入或讀取的程式 底下的子目錄如 net tcp和 net udp等目錄用來對應各種協定的介面 使用者可以藉由掛載一台具有公開 public IP位址的外部機器的 net目錄 來讓使用9P網路協定的內部網路私有 private IP位址 能透過該外部機器進行連線的方式 進而達到實做NAT的效果 又或者使用者可以藉由掛載遠端閘道器的 net目錄 在公開網路上使用加密 secured 的9P協定達成實做VPN的效果 以下是在 net目錄中採用合併 或稱堆疊 stack 目錄的例子 就像物件導向程式語言的繼承觀念一樣 你可以把一個 可能是遠端的 special目錄繫結到其他的本地端特定目錄下 增加一些控制檔案以及是需要隱藏其他的檔案 這個合併目錄線再就像是原先目錄的子物件一般 原先的功能可以僅更動一部份就好 對照到 net檔案系統的情況 使用者可以藉由更動或隱藏底下的 net udp子目錄 增加本地端過濾程序來達成控制或擴充UDP介面的功能 而不會更動到原本正在運行的 可能是遠端機器上的 net tcp子目錄的資料 命名空間是針對每個行程來設定的 如果使用者更動對 net合併目錄來一個不受信任的應用程式設定限制 就可以限制該程式存取網路的能力 這讓程式設計師很容易就可以在採用檔案系統的標準命名格式 存取控制 安全機制的情況下 從不同的系統上使用不同的語言合併 物件 或檔案系統 大大增加了使用上的透明度 這也跟BSD的mount portal 1 的指令所提供的功能類似 只是掛載的目錄不是 net而是 p 提供的網路協定也只有 tcp而已 網路與分散式運算 编辑 九號計畫雖然是基於UNIX 但是設計上則是想達成運算系統核心功能間彼此溝通的觀念 所有系統資源都被當成檔案般地命名及存取 並提供可根據在特定機器上各個程式設定的多種分散式系統視圖 view 這種讓伺服器以類似傳統檔案的方式 把任何資訊都呈現給使用者及應用程式的實作方式 增進了應用程式設計上的一般化與模組化的能力 九號計畫支援網路通透性的關鍵在於採用一種新的底層網路協定9P 9P協定實作了連結到命名網路物件並以類檔案 file like 系統呈現的方式 藉由快速的位元導向 而非區塊導向 分散式檔案系統可以把任何物件視覺化的呈現 而非透過遠端機器上的一個NFS伺服器再加以呈現 這個協定可以用來跟行程 程式 資料 以及包含使用者介面及網路以及彼此之間進行通訊 在第四版中 這個協定作了一些修改並且更名為9P2000 Unicode 编辑 九號計畫的系統採用Unicode作為編碼機制 九號計畫中運用由Ken Thompson提出重大修改的UTF 8作為整個系統中的原生編碼 並在1992年將整個系統提供作一般使用 14 不過九號計畫僅支援Unicode中基本多文种平面中有定義的部份 實作 编辑 nbsp 用rio進行安裝的GUI畫面除了x86架構下有可安裝的實行環境之外 九號計畫也移植到MIPS DEC Alpha SPARC PowerPC ARM及其他硬體平台上 系統以衍生自ISO ANSI C的語言所編寫 部分應用程式原先以Alef撰寫 但目前皆以C語言改寫 九號計畫支援以POSIX應用程式透過APE來模擬柏克萊接口介面 近來有一套新的應用程式linuxemu被開發用來執行Linux的程式 目前仍有許多要改進的地方 九號計畫也被用在具代表性的超級電腦上 像是IBM BG L Supercomputer 15 以及Blue Gene 影響 编辑UNIX其中一個中心概念是所有系統介面皆可以一組檔案的形式呈現 而九號計畫成功地把這個概念以現代分散式系統實作出來 九號計畫的一些功能 像是Unicode中的UTF 8編碼 也被其他作業系統所實作 一些類UNIX作業系統 例如Linux 也實作9P 九號計畫的檔案系統 以及部份實作的類rfork指令的系統呼叫 除此之外 在Plan 9 from User Space中許多九號計畫所採用的應用程式及工具 例如rc shell 也被移植到UNIX以及LINUX系統上 而且還有一定程度的人氣 Glendix這個專案則嘗試以GNU Linux作業系統取代九號計畫 或者是說 以Linux核心來取代九號計畫的核心 然而 九號計畫並未能像UNIX一樣熱門 變成主要只是一種研究用的工具 九號計畫被評為 作用看來不過是能在作業系統研究領域產生有趣論文的裝置 16 Eric S Raymond在他的著作The Art of Unix Programming中則推測九號計畫缺乏被接受度 九號計畫會失敗單純只是因為它的改進程度沒大能取代Unix 與九號計畫相較 雖然UNIX看來破破爛爛又有明顯缺失 但是它還是能好好的把工作完成 這就足以保住它的地位了 這件事情給那些有雄心壯志的系統架構的一堂課是 比更佳解決方案相比之下來的最危險的敵人是那些能把事情已經做的夠好的程式 16 對於九號計畫的評論像是在作業系統設計中把九號計畫列為糟糕的更好的典範 其他常見的評論則有九號計畫作業系統中缺乏 優雅 polish 及開發環境 17 九號計畫中達到商業化程度的軟體支援量不足 18 九號計畫的支持者和開發人員聲稱阻礙其發展的問題已被解決 原先作為分散式系統 開發環境 研究平台的目標也都已經達成 而且也慢慢地開始有人採用 可透過Inferno的托管能力將九號計畫的技術帶給其他系統 形成異構網格運算中的一部份 19 20 21 22 授權 编辑完整的原始碼 页面存档备份 存于互联网档案馆 可以免費的在朗訊公共許可證1 02版的授權之下取得 而且被開放原始碼促進會認為是開放原始碼軟體及自由軟體基金會認為是自由軟體 它雖然有通過Debian自由軟體指導方針 不過不相容於GNU通用公共許可證 2021年3月23日之后 所有版本以MIT License授权 23 參照 编辑 nbsp 自由軟體主题 九號計畫標準程式庫 编辑 更多信息 九號計畫應用程式列表 rc 九號計畫所採用的shell Sam 文本编辑器 英语 Sam text editor 文字編輯器 acme 提供給程式設計師用的使用者介面 plumber 行程間通訊 mk 建立軟體用的工具 跟UNIX的make程式類似 acid 偵錯器 rio 新的九號計畫視窗系統 8 舊的九號計畫視窗系統 Fossil及Venti 新的歸檔系統及長期資料儲存實作介面 编辑 9P 或Styx 檔案系統的協定 rendezvous 基礎的同步機制 Brazil 變成九號計畫第四版的專案影響 编辑 Plan 9 from User Space 將九號計畫函式庫及應用程式移植到類UNIX作業系統 Inferno 跟隨九號計畫腳步的分散式作業系統 B計畫 页面存档备份 存于互联网档案馆 基於九號計畫的實驗作業系統 Octopus 页面存档备份 存于互联网档案馆 B計畫的新成果 9wm 複製九號計畫介面的X視窗管理員 wmii 採用類似9P協定介面的檔案系統的X視窗管理員 Glendix 页面存档备份 存于互联网档案馆 將Plan 9 from User Space的工具移植到Linux參見 编辑Haiku 开源桌面操作系统 FreeRTOS 微内核 实时操作系统 RTOS Redox Rust实现的微内核操作系统 QNX 符合POSIX 微内核实时操作系统 RTOS INTEGRITY 微内核实时操作系统 RTOS L4微内核系列 L4系列 小而快的开源微内核 MINIX 3 类Unix微内核操作系统參考文獻 编辑 Plan 9 Foundation Glenda the Plan 9 Bunny 2006 2023 04 20 原始内容存档于2023 05 30 plan9checksums Bell Labs 2019 07 25 原始内容存档于2017 06 01 Sat Jan 10 04 04 55 EST 2015 plan9 iso bz2 Crawford Diane Forum Communications of the ACM Association for Computing Machinery ACM 1999 42 8 11 15 ISSN 0001 0782 doi 10 1145 310930 310939 Robertson James Plan 9 Forked Continues as 9front OSNews 2011 07 16 2011 12 31 原始内容存档于2018 11 02 9atom 2011 11 11 原始内容存档于2019 09 11 Raymond Eric S Plan 9 The Way the Future Was Unix編程藝術 Addison Wesley 2003 09 17 2007 05 07 ISBN 0 13 142901 9 原始内容存档于2007 04 16 Marcus Weldon Former Corporate CTO and President Plan 9 from Bell Labs in Cyberspace Nokia Bell Labs 2023 04 20 原始内容存档于2023 06 10 Announcement of the first release to general public 2013 03 07 原始内容存档于2008 07 06 usr web sources plan9 sys src Plan 9 from Bell Labs 9p io 2022 09 15 原始内容存档于2022 12 02 10 0 10 1 貝爾實驗室九號計畫 朗訊科技 2006 April 27 2006 原始内容存档于2006 04 28 Staying up to date 九號計畫社群 2006 April 27 2006 原始内容存档于2006 04 17 From the inventors of UNIX system comes Plan 9 from Bell Labs Lucent Technologies 1995 April 2 2006 原始内容存档于2006年2月9日 McIlroy Doug 第二版序言 1995 朗訊科技 1995 April 2 2006 原始内容存档于2006 03 14 Pike Rob UTF 8歷史 2003 April 27 2006 原始内容存档于2011 03 01 九號計畫BG展示 PDF 2010 04 03 原始内容 PDF 存档于2011 05 14 16 0 16 1 Raymond Eric S Plan 9 The Way the Future Was March 28 2006 原始内容存档于2005 08 18 Dennis Ritchie的訪談中第25條回應 2006 09 09 原始内容存档于2007 09 26 Dennis Ritchie的訪談中第23條回應 2006 09 10 原始内容存档于2007 09 26 9grid 九號計畫wiki 九號計畫wiki 2006 March 28 2006 原始内容存档于2006 03 14 Press Release Vita Nuova Supplies Inferno Grid to Evotec OAI PDF Vita Nuova Holdings Limted 2004 March 28 2006 原始内容存档 PDF 于2021 03 08 Press Release Rutgers University Libraries Install Inferno Data Grid PDF Vita Nuova Holdings Limited 2004 March 28 2006 原始内容存档 PDF 于2021 03 08 Press Release The University of York Department of Biology install Vita Nuova s Inferno Data Grid PDF Vita Nuova Holdings Limited 2004 March 28 2006 原始内容存档 PDF 于2021 03 07 Plan 9 from Bell Labs 2021 03 25 原始内容存档于2021 03 24 外部連結 编辑貝爾實驗室 编辑 九號計畫的網站 页面存档备份 存于互联网档案馆 九號計畫的鏡像網站 页面存档备份 存于互联网档案馆 概觀 页面存档备份 存于互联网档案馆 第四版的文件 页面存档备份 存于互联网档案馆 其他文件資料 页面存档备份 存于互联网档案馆 第二版的讀我文件 页面存档备份 存于互联网档案馆 by Brian W Kernighan 可供瀏覽的完整原始碼 页面存档备份 存于互联网档案馆 九號計畫的Wiki 页面存档备份 存于互联网档案馆 powered by wikifs 文件索引 页面存档备份 存于互联网档案馆 使用者手冊 页面存档备份 存于互联网档案馆 下載頁面 页面存档备份 存于互联网档案馆 安裝注意事項 页面存档备份 存于互联网档案馆 常見問答 页面存档备份 存于互联网档案馆 GSoC的九號計畫專案 页面存档备份 存于互联网档案馆 採用九號計畫與inferno的組織列表 页面存档备份 存于互联网档案馆 文件 编辑 FOSDEM 2006的投影片及 影片檔 页面存档备份 存于互联网档案馆 Plan 9 is not dead at FAST OS 2005其他原生及虛擬機器 编辑 原生 编辑 九號計畫Vita Nuova Holdings的盒裝版虛擬 编辑 九號計畫 页面存档备份 存于互联网档案馆 Qemu映像檔 九號計畫 失效連結 VMware VMPlayer虛擬機器 九號計畫 页面存档备份 存于互联网档案馆 Vx32擴充環境的二進位映像檔其他資源 编辑 9fans Archive is的存檔 存档日期2013 02 21 a rel nofollow class external free href http 9fans net http 9fans net a 網站上的九號計畫郵件列表 Ninetimes 页面存档备份 存于互联网档案馆 九號計畫 Inferno Unix 以及貝爾實驗室作業系統的新聞頁面 plan9 freenode架設的九號計畫IRC頻道 Reinventing UNIX An introduction to the Plan 9 operating system by Hancock B Giarlo M J amp Triggs J A published in Library Hi Tech 21 4 471 476 Introduction to OS abstractions using Plan 9 from Bell Labs by Francisco J Ballesteros Das Netzbetriebssystem Plan 9 1999 ISBN 3 446 18881 9 by Hans Peter Bischof Gunter Imeyer Bernhard Wellhofer born as Kuhl Axel Tobias Schreiner 此書已絕版 但可透過隨選列印的服務供應商取得 如Lulu com 取自 https zh wikipedia org w index php title 貝爾實驗室九號計畫 amp oldid 79232557, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。