操作系统那些事儿⑦:macOS——为什么它是真 Unix,而 Linux 却不是
如果把操作系统的发展史比作《三国演义》,那么本文更像《三国演义》,而不是《三国志》。
本系列尝试用故事化的方式,讲述 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 没有消失。
它只是换了一种方式,继续运行在我们身边。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)