📅 撰写于: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 没有成功
无法解决的问题
- 先有鸡还是先有蛋——没有应用因为没有用户 → 没有用户因为没有应用
- 许可问题——90 年代 Bell Labs 多次易手(AT&T → Lucent → …),Plan 9 许可变得复杂
- Linux 已胜出——当 Plan 9 趋于稳定(90 年代中期),Linux 正快速成长并拥有更大生态
- 硬件支持——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
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.