概述Plan-9是一个很棒的、很先进的,而且完全是全新实现的Unix系统,它的目的就是要最终解决Unix最初的诺言:一切皆为文件。你听说过这套系统吗?没有?那好,下面就是为什么。 我十分确信你不知道Plan-9是什么东西,并且很有可能你还是第一次听说这个名字。 Plan-9是一款神奇的新版Unix,几乎是由70年代当初开发Unix系统的同一个团队开发的。它的确是一款非常酷的操作系统。它跟Unix非常相似,但它不是Unix,它纠正了Unix系统里很多不一致的、古怪的、至今仍然存在的特性。 Unix在当初立项时有个这样的许诺:系统里任何的东西都是‘文件’——根据某些文件的定义。例如,sockets,也许称作网络连接更合适,它们就不是文件,进程也不是文件。 在Plan-9中,所有的这些问题都解决了!先进的9P虚拟文件系统协议最终让所有东西都成为了文件。目录变成了“命名空间”,资源被映射成了文件。多么神奇!现在,你可以通过对/proc目录(现在应该成其为一个命名空间)里的一个文件使用“cat”命令来查看进程的情况。同样,打开一个网络连接的方式变成了打开/net/tcp目录里的一个文件,这就是它。”iotcl”系统调用在这个系统里完全被根除了,因为基于操作系统上的现代文件形式中的这种怪胎已经不再需要了。 那么,为什么你从来没有听说过这样一款神奇的操作系统呢? 你从来没有听说过它的原因是,它并不是一款成功的操作系统。这怎么可能呢?是这样的,是因为Plan-9实际上没有解决任何问题。在Unix世界里,从来没有人抱怨说Unix没有兑现当初关于文件抽象的诺言。 在随后的日子里,Plan-9里的/proc文件系统概念被人移植到到了Solaris等很多其他商业版Unix系统里(Linux也采用了它)。 Plan-9里另外一个非常著名的首创——UTF-8——被迅速的被众多其它操作系统采用,不仅仅是Unix家族。在所有的操作系统里,即使存在一些由于各种原因没有采用UTF-8的,它们也开发出来将UTF-8和本地编码转换的程序库。 Plan-9的对于网络通信的特殊的处理方式需要在这里特别的说明一下。虽然用基于命名空间/文件系统的方式来代替专用API来处理网络操作,听起来很吸引人,但是整个Unix世界,不仅所有人都已经接受了使用伯克利Socket API做为标准方式来进行网络编程,甚至Windows平台也实现了几乎相同的API里简化各种网络应用向Windows上移植——虽然存在一些小问题。 更重要的是,Plan-9发明的这种与众不同的网络编程编程方式在诞生之日就注定了毫无用处。因为在当时,大部分做网络编程的人都已经转向了更高的网络抽象层。RPC和Corba已经诞生,所有的需要跟远程服务器通信的应用全都转向了它们。程序员为了跟远程服务通信时需要打开sockets的机会越来越少,所有的他们都已经习惯了使用Berkeley API。(旁注:曾经有一个POSIX模拟层,叫做APE“ANSI/POSIX Environment”,试图将Plan-9上的某些功能映射到POSIX对应的功能上。这个模拟层一直都没实现,因为一些应用——例如X11——的迁移过于复杂,不可能完成。“维持它正确运行的工作量太过巨大”——维基百科)。) |