如果你是位二、三十岁的软件开发人员,那么你已经成长在一个由Linux主导的世界。数十年来,它一直是数据中心的重要参与者,尽管很难找到明确的操作系统市场份额报告,但Linux的数据中心操作系统份额可能高达70%,而Windows及其变体几乎涵盖了所有剩余的百分比。
使用任何主流公共云服务的开发人员都可以预期目标系统会运行Linux。近些年来,随着Android和基于Linux的嵌入式系统在智能手机、电视、汽车和其他设备中的应用,Linux已经随处可见。
即便如此,大多数软件开发人员,甚至是那些在这场历史悠久的 “Linux 革命”中长大的软件开发人员,也都听过说Unix。它听起来与Linux相似,你可能已经听到人们互换使用这些术语。或者你也许听说过Linux被称为“类Unix”操作系统。
那么,Unix是什么?漫画中提到了像巫师一样留着“灰胡子”,坐在发光的绿色屏幕后面,写着 C 代码和 shell 脚本,由老式的、滴灌的咖啡提供动力。
但是,Unix的历史比上世纪70年代那些留着胡子的 C 程序员要丰富得多。虽然详细介绍Unix历史和 “Unix 与 Linux” 比较的文章比比皆是,但本文将提供高级背景和列出这些互补世界之间的主要区别。
Unix的起源
Unix的历史始于20世纪60年代后期的AT&T贝尔实验室,有一小组程序员希望为PDP-7编写一个多任务、多用户操作系统。这个贝尔实验室研究机构的团队中最著名的两名成员是Ken Thompson和Dennis Ritchie。
尽管Unix的许多概念都是其前身(Multics)的衍生物,但Unix团队早在70年代就决定用C语言重写这个小型操作系统,这是将Unix与其他操作系统区分开来的原因。
当时,操作系统很少,更不要说可移植的操作系统。相反,由于它们的设计和底层语言的本质,操作系统与他们所编写的硬件平台紧密相关。而通过 C 语言重构 Unix、Unix现在可以移植到许多硬件体系结构中。
除了这种新的可移植性,之所以使得 Unix 迅速扩展到贝尔实验室以外的其他研究和学术机构甚至商业用途,是因为操作系统设计原则的几个关键点吸引了用户和程序员们。
首先是 Ken Thompson 的 Unix 哲学成为模块化软件设计和计算的强大模型。Unix 哲学推荐使用小型的、专用的程序组合起来完成复杂的整体任务。由于 Unix 是围绕文件和管道设计的,因此这种“管道”模式的输入和输出程序的组合成一组线性的输入操作,现在仍然流行。
事实上,目前的云功能即服务(FaaS)或无服务器计算模型要归功于Unix哲学的许多传统。
快速增长和竞争
到70年代末和80年代,Unix成为了一个操作系统家族的起源,它遍及了研究和学术机构以及日益增长的商业Unix操作系统业务领域。Unix不是开源软件,Unix源代码可以通过与它的所有者AT&T达成协议来获得许可。第一个已知的软件许可证于 1975 年出售给伊利诺伊大学University of Illinois。
Unix在学术界迅速发展,在Ken Thompson在上世纪 70 年代的学术假期间,伯克利成为一个重要的活动中心。通过在伯克利的各种有关Unix的活动,Unix软件的一种新的交付方式诞生了:伯克利软件发行版Berkeley Software Distribution(BSD)。
最初,BSD不是 AT&T Unix 的替代品,而是一种添加类似于附加软件和功能。在1979年, 2BSD(第二版伯克利软件发行版)出现时,伯克利研究生Bill Joy已经添加了现在非常有名的程序,例如vi和C shell(/bin/csh)。
除了成为Unix家族中最受欢迎的分支之一的BSD之外,Unix的商业产品的爆发贯穿了二十世纪八、九十年代,其中包括HP-UX、IBM 的 AIX、 Sun 的 Solaris、 Sequent 和 Xenix 等。
随着分支从根源头发展壮大,“Unix 战争”开始了,标准化成为社区的新焦点。POSIX标准诞生于 1988 年,其他标准化后续工作也开始通过 The Open Group 在 90 年代到来。
在此期间,AT&T 和 Sun 发布了 System V Release 4(SVR4),许多商业供应商都采用了这一版本。
另外,BSD 系列操作系统多年来一直在增长,最终一些开源的变体在现在熟悉的BSD许可证下发布。这包括 FreeBSD、 OpenBSD 和 NetBSD,每个在 Unix 服务器行业的目标市场略有不同。这些 Unix 变体今天仍然有一些在使用,尽管人们已经看到它们的服务器市场份额缩小到个位数字(或更低)。
在当今的所有Unix系统中,BSD可能拥有最大的安装基数。另外,每台Apple Mac硬件设备从历史的角度看都可以算做是BSD ,这是因为OS X(现在是 macOS)操作系统是BSD衍生产品。
虽然Unix的全部历史及其学术和商业变体可能需要更多的篇幅,但为了我们文章的重点,让我们来讨论Linux的兴起。
进入Linux
今天我们所说的Linux操作系统实际上是90年代初期的两个努力的结合。Richard Stallman希望创建一个真正的自由而开放源代码的专有Unix系统的替代品。他正在以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发行版,所以不久后发行版的总数达到了数百个。
今天,distrowatch.com列出了 312 种各种形式的独特的 Linux 发行版。当然,许多开发人员通过云提供商或使用流行的免费发行版来使用Linux,如 Fedora、 Canonical 的 Ubuntu、 Debian、 Arch Linux、 Gentoo 和许多其它变体。
随着包括IBM在内的许多企业从专有Unix迁移到Linux上并提供了中间件和软件解决方案,商用Linux产品在自由和开源组件之上提供支持变得可行。
红帽公司围绕Red Hat Enterprise Linux(红帽企业版 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世界中被采用。
当开发人员需要来自不属于Unix的GNU程序的功能时,许多 GNU 实用程序可作为 Unix 系统的附件提供
。例如,IBM 的 AIX 为 Linux 应用程序提供了一个 AIX Toolbox,其中包含数百个 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的各种物联网设备打开了大门。我们已经提到Android 设备,汽车(包括 Automotive Grade Linux)和智能电视,其中 Linux 占有巨大的市场份额。
这个星球上的每个云提供商都提供运行Linux的虚拟服务器,而且当今许多最受欢迎的原生云架构都是基于 Linux 的,无论你是在谈论容器运行时还是 Kubernetes,或者是许多正在流行的无服务器平台。
其中一个最显著的代表 Linux的优势是近年来微软的转变。如果你十年前告诉软件开发人员,Windows操作系统将在2016 年“运行 Linux”,他们中的大多数人会歇斯底里地大笑。
但是 Windows Linux子系统(WSL)的存在和普及,以及最近宣布的诸如 Docker 的 Windows 移植版,包括 LCOW(Windows 上的 Linux 容器)支持等功能都证明了 Linux 在整个软件世界中所产生的影响 —— 而且显然还会继续存在。
|