Plan9是贝尔实验室研发的通用分布式操作系统,支持多用户,作为UNIX的后继者,plan9更适合分布式网络。其于20世纪80年代中期至2002开发,共发行了4版,如今,plan9是开源自由软件,大家可以使用,以及(愿意的话)阅读其代码。
为什么要开发plan9?
20世纪80年代中期,大型的集中式分时系统变得不再流行,取而代之的是由便捷的个人电脑组成的网络,这一趋势持续到现在,仍十分流行。在转变的过程中,个人电脑上运行的UNIX系统产生了一些问题,比如,UNIX本身是一个老的分时系统,对于之后产生的一些概念没能做到无缝地结合,图形化界面和网络虽加入了UNIX系统,但其整合以及管理都十分困难;由于UNIX早期是针对私有电脑的,使得由其组成的网络难以像之前一样方便地工作。总之,在个人电脑上使用一个老的分时系统难以将各方面顺利地整合。
Plan9的目标是,一方面,建立一个集中管理的系统;另一方面,使用便宜的现代微型计算机构建其网络。一言以蔽之,plan9是使用许多小系统构建出一个UNIX,而非使用许多UNIX构建出一个系统(tobuild a UNIX out of a lot of little systems, not a system out of alot of little UNIXes)。
尽管UNIX存在一些难以修正的问题,但其仍有许多思想可以借鉴。比较好的一个思想是使用文件系统命名以及存取资源,在UNIX中,甚至将传统上并不看成是文件的设备也看做文件。Plan9借鉴此思想,并设计了自己的文件系统操作协议9P,在9P之上,plan9构建了强大的命名系统,系统用户可以通过命名系统为某一进程构建特定的命名空间,其中的文件,包括可执行文件,有可能存储于本地,也有可能存储于远程机器,但用户进程都像使用本地文件一样使用它们,由此实现分布式计算。
虽有借鉴,但plan9与UNIX是不同,其使用新的编译器,语言,函数库,窗口系统和其它应用程序,就算是借鉴过来的程序也经过了修改和重写。
读者可能会有一个问题,为什么要大费周折重新设计实现一个操作系统?
根据plan9实现者所述,用户对于操作系统、库和应用的不同并不感兴趣,但操作系统研究者却十分感兴趣。真正重要的是简洁的功能(cleanfunctionality)。通过设计实现一个全新的系统,设计者可以解决他们认为应解决的问题,比如,内核中不应有tty驱动,那是窗口系统的功能。
现在交叉编程很流行,不论你是在为另一种平台的电脑编程,还是为一个嵌入式系统编程,这种情况非常普遍,但通常的编译器和工具都假设程序只在本地平台上运行。
更重要的是,系统的优劣取决与其所提供的计算环境,对于plan9的设计者来说,发现一种更有效实现UNIX的方法,是无意义的,他们更乐于试验新的系统架构是否能产生一种更有效的工作方式。当然,考虑兼容以及一些标准,plan9也提供了对POSIX环境的模拟,但在plan9环境中,应避免使用之。
Plan9是什么样子的?
系统安装完成后,界面如下:
一个典型的plan9网络如图所示:
其中,包括若干CPU服务器,用于运行高计算强度的程序;若干文件服务器,用于存储文件系统,包括备份文件系统;若干终端,为系统用户提供到系统的接口;将以上组件连接起来的网络。图中的Gateway是连接多个网络的CPU服务器。
文件服务器不运行用户进程,没有虚拟内存,仅是一系列的内核进程,之间大部分是通过消息传递进行同步。
CPU服务器与终端运行同样的内核,所以用户可以选择在本地还是CPU服务器上运行程序。
网络中可以按带宽分为若干层次,文件服务器和CPU服务器使用高速连接,服务器和局域终端使用中等速度的连接,通过Internet的连接是低速连接。
有什么特点?
Plan9拥有很多特性,源于其实现时所遵循的3条原则:
1.一切资源都是文件;
系统所提供的服务都是由文件系统表示的,客户通过将此文件系统或其一部分引入到自己的命名空间获得服务。命名空间是进程私有的,而其中的文件(文件系统)是公共的。由于服务的名字都是已知的,而且相应的文件拥有统一的名字,正是这全局的命名惯例保证了命名空间中局部名字的正确行为。
2.每个进程都拥有自己的命名空间;
更准确地说,是每个进程组拥有一个命名空间,组中的每个进程都有一个指向命名空间的指针。正如第一点所讲,命名空间和命名惯例的结合保证了系统的正确行为。
3.使用9P操作(本地或远程的)文件系统。
9P是plan9自己设计的通信协议,处于网络模型的会话层,用于操作文件系统,协议包括17条消息:3个用于初始化和对连接授权,14个用于操作对象。当进程(用户或内核)有I/O请求时,内核会产生相应的消息,之后9P通过函数调用或远程过程调用返回结果。
参考文献
[1]Plan9 from Bell Labs
[2]The64-bit Standalone Plan 9 File Server
[3]TheOrganization of Networks in Plan 9