什么是Plan 9
Plan9 是一個操作系統。由貝爾實驗室開發的,其主要的負責人是Rob Pike(現在在google工作,負責Go語言的開發)。當然這個操作系統的參與者還有幾個大名鼎鼎的人:包括Ken Thompson(C語言和Unix創始人),Dennis Ritchie(C語言和Unix創始人),Brain Kernighan(awk之父),Doug Mcllroy(Unix管道提出者,Unix開發參與者)。
為什么有了Unix還需要有Plan9呢?
Plan9中最本質的思想是“一切皆是文件”,CPU是一個文件,內存是一個文件,網絡是一個文件,任何的東西都是一個文件。
Unix是一個多用戶分時操作系統,就是多個用戶共享一個操作系統資源。不管是CPU,內存,網絡,都需要通過Unix進行分配調度。但是這樣的問題就導致了多個機器之間的信息傳輸必須通過網絡來進行了。比如A機器的文件需要使用B機器的CPU來處理,方法就只有通過某種協議,將A機器的文件下載到B機器中,然后B機器處理完以后再回傳到A機器中。
Plan 9的“一切皆是文件”就很好的解決了這個問題,A機器想要使用B機器的CPU,只需要將B機器的CPU掛載到A機器的CPU的文件中,就能完成這個需求了。當然兩個機器之間也有一個協議9P來進行文件掛載表示的。但是這個對上層的操作系統來說已經是透明的了。
Plan9是一個分布式操作系統,它能把網絡上一切的資源當作文件來進行使用,這其實就是雲的概念了。
Unix上不能實現跨網絡分布式的操作系統嗎?
首先是“一切皆是文件”的概念當然在Unix上也有很好體現。這點這些牛掰的作者已經運用在Unix上了,比如/sys/devices/system/cpu/cpu0下的CPU文件代表的就是當前CPU的狀態。但是由於Unix發展太快了,導致后面有很多功能已經超出貝爾實驗室的控制了。比如引入了ioctl,而不是使用文件的read/write命令。也是因為這些原因,貝爾實驗室的這些人就想着能創建一個超越Unix的操作系統,從而有了plan9。
Plan9的后續
Plan9的全部代碼都是由C寫的。后來Rob Pike又開始寫了一門語言:Limbo。Limbo語言是一種專門寫分布式系統的編程語言。這種語言運用最多的就是Inferno操作系統上。
Inferno操作系統
這個操作系統是Plan9的姐妹操作系統。它的思想和Plan9基本相同,都是基於文件的。但是它只有內核是C編寫,其他的應用程序都是Limbo編寫的。所以它和Plan9不同的地方就是在這個系統上運行的程序都是Limbo程序而不是C或C衍生程序了。更多關於Inferno的資料可以看:http://zh.wikipedia.org/wiki/Inferno
后來Rob Pike又開發出的Go語言有一些地方的思想就是借鑒於Limbo語言。
Plan9 操作系統的截圖
參考:
http://blog.youxu.info/2011/03/21/story-of-plan-9-revised/#comment-9456