如果把操作系统的发展史比作《三国演义》,那么本文更像《三国演义》,而不是《三国志》。

本系列尝试用故事化的方式,讲述 Unix、Linux、BSD、GNU、Windows、macOS、Android 等操作系统背后的发展历程。

文中的人物、事件和技术演进都尽量参考公开资料,但为了让故事更容易理解,会适当简化一些历史细节,也会加入作者自己的理解。

它不是一篇学术论文,而是一段程序员视角的技术故事。

如果读完之后,你产生兴趣,愿意继续查阅官方资料,那这篇文章的目的就达到了。


引子:今天的操作系统,都有一个共同的祖先

今天,如果问:

世界上最重要的操作系统有哪些?

很多人的答案可能是:

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

它们看起来完全不同。

Windows 有自己的 Win32 生态。

Linux 有自己的发行版世界。

macOS 有漂亮的图形界面。

Android 跑在手机上。

iOS 则守护着苹果的移动生态。

但是,如果把时间拨回五十年前,你会发现:

这些看似不同的系统,其实都有一个共同的远方祖先。

它叫:

Unix。

今天,我们就从这个传奇开始。


第一章:一个失败的项目,创造了另一个传奇

故事发生在 1969 年。

地点:

美国新泽西州,贝尔实验室(Bell Labs)。

当时,这里聚集着计算机领域最顶尖的一批工程师。

他们正在参与一个雄心勃勃的项目:

Multics。

Multics 的目标非常超前:

希望创造一个大型、可靠、多人共享的计算系统。

今天看:

多用户。

权限管理。

分层文件系统。

动态链接。

这些概念都非常先进。

甚至很多现代操作系统,都能看到 Multics 的影子。

但是问题是:

它太超前了。

设计越来越复杂。

开发周期越来越长。

最终,项目没有达到最初的目标。

于是:

参与其中的几个公司逐渐退出。

很多人认为:

Multics 失败了。

但历史有时候非常奇妙。

一个项目的失败,反而孕育了另一个传奇。


第二章:为了玩游戏,顺手写了一个操作系统

在 Bell Labs 有一位工程师:

Ken Thompson。

他曾参与 Multics 项目。

项目结束后,他发现自己有点无聊。

当时他喜欢玩一个游戏:

Space Travel(太空旅行)

但是:

运行游戏需要一个操作系统。

于是,他决定:

那我自己写一个吧。

这听起来像一个程序员常见的“顺手做个小工具”。

但没人想到:

这个“小工具”后来会改变整个计算机世界。

Ken Thompson 开始设计一个更加简单、小巧的操作系统。

后来:

另一位传奇人物加入:

Dennis Ritchie。

两个人一起完善这个系统。

它有了一个名字:

Unix。


第三章:Unix 最大的创新,不是代码,而是思想

今天很多人学习 Linux,会接触各种命令:

ls
cat
grep
sort
awk

这些工具看起来很普通。

但是,它们背后有一个非常重要的 Unix 哲学:

做好一件事,然后把它做好。

例如:

cat access.log | grep ERROR | sort

一个程序负责读取。

一个程序负责过滤。

一个程序负责排序。

它们通过管道组合起来。

这就是 Unix 最重要的思想之一:

简单工具,通过组合产生强大的能力。


另一个著名理念:

Everything is a File(一切皆文件)

在 Unix 世界里:

普通文件是文件。

设备是文件。

终端是文件。

网络接口也尽量采用类似文件的方式访问。

今天 Linux 中:

/dev
/proc
/sys

这些设计,都可以追溯到 Unix 的思想。


第四章:C 语言,让 Unix 走向世界

最初的 Unix 使用汇编语言编写。

这在当时很正常。

因为操作系统需要直接控制硬件。

但是汇编有一个巨大问题:

换 CPU,基本就要重写。

于是 Dennis Ritchie 创造了一门新的语言:

C

随后,他们做了一件非常重要的事情:

用 C 语言重新实现 Unix。

这件事改变了历史。

因为:

C 语言足够接近硬件。

又足够抽象。

于是:

Unix 第一次具备了跨平台传播的能力。

后来:

Linux。

Windows。

macOS。

大量现代系统。

都深受这种思想影响。


第五章:Unix 走出实验室,进入大学

Unix 最初属于 Bell Labs。

后来,Unix 开始进入大学。

其中最重要的一站:

美国加州大学伯克利分校(UC Berkeley)。

大学里的学生和研究人员拿到 Unix 后,并没有只是使用。

他们开始:

修改。

优化。

增加功能。

于是:

一个新的名字出现:

BSD(Berkeley Software Distribution)。

最开始:

BSD 只是 Unix 的增强版本。

后来:

它逐渐发展成一个独立的软件生态。

今天:

  • FreeBSD
  • NetBSD
  • OpenBSD

都来自 BSD 传统。

甚至:

macOS 的底层,也继承了大量 BSD 的思想。


如果说:

Unix 是祖师爷。

那么:

BSD 更像是在大学里成长起来的一支嫡系。

它没有走 Linux 的道路。

但一直保持着自己的技术路线。


第六章:Unix 解决了技术问题,却留下了另一个问题

到了 80 年代。

Unix 已经非常成功。

很多大学、研究机构都在使用。

但是:

一个新的问题出现了。

软件越来越重要。

可是:

软件的源代码应该属于谁?

应该自由共享吗?

还是应该成为商业公司的产品?

这场争论,最终催生了一场影响整个软件行业的运动。

一个程序员站了出来。

他的名字:

Richard Stallman。

他的想法很简单:

软件应该拥有自由。

于是:

1983 年。

GNU 项目诞生。

GNU 的目标:

不是修改 Unix。

而是:

重新创造一个完全自由的 Unix 兼容系统。


写在最后:一棵影响半个世纪的树

回头看 Unix 的诞生,其实充满偶然。

如果 Multics 没有失败;

如果 Ken Thompson 没有为了游戏写那个“小系统”;

如果 Dennis Ritchie 没有创造 C;

也许今天的计算机世界,会完全不同。

但是:

伟大的技术,往往不是一开始就为了改变世界而诞生。

Unix 最初只是几个工程师为了提高效率创造的小系统。

它没有今天 Linux 的巨大社区。

没有 Windows 的商业力量。

没有 Apple 的精致设计。

但是,它留下了一套影响半个世纪的思想:

  • 简洁;
  • 模块化;
  • 开放;
  • 组合;
  • 工具化。

后来:

BSD 沿着自己的道路发展。

GNU 创造了庞大的自由软件生态。

Linux 补上了 GNU 缺少的 Kernel。

Apple 则通过 NeXT、Darwin 和 XNU,走出了另一条道路。

它们竞争。

它们争论。

它们甚至互相批评。

但不可否认:

今天整个计算机世界,都带着 Unix 留下的基因。

如果把现代操作系统看成一片森林。

那么:

Unix 就是那棵最古老的大树。

而后来的故事,只是在这棵树上长出了不同的枝叶。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐