Mac OS X 是在获得许可的 Unix 上开发的,还是说它是类 Unix 克隆版,与 Linux 不同,它符合 Unix 规范,足以注册为 Unix 操作系统。直到 Leopard,Mac OS X 才获得 Unix 认证。但在 Leopard 中,终端仍会打印:
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
但是 GNUGNU 不是 Unix,而 Mac OS X 注册为 Unix。这让我很困惑 OS X 是 unix 还是类 unix。
换句话说,OS X 是在 Unix 基础上编写的,还是尽可能地符合 Unix 的重写版本。也许有人可以提供谱系或其他背景信息。
答案1
最初的 UNIX 是由 AT&T 创建的。他们开发了一个用于文本处理的操作系统,但由于某些限制而无法出售。由于无法出售,他们相当慷慨地允许大学访问源磁带。几个大学做出了改变,其中最著名的是加州大学伯克利分校 (UCB),它发布了伯克利软件发行版 (Berkeley Software Distribution,简称 BSD)。UNIX 的 BSD 变体对所谓的 UNIX 做了几个重要的补充,包括虚拟内存模型、BSD 套接字(类似 TCP/IP)、vi 和 CSH - 第一个为交互式使用而设计的 shell。
BSD UNIX 最初是作为 AT&T UNIX 代码的补丁而出现的。伯克利人清理并清除了 AT&T 代码,最终发布了 AT&T 免版权的 BSD 源代码。这催生了 386BSD,然后又催生了 NetBSD、FreeBSD、OpenBSD 和 FireflyBSD(以及其他)。最终,AT&T 和 BSD 代码库被纳入“官方 UNIX”,这被称为 SVR4。
MacOS X Darwin 内核基于 NetBSD 和 FreeBSD 的元素,以及一些 Mach 代码。您可以说它是一个 UNIX,它的代码谱系从加州大学伯克利分校一直延续到最初的 AT&T。
但是 UNIX 是什么意思呢?它是 AT&T 的后裔吗?如果是这样,BSD 符合条件,Solaris 和许多其他系统也符合条件。它是可以在其上运行 UNIX 代码的 API 吗?那么这些都符合条件,Linux 也符合条件,它是从头开始编写的 UNIX API 语料库。对于大多数代码,Cygwin 符合 UNIX 代码的目标条件,因此它也是 UNIX,即使它在 Windows 内核上运行,而 UNIX“内核”是用户空间中的 DLL。它是可以贴在机器上的徽章吗?如果是这样,Apple 最终在 Leopard 中为它付出了代价。嗯,但微软为 Windows NT4 POSIX 子系统支付了该徽章。是的,Windows NT 在 Solaris 之前就被标记为“UNIX”。然而,作为 UNIX 源的直接后代的 NetBSD 从未为该徽章付过钱,而且不称自己为 UNIX。
至于 bash,我不会将 GNU 作为 Mac OS X 是否为 UNIX 的标准。bash 在 UNIX 平台上很常见(如果我没记错的话,拥有 bash 是 SVR4 UNIX 的要求之一),但也可以移植到非 UNIX 平台上。“GNU 不是 UNIX”更多地是指 GNU Hurd,它应该是操作系统领域 UNIX 的竞争对手。Hurd 应该是一个微内核,它可以做很多很棒的事情,也可以运行 UNIX 代码。Hurd 内核没有做太多事情,但 Hurd 的目标催生了大量在 UNIX 上运行的非常有用的软件,包括 bash、emacs、gcc 和许多其他软件。
答案2
答案3
取自维基百科:
OS X 基于 Mach 内核。FreeBSD 和 NetBSD 的 Unix 实现的某些部分被整合到 Mac OS X 的核心 NeXTSTEP 中。
OS X 的核心是建立在 XNU 内核之上的 POSIX 兼容操作系统 (OS),其命令行界面提供标准的 Unix 功能。Apple 已将此软件系列发布为名为 Darwin 的免费开源操作系统。在 Darwin 之上,Apple 分层了许多组件,包括 Aqua 界面和 Finder,以完成基于 GUI 的操作系统 OS X。
Mac OS X 中的 Darwin 子系统负责管理文件系统,其中包括 Unix 权限层。
答案4
如果你问 OS X 是否使用 System V 等代码库开发,答案是否定的。OS X 的血统可以追溯到 BSD 和 Mach。
但这并不意味着它不是真正的 Unix。据我所知,这项认证除了 Apple 决定为 Leopard 支付费用外,没有任何实际意义。