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

MacOS是UNIX还是Unix?或者它是类似Unix的?我们回答了这场永无止境的辩论,并在此过程中解释了POSIX和SUS等标准。

MacOS:Unix还是非Unix?

这个主题提出了一系列不同的问题。MacOS的血统是什么?在今天的MacOS系统中,有多少遗传材料仍然存在,这重要吗?在我们开始回答某些东西是UNIX、Unix还是类Unix之前,我们需要熟悉这些术语的含义。谁来决定某个东西是Unix还是UNIX,他们使用什么标准?

让我们从头开始吧。

UNIX是50年前在贝尔实验室(Bell Labs)创建的,贝尔实验室是美国电话电报公司(AT&T)旗下的一家大型研发公司。快进到1973年,Unix的版本4用C编程语言重写。这使得操作系统更加便携,更容易移植到不同的硬件平台。同年,Unix的两位核心架构师肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)在一次关于操作系统的会议上提交了一篇论文。他们立即收到了索取操作系统副本的请求。

受一项可以追溯到1956年的同意法令的约束,AT&T不得不避免“提供普通运营商通信服务以外的任何业务”。Unix不符合AT&T可以从中获利的资格。因此,该公司在那个时候做了一件了不起的事情:以自由许可的方式将Unix作为源代码分发。小额费用包括运输和包装,以及“合理的版税”。

联盟的激增

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

加州大学伯克利分校(UC Berkeley)计算机科学教授鲍勃·法布里(Bob Fabry)是1973年操作系统原理研讨会的项目委员会成员,他听取了汤普森和里奇的演讲,题目是UNIX分时系统。

Fabry要求提供操作系统的副本,1974年,在加州大学伯克利分校的计算机科学研究组(CSRG)的PDP/11上安装了Unix。值得注意的是,肯·汤普森(Ken Thompson)在那里花了一年时间,致力于很快成为该大学自己风格的Unix。加州大学伯克利分校的更改和添加的副本被分发,并成为众所周知的伯克利软件分发(BSD)。最终,它们变成了整个Unix系统(仍称为BSD)的发行版。版本号(如4.2BSD)标识了不同的版本。

1984年,美国电话电报公司(AT&T)从1956年同意法令的限制中解脱出来,能够正确地营销其操作系统。它包括BSD代码,如TCP/IP、vi和C shell CSH。即使有了这种异花授粉和合作,许可也存在困难。BSD包含AT&T代码,它不是开源的,但是BSD元素是开源的。

没有AT&T代码的BSD版本就是为了绕过这些问题而开发的。然而,当AT&T代码被删除时,大约20%的内核丢失了。威廉·乔利茨(William Jolitz)撰写了缺失的部分,该版本的Unix发布为386BSD。386BSD项目停滞不前,但在1993年,其源代码基础催生了NetBSD和FreeBSD项目。

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

下一步

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

NEXT使用马赫微内核的修改版本和4.3BSD组成了NeXTSTEP,这是这张拼图的第二部分,卡内基梅隆大学开发了NeXTSTEP,以促进对分布式和并行计算的研究。研究小组使用BSD作为操作系统,并更换了内核,而不是编写自己的操作系统。

XNU

1996年,苹果公司。买入NeXT,Inc.。从而获得了NeXTSTEP。苹果公司开始开发最终通过MacOSX成为MacOS的操作系统。它升级了Mach内核,并用开放软件基金会(Open Software Foundation)开发并在OSF/1操作系统中使用的更先进的版本取而代之。苹果还用FreeBSD发行版的更新和改进版本升级了BSD组件。

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

苹果基于NeXTSTEP的DriverKit开发的I/O工具包也包括在内。这使得向内核添加驱动程序成为可能,而不必每次都对其进行修改。

XNU是拼图的第三部分。

POSIX和SUS标准

1996年,两个标准团体--X/Open和Open Software Foundation--合并组成了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形成了大量的文档集合(大约3700页)。它们定义了兼容UNIX系统的各个方面的操作和预期行为。从异步和同步I/O,到脚本接口和所有用户级程序,所有东西都被编目和定义。

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

那么,MacOS是UNIX操作系统吗?

答案肯定是肯定的。

你可以通过FreeBSD追溯到BSD,然后从那里追溯到美国电话电报公司(AT&T)提高许可费之前贝尔实验室(Bell Labs)分发的Unix。

但那并不重要。

如果您现在从头开始编写操作系统,只要它满足SUS的要求,就被认为是UNIX。而且如何实现也无关紧要,MacOS核心的XNU内核是混合架构。它将苹果的代码与部分Mach和BSD内核结合在一起。

但这也无关紧要。重要的是它符合衡量它的标准的要求。

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

MacOS是经Open Group认证的UNIX 03兼容操作系统。这是从2007年开始的,从MacOSX10.5开始。唯一的例外是Mac OS X 10.7 Lion,但在Mac OS X 10.8 Mountain Lion中重新获得了合规性。

有趣的是,就像GNU代表“GNU‘s Not Unix”一样,XNU代表“X不是Unix”。

相关文章