9P
9P(又名九號計劃檔案系統協定或Styx),是貝爾實驗室九號計劃分散式作業系統所開發的網絡協定,作用在於連結九號計劃系統內的元件。本計劃中的檔案是其運作的核心,這些檔案代表了視窗、電腦網絡連線、行程,以及其他存在於作業系統中的任何東西。不同於NFS,9P是將資料快取,並提供模擬檔案(synthetic file)的機制(例如/proc用以表示行程)。
在九號計劃第四版中,9P被更名為「9P2000」,增加了一些基礎上的改進。最新版的Inferno作業系統也採用9P2000,之前的版本採用的檔案格式稱為Styx,但其實也是9P的衍生。
另一個叫9p2000.u的衍生版本,則對UNIX提供了更良好的支援。為UNIX而實作的9P伺服器則稱為u9fs,在第九計劃的發行版中有提供。供Linux使用的核心客戶端驅動程式則包含在v9fs的專案中。9P及其衍生分支也被發現使用在嵌入式環境的應用軟件中,像是Styx on a Brick project。
伺服器端應用程式
許多第九計劃的應用程式以9P伺服器的形式存在。值得注意的例子有:
- acme (text editor): 供程式設計師使用的用戶介面
- rio window manager: 第九計劃的視窗管理員
- plumber (Plan 9): 行程間通訊
- wikifs: Wiki
實作
9P在客戶端及伺服器端間送出如下的訊息[1]。這些訊息對應到第九計劃虛擬檔案系統層的進入點,所有的9P伺服器都必須實作這些訊息。
- ; version:交涉協定的版本
- ; error:回報錯誤
- ; flush:終止訊息
- ; auth, attach:開啟連線
- ; walk:走訪目錄階層
- ; create, open:準備一個用來寫入/讀取既有或新增檔案的fid
- ; read, write:傳送資料給檔案或從檔案接收資料
- ; clunk:拋棄fid
- ; remove:從伺服器移除檔案
- ; stat, wstat:查詢或變更檔案屬性
參見
- v9fs - u9fs: 9P為類UNIX作業系統所提供的實作
- IL Protocol - 為了在區域網絡中使用9P而設計的傳輸協定
- 分散式檔案系統
參考文獻
外部連結
- 9P資源(頁面存檔備份,存於互聯網檔案館) cat-v.org網站上的頁面
- 9P用戶手冊(頁面存檔備份,存於互聯網檔案館)
- 用於分散式系統的Styx架構(頁面存檔備份,存於互聯網檔案館) 由 羅勃·派克(Rob Pike) 與 Dennis Ritchie 所撰寫
- 九號計劃內部的網絡組織(頁面存檔備份,存於互聯網檔案館) 由 Dave Presotto 與 Phil Winterbottom 所撰寫