📅 撰写于:2026 年 7 月
⚠️ 参考 Bell Labs 原始文档及开发者笔记


如果我问你「世界上最酷的操作系统是什么」—— 你多半会回答 Linux、macOS 或 Windows

但若问 Ken Thompson 和 Dennis Ritchie——这两位创造 Unix 的人——他们会回答 Plan 9

Plan 9 是 Bell Labs 在 80 年代末至 90 年代初,由同一支 Unix 团队打造的操作系统,但它绝非「新版 Unix」,而是彻底的重新开始

尽管如今几乎无人使用 Plan 9,它的思想却已渗透进你所使用的每一套操作系统


起点——「Unix 已经太老」

Unix 积累的问题

Unix 诞生于 1969 年——那时计算机仅有一台主机外接多个终端

进入 80 年代,世界已变——网络普及、图形界面重要性上升,分布式计算初现

但 Unix 最初并非为此而设计。它被不断修补、扩展、改造,最终变得过于复杂,连它的创造者也不再引以为傲

Ken Thompson 曾大致说过:「Unix 始于简洁,却逐渐累积复杂度——是时候重新开始了」

为什么叫 Plan 9

名字「Plan 9」出自 Ed Wood 1959 年的 B 级经典电影《外太空的九号计划》,被誉为「史上最烂的电影」

但这个名字并不意味着该系统很烂——它是 Bell Labs 团队爱起怪名的内部梗(Unix 本身也是梗,影射 Multics)


Plan 9 的核心——「一切皆文件」的终极形态

从 Unix 到 Plan 9——贯彻到底

Unix 有一个著名理念:「一切皆文件」

  • 文件系统是文件 → /home/user/document.txt
  • 设备是文件 → /dev/sda/dev/tty
  • 进程是文件 → /proc/1234

但仍有例外——网络套接字、图形、窗口系统——在 Unix 中它们不是文件

Plan 9 把这个理念推向极致——在 Plan 9 中,一切皆文件,没有例外

9P——连接一切的单一协议

Plan 9 的核心是 9P——让所有事物都通过文件系统通信的协议

GUI 窗口 → 挂载为文件
网络连接 → 挂载为文件  
局域网中的其他机器 → 挂载为文件

Enter fullscreen mode Exit fullscreen mode

想象一下:你可以用 ls 列出另一台机器上的文件,就像访问本地磁盘——无需 NFS、Samba 或任何复杂配置

真实示例: 如果我在 Plan 9 中打开编辑器(acme)窗口——该窗口就是 /mnt/acme/ 下的文件。你可以执行 echo "hello" > /mnt/acme/body,文字立即出现在编辑器中

Plan 9 的 GUI 不是「在屏幕上绘图的程序」——它就是「碰巧能渲染成图形的文件系统」

Namespace——每个进程的私有视图

在 Linux 中,所有进程看到同一个文件系统

在 Plan 9,每个进程都有自己的 namespace——你可以挂载、卸载、重排文件系统,而不影响其他进程

进程 A:/bin → /usr/local/bin
进程 B:/bin → /remote/machine/bin

Enter fullscreen mode Exit fullscreen mode

这两个进程看到不同的文件系统——却运行在同一台机器上

这一概念正是如今 Docker 与容器所使用的 Linux namespaces 的起源


在 Plan 9 中的生活——界面长什么样

Rio——没有标题栏的窗口

Rio 是 Plan 9 的窗口系统——极简到极致

没有任务栏、没有桌面图标、没有最小化按钮——只有用三键鼠标操作的窗口

  • 左键 = 选取文本
  • 中键 = 执行(运行所选文本)
  • 右键 = 菜单(新建、调整大小、删除等)

实际使用场景:

你打开一个终端窗口——输入 ls -la——结果显示在窗口中。你用左键拖选文件名 → 按中键 → Plan 9 自动将文件名作为参数传给下一条命令

或者在编辑器中:你输入 man 9p → 拖选 → 按中键 → man 手册页立即弹出

理念是:你无需复制粘贴——只需选中并执行。任何选中的内容都可以成为命令

这是一种与我们日常使用截然不同的用户体验——没有剪贴板、没有 Ctrl-C/Ctrl-V——但一旦习惯,它会更快、更自然

Acme——不止于编辑器

Acme 是 Rob Pike 创造的传奇文本编辑器——它就是「由鼠标控制的超文本窗口」

  • Acme 中的每个词都是可点击链接
  • 你可以在缓冲区输入 shell 命令并直接点击执行
  • 打开的每个文件都是可通过鼠标手势管理的窗口

Acme 在今天看来原始——但它是现代 IDE 的原型:代码 + 终端 + 文件浏览器同处一个窗口

Plumbing——在 D-Bus 之前的消息总线

Plumbing 是 Plan 9 中程序间传递消息的系统

你点击 URL → 它会发送给浏览器
你点击错误信息 → 它会打开对应文件的对应行

一切都通过文件连接——plumbing 就是可读写消息的特殊文件


Plan 9 的遗产——沿用至今

1. UTF-8——诞生于一家餐馆的餐巾纸

1992 年的一个夜晚——Ken Thompson 和 Rob Pike 在新泽西一家 diner 风格的餐厅吃饭

他们讨论当时计算机世界存在上百种编码——ASCII、Latin-1、Shift-JIS——每种只服务一种语言

两人拿起餐巾纸,设计出 UTF-8——一种向后兼容 ASCII 并支持全球所有语言的编码

如今 UTF-8 被用于全球 98% 的网站

它是在 Plan 9 开发期间,由 Plan 9 团队设计出来的

2. /proc 文件系统——诞生于 Unix,但由 Plan 9 完善

Linux 用户熟悉 /proc——存放进程信息的文件系统:

cat /proc/cpuinfo    # 查看 CPU
cat /proc/meminfo    # 查看内存

Enter fullscreen mode Exit fullscreen mode

/proc 最早出现在 Unix 第 8 版(1984),作者 Tom Killian,他在 1984 年 6 月的 USENIX 大会上发表了《Processes as Files》论文,甚至早于 Plan 9 的开发

但 Unix 8 的 /proc 是扁平的——一个进程对应一个文件

Plan 9 延续并发展了这一理念——让每个进程成为包含多个子文件的目录(可用 ls 查看、cat 读取)——形成了我们今天使用的层级式 /proc

Linux 继承了这一层级模型——如今 /proc 已成为标准

3. Linux Namespaces——所有容器的根源来自 Plan 9

Docker、Kubernetes 及所有容器——都使用 Linux namespaces 来隔离进程

「每个进程拥有不同系统视图」的理念——诞生于 Plan 9

形象地说:Plan 9 在 80 年代末就提出了 per-process namespace 的概念,而作为 Docker 与容器基础的 Linux namespaces 直到 2008 年左右才进入内核——晚了近 20 年

4. Go——继承 Plan 9 DNA 的编程语言

Go 由 Rob Pike、Ken Thompson 和 Robert Griesemer 共同创造——他们都曾在 Plan 9 上工作

Go 中充满了 Plan 9 的理念:

  • Goroutines——轻量级线程 → 原型是 Plan 9 的轻量级进程
  • Channels——通过消息通信 → 原型是 9P 与 plumbing
  • Gofmt——所有代码风格统一 → 原型是 Plan 9「最佳实践唯一」的哲学
  • 静态二进制——编译为单一文件 → 原型是 Plan 9 的二进制文件

Go 就是 Plan 9 在编程语言形态下的再现


为什么 Plan 9 没有成功

无法解决的问题

  1. 先有鸡还是先有蛋——没有应用因为没有用户 → 没有用户因为没有应用
  2. 许可问题——90 年代 Bell Labs 多次易手(AT&T → Lucent → …),Plan 9 许可变得复杂
  3. Linux 已胜出——当 Plan 9 趋于稳定(90 年代中期),Linux 正快速成长并拥有更大生态
  4. 硬件支持——Plan 9 支持的硬件远少于 Linux/Windows

但根本问题是:Plan 9 不是想「比 Unix 稍好一点」——它想「彻底重来」

而世界并不准备为了新想法而替换整个操作系统——即使这些想法更好


2026 年的 Plan 9

Plan 9 依然存活——以 9front(社区分支)和 Plan 9 from User Space(在 Linux/macOS 上移植的工具集)的形式

有一小群狂热者将 Plan 9 作为日常驱动系统——人数不多,但充满激情

Plan 9 曾经提出的所有概念——都在 20 年后被重新实现在 Linux 中


Plan 9 给我们的启示

「好想法不一定获胜——但会被偷走」

Plan 9 作为产品失败了——但作为思想胜利了

每一个运行在 Kubernetes 上的容器……
每一个通过网络传输的 UTF-8 字节……
每一个在云上运行的 Go routine……

它们都携带着 Plan 9 的 DNA


来源:Bell Labs Technical Journal、Plan 9 手册页、Rob Pike 个人博客 (herpolhode.com)、9fans.net、Wikipedia