macOS 是 UNIX 吗? (这意味着什么?)

macOS 是 UNIX 还是类 UNIX 系统?这个看似简单的问题背后,隐藏着一段复杂的历史和技术演变。本文将深入探讨 macOS 的起源,厘清它与 UNIX、类 UNIX 之间的关系,并解释 POSIX 和 SUS 等相关标准。

macOS:UNIX 血统的探究

关于 macOS 的 UNIX 属性,一直存在争议。我们需要先了解 UNIX、Unix 和类 Unix 这些术语的真正含义,以及谁有权决定一个系统是否属于 UNIX 阵营,并且他们使用什么标准来做出判断。

让我们从 UNIX 的起源说起。

大约 50 年前,UNIX 诞生于 贝尔实验室,这是 AT&T 旗下的研究机构。1973 年,Unix 第 4 版用 C 语言重写,这大大提高了操作系统的可移植性,使其更容易在不同的硬件平台上运行。同年,两位核心架构师 肯·汤普森丹尼斯·里奇 在一次关于操作系统的会议上发表了一篇论文,引起了广泛关注,许多人纷纷索要操作系统副本。

由于 1956 年的一项同意令限制了 AT&T 的业务范围,该公司不能从事“公共运营商通信服务以外的任何业务”。因此,Unix 当时并不被视为 AT&T 的盈利产品。于是,AT&T 做出了一个非凡的决定:以源代码的形式免费发布 Unix,仅象征性收取一些运输、包装和“合理版税”的费用。

Unix 的快速发展

由于 Unix 是“按原样”提供的,并没有官方的支持。这促使一个 Unix 社区的形成,成员们互相帮助,对 Unix 进行修补和扩展。用户可以自由获取源代码、修改代码并获得社区的支持,这与今天的开源模式非常相似。各种不同风格的 Unix 系统开始涌现,经过调整和定制,以适应不同组织的需求。

鲍勃·法布里是加州大学伯克利分校的一位计算机科学教授,他也是 1973 年操作系统原理研讨会程序委员会的成员。他听取了汤普森和里奇关于“UNIX 分时系统”的演讲。

法布里索要了操作系统副本,并在 1974 年,将 Unix 安装在了加州大学伯克利分校计算机科学研究组 (CSRG) 的一台 PDP/11计算机上。值得一提的是,肯·汤普森也曾在那里工作了一年,致力于开发后来成为该大学自己风格的 Unix。加州大学伯克利分校修改和添加的版本被分发,并被称为伯克利软件发行版 (BSD)。这些发行版最终演变成完整的 Unix 系统发行版,并仍以 BSD 的名称流传,例如 4.2BSD 等版本号,就代表不同的发行版。

1984 年,AT&T 解除了 1956 年同意令的约束,可以正式销售其操作系统。其系统包含了来自 BSD 的代码,例如 TCP/IPvi 编辑器和 C shell csh。尽管存在这种交叉合作,许可方面仍然存在问题。BSD 包含了 AT&T 的非开源代码,但 BSD 的自身元素是开源的。

为了解决这些问题,开发了一个不包含 AT&T 代码的 BSD 版本。然而,当 AT&T 代码被删除时,大约 20% 的内核代码丢失了。威廉·乔利茨 编写了缺失的部分,并将其发布为 386BSD。虽然 386BSD 项目后来停滞不前,但在 1993 年,其源代码库促成了 NetBSDFreeBSD 项目的诞生。

至此,我们获得了拼图中的一块关键部分:FreeBSD。

NeXT 的崛起

1985 年,史蒂夫·乔布斯被苹果公司解雇后,创立了一家名为 NeXT的公司。为了为其工作站产品线提供操作系统,NeXT 开发了 NeXTSTEP。该系统以 BSD 为代码库,但引入了一个完全不同的内核。

NeXT 使用了修改版的 Mach 微内核4.3BSD,从而形成了 NeXTSTEP。 Mach 内核是在卡内基梅隆大学开发的,旨在促进分布式和并行计算的研究。研究团队使用 BSD 作为操作系统,并替换了内核,而不是从头编写一个全新的操作系统。

苹果的融合

1996 年,苹果公司收购了 NeXT 公司,从而获得了 NeXTSTEP。苹果开始开发后来的 macOS 操作系统 Mac OS X。它升级了 Mach 内核,并用开放软件基金会开发和使用的更高级版本取代了它。 OSF/1 操作系统。苹果还使用了 FreeBSD 发行版的更新和改进版本升级了 BSD 组件。

苹果将 BSD 内核的元素融入 Mach 内核,并开发了一个混合内核,结合了单内核和微内核架构的特性。

基于 NeXTSTEP 的 DriverKit 开发的 I/O Kit 也被集成到系统中,这使得可以在不修改内核的情况下动态添加驱动程序。

XNU 是整个拼图中的第三块重要组成部分。

POSIX 和 SUS 标准

1996 年,两个标准机构——X/Open开放软件基金会——合并成立了 开放组织

开放组织是认证机构。