Linux 与 Unix:有什么区别?

深入了解这两种操作系统之间的差异,它们拥有许多相同的血统和许多相同的目标。
504 位读者喜欢这篇文章。
Arrows moving a process forward

Opensource.com

如果你是一位 20 多岁或 30 多岁的软件开发者,你是在 Linux 主导的世界中成长起来的。几十年来,它一直是数据中心的重要参与者,虽然很难找到权威的操作系统市场份额报告,但 Linux 在数据中心操作系统中的份额可能高达 70%,而 Windows 变体占据了几乎所有剩余的份额。使用任何主要公共云的开发者都可以期望目标系统运行 Linux。近年来,随着 Android 和基于 Linux 的嵌入式系统在智能手机、电视、汽车和许多其他设备中的加入,Linux 无处不在的证据越来越多。

即便如此,大多数软件开发者,即使是那些在可敬的“Linux 革命”期间成长起来的人,至少也听说过 Unix。它听起来与 Linux 相似,你可能听过人们互换使用这些术语。或者,你可能听过 Linux 被称为“类 Unix”操作系统。

那么,这个 Unix 是什么呢?漫画中描绘的是像巫师一样的“老前辈”坐在发光的绿色屏幕后面,编写 C 代码和 shell 脚本,动力来自老式滴滤咖啡。但 Unix 拥有比 20 世纪 70 年代的那些留着胡子的 C 程序员更丰富的历史。虽然详细描述 Unix 历史和“Unix 与 Linux”比较的文章比比皆是,但本文将提供一个高级背景,并列出这两个互补世界之间的主要差异。

Unix 的起源

Unix 的历史始于 20 世纪 60 年代末的 AT&T 贝尔实验室,当时一个由程序员组成的小团队试图为 PDP-7 编写一个多任务、多用户的操作系统。贝尔实验室研究机构的两位最著名的成员是 Ken Thompson 和 Dennis Ritchie。虽然 Unix 的许多概念都源于它的前身(Multics),但 Unix 团队在 20 世纪 70 年代初决定用 C 语言重写这个小型操作系统,这使得 Unix 与所有其他操作系统区分开来。当时,操作系统很少是可移植的,如果有的话。相反,由于其设计和底层源代码语言的性质,操作系统与其编写的硬件平台紧密相连。通过在 C 编程语言上重构 Unix,Unix 现在可以移植到许多硬件架构。

除了这种新的可移植性,使 Unix 能够迅速扩展到贝尔实验室以外的其他研究、学术,甚至商业用途之外,操作系统的几个关键设计原则对用户和程序员也很有吸引力。首先,Ken Thompson 的 Unix 哲学成为模块化软件设计和计算的强大模型。Unix 哲学建议结合使用小型、专门构建的程序来完成复杂的整体任务。由于 Unix 是围绕文件和管道设计的,因此这种将程序的输入和输出“管道”连接在一起,形成对输入进行线性操作的模型,至今仍然流行。事实上,当前的云无服务器计算模型很大程度上源于 Unix 哲学。

快速增长和竞争

在 20 世纪 70 年代末和 80 年代,Unix 成为了一个家族树的根,该家族树在研究、学术界和一个不断增长的商业 Unix 操作系统业务中扩展开来。Unix 不是开源软件,Unix 源代码可以通过与其所有者 AT&T 达成的协议进行许可。第一个已知的软件许可证于 1975 年出售给伊利诺伊大学。

Unix 在学术界迅速发展,伯克利成为了一个重要的活动中心,因为 Ken Thompson 在 70 年代在那里休假。随着伯克利围绕 Unix 的所有活动,一个新的 Unix 软件交付方式诞生了:伯克利软件发行版,即 BSD。最初,BSD 不是 AT&T Unix 的替代品,而是一个带有额外软件和功能的附加组件。到 1979 年 2BSD(第二个伯克利软件发行版)发布时,伯克利研究生 Bill Joy 已经添加了现在著名的程序,如 viC shell (/bin/csh)。

除了 BSD,它成为 Unix 家族中最受欢迎的分支之一,Unix 的商业产品在 20 世纪 80 年代和 90 年代爆发式增长,出现了像 HP-UX、IBM 的 AIX、Sun 的 Solaris、Sequent 和 Xenix 这样的名称。随着分支从原始根增长,“Unix 战争”开始了,标准化成为了社区的新焦点。POSIX 标准于 1988 年诞生,以及通过 The Open Group 在 20 世纪 90 年代的其他标准化后续行动。

大约在这个时候,AT&T 和 Sun 发布了 System V Release 4 (SVR4),它被许多商业供应商采用。另外,BSD 家族的操作系统多年来一直在增长,导致一些开源变体在现在熟悉的 BSD 许可下发布。这包括 FreeBSD、OpenBSD 和 NetBSD,每个都在 Unix 服务器行业中拥有略有不同的目标市场。这些 Unix 变体今天继续有一些用途,尽管许多变体在服务器市场的份额已经萎缩到个位数(或更低)。BSD 可能拥有当今任何现代 Unix 系统中最大的安装基础。此外,最近历史上每台 Apple Mac 硬件单元都可以被 BSD 声称,因为它的 OS X(现在是 macOS)操作系统是 BSD 的衍生产品。

虽然 Unix 的完整历史及其学术和商业变体可能会占用更多页面,但为了我们文章的重点,让我们继续讨论 Linux 的崛起。

进入 Linux

我们今天所说的 Linux 操作系统实际上是 20 世纪 90 年代初两项努力的结合。Richard Stallman 正在寻找一种真正自由和开源的专有 Unix 系统的替代方案。他正在以 GNU 的名义开发实用程序和程序,GNU 是一个递归的首字母缩写,意思是“GNU's not Unix!”。虽然当时有一个内核项目正在进行中,但事实证明这很困难,而且没有内核,自由和开源操作系统的梦想就无法实现。Linus Torvald 的工作——产生一个可工作且可行的内核,他称之为 Linux——使完整的操作系统得以实现。鉴于 Linus 正在使用几种 GNU 工具(例如,GNU 编译器集合或 GCC),GNU 工具和 Linux 内核的结合是完美的匹配。

Linux 发行版随着 GNU 组件、Linux 内核、MIT 的 X-Windows GUI 和其他可以在开源 BSD 许可下使用的 BSD 组件而生。像 Slackware 和 Red Hat 这样的发行版早期的流行使得 20 世纪 90 年代的“普通 PC 用户”能够访问 Linux 操作系统,以及他们在工作或学术生活中使用的许多专有 Unix 系统功能和实用程序。

由于所有 Linux 组件都具有自由和开源的地位,任何人都可以通过一些努力创建一个 Linux 发行版,并且很快发行版的总数达到了数百个。当然,许多开发者通过云提供商或使用流行的免费发行版(如 Fedora、Canonical 的 Ubuntu、Debian、Arch Linux、Gentoo 和许多其他变体)来利用 Linux。商业 Linux 产品在免费和开源组件之上提供支持,随着包括 IBM 在内的许多企业从专有 Unix 迁移到在 Linux 之上提供中间件和软件解决方案,这些产品变得可行。Red Hat 围绕 Red Hat Enterprise Linux 构建了一个商业支持模型,德国供应商 SUSE 也以 SUSE Linux Enterprise Server (SLES) 构建了一个商业支持模型。

比较 Unix 和 Linux

到目前为止,我们已经了解了 Unix 的历史以及 Linux 和 GNU/自由软件基金会崛起为 Unix 的自由和开源替代品。让我们研究一下这两种操作系统之间的差异,它们拥有许多相同的血统和许多相同的目标。

从用户体验的角度来看,并没有太大的不同!Linux 的大部分吸引力在于该操作系统在许多硬件架构(包括现代 PC)上的可用性,以及使用 Unix 系统管理员和用户熟悉的工具的能力。

由于 POSIX 标准和合规性,在 Unix 上编写的软件可以用通常有限的移植工作量编译为 Linux 操作系统。在许多情况下,Shell 脚本可以直接在 Linux 上使用。虽然某些工具在 Unix 和 Linux 之间具有略微不同的标志/命令行选项,但许多工具在两者上的运行方式相同。

一个值得注意的方面是,macOS 硬件和操作系统作为主要针对 Linux 进行开发的平台而受欢迎,这可能归因于类 BSD 的 macOS 操作系统。许多用于 Linux 系统的工具和脚本可以在 macOS 终端中轻松运行。Linux 上提供的许多开源软件组件都可以通过 Homebrew 等工具轻松获得。

Linux 和 Unix 之间的其余差异主要与许可模式有关:开源与专有、许可软件。此外,Unix 发行版中缺少通用内核对软件和硬件供应商有影响。对于 Linux,供应商可以为特定的硬件设备创建一个设备驱动程序,并期望它在大多数发行版中都能合理地运行。由于 Unix 树的商业和学术分支,供应商可能必须为 Unix 的变体编写不同的驱动程序,并且存在与访问 SDK 或跨许多 Unix 变体以二进制设备驱动程序形式分发软件有关的许可和其他问题。

过去十年中,Linux 和 Unix 社区都日趋成熟,Linux 上的许多进步成果已被 Unix 世界所采纳。许多 GNU 实用工具也被用作 Unix 系统的附加组件,以满足开发人员对 Unix 系统本身不具备的 GNU 程序功能的需求。 例如,IBM 的 AIX 提供了一个 AIX Toolbox for Linux Applications,其中包含数百个 GNU 软件包(例如 Bash、GCC、OpenLDAP 等),可以将其添加到 AIX 安装中,以简化 Linux 和基于 Unix 的 AIX 系统之间的过渡。

专有 Unix 依然活跃且发展良好,许多主要供应商承诺为其当前版本提供支持,直到 2020 年代,毫无疑问,Unix 在可预见的未来将会一直存在。 此外,Unix 树的 BSD 分支是开源的,NetBSD、OpenBSD 和 FreeBSD 都有强大的用户群和开源社区,虽然它们可能不如 Linux 那样引人注目或活跃,但在最近的服务器份额报告中,它们的表现不俗,在 Web 服务等领域远高于专有 Unix 的份额。

Linux 相对于专有 Unix 的一个显著优势在于它可以在大量的硬件平台和设备上使用。 广受欢迎的 Raspberry Pi 由 Linux 驱动,并为运行 Linux 的各种物联网 (IoT) 设备打开了大门。 我们已经提到过 Android 设备、汽车(带有 Automotive Grade Linux)和智能电视,在这些领域 Linux 拥有很大的市场份额。 地球上的每个云提供商都提供运行 Linux 的虚拟服务器,并且当今许多最流行的云原生堆栈都是基于 Linux 的,无论你谈论的是容器运行时、Kubernetes 还是许多越来越受欢迎的无服务器平台。

Linux 崛起最能说明问题的一个体现是微软近年来发生的转变。 如果你在十年前告诉软件开发人员 Windows 操作系统将在 2016 年“运行 Linux”,他们中的大多数人会歇斯底里地大笑。 但 Windows Subsystem for Linux (WSL) 的存在和普及,以及最近宣布的更多功能,例如包括 LCOW(Linux containers on Windows)支持的 Windows 版 Docker,都证明了 Linux 已经并将继续对软件世界产生的影响。


本文最初发表于 2018 年 5 月,并已由编辑更新。

接下来阅读
标签
User profile image.
Phil 是 IBM Watson 和 Cloud Platform 部门的杰出工程师兼容器和 Linux 操作系统架构战略首席技术官。 Phil 目前是 Docker(现在是 Moby)引擎项目和 CNCF containerd 项目的 OSS 维护者,并且是 Open Container Initiative (OCI) 技术监督委员会和 Moby 技术指导委员会的成员。

8 条评论

顺便说一句,macOS *是* UNIX,已通过 OpenGroup 验证,OpenGroup 是 UNIX 品牌和标准化大纲的当前所有者。 Linux 是“类 UNIX”的,因为没有任何一个发行版向 OpenGroup 申请将其发行版认证为官方 UNIX。

此外,FreeBSD、OpenBSD 和 NetBSD 目前也不是“UNIX”,即使它们 *是* BSD。 原因与 Linux 相同。 通过 OpenGroup 的认证过程非常昂贵。 开放发行版只是觉得没有必要把钱花在品牌徽章上,以跟上 AIX 等的步伐。

有关成为 UNIX 的价格的信息可以在这里找到

https://www.opengroup.org/openbrand/Brandfees.htm

“BSD 可能拥有当今任何现代 Unix 系统中最大的安装基数。 此外,最近发货的每台 Apple Mac 硬件都可以被 BSD 声明,因为其 OS X(现在的 macOS)操作系统是 BSD 衍生产品。”
----

与桌面 Linux 相比,我对“桌面” BSD 的发展速度感到非常失望。 可悲的是,FreeBSD 具有你在 Unix 中期望看到的封装、开发人员、尖端技术和稳定性。
那么,为什么 TrueOS(以前的 PC-BSD)不能提供一个稳定可靠的桌面系统呢? 如果我是他们,在看了 Ubuntu Mate 之后,我会直接使用 MATE。 这就是我们在 BSD 领域的桌面所需要的。

NetBSD 也可以成为桌面 BSD 版本的绝佳基础。 它坚固、可靠且设计精良。 见鬼,这几乎就像有一场阴谋阻止一个可行且繁荣的免费桌面 BSD 生根发芽。
然而,带有 Mate 桌面的 GhostBSD 看起来很有希望。 我们拭目以待。

回复 Matakaheru

unix 的早期历史有点复杂。

AT&T 是 Multics 项目的一部分——他们负责编译器——与 MIT(操作系统)和 GE(硬件)一起。

Ritchie 和 Thompson 只是在贝尔退出 Multics 项目后才开始他们的 Unics(原始拼写)项目。 给出的原因取决于你问谁。

Multics 从一开始就是用高级语言 PL/1 编写的,所以原则上它也是可移植的——但 Burroughs MCP 也是如此,它也是用 HLL 编写的。

很简单。 Linux 是一个操作系统内核,Unix 是 OpenGroup 出售的认证......

根据管理层规定,任何 Unix 或 AIX 都类似于 Linux。 对我来说,Linux 可以独立存在。

GNU 项目比 Linux 早得多。 自由软件基金会开发并分发了大量软件(除了内核之外的所有软件),用于在整个 80 年代和 90 年代与各种 UNIX 平台一起使用。 在 Linux 出现之前,我个人就在 Sun (SunOS,后来的 Solaris)、HP (HP-UX)、DEC (Ultrix) 和 IBM (AIX) 平台上使用了 GNU 软件。

并且由于 GNU 代码的(大部分)可移植性,因此有很多端口(大多数软件包)到非 UNIX 平台。 我个人在 MS-DOS 和 OS/2 上运行了许多 GNU 软件包,这两个平台与 UNIX 都不相似。

将 GNU 软件与 Linux 一起分发对于使 Linux 成为可行的平台绝对至关重要,但这得益于 GNU 在 Linux 之前几乎已经移植到每个 UNIX 和类 UNIX 平台。 换句话说,Linux 需要 GNU 才能成功,但 GNU 不需要 Linux,因为它在 Linux 存在之前就已经成功了。

哦,顺便说一句,GNU 项目最终确实发布了自己的内核。 他们称之为 HURD。 尽管它有很多有趣和前沿的技术(并且作为大学操作系统课程的一部分值得研究),但它并没有取得商业上的成功。 如果你有兴趣,可以在这里找到它:https://gnu.ac.cn/software/hurd/hurd.html

虽然作者指出“. . . Unix 树的 BSD 分支是开源的 . . .”,但他忽略了说明 SVR4 分支也以开源形式存在于 illumos 中,而 illumos 又是 OpenSolaris(以及之前的 Solaris)的衍生产品。 illumos 正在为三星的公共云构建提供动力,作为他们拥有 Joyent 的一部分

http://dtrace.org/blogs/bmc/2017/09/04/the-sudden-death-and-eternal-lif…

Creative Commons License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.