Linux 与 Unix:有什么区别?
深入研究这两个具有许多相同传统和许多相同目标的操作系统之间的差异。
如果您是一名 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 编写多任务、多用户操作系统。贝尔实验室研究机构这个团队中最著名的两位成员是肯·汤普森和丹尼斯·里奇。虽然 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 软件诞生了:伯克利软件发行版(Berkeley Software Distribution,BSD)。最初,BSD 并不是 AT&T Unix 的替代品,而是具有附加软件和功能的附加组件。当 2BSD(第二伯克利软件发行版)于 1979 年问世时,伯克利研究生 Bill Joy 已经添加了现在著名的程序,例如 vi
和 C shell (/bin/csh)。
除了成为 Unix 家族最受欢迎的分支之一的 BSD 之外,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 变体的服务器市场份额已缩减至个位数(或更低),但如今这些 Unix 变体仍然有一定的用途。 BSD 可能拥有当今所有现代 Unix 系统中最大的安装基础。此外,近代历史上发货的每一个 Apple Mac 硬件设备都可以被 BSD 声明,因为它的 OS X(现在的 macOS)操作系统是 BSD 的衍生版本。
虽然 Unix 及其学术和商业变体的完整历史可能需要很多页,但为了我们文章的重点,让我们继续讨论 Linux 的崛起。
进入Linux
我们今天所说的 Linux 操作系统实际上是 20 世纪 90 年代初的两项努力的结合。 Richard Stallman 致力于创建一个真正自由且开源的替代专有 Unix 系统的方案。他正在以 GNU 的名义开发实用程序和程序,GNU 是一个递归缩写,意思是“GNU 不是 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。随着包括 IBM 在内的许多企业从专有 Unix 迁移到在 Linux 上提供中间件和软件解决方案,在免费和开源组件之上提供支持的商业 Linux 产品变得可行。红帽围绕红帽企业 Linux 构建了商业支持模型,德国供应商 SUSE 也采用了 SUSE Linux Enterprise Server (SLES)。
Unix 和 Linux 的比较
到目前为止,我们已经了解了 Unix 的历史、Linux 的兴起以及作为 Unix 的自由开源替代方案的 GNU/自由软件基金会的基础。让我们来看看这两个操作系统之间的差异,它们具有许多相同的传统和许多相同的目标。
从用户体验的角度来看,差别不大! 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 世界所采用。许多 GNU 实用程序作为 Unix 系统的附加组件提供,开发人员希望使用不属于 Unix 的 GNU 程序的功能。例如,IBM 的 AIX 为 Linux 应用程序提供了一个 AIX Toolbox,其中包含数百个 GNU 软件包(如 Bash、GCC、OpenLDAP 等),可以将其添加到 AIX 安装中以简化 Linux 和基于 Unix 的 AIX 系统之间的转换。
专有 Unix 仍然存在并且运行良好,并且许多主要供应商承诺在 2020 年代对其当前版本提供支持,毫无疑问,Unix 将在可预见的未来存在。此外,Unix 树的 BSD 分支是开源的,NetBSD、OpenBSD 和 FreeBSD 都拥有强大的用户基础和开源社区,这些社区可能不像 Linux 那样可见或活跃,但在最近的服务器份额报告中占有一席之地,在网络服务等领域远远高于专有的 Unix 数字。
Linux 相对于专有 Unix 的显着优势在于它在大量硬件平台和设备上的可用性。 Raspberry Pi 深受业余爱好者和爱好者的欢迎,它是 Linux 驱动的,为运行 Linux 的整个物联网设备打开了大门。我们已经提到了 Android 设备、汽车(使用汽车级 Linux)和智能电视,Linux 在这些领域拥有很大的市场份额。全球每个云提供商都提供运行 Linux 的虚拟服务器,并且当今许多最流行的云原生堆栈都是基于 Linux 的,无论您谈论的是容器运行时、Kubernetes 还是许多越来越受欢迎的无服务器平台。
Linux 崛起最明显的体现之一是微软近年来的转型。如果你在十年前告诉软件开发人员,Windows 操作系统将在 2016 年“运行 Linux”,他们中的大多数人都会歇斯底里地大笑。但 Windows Linux 子系统 (WSL) 的存在和流行,以及最近宣布的 Docker Windows 端口等功能,包括 LCOW(Windows 上的 Linux 容器)支持,都证明了 Linux 所产生的影响,并且显然,整个软件世界将继续存在。
本文最初发表于 2018 年 5 月,已由编辑更新。