Linux 已经有些年头了。到 2012 年,Linux 已经 21 周岁了,它是一个支持多种使用模型的成熟操作系统。很难将 Linux 仅当成一个操作系统,它更像是个变色龙。它灵活的模块化内核可支持多种使用模型(从最大的超级计算机到最小的嵌入式设备),因此很难将它划分为具体的某一类,只能是当成一项使能技术。事实上,Linux 是一个平台。它是创建新产品的一项关键技术。其中有些产品才刚刚出现不久。
我们快速浏览一下 Linux 的基本架构及一些基本原则。然后,看看 Linux 如何将这些原则应用于多种使用模型,以及为什么它是一个平台,而不仅仅是一个操作系统。
Linux 是什么?
从表面上看,Linux 是一个操作系统。如 图 1 所示,Linux 包含一个内核(管理硬件和软件资源的核心代码)和一组用户应用程序(例如库、窗口管理器和应用程序)。
图 1. Linux 表面
这个简单的图表显示了一些容易被忽视的重要原则。Linux 栈的底部是一组依赖于架构的代码,它能让 Linux 在多种硬件平台(ARM、PowerPC、Tilera TILE 等)上运行。当然,这一项功能是由 GNU 工具链所赋予的,它能实现 Linux 可移植性。
在可移植性 方面,Linux 是它自身的类。驱动程序子系统(功能多样)支持动态加载模块,而不会对性能产生任何影响,它支持模块化(除了更加动态 的平台外)。Linux 还包含内核级安全性(多种方案),可支持安全的 平台。在外部文件系统方面,Linux 可最大限度支持所有操作系统的文件系统,例如,通过设计模块化提供灵活性。Linux 不仅实现了标准调度特性,而且实现了实时 调度(包括对中断延迟的保证)。
最后,Linux 是开放式的,这意味着几乎任何人都能查看或改进其源代码。这种开放性也将产生漏洞的可能性降到最低,从而形成一个更加安全的 平台。许多公司都对 Linux 作出贡献,使它能不断支持各种使用模型,同时保持其核心属性。
这七项重要原则不是 Linux 的全部原则,但这些让 Linux 成为了支持多种使用模型的通用平台。而且,Linux 在这些使用模型中是一致的,这不仅体现在设计原则,还有内核本身。而其他操作系统则不是这样(例如 Windows®台式版、服务器版,或嵌入式,以及 Mac OS X 或 Apple iOS),它们将产品拆分以支持其他使用模型。
Linux 在哪?
也许回答哪里有 Linux 比回答哪里没有 Linux 要难。Linux 其变形和扩展能力在所有计算领域都能找到(甚至一些还未完全定义的领域)。本节将探索一些主要的计算领域,包括桌面/笔记本、服务器、集群、大型机、超级计算机、掌上电脑/平板电脑、嵌入式、虚拟化和试验机(见 图 2)。
图 2. Linux 属性和支持领域
桌面和笔记本
在桌面和笔记本领域,很多用户使用 Linux,这也是 Linux 竞争最激烈的领域。最新的市场占有率调查数据显示,Linux 占有 1.5% 的台式电脑市场,32% 的笔记本市场。这个数字可能有点低,但在开发人员中,我看到使用 Linux 多于其他操作系统。
Linux 一开始是一个简单的实验性的操作系统,于 1994 年推出 XFree86,这是一个窗口管理器,标志着一个新的桌面操作系统的产生。目前,Linux 上有几种窗口管理器可用(既是赐福又是祸害),让用户能够根据需要进行定制。而且,Linux 能根据处理器功能自动扩展(如多核和对称多线程),从而高效安排进程并兼顾性能。
服务器
在服务器市场(包括 Web 服务器、邮件服务器、Domain Name System 服务器及其他后端设备),Linux 占主导地位。最近的调查发现,60% 的服务器使用 Linux。除了传统的 Web 服务,Linux 还支撑了一些最大的 Internet 产业(Facebook、eBay、Twitter、Amazon 等),并满足不同的使用模型和需求。除了传统的选择之外(例如 Web 或邮件),Linux 还提供了大量的 Web 服务(以及这些服务的多种选项)。
集群和分布式计算
Linux 不仅是集群和分布式计算模型中的重要组成部分,它还对很多新使用模型核心起着驱动作用。目前快速发展的两个重要模型是云计算和大数据。
云计算就是将 IT 作为服务交付,它依赖于共享资源集群,可以根据给定应用程序的需要进行调整。云也依赖于虚拟化以支持大规模基础架构中节点的自动管理。在云环境中,66% 使用 Linux 作为主要平台。
Linux 也在推动自身成为数据科学的平台。Internet 会扩展可收集到的数据量,在处理这些数据的过程中会产生新问题以识别有价值的模式。现在所谓的大数据 是在 Linux 上开发的,可以用可扩展方式操作数据,这超越了以前传统方法。Hadoop 及其生态环境就是 Linux 开放性的成果,有众多的开发人员精通此平台。
大型机
1991 年,一位著名的编辑预测大型机将在 1996 年就被取代。20 多年过去了,大型机仍然在生产和出售中,并且很多都运行 Linux。IBM 从 2000 年开始在大型机上支持 Linux(例如流行的 IBM® System z®)并提供各个环境下相同的用户体验。Michael Vizard 最近的一篇文章指出约 25% 的新大型机负载依赖于 Linux。
超级计算机
超级计算机领域一直是标榜速度最快的军备竞赛,从 Oak Ridge 国家实验室的 Jaguar 超级计算机(2009 年)到中国的 Tianhe-I(2010 年),再到当前领先者日本 RIKEN Kei 计算机(2011 年)。在 2012 年,IBM 将推出 Sequoia 超级计算机,预计性能超过 RIKEN 一倍。这些超级计算机的共同之处就是都运行 Linux。Linux 不仅高效,而且还适用于各种硬件平台,有助于提高性能。这一点也不奇怪,有 90% 的超级计算机都运行 Linux。
移动设备和平板电脑
在更有限的消费设备领域,移动设备和平板电脑展现出强劲的增长势头。这些设备一般都配有 Linux 内核和用户界面图形 (GUI)。该领域的一个重要案例就是 Google Android 操作系统,它可用于智能手机和平板电脑中。今天,超过 25% 的智能手机运行某一版本的 Linux (主要是 Android),大约 40% 的平板电脑运行 Android。
这些设备依赖于基于 ARM 的处理器(系统在芯片上),实现高性能、低能耗。无论底层平台是什么,它们都是 Linux 设备,而不是内核和应用程序的交叉。
Microsoft® 最近确认,Windows on ARM (WOA) 平板电脑只支持针对该平台开发的应用程序(换句话说,无法在平板电脑上运行老的应用程序)。相比之下, Linux 支持高度可移植的应用程序,而不是受限制的、封闭式的应用程序生态系统。
嵌入式设备
最后是嵌入式设备,它有着各种限制(处理器性能、资源如内存等)。Linux 是大多数设备的理想选择,因为它能向下调整并可以使用市面上大多数嵌入式处理器。这样的灵活性使得 Linux 广泛用于电视、车载娱乐、导航系统及多种其他设备中。
Linux 具有高度可定制特性,并以低能耗为重心。为了确保低能耗,Less Watts 启动了一个追踪 Linux 内核版本的能源消耗项目。该项目主要关注 Intel 平台,但对其他处理器也有用。
Linux 是一个相当标准的嵌入式设备平台,能决定设备的成功或失败(以支持快速启动和开发)。最近出现了一个很有趣的设备,称为 Raspberry Pi,它是基于 ARM 的信用卡大小的计算机,运行 Linux 并被用作教授编程的教学设备。该设备预计售价在 35 美元,但尚未零售。
虚拟化平台
Linux 推动创新的最有趣领域之一就是虚拟化。Linux 是各种虚拟化方法的操作系统来源,无论是平台或半虚拟化 (para-virtualization)、操作系统虚拟化,或是更模糊的概念如合作虚拟化。Linux 作为一个操作系统,能将自身转换成管理程序(例如内核虚拟机 [KVM])并托管很多研究管理程序。为了提高虚拟化的效率,Linux 实现了 Kernel SamePage Merging 技术以便能高效去除重复内存页。
Linux 还推动虚拟化技术更进一步,称为嵌套虚拟化。嵌套,顾名思意,可以让管理程序托管客户管理程序,它反过来又托管一组客户虚拟机。虽然乍一看此用例有点奇怪,但嵌套虚拟化将改变云计算并扩展可托管的应用程序类型。目前,Linux KVM 支持嵌套虚拟化。
实验平台
最后也是相当重要的是,Linux 本身的基础,它是一个实验平台,通过它来探索许多新想法。在 1991 年 UNIX® 推出 20 年以后,Linux 作为一个玩具式操作系统出现。今天,Linux 已经在文件系统研究、集群计算、云和虚拟化改进中作为实验平台,拓展了单一操作系统内核的极限,可应用到许多使用模型中。Linux 作为平台,可以通过同时使用 Linux 和大量开源部件来加快实验。这些成果中包含大量使用 Linux 构建的相关技术,其中包括 HP webOS、Google Chrome OS 和 Android。
Linux 引入的一个有趣变化是,增加了与底层硬件平台的无关性。Linux 能够展现相同的用户体验,而不管底层硬件架构是什么。因此无论云使用的是 AMD x86 服务器还是低能耗的基于 ARM 的产品,在 Linux 上运行的应用程序都可以从物理架构中抽象出来。这种抽象化可让用户在根据需求的平台上做决定,而不是被绑定到通用但又过时和低效的架构中。Linux 就等于选择。
Linux 还是自包含的集成开发环境 (IDE)。除了托管世界级的编译器工具链 (GNC Compiler Collection),它还托管很多工具,如调试器、编辑器、版本控制系统、文件工具,以及 Shell 和解释器,以帮助自动完成开发任务。Linux 的这些功能使它成为理想的软件开发和软件研究环境。
Linux 多样性
支持此处定义的各种使用模型只是 Linux 的一个附带选项。Linux 发行版可满足桌面和服务器市场,而专门的发行版专注于嵌入式(例如 uClinux,如果您的嵌入式设备缺乏内存管理单元)。任何人都可以取得 Linux 内核并将用户应用程序打包,用于特定的使用模型,并利用 Linux 的各种优势(网络协议和文件系统、可配置和动态内核和标准应用程序编程接口)。这就是快速发展的智能手机平台运行 Linux 的原因(可定制 UI 实现个性化)。
更进一步
如果将 Linux 比作桥,那么它将是一个现代工程奇迹。其分布式开发模型给现状带来挑战,其结果是产生了最灵活的软件成品,扩展了从微型嵌入式设备到大规模的超级计算机的使用模型。Linux 影响了整个产业,并引领导了有关集群计算、文件系统、云和虚拟化方面的前沿研究。无论计算环境如何发展,Linux 总是紧密相随。