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

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

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

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

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


引子:一个奇怪的问题

如果今天打开一台 Mac。

你会发现:

它有漂亮的桌面。

有 Dock。

有 Finder。

有各种图形化软件。

普通用户甚至可能不知道:

它的底层其实非常接近 Unix。

打开终端:

lscdgrepsshvim

这些命令都非常熟悉。

甚至:

很多 Linux 用户第一次使用 macOS,会感觉:

这个系统怎么这么像 Linux?

但是:

如果进一步了解历史,会发现一个有趣的问题:

macOS 是 Unix。

Linux 却不是 Unix。

等等。

为什么?

Linux 明明继承了 Unix 的思想。

命令也一样。

目录结构也类似。

甚至很多 Linux 工程师每天都在使用 Unix 哲学。

但是:

它却不能叫 Unix。

而 macOS:

却可以堂堂正正地说:

我是 Unix。

这背后,是一段非常有意思的历史。


第一章:苹果最初并不是 Unix 阵营

今天很多人认为:

Apple 从一开始就是 Unix 家族。

其实不是。

早期 Apple 的故事,和 Unix 没什么关系。

1976 年。

Steve Jobs、Steve Wozniak 创立 Apple。

第一代个人电脑:

Apple I。

后来:

Apple II。

它们运行的是:

简单的个人电脑操作系统。

那个时代:

Unix 主要属于:

大学。

研究机构。

大型计算机。

普通消费者根本接触不到。

苹果关注的是:

如何让普通人也能使用电脑。

而 Unix 关注的是:

如何让工程师高效管理复杂计算系统。

两者最初服务的人群完全不同。


第二章:Macintosh,苹果第一次改变世界

1984 年。

苹果发布:

Macintosh。

这是一个历史性的产品。

因为它把:

鼠标。

图形界面。

窗口系统。

带给了普通用户。

当时的大多数电脑:

还停留在命令行时代。

而 Macintosh 告诉大家:

电脑不一定需要敲命令,也可以用鼠标操作。

这一点影响了整个行业。

后来:

Windows 的图形界面。

Linux 桌面环境。

都受到了 Macintosh 的影响。

但是:

早期 Mac 使用的系统:

叫:

Mac OS Classic。

它并不是 Unix。


第三章:苹果遇到了自己的危机

进入 90 年代。

苹果遇到了问题。

Mac OS Classic 虽然成功。

但是底层设计越来越落后。

问题包括:

  • 内存管理不足;
  • 多任务能力有限;
  • 稳定性不足;
  • 难以适应未来硬件。

苹果需要一个新的操作系统。

但自己重新设计:

太难。

于是:

苹果开始寻找新的方向。

历史的转折点出现了。


第四章:一个被苹果收购的公司

1996 年。

苹果收购了一家公司:

NeXT。

这家公司是谁创办的?

正是:

Steve Jobs。

没错。

离开苹果后的 Jobs,又创办了 NeXT。

而 NeXT 的操作系统:

叫:

NeXTSTEP。

它非常特别。

因为:

它不是从传统 Mac OS 发展来的。

它的底层:

来自 Unix。

更准确地说:

来自 BSD。


NeXTSTEP 使用:

  • Mach 微内核;
  • BSD Unix 用户空间;
  • Objective-C;
  • 面向对象框架。

这套技术路线非常先进。

虽然 NeXT 电脑商业失败。

但是:

它的软件技术非常优秀。

最终:

苹果买下了 NeXT。

Steve Jobs 也因此重新回到了苹果。


第五章:macOS 的真正诞生

收购 NeXT 后。

苹果开始开发新的系统。

这个系统后来叫:

Mac OS X。

注意:

这里的 X:

不仅代表罗马数字 10。

也暗示:

它和过去的 Mac OS 不一样。

它拥有一个全新的 Unix 内核。

这个底层:

叫:

Darwin。


Darwin 是什么?

简单理解:

它是 macOS 去掉苹果图形界面后的核心部分。

其中包括:

Mach

负责:

  • 任务调度;
  • 内存管理;
  • 进程通信。

BSD

负责:

  • Unix 系统接口;
  • 网络;
  • 文件系统;
  • 用户管理。

XNU

苹果把:

Mach + BSD

结合起来。

创造了自己的内核:

XNU。

XNU:

全称:

X is Not Unix。

名字听起来像玩笑。

但它实际上成为了苹果几十年的核心。


今天:

macOS。

iOS。

iPadOS。

watchOS。

它们背后:

都有 XNU。


第六章:为什么 macOS 是 Unix?

这里就回到了开头的问题。

为什么 macOS 可以叫 Unix?

原因很简单:

因为它通过了 Unix 认证。

Unix 并不是一个普通名称。

它属于:

The Open Group

维护的商标。

一个操作系统想叫:

UNIX。

需要符合标准。

并通过认证。


苹果的 macOS:

经过认证。

所以:

它可以称为:

UNIX。

甚至:

苹果官网也会强调:

macOS 是一个 UNIX 认证系统。


第七章:那 Linux 为什么不是 Unix?

这里很多人会误解。

Linux:

像 Unix。

学 Unix。

用 Unix 哲学。

但是:

它不是 Unix。

原因:

Linux 不是 Unix 源代码发展出来的。

它是:

Linus Torvalds

1991 年

从零开始编写的一个新的 Kernel。


故事是这样的。

1991 年。

芬兰大学生:

Linus Torvalds

觉得:

Minix 太有限。

于是:

自己写了一个操作系统内核。

最开始:

只是一个个人项目。

后来:

它和 GNU 软件结合。

形成:

GNU/Linux。


所以:

Linux 更像:

一个“Unix 风格的新系统”。

而不是:

Unix 家族中的血统成员。


如果打个比方:

Unix 是一个老贵族家族。

BSD:

是嫡系后代。

macOS:

通过 NeXT 继承了 BSD 血统。

Linux:

不是这个家族出生。

但是:

学习了这个家族的文化。

最后成为了世界级强者。


第八章:macOS 为什么比 Linux 更像 Unix?

这是一个很有趣的问题。

很多 Linux 用户第一次使用 Mac:

会发现:

终端体验非常熟悉。

原因:

因为 macOS 继承了大量 Unix 用户空间。

例如:

/etc/usr/bin/sbin/dev

这些目录结构:

都有 Unix 血统。

命令:

sshvimgrepawksed

也都是 Unix 世界留下来的工具。


但是:

macOS 和 Linux 也有区别。

例如:

Linux:

使用 Linux Kernel。

生态:

GNU + Linux + 各种发行版。

macOS:

使用 XNU。

生态:

Darwin + Apple Framework。

Linux 更自由。

macOS 更封闭。

Linux 更适合服务器。

macOS 更适合桌面开发。


第九章:一个有趣的历史循环

回头看:

Unix 的故事非常奇妙。

1969:

Unix 在 Bell Labs 诞生。

1970-1980:

Unix 进入大学。

BSD 出现。

1983:

GNU 开始创造自由 Unix。

1991:

Linux 出现。

1996:

苹果收购 NeXT。

2001:

Mac OS X 发布。


最终:

Unix 分裂成了几条道路。

一条:

BSD → NeXT → macOS

一条:

GNU → Linux

一条:

商业 Unix:

  • AIX
  • Solaris
  • HP-UX

它们争论。

它们竞争。

但是:

它们都继承了 Unix 的思想。


写在最后:Unix 没有消失,只是换了一种方式存在

很多人认为:

Unix 已经过时。

其实不是。

Unix 更像一种文化。

它留下:

  • 一切皆文件;
  • 小工具组合;
  • 文本接口;
  • 模块化设计;
  • 简洁哲学。

今天:

你的 Mac。

你的 Linux 服务器。

你的 Android 手机。

甚至很多云计算基础设施。

都能看到 Unix 的影子。


如果说:

Linux 是一个没有 Unix 血统,却继承 Unix 精神的年轻英雄。

那么:

macOS 就像一个真正继承 Unix 家谱的贵族后代。

它们走了不同的道路。

但它们都证明了一件事:

五十年前,一个为了提高工程师效率而诞生的小系统,最终改变了整个计算机世界。

Unix 没有消失。

它只是换了一种方式,继续运行在我们身边。

Logo

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

更多推荐