三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

操作系统那些事儿⑥:Unix 世界的另一条主线——System V、Solaris 与商业 Unix

操作系统那些事儿⑥:Unix 世界的另一条主线——System V、Solaris 与商业 Unix

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

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

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

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


引子:我们前面其实漏掉了 Unix 世界的一半

前面讲 BSD 时,我们说:

Unix 从贝尔实验室走进伯克利大学。

伯克利的研究人员不断修改 Unix。

最后发展出了:

BSD。

随后又有:

  • FreeBSD;
  • NetBSD;
  • OpenBSD。

于是很容易给人一种感觉:

Unix 后来的故事,就是 BSD → Linux / macOS。

其实不是。

在 Unix 历史上,还有另外一条极其重要的主线。

它没有诞生在大学。

而是一直留在 Unix 的“老家”:

AT&T。

这条线后来发展成:

UNIX System V。

如果说 BSD 代表的是:

大学、研究机构和开放技术社区。

那么 System V 更像代表:

商业 Unix、企业服务器和传统大厂。

在 20 世纪八九十年代,这两条路线长期并存。

甚至一度打得不可开交。

而 Solaris、AIX、HP-UX 这些曾经称霸企业机房的操作系统,都和这段历史密切相关。


第一章:Unix 离开贝尔实验室后,出现了两个世界

Unix 最早诞生于 Bell Labs。

但因为当时 AT&T 受到监管限制,Unix 一开始并没有被当作普通商业软件大规模销售。

于是 Unix 源代码进入了很多大学和研究机构。

其中最重要的一站就是:

UC Berkeley。

于是出现了 BSD。

但是 AT&T 自己也没有停止开发 Unix。

这就形成了两个方向。

一边:

Berkeley BSD。

另一边:

AT&T Unix。

随着时间发展,两边开始越来越不一样。

BSD 增加了:

  • TCP/IP;
  • BSD Sockets;
  • Fast File System;
  • 虚拟内存;
  • 大量开发工具。

AT&T 也不断发展自己的 Unix。

先有:

System III。

然后到了 1983 年:

UNIX System V。

Unix 世界,从此出现了一条非常重要的商业主线。


第二章:System V 是什么?

今天 Linux 用户可能经常看到一个词:

SysV

例如:

SysV init

这个 SysV,其实就是:

System V。

System V 里的 V 不是字母 V。

而是罗马数字:

Five。

也就是:

Unix System Five。

它是 AT&T 推出的商业 Unix 版本。

后来又不断升级:

System V ↓SVR2 ↓SVR3 ↓SVR4

这里的 R,就是:

Release。

其中最重要的一个版本:

System V Release 4,简称 SVR4。

为什么 SVR4 很重要?

因为到了 80 年代后期,Unix 世界已经乱成了一锅粥。


第三章:Unix 成功以后,反而开始“天下大乱”

Unix 最大的成功之一,就是:

很多公司都开始做自己的 Unix。

但这同时也制造了一个问题。

大家都是 Unix。

却越来越不一样。

Sun 有:

SunOS。

IBM 有:

AIX。

HP 有:

HP-UX。

DEC 有:

Ultrix。

SGI 有:

IRIX。

还有:

  • SCO UNIX;
  • Xenix;
  • UnixWare。

表面看:

大家都是 Unix。

实际上:

命令不同。

系统管理方式不同。

库不同。

文件位置不同。

API 也可能不同。

这就出现了一个非常尴尬的局面:

Unix 本来强调软件可移植性,结果 Unix 自己却越来越不兼容。

于是 80 年代出现了一场著名的:

Unix Wars。


第四章:BSD 和 System V,开始互相抢地盘

如果简单理解当年的 Unix 世界,可以把它看成两个阵营。

一边是:

BSD 派。

另一边:

System V 派。

BSD 在大学、工作站、网络技术领域影响巨大。

System V 则背靠 AT&T,积极向商业市场发展。

两边甚至连很多日常工具的行为都不一样。

程序员可能会遇到:

这个命令在 BSD 上这样用,在 System V 上却是另外一种参数。

一些标准库和系统调用也存在差异。

今天我们习惯:

Unix-like 系统大体差不多。

但在那个年代:

“你运行的是哪一种 Unix?”

是一件非常重要的事情。

于是大家开始意识到:

再这么发展下去,Unix 迟早会把自己玩死。


第五章:一个非常重要的版本——SVR4

到了 80 年代末,AT&T 和 Sun Microsystems 开始合作。

他们希望:

把 Unix 世界里几条重要技术路线重新整合起来。

于是诞生了:

System V Release 4。

也就是:

SVR4。

SVR4 很有意思。

它并不是简单继续 System V。

而是吸收了多个 Unix 分支的技术。

大致可以理解成:

System V +BSD +SunOS +Xenix 等技术 ↓SVR4

也就是说:

当年的两大 Unix 阵营虽然一直竞争,

但最后大家发现:

对方的好东西,还是得拿过来。

System V 吸收了 BSD 的不少技术。

BSD 世界也不断兼容商业 Unix 标准。

Unix 开始从“阵营战争”慢慢走向:

标准化。


第六章:Sun,本来其实站在 BSD 这一边

这里出现了一个很有意思的人。

前面 BSD 那篇我们提到过:

Bill Joy。

他是 Berkeley BSD 早期最重要的开发者之一。

也是:

vi 的作者。

后来 Bill Joy 离开伯克利。

1982 年,他参与创办了一家公司:

Sun Microsystems。

于是 Sun 早期的操作系统自然深受 BSD 影响。

它叫:

SunOS。

早期 SunOS 基本属于 BSD Unix 这一派。

这非常合理。

毕竟创始团队里面就有 BSD 核心开发者。

于是早期关系大概是:

Unix ↓BSD ↓SunOS

但是后来事情发生了变化。


第七章:Sun 突然转向了 System V

到了 80 年代末,Sun 做出了一个非常重要的选择:

和 AT&T 合作。

双方共同推动 SVR4。

Sun 后来的新一代操作系统开始建立在 SVR4 路线上。

这个系统后来有了一个大家更加熟悉的名字:

Solaris。

于是 Sun 自己完成了一次非常有意思的转身:

早期: BSD ↓SunOS 后来: System V + BSD + Sun 技术 ↓ SVR4 ↓ Solaris

严格来说,Solaris 这个品牌还包含桌面环境、网络组件等完整软件栈。

但从 Unix 血统来说:

Solaris 2 以后最核心的路线就是 SVR4。

这也是为什么 Solaris 通常被认为是:

System V 阵营最重要的继承者之一。


第八章:Solaris 曾经有多牛?

今天很多年轻程序员听 Solaris,可能感觉:

一个已经淡出视野的老 Unix。

但在当年,Solaris 可不是小众玩具。

它曾经是企业 Unix 世界里的重量级选手。

Sun 的服务器大量运行 Solaris。

尤其在:

  • 金融;
  • 电信;
  • 数据库;
  • 大型企业;
  • 科研;
  • 数据中心。

这些领域里,Solaris 曾经非常常见。

而且 Solaris 有不少非常有影响力的技术。

比如:

ZFS。

今天你可能在 NAS、FreeBSD、Linux 上见过它。

ZFS 把很多传统上分开的东西:

  • 文件系统;
  • Volume Manager;
  • 数据校验;
  • Snapshot;
  • RAID;
  • 存储池;

整合进了一套体系里。

另一个著名技术:

DTrace。

它可以动态观察系统内部:

系统调用函数Kernel进程I/O网络

对于排查复杂性能问题非常强大。

还有:

Solaris Zones。

它是一种操作系统级虚拟化 / 隔离技术。

可以在同一个 Solaris Kernel 上运行多个隔离环境。

今天看起来是不是有点熟悉?

很容易让人想到:

Container。

当然:

Zones 不是 Docker。

Docker 也不是从 Solaris Zones 直接发展出来的。

但从思想上看:

一个 Kernel 上隔离多个用户空间。

这类技术早就已经在商业 Unix 世界里被认真使用了。


第九章:商业 Unix 的黄金时代

Solaris 并不是唯一的商业 Unix。

当时还有几位重量级玩家。


IBM AIX

IBM 的 Unix:

AIX。

主要运行在 IBM 自己的服务器和 Power 架构上。

AIX 最大的特点并不是:

普通开发者喜欢折腾它。

而是:

大企业喜欢它。

银行。

保险。

电信。

大型 ERP。

Oracle 数据库。

很多关键业务系统里都能看到 AIX。


HP-UX

HP 也有自己的 Unix:

HP-UX。

主要配合 HP 自家的服务器硬件。

在企业数据中心同样非常常见。


SGI IRIX

Silicon Graphics 有:

IRIX。

它在:

  • 图形工作站;
  • 3D;
  • 动画;
  • 科学计算;

领域非常著名。

当年很多电影特效,都和 SGI 工作站关系密切。


于是 90 年代的数据中心可能是这样的:

Sun 服务器 → SolarisIBM 服务器 → AIXHP 服务器 → HP-UXSGI 工作站 → IRIXPC / 小型服务器 → SCO UNIX

Unix 并不是一个操作系统。

它更像一个:

商业操作系统帝国。


第十章:但是 Unix 最大的问题也暴露出来了

商业 Unix 有一个非常现实的问题:

太贵。

操作系统往往绑定硬件。

Sun Solaris 最舒服的是跑 Sun 服务器。

AIX 跑 IBM。

HP-UX 跑 HP。

于是客户买的并不只是:

一个操作系统。

而是一整套:

专有服务器+专有 Unix+厂商服务+商业数据库+企业应用

这种模式可靠。

但是价格也非常高。

而就在商业 Unix 巨头们互相竞争的时候,

角落里,一个不起眼的系统正在成长。

它运行在便宜的 x86 PC 上。

名字叫:

Linux。


第十一章:Linux 开始做商业 Unix 做的事情

Linux 一开始根本不像 Solaris 的竞争对手。

一边是:

几十万美元的企业服务器。

另一边可能只是:

Linus 在自己的 386 PC 上写出来的小 Kernel。

但是硬件发展速度实在太快了。

普通 x86 服务器越来越强。

Linux 也越来越成熟。

再加上:

  • GNU;
  • GCC;
  • Apache;
  • MySQL;
  • PostgreSQL;
  • Red Hat;
  • Debian;
  • IBM;
  • Oracle。

Linux 逐渐拥有了一整套企业生态。

以前企业需要:

昂贵 Unix 工作站+商业 Unix

后来发现:

普通 x86 服务器+Linux

也能完成大量任务。

而且:

更便宜。

更开放。

硬件选择更多。

社区更大。

于是服务器市场开始发生一次巨大迁移:

Unix → Linux。


第十二章:Sun 做了一件非常大胆的事情——OpenSolaris

面对 Linux 快速成长,Sun 也意识到:

封闭的商业 Unix 模式越来越难维持。

于是 Sun 做出了一个在当时非常大胆的决定:

开放 Solaris 的大量源代码。

2005 年:

OpenSolaris出现。

这件事情当时非常轰动。

因为 Solaris 是 Sun 最核心的技术资产之一。

里面包括大量优秀技术:

  • ZFS;
  • DTrace;
  • Zones;
  • 网络栈;
  • Kernel 技术。

Sun 希望:

Solaris 也能像 Linux 一样建立开放社区。

于是看起来:

Unix 世界似乎又迎来了一次新的机会。

但是几年以后:

剧情突然发生了变化。


第十三章:Oracle 收购 Sun

2010 年。

Oracle 完成对 Sun Microsystems 的收购。

Sun 这家公司,从此消失。

Solaris 也进入 Oracle 时代。

随后:

OpenSolaris 项目停止。

Oracle 继续发展商业 Solaris。

但是开放社区原本期待的那条路线,基本走到了尽头。

这时候,一群开发者做出了一个非常 BSD / Unix 风格的决定:

那我们 Fork。

于是出现了:

illumos。


第十四章:illumos 是什么?

很多人第一次看到 illumos,会以为:

又一个 Linux 发行版?

其实不是。

illumos 更像是:

OpenSolaris 开源代码的社区继承者。

它保留并继续发展:

  • Kernel;
  • ZFS;
  • DTrace;
  • Zones;
  • 网络;
  • 系统工具。

所以大致可以把这段关系理解成:

AT&T Unix ↓System V ↓SVR4 ↓Solaris ↓OpenSolaris ↓illumos

但是 illumos 本身又有点像 Linux Kernel:

它更像一个核心系统项目。

真正拿来安装使用时,还会出现不同发行版。

其中就包括:

OpenIndiana。


第十五章:OpenIndiana——今天还能体验的 Solaris 后裔

OpenIndiana 是基于 illumos 的一个操作系统发行版。

它继承了 OpenSolaris 的很多设计。

如果今天你想亲自看看:

Solaris / System V 这一条 Unix 路线到底是什么感觉。

OpenIndiana 是一个非常有意思的选择。

你可以看到:

  • ZFS;
  • DTrace;
  • Zones;
  • SMF;
  • Solaris 风格系统管理;
  • illumos Kernel。

它有点类似:

Linux Kernel ↓Ubuntu / Debian

而:

illumos ↓OpenIndiana

当然,这只是帮助理解的类比。

两边项目结构并不完全一样。

但对于第一次认识 illumos 的人来说,这个比喻很好理解。


第十六章:为什么今天已经很少听到商业 Unix?

因为 Linux 基本接过了它的位置。

过去企业需要 Unix,是因为它:

  • 稳定;
  • 多用户;
  • 网络能力强;
  • 可以跑数据库;
  • 可以长期运行;
  • 有成熟的企业支持。

但今天这些事情:

Linux 基本都能做到。

而且 Linux 还拥有一个巨大优势:

几乎不绑定硬件。

x86 可以跑。

ARM 可以跑。

Power 可以跑。

大型机也可以跑。

云服务器可以跑。

超级计算机也可以跑。

于是 Linux 最终做了一件很有意思的事情:

它没有打败 Unix 的思想。

恰恰相反。

它继承了 Unix 的思想,

然后打败了传统商业 Unix 的商业模式。


第十七章:BSD 和 System V,谁赢了?

如果站在 1985 年,你可能会问:

BSD 和 System V,最终谁会统一 Unix?

但今天回头看,这个问题其实很有意思。

因为最终:

两边都没有真正赢。

System V 没有统一世界。

BSD 也没有统一世界。

真正成为服务器主流的是:

Linux。

但是,如果看技术影响:

BSD 活下来了。

FreeBSD、NetBSD、OpenBSD 还在继续发展。

macOS 继承了大量 BSD 技术。

OpenSSH 来自 OpenBSD。

BSD Sockets 几乎影响整个现代网络编程世界。

System V 也没有真正消失。

Solaris 留下了:

  • ZFS;
  • DTrace;
  • Zones;
  • SMF。

商业 Unix 时代培养出来的很多系统设计思想,也进入了后来的操作系统世界。

甚至今天 Linux 里仍然能够看到很多 System V 时代留下的名字:

SysV initSystem V IPCshared memorymessage queuesemaphore

所以:

BSD 和 System V 的战争最终没有真正的赢家。

真正留下来的,是双方的技术。


写在最后:Unix 没有统一世界,却塑造了整个世界

如果我们把 Unix 历史画成一棵树。

最早是:

Unix | ┌───────┴───────┐ | | BSD System V | | FreeBSD 等 SVR4 | | Darwin Solaris | | macOS OpenSolaris | illumos | OpenIndiana

当然,真实历史远比这张图复杂。

两条线路之间也不是完全隔离。

BSD 会吸收 System V 的东西。

System V 也吸收 BSD 技术。

后来又有 POSIX、Single UNIX Specification 等标准不断把它们拉回到一起。

但是从理解 Unix 历史的角度:

这两条主线非常重要。

BSD 代表了:

大学、开放、网络和工程文化。

System V 则代表了:

商业 Unix、企业服务器和工业化。

几十年以后:

商业 Unix 的黄金时代已经过去。

Sun 已经消失。

IRIX 已经成为历史。

HP-UX 和 AIX 也远没有当年的声势。

Solaris 逐渐淡出了大多数开发者的视野。

Linux 成为了服务器和云计算时代真正的主角。

但 Unix 世界并没有因此消失。

它只是换了一种方式继续存在。

今天:

我们在 Linux 中使用 Unix 命令。

在 macOS 中使用 BSD 工具。

在 NAS 中使用 ZFS。

在服务器里使用 SSH。

在容器中实践进程隔离。

很多看似现代的技术背后,

其实都有几十年前 Unix 工程师留下的影子。

所以,Unix 历史真正有趣的地方并不是:

谁最终赢了?

而是:

那些看似已经退出历史舞台的系统,为什么直到今天仍然影响着我们。

System V 和 Solaris,就是这样一条已经不再站在舞台中央,却绝不能从 Unix 历史中删掉的主线。

← 返回列表