操作系统那些事儿①:一切,从 Unix 开始
如果把操作系统的发展史比作《三国演义》,那么本文更像《三国演义》,而不是《三国志》。
本系列尝试用故事化的方式,讲述 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 就是那棵最古老的大树。
而后来的故事,只是在这棵树上长出了不同的枝叶。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)