Linux 操作系统:一个现代工程奇迹

系统
2012 年,Linux 已经 21 周岁了,我们快速浏览一下 Linux 的基本架构及一些基本原则。其实它是一个平台,而不仅是一个操作系统。 更是一个现代工程奇迹!

Linux 已经有些年头了。到 2012 年,Linux 已经 21 周岁了,它是一个支持多种使用模型的成熟操作系统。很难将 Linux 仅当成一个操作系统,它更像是个变色龙。它灵活的模块化内核可支持多种使用模型(从最大的超级计算机到最小的嵌入式设备),因此很难将它划分为具体的某一类,只能是当成一项使能技术。事实上,Linux 是一个平台。它是创建新产品的一项关键技术。其中有些产品才刚刚出现不久。

我们快速浏览一下 Linux 的基本架构及一些基本原则。然后,看看 Linux 如何将这些原则应用于多种使用模型,以及为什么它是一个平台,而不仅仅是一个操作系统。

Linux 是什么?

从表面上看,Linux 是一个操作系统。如 图 1 所示,Linux 包含一个内核(管理硬件和软件资源的核心代码)和一组用户应用程序(例如库、窗口管理器和应用程序)。

图 1. Linux 表面
图表显示 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 竞争最激烈的领域。最新的市场占有率调查数据显示,Linux 占有 1.5% 的台式电脑市场,32% 的笔记本市场。这个数字可能有点低,但在开发人员中,我看到使用 Linux 多于其他操作系统。

Linux 一开始是一个简单的实验性的操作系统,于 1994 年推出 XFree86,这是一个窗口管理器,标志着一个新的桌面操作系统的产生。目前,Linux 上有几种窗口管理器可用(既是赐福又是祸害),让用户能够根据需要进行定制。而且,Linux 能根据处理器功能自动扩展(如多核和对称多线程),从而高效安排进程并兼顾性能。

Linux 和就业市场

Dice.com 和 Linux Foundation 最近的调查发现,2,000 多名受访者中,有 81% 表示 2012 年优先招聘 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 总是紧密相随。


 

 

责任编辑:黄丹 来源: developerworks
相关推荐

2010-02-26 14:13:51

Linux操作系统

2011-03-28 16:27:49

现代网络操作系统网络虚拟化

2009-06-30 10:37:59

Linux操作系统

2022-09-26 09:47:43

EuroLinuxLinux

2013-03-08 10:19:03

Oberon操作系统

2009-12-16 12:30:25

openSUSE操作系

2018-10-26 09:30:47

Boxes操作系统Linux

2010-04-20 14:43:01

Unix操作系统

2009-12-09 17:25:19

Linux操作系统

2009-12-10 15:17:58

Linux操作系统

2009-05-24 14:40:50

2011-07-19 09:41:33

2020-12-29 16:39:01

Linux代码命令

2020-10-25 08:52:19

Unix操作系统TrueOS

2018-06-27 09:14:54

嵌入式操作系统Linux

2009-12-14 17:46:40

Linux桌面操作系统

2010-04-29 14:08:38

Unix操作系统

2019-08-09 10:45:09

操作系统WindowsLinux

2009-12-03 09:01:07

两个Linux操作系统

2014-09-10 09:54:43

点赞
收藏

51CTO技术栈公众号