
如果把操作系统的发展史比作《三国演义》那么本文更像《三国演义》而不是《三国志》。本系列尝试用故事化的方式讲述 Unix、Linux、BSD、GNU、Windows、macOS、Android 等操作系统背后的发展历程。文中的人物、事件和技术演进都尽量参考公开资料但为了让故事更容易理解会适当简化一些历史细节也会加入作者自己的理解。它不是一篇学术论文而是一段程序员视角的技术故事。引子我们前面其实漏掉了 Unix 世界的一半前面讲 BSD 时我们说Unix 从贝尔实验室走进伯克利大学。伯克利的研究人员不断修改 Unix。最后发展出了BSD。随后又有FreeBSDNetBSDOpenBSD。于是很容易给人一种感觉Unix 后来的故事就是 BSD → Linux / macOS。其实不是。在 Unix 历史上还有另外一条极其重要的主线。它没有诞生在大学。而是一直留在 Unix 的“老家”ATT。这条线后来发展成UNIX System V。如果说 BSD 代表的是大学、研究机构和开放技术社区。那么 System V 更像代表商业 Unix、企业服务器和传统大厂。在 20 世纪八九十年代这两条路线长期并存。甚至一度打得不可开交。而 Solaris、AIX、HP-UX 这些曾经称霸企业机房的操作系统都和这段历史密切相关。第一章Unix 离开贝尔实验室后出现了两个世界Unix 最早诞生于 Bell Labs。但因为当时 ATT 受到监管限制Unix 一开始并没有被当作普通商业软件大规模销售。于是 Unix 源代码进入了很多大学和研究机构。其中最重要的一站就是UC Berkeley。于是出现了 BSD。但是 ATT 自己也没有停止开发 Unix。这就形成了两个方向。一边Berkeley BSD。另一边ATT Unix。随着时间发展两边开始越来越不一样。BSD 增加了TCP/IPBSD SocketsFast File System虚拟内存大量开发工具。ATT 也不断发展自己的 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。它是 ATT 推出的商业 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 UNIXXenixUnixWare。表面看大家都是 Unix。实际上命令不同。系统管理方式不同。库不同。文件位置不同。API 也可能不同。这就出现了一个非常尴尬的局面Unix 本来强调软件可移植性结果 Unix 自己却越来越不兼容。于是 80 年代出现了一场著名的Unix Wars。第四章BSD 和 System V开始互相抢地盘如果简单理解当年的 Unix 世界可以把它看成两个阵营。一边是BSD 派。另一边System V 派。BSD 在大学、工作站、网络技术领域影响巨大。System V 则背靠 ATT积极向商业市场发展。两边甚至连很多日常工具的行为都不一样。程序员可能会遇到这个命令在 BSD 上这样用在 System V 上却是另外一种参数。一些标准库和系统调用也存在差异。今天我们习惯Unix-like 系统大体差不多。但在那个年代“你运行的是哪一种 Unix”是一件非常重要的事情。于是大家开始意识到再这么发展下去Unix 迟早会把自己玩死。第五章一个非常重要的版本——SVR4到了 80 年代末ATT 和 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 做出了一个非常重要的选择和 ATT 合作。双方共同推动 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数据校验SnapshotRAID存储池整合进了一套体系里。另一个著名技术DTrace。它可以动态观察系统内部系统调用函数Kernel进程I/O网络对于排查复杂性能问题非常强大。还有Solaris Zones。它是一种操作系统级虚拟化 / 隔离技术。可以在同一个 Solaris Kernel 上运行多个隔离环境。今天看起来是不是有点熟悉很容易让人想到Container。当然Zones 不是 Docker。Docker 也不是从 Solaris Zones 直接发展出来的。但从思想上看一个 Kernel 上隔离多个用户空间。这类技术早就已经在商业 Unix 世界里被认真使用了。第九章商业 Unix 的黄金时代Solaris 并不是唯一的商业 Unix。当时还有几位重量级玩家。IBM AIXIBM 的 UnixAIX。主要运行在 IBM 自己的服务器和 Power 架构上。AIX 最大的特点并不是普通开发者喜欢折腾它。而是大企业喜欢它。银行。保险。电信。大型 ERP。Oracle 数据库。很多关键业务系统里都能看到 AIX。HP-UXHP 也有自己的 UnixHP-UX。主要配合 HP 自家的服务器硬件。在企业数据中心同样非常常见。SGI IRIXSilicon Graphics 有IRIX。它在图形工作站3D动画科学计算领域非常著名。当年很多电影特效都和 SGI 工作站关系密切。于是 90 年代的数据中心可能是这样的Sun 服务器 → SolarisIBM 服务器 → AIXHP 服务器 → HP-UXSGI 工作站 → IRIXPC / 小型服务器 → SCO UNIXUnix 并不是一个操作系统。它更像一个商业操作系统帝国。第十章但是 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 也越来越成熟。再加上GNUGCCApacheMySQLPostgreSQLRed HatDebianIBMOracle。Linux 逐渐拥有了一整套企业生态。以前企业需要昂贵 Unix 工作站商业 Unix后来发现普通 x86 服务器Linux也能完成大量任务。而且更便宜。更开放。硬件选择更多。社区更大。于是服务器市场开始发生一次巨大迁移Unix → Linux。第十二章Sun 做了一件非常大胆的事情——OpenSolaris面对 Linux 快速成长Sun 也意识到封闭的商业 Unix 模式越来越难维持。于是 Sun 做出了一个在当时非常大胆的决定开放 Solaris 的大量源代码。2005 年OpenSolaris出现。这件事情当时非常轰动。因为 Solaris 是 Sun 最核心的技术资产之一。里面包括大量优秀技术ZFSDTraceZones网络栈Kernel 技术。Sun 希望Solaris 也能像 Linux 一样建立开放社区。于是看起来Unix 世界似乎又迎来了一次新的机会。但是几年以后剧情突然发生了变化。第十三章Oracle 收购 Sun2010 年。Oracle 完成对 Sun Microsystems 的收购。Sun 这家公司从此消失。Solaris 也进入 Oracle 时代。随后OpenSolaris 项目停止。Oracle 继续发展商业 Solaris。但是开放社区原本期待的那条路线基本走到了尽头。这时候一群开发者做出了一个非常 BSD / Unix 风格的决定那我们 Fork。于是出现了illumos。第十四章illumos 是什么很多人第一次看到 illumos会以为又一个 Linux 发行版其实不是。illumos 更像是OpenSolaris 开源代码的社区继承者。它保留并继续发展KernelZFSDTraceZones网络系统工具。所以大致可以把这段关系理解成ATT Unix ↓System V ↓SVR4 ↓Solaris ↓OpenSolaris ↓illumos但是 illumos 本身又有点像 Linux Kernel它更像一个核心系统项目。真正拿来安装使用时还会出现不同发行版。其中就包括OpenIndiana。第十五章OpenIndiana——今天还能体验的 Solaris 后裔OpenIndiana 是基于 illumos 的一个操作系统发行版。它继承了 OpenSolaris 的很多设计。如果今天你想亲自看看Solaris / System V 这一条 Unix 路线到底是什么感觉。OpenIndiana 是一个非常有意思的选择。你可以看到ZFSDTraceZonesSMFSolaris 风格系统管理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 留下了ZFSDTraceZonesSMF。商业 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 历史中删掉的主线。