介绍
在流行的用法中,“Linux”通常指的是围绕Linux内核构建的一组操作系统发行版。 但是,从最严格的意义上说,Linux只是指内核本身的存在。 为了构建完整的操作系统,Linux发行版经常包含来自GNU项目和其他来源的工具和库。 更多的开发人员最近一直在使用Linux来构建和运行移动应用程序; 它也在开发价格适中的设备(例如在内核上运行操作系统的Chromebook)方面发挥了关键作用。 在一般的云计算和服务器环境中,由于一些实际的原因,Linux是一种流行的选择:
- 其分布保持最新,并得到其他开发者社区的支持。
- 它可以在广泛的硬件上运行,并且可以与现有的系统一起安装(在本地开发环境中是一个有用的特性)。
- 它支持从原有存储库进行集中式软件安装。
- 其资源要求低。
- 开发人员正在为服务器构建应用程序生态系统和工具时,通常会首先考虑到这一点,从而提高兼容性。
- 它支持对操作系统行为进行必要的修改。
Linux也追溯到免费的开源软件运动,因此一些开发人员选择它来结合道德和现实的原因:
- 对于一些开发者来说,使用Linux代表了对可访问性和表达自由的承诺。
- Linux社区对于一些开发者也是一个借鉴:当他们有问题时,他们可以咨询这个社区产生的资源,或者直接联系到许多活跃的维护者之一。
为了理解Linux在开发者社区(以及其他)中的角色,本文将通过Unix概述Linux的简要历史,并讨论一些流行的Linux发行版。
Unix中的根
Linux的根源在Unix和Multics,这两个项目共同开发了一个强大的多用户操作系统。
Unix的起点
Unix是由贝尔实验室计算机科学研究中心的Multics项目迭代开发的。 在贝尔实验室和其他地方从事Multics开发的开发人员有兴趣构建一个具有单级存储,动态链接的多用户操作系统(其中一个正在运行的进程可以请求将另一个段添加到其地址空间,使其能够执行该段的代码)和分层文件系统。
贝尔实验室在1969年停止为Multics项目提供资金,但肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)等一批研究人员继续致力于该项目的核心原则。 在1972 - 3年间,他们决定用C语言重写系统,使得Unix具有独特的可移植性:与其他当代操作系统不同的是,它既可以从硬件上移开,又可以从硬件上移出。
贝尔实验室(后来AT&T)的研究和开发仍在继续,Unix系统实验室正在与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不是Unix!”递归),最终于1984年离开实验室,以便将GNU组件作为免费软件发布。 被称为GNU HURD的GNU内核成为自由软件基金会(FSF)的成员 ,该基金会成立于1985年,目前由Stallman领导。
与此同时,另一名开发人员正在开发Unix的免费替代品:芬兰本科Linus Torvalds。 在MINIX获得许可后,Torvalds在1991年8月25日向MINIX用户组宣布他正在开发自己的操作系统,类似于MINIX。 尽管最初是使用GNU C编译器在MINIX上开发的,但是Linux内核很快成为一个独特的项目,核心开发人员在1994年与Torvalds一起发布了1.0版本的内核。
Torvalds一直在使用GNU代码,包括GNU C编译器和他的内核,许多Linux发行版都使用GNU组件。 Stallman曾经游说将“Linux”扩展到“GNU / Linux”,他认为这将会兼顾GNU项目在Linux开发中的作用以及GNU项目和Linux内核的底层理念。 今天,“Linux”通常用于表示Linux内核和GNU元素的存在。 与此同时,许多手持设备和智能手机上的嵌入式系统通常使用Linux内核,几乎没有GNU组件。
Linux的主要特点
尽管Linux内核继承了Unix的许多目标和属性,但它与以前的系统有以下不同之处:
- 其核心组件是独立于其他操作系统组件开发的内核。 这意味着Linux借用各种来源(如GNU)的元素来构成整个操作系统。
- 它是免费的,开源的。 内核由GNU通用公共许可证 (GNU项目的FSF工作的一个分支) 授权 ,可供下载和修改。 GPL规定派生工作必须保持原始软件的许可条款。
- 它有一个类似于Unix的单片内核,但它可以根据需要动态加载和卸载内核代码。
- 它具有对称的多处理器(SMP)支持,与传统的Unix实现不同。 这意味着单个操作系统可以访问多个处理器,这些处理器共享一个主存储器并访问所有I / O设备。
- 它的内核是抢先的,与Unix的另一个不同之处。 这意味着调度程序可以在驱动程序或内核的另一部分执行时强制执行上下文切换。
- 它的内核不区分线程和正常进程。
- 它包括一个命令行界面(CLI),还可以包括一个图形用户界面(GUI)。
流行的Linux发行版
开发人员今天维护许多流行的Linux发行版。 最长的是Debian,这是一个免费的开放源码发行版,有5万个软件包。 Debian启发了由Canonical公司资助的另一个受欢迎的发行版Ubuntu,Ubuntu使用了Debian的deb软件包格式和软件包管理工具,而Ubuntu的开发者则将上游的变化推回到Debian。
Red Hat, Fedora和CentOS之间存在类似的关系。 Red Hat于1993年创建了一个Linux发行版,十年后又将其工作分成了红帽企业Linux和Fedora,这是一个基于社区的操作系统,利用Linux内核和GNU项目的元素。 红帽还与另一个受欢迎的Linux服务器发行版CentOS项目有关系。 但是,这种关系不包括付费维护。 像Debian一样,CentOS由开发者社区维护。
结论
在这篇文章中,我们介绍了Linux在Unix中的根源以及它的一些定义特性。 如果您有兴趣了解更多关于Linux和Unix版本(包括FreeBSD)的历史,那么在FreeBSD上我们可能会迈出一大步。 另一个选择可能是考虑我们的入门系列入门Linux 。