是macOS UNIX吗? (这是什么意思?)

MacBook Pro的盖子部分打开,屏幕发光到键盘上。
拉兹万·佛朗哥·尼托伊/ Shutterstock

是macOS UNIX还是Unix? 还是类似Unix? 我们回答永无止境的辩论,并一路解释诸如POSIX和SUS之类的标准。

macOS:是否为UNIX?

这个主题提出了许多不同的问题。 macOS的血统是什么? 当今的macOS中仍存在多少遗传物质,这有关系吗? 在我们开始回答某些东西是UNIX,Unix还是类Unix之前,我们需要对这些术语的含义有所了解。 谁来决定是Unix还是UNIX,以及他们使用什么标准?

让我们从头开始。

Unix是五十年前在贝尔实验室Bell Labs )创建的, 贝尔实验室是AT&T旗下的一家研发公司。 快进到1973年,并使用C编程语言重写了Unix的第4版。 这使操作系统更具可移植性,并且更容易转移到不同的硬件平台。 同年,两位核心Unix架构师Ken ThompsonDennis Ritchie在一次有关操作系统的会议上发表了一篇论文。 他们立即收到了操作系统副本的请求。

受制于可追溯至1956年的同意令的约束,AT&T不得不回避“除了提供普通运营商通信服务以外的任何业务。” Unix并不符合AT&T可以从中获利的条件。 因此,该公司当时做得非常出色:将Unix作为具有自由许可证的源代码进行分发。 小额费用涵盖了运输和包装费用以及“合理的特许权使用费”。

Unix的泛滥

因为Unix是按“原样”提供的,所以它没有任何支持。 结果,Unix社区开始联合起来以帮助成员,并修补和扩展Unix。 因此,您可以获取源代码,对其进行修改并获得社区的支持。 这是一个熟悉的戒指。 Unix的各种风格开始出现,适应和调整,以适合从事此工作的组织。

加州大学伯克利分校的计算机科学教授鲍勃·法布里Bob Fabry)参加了1973年操作系统原理研讨会的程序委员会。 他听了Thompson和Ritchie的题为UNIX Time-Sharing System的演讲。

Fabry请求该操作系统的副本,并在1974年将Unix安装在UC Berkeley的计算机科学研究组(CSRG)的PDP / 11上。 值得一提的是,肯·汤普森(Ken Thompson)在那儿呆了一年,致力于使该大学迅速成为Unix风格。 加州大学伯克利分校的更改和增补副本已分发,并称为伯克利软件分发(BSD)。 最终,这些成为了整个Unix系统(仍称为BSD)的发行版。 版本号(例如4.2BSD)标识了不同的发行版。

1984年,AT&T摆脱了1956年同意令的限制,并能够适当地销售其操作系统。 它包括BSD代码,例如TCP / IPvi和C外壳csh 即使有了这种交叉授粉和协作,许可仍然存在困难。 BSD包含AT&T代码,它不是开源的,但BSD元素却是。

开发了没有AT&T代码的BSD版本来解决这些问题。 但是,当删除AT&T代码时,大约有20%的内核丢失了。 威廉·乔利兹William Jolitz)写下了缺失的部分,并且Unix的该版本发布为386BSD 386BSD项目停滞了,但是在1993年,其源代码库产生了NetBSDFreeBSD项目。

这给了我们一个拼图:FreeBSD。

下一步

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

NeXT使用了Mach 微内核4.3BSD的修改版来形成NeXTSTEP,这是该拼图的第二部分。 Mach是在卡耐基梅隆大学开发的,旨在促进对分布式和并行计算的研究。 研究团队使用BSD作为操作系统,并替换了内核,而不是编写自己的操作系统。

XNU

1996年,Apple,Inc.收购了NeXT,Inc.,从而收购了NeXTSTEP。 苹果开始开发最终通过Mac OS X成为macOS的操作系统 它升级了Mach内核,并将其替换为Open Software Foundation开发并在OSF / 1操作系统中使用的更高级版本。 苹果还用FreeBSD发行版中的更新和改进版本升级了BSD组件。

苹果将​​BSD内核的元素重新带回了Mach内核。 它还开发了一种混合内核,结合了单片和微内核体系结构的特征。

还包括Apple基于NeXTSTEP的DriverKit开发的I / O套件 这样就可以将驱动程序添加到内核,而不必每次都对其进行修改。

XNU是拼图的第三部分。

POSIX和SUS标准

1996年,两个标准机构( X / Open开放软件基金会)合并成立了The Open Group

Open Group是UNIX商标的认证机构。 换句话说,在您将其命名为UNIX之前,它必须对操作系统进行胶印以使其符合其标准。 UNIX中所有大写字母是合规性的标志。

因此,类别如下:

  • Unix:操作系统家族。 该家族既包括UNIX操作系统,又包括类Unix的操作系统。
  • UNIX 操作系统 :这些操作系统已被证明符合标准。
  • 类似于Unix的 操作系统 :它们的外观和操作类似于Unix,但尚未通过认证。

当然,完全有可能在明天对“类Unix”类别的某些操作系统进行测试并使其符合要求。 这些现在实际上是UNIX,但只能归为Unix,因为它们还没有橡皮图章。

有两种认证UNIX的标准: POSIX单一UNIX规范(SUS) SUS是POSIX的超集。 因此,某些东西可以与POSIX兼容,但这并不能使其成为UNIX。 但是,如果某些东西符合SUS,则它是UNIX。

POSIX和SUS形成了大量文档集合(大约3,700页)。 它们定义了兼容UNIX系统各个方面的操作和预期行为。 从异步和同步I / O到脚本接口和用户级程序的所有内容都被编入目录并定义。

这些标准定义了应用程序接口和运行时行为,但是并没有规定如何实现它们

那么,macOS是UNIX吗?

答案必须是。

您可以通过FreeBSD将其沿袭追溯到BSD,然后再追溯到Bell Labs分发的Unix,然后再从AT&T收取许可费。

但这没关系。

如果您现在从头开始编写操作系统,只要它满足SUS的要求,就可以认为它是UNIX。 实施方式也无关紧要。 macOS核心的XNU内核是一种混合体系结构。 它结合了Apple的代码以及部分Mach和BSD内核。

但这也不重要。 重要的是,它符合被测标准的要求。

XNU内核的BSD部分提供POSIX应用程序编程接口(例如各种API和BSD系统调用)。 在XNU中保持BSD内核的这一要素完好无损是获得UNIX认证的关键。 它允许XNU与系统的其余部分进行兼容的UNIX对话。

macOS是The Open Group认证的符合UNIX 03的操作系统。 自2007年以来,它始于MAC OS X 10.5。 唯一的例外是Mac OS X 10.7 Lion,但重新获得了OS X 10.8 Mountain Lion的合规性。

有趣的是,正如GNU代表“ GNU's Not Unix”一样, XNU代表“ X is Not Unix”

赞 (0)
分享到:更多 ()