September 28, 2003

為何要使用 Plan 9

http://plan9.bell-labs.com/wiki/plan9/overview/index.html

為什麼要用 PLAN 9?

為什麼要談 Plan 9? 它不過又是個 UNIX 的子版本吧,誰管它?

首先,Plan9 呈現了一個好用又有一致性的使用界面。 一但你走進 Plan 9 的世界,
你就不會常常被嚇到 -- 像 Windows 每次換版本,其操作界面改變之大就常常嚇
到人。我曾經從 GNU/Linux 改用 Windows 3.1,然後被一堆奇怪而不統一的操作
方式搞得很頭大,而且跟 GNU/Linux 很不相同。不過從 GNU/Linux 換到 Plan 9
則是輕鬆愉快。

Plan 9 能如此的一個重要原因是 Plan 9 的開發團隊能掌握整個系統的一切,所以
所以要修錯誤或是加功能時能自然的在它們屬於的地方解決,而非要到問題可能在
的所有地方都試過一次。舉例來說,核心中沒有 TTY 驅動程式,而是由視窗子系統
來處理微妙而難搞的終端機輸入。

如果Plan9 只是個很乾淨的 UNIX-like 系統,那它可能值得試試,也可能只是個
垃圾。不過它事實上很不同 -- 因使用者等級存取檔案伺服器與各執行程序 (process)
獨立的命名空間(namespace)使得它大有可為。 回想一下, UNIX 的 /dev/tty
指的是目前視窗的輸出界面,且每個 process 的 /dev/tty 事實上指的都不一樣。
這在 UNIX 上是由 kernel level 的特殊小手法(hack) 辦到的。但 Plan 9 天生就是
這樣設計的 -- full-blown per-process namespaces。像 Plan 9 下的 /dev/cons
也是目前的輸出裝置,對每個 process 來說各自不同,但視窗系統 (或說 telnet
伺服器、ssh 伺服器等等) 會安排好,而且 /dev/mouse 、 /dev/text (目前視窗的
內容) 等等也都自動會被處理好。

既然檔案系統中的每個樹狀結構都可由使用者等級的伺服器提供, kernel 就不需要
知道像 DOS 的FAT 檔案系統或是 GNU/Linux 的 EXT2 ,或是 NFS 這些鬼東西。
反之,使用者等級的伺服器提供了這些功能。在 Plan 9 中,就連 FTP 是以檔案
伺服器的型式呈現。你只要執行 ftpfs ,那伺服器上的檔案就會跑到 /n/ftp 了。

我們不用只停留在實體的檔案系統。其它檔案伺服器也利用「檔案」的概念來提供
資源。像 upas/fs 以檔案樹狀結構的方式在 /mail/fs/mbox 提供你的電子郵件信箱。
這個模式可以方便的遞迴呈現出 MIME 信件的附檔之類的資訊。

再舉個例來說, cdfs 使得音樂或資料CD 可拿來當檔案系統,一個音軌(track)一個
檔案。對可寫入的 CD 來說,複製新檔到 /mnt/cd/wa(audio) 或 /mnt/cd/wd(data)
目錄就行了。 想要讓 CD 固定成為音樂或資料 CD 嗎? 只要移除其中一個目錄即可。

最後,Plan 9 天生就是適合在網路環境下工作的。它的檔案與目錄樹狀結構可以由
別台機器匯入,而且所有的資源都以檔案或目錄的形式存在 -- 所以很方便共享資源。
想用別台機器的音效卡嗎? 匯入它的 /dev/audio 就好了。 想要除錯在別台跑的程
式嗎? 匯入它的 /proc 就好。 想用別台的網路界面嗎? 匯入 /net 就好了.....

Russel Cox

Posted by piaip at September 28, 2003 07:48 PM