Linux简史:从诞生到崛起,操作系统发展里程碑
导言
在普遍的用法中,“Linux”通常指的是围绕Linux内核构建的一组操作系统发行版。但在最严格的意义上,Linux仅指内核本身。为了构建完整的操作系统,Linux发行版通常包括来自GNU项目和其他来源的工具和库。最近,越来越多的开发人员使用Linux来构建和运行移动应用程序;它在开发价格适中的设备(如Chromebook)上运行操作系统方面也发挥了关键作用,这些设备依赖于内核。在云计算和服务器环境中,出于一些实际的原因,Linux是一个受欢迎的选择。
- 其发行版保持最新,并得到开发者社区的支持。
- 它可以在各种硬件上运行,并能与现有系统并行安装(这在本地开发环境中是一个有用的特性)。
- 它支持从现有软件仓库进行集中式软件安装。
- 其资源需求较低。
- 当开发人员为服务器构建应用程序生态系统和工具时,Linux通常是首选,这带来了高水平的兼容性。
- 它支持对操作系统行为进行必要的修改。
Linux同样可以追溯到自由开源软件运动,因此一些开发者基于道德和实际的考虑选择使用它。
- 对一些开发者而言,使用Linux代表着对可访问性和言论自由的承诺。
- Linux社区也吸引了一些开发者:当他们遇到问题时,可以查阅社区生成的资源,或直接联系众多活跃的维护者之一。
为了了解Linux在开发者社区(以及其他领域)中的作用,本文将通过Unix的方式概述Linux的简要历史,并讨论一些流行的Linux发行版。
Unix的起源
Linux的起源可以追溯到Unix和Multics两个项目,这两个项目都旨在开发强大的多用户操作系统。
Unix的起源
Unix是在贝尔实验室计算机科学研究中心的Multics项目迭代发展而来。贝尔实验室和其他地方参与Multics项目开发的工程师都对构建一个多用户操作系统感兴趣,该操作系统具有单层存储、动态链接(运行过程可以请求将另一段代码添加到其地址空间,使其能够执行该段代码)以及分层文件系统的功能。
1969年,贝尔实验室停止了对Multics项目的资助,但包括肯·汤普森和丹尼斯·里奇在内的一组研究人员继续致力于该项目的核心原理。在1972-73年间,他们决定用C语言重写该系统,使Unix具备了独特的可移植性:与其他当代操作系统不同,它能够移植到不同的硬件上并且长寿。
贝尔实验室(后来的AT&T)的研发工作继续进行,Unix System Laboratories与Sun Microsystems合作开发了许多版本的Unix操作系统,被商业Unix供应商广泛采用。与此同时,学术界的研究仍在继续,其中最著名的是加利福尼亚大学伯克利分校的计算机系统研究组。该组织开发了伯克利软件发行版(BSD),该发行版激发出许多仍在使用的操作系统。其中两个值得注意的BSD发行版是NeXTStep,由NeXT开创的操作系统,它成为macOS等产品的基础,以及MINIX,一种教育操作系统,为Linus Torvalds开发Linux提供了对比基础。
Unix的主要特点
Unix以清晰、可移植性和同步性原则为导向。
- 清晰性:Unix的模块化设计允许功能以有限且明确的方式运行。其文件系统是统一且分层的,这简化了数据操作。与它的一些前身不同,Unix实现了数百个(而非数千个)系统调用,每个系统调用都设计得直接明了,目标明确。
- 可移植性:通过用C语言编写Unix,贝尔实验室的团队为Unix的广泛使用和普及奠定了基础。C语言被设计为具有低级内存访问、最小的运行时支持以及语言与机器指令之间的高效关系。基于C语言意味着Unix具有适应性,并且易于在各种硬件上运行。
- 同步性:Unix内核旨在实现(与Multics项目共享的)支持多用户和多工作流的目标。Unix中的内核空间与用户空间保持独立,这允许多个应用程序同时运行。
Linux的进化
Unix在其早期的迭代中提出了重要的问题,但同时仍然保持着专有性质。因此,它的下一个发展阶段是关于开发者如何在其中与其进行合作并反对它,以创建自由和开源的替代方案的故事。
开源实验
理查德·斯托曼(Richard Stallman)是一位开发者中的核心人物,他受到启发,致力于创建非专有UNIX系统的替代品。在麻省理工学院人工智能实验室工作期间,他发起了GNU计划(GNU代表“GNU’s not Unix!”),最终在1984年离开实验室,以便自由分发GNU组件。GNU核心,即GNU HURD,成为了自由软件基金会(Free Software Foundation,FSF)的重点项目,该基金会于1985年成立,目前由斯托曼主导。
与此同时,另一位开发者正在开发一种免费的Unix替代选择:芬兰的本科生林纳斯·托瓦兹。在对MINIX的许可感到失望之后,托瓦兹于1991年8月25日向一个MINIX用户组宣布,他正在开发一款自己的操作系统,该系统与MINIX相似。虽然最初是在MINIX上使用GNU C编译器进行开发,但Linux内核很快成为一个独特的项目,拥有一批核心开发者,并于1994年与托瓦兹一起发布了1.0版本的内核。
托瓦兹曾经在他的内核中使用GNU代码,包括GNU C编译器,而事实上许多Linux发行版仍然依赖于GNU组件。斯托曼曾游说将术语“Linux”扩展为“GNU/Linux”,他认为这样能够更好地体现GNU项目在Linux发展中的作用以及培育GNU项目和Linux内核所秉持的基本理念。如今,“Linux”经常被用来表示既有Linux内核又有GNU元素的存在。与此同时,许多手持设备和智能手机上的嵌入式系统通常只使用Linux内核,几乎没有GNU组件。
Linux的主要特点
尽管Linux内核从Unix继承了许多目标和特性,但它与以前的系统在以下方面有所不同:
- 其核心组件是内核,它独立于其他操作系统组件进行开发。这意味着Linux借用了各种来源(如GNU)的元素来构成一个完整的操作系统。
- 它是自由和开源的。由开发者社区维护,内核根据GNU通用公共许可证(FSF在GNU项目工作的一个分支)获得许可,并可供下载和修改。GPL规定衍生作品必须保持原始软件的许可条款。
- 它拥有一个单片内核,类似于Unix,但它可以按需动态加载和卸载内核代码。
- 它支持对称多处理器(SMP),这与传统的Unix实现不同。这意味着单个操作系统可以访问多个处理器,这些处理器共享主内存并访问所有I/O设备。
- 其内核是可抢占的,这是与Unix的另一个区别。这意味着调度器可以在驱动程序或内核的另一部分执行时强制进行上下文切换。
- 其内核不区分线程和普通进程。
- 它包括一个命令行界面(CLI),也可以包括一个图形用户界面(GUI)。
流行的Linux发行版
开发人员今天维护着许多受欢迎的Linux发行版。其中历史最悠久的是Debian,这是一个具有50,000个软件包的免费开源发行版。Debian启发了另一个流行的发行版Ubuntu,由Canonical有限公司提供资金支持。Ubuntu使用Debian的deb软件包格式和包管理工具,并且Ubuntu的开发人员将更改反馈给Debian。
在红帽(Red Hat)、Fedora和CentOS之间存在类似的关系。红帽在1993年创建了一个Linux发行版,十年后将其努力分为红帽企业Linux和Fedora。Fedora是一个基于Linux内核和GNU项目元素的社区操作系统。红帽还与另一个流行的用于Web服务器的Linux发行版CentOS项目有关系。然而,这种关系不包括付费维护。与Debian一样,CentOS由一群开发人员维护。
结论
在本文中,我们介绍了Linux的Unix根源和一些其特性。如果您对了解Linux和Unix变体(包括FreeBSD)的历史更感兴趣,一个好的途径可能是参考我们的FreeBSD系列文章。另一个选择是考虑阅读我们的Linux入门系列文章。您还可以查看我们关于Linux文件系统布局的介绍,关于如何使用find和locate在Linux VPS上搜索文件的讨论,或者关于命令行上正则表达式的介绍。