什么是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语言。