Linux,Unix,GNU 到底有什么样的渊源?

Linux,Unix, GNU,你可能常常听到这些名字被放在一块儿,好比 “Linux是类Unix系统”, “Linux其实应该叫 GNU/Linux” 等等。为何会有这些说法,这些名词的历史渊源和背景究竟是什么样的,今天我就来给你们作一个解密。html

 

1 Unix的起源 编程

Unix 操做系统是在1960年代末,由当时就任于美国贝尔实验室的肯·汤普逊(Kenneth Thompson) 和 丹尼斯·里奇(Dennis Ritchie)发明的。这两我的都是计算机领域的传奇。他们除了发明了Unix 系统以外,还一块儿发明了 B语言和C语言,1983年两人共同得到了图灵奖。小程序

1960年代末,肯·汤普逊和丹尼斯·里奇一块儿参与了一个项目,由贝尔实验室、麻省理工学院、以及通用电气公司联合开发了一套多使用者分时做业系统,名叫Multics(英文全称:MULTiplexed Information and Computing System)。同时肯·汤普逊本身又写了一个叫“star travel”游戏可执行于Multics之上。后来因为种种缘由贝尔实验室撤出了Multics计划。bash

 

可能汤普逊为了可以继续玩他的“star travel”游戏。他和丹尼斯·里奇花了一个月的时间用以前他们设计的B语言开发了一套全新的操做系统,并起名叫作 Unics(英文全称:UNiplexed Information and Computing System),因此Unics这个名字是借鉴 Multics而起的。不事后来也不知怎么的,Unics慢慢就变成了Unix,不过名字读起来应该差很少。因此初版的Unix是基于B语言来开发的。B语言在进行系统编程时不够强大。汤普逊和丹尼斯·里奇对其进行了改造,并于1971年发明了C语言。而后1973年他们用C语言对 Unix系统进行了从新编写。工具

 

 

2 GNU计划post

提到 GNU计划不得再也不讲一我的,理查德·斯托曼(Richard  Stallman)。他也是计算机世界里的一个传奇人物,他是自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free Software Foundation)的创立者、著名黑客。他的主要成就包括Emacs及后来的GNU Emacs,GNU C 编译器及GNU 调试器等等。url

 

肯·汤普逊和丹尼斯·里奇编写的 Unix 系统后来受到各个软件大厂商的青睐。他们开发了 Unix系统可以支持的软件,对 Unix系统进行了封装,并推出了他们本身的 Unix 版本,好比 IBM 的 AIX,Sun的 Solaris,HP 的 HP UX等等。这些版本的Unix系统只能运行在大型的计算机上,并且价格很是昂贵。小公司以及众多的软件爱好者根本不可能用得起。为了抵制这些大厂,自由主义者理查德·斯托曼倡导“在自由的时代,用户应该免费享有对软件源码阅读和修改的权利”,因而他提出了著名的 GNU 计划。操作系统

 

GNU是“GNU is Not Unix”的递归缩写。它的目的就是做出Unix的替代品,让软件工程师、技术爱好者等我的都能开发和使用免费开源的系统和软件。我用下面的这张图来解释完整的 GNU计划。在计算机硬件的基础之上,GNU计划包括操做系统内核、SHELL、各类应用软件等,一整套完整的软件系统来替代 Unix。在这个计划之下,就诞生了后来大名鼎鼎的 Linux 操做系统内核。设计

 

3 Linux的诞生 调试

提到 Linux 的诞生,要先讲一下另外一个系统 Minix。20世纪80年代,因为Unix 版权的限制,荷兰阿姆斯特丹Vrije大学的Andrew S. Tanenbaum教授决定写一个不包含任何AT&T源代码的UNIX系统,名为MINIX(即小型的UNIX),并开放所有源代码给大学教学和研究工做。

 

芬兰人李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时也使用了Andrew教授的Minix系统,但他以为实在太难用了,因而也决定本身开发一个操做系统。1991 年 9 月他发布了初版 Linux 操做系统的内核,下面是他当时公布的一封电子邮件。

 

这封电子邮件里强调了三点:

  1. 这个操做系统内核是运行在PC我的电脑上(386)的,因此学生以及对系统开发感兴趣的人均可以在家安装。

  2. 这个系统用的是GNU的工具来作的开发,好比 bash 和 gcc

  3. 没有使用 Minix的源代码

     

Linus 本人也是 GNU计划的忠实拥护者,因此他公开了 Linux内核的所有代码。他的成果成为了 GNU计划当中最重要的一部分,因此也有不少人称 Linux为 GNU/Linux。

 

因为Linux在社区中被爱好者们不断完善,据估计如今只有 2% 的 核心代码是由 Linus 本身编写的,虽然他仍然拥有 Linux 内核(操做系统的核心部分),而且保留了选择新代码和须要合并的新方法的最终裁定权。如今你们所使用的 Linux,我更倾向于说是由Linus 和后来陆续加入的众多 Linux 爱好者共同开发完成的。

 

那么说到 Linux 和 Unix的关系,首先能够认为 Linux是由 Unix发展而来的,由于它是由 Unix -> Minix -> Linux 这样诞生的;另外 Linux在开发的时候借鉴了不少Unix的思想,好比整个系统由众多小程序组成,若是要完成一项复杂的任务,只需将相应的命令组合在一块儿使用便可。 

  

4 最后 

经过这篇文章我向你们介绍了 Unix、Linux、GNU的发展背景和历史,但愿你们看了之后明白它们之间的相互关系。最后想说 Linux其实只是操做系统的内核,Linux如今也有不少的发行版本。什么是发行版本,以及怎么来选择,我以前也写过一篇文章,你们能够参考:

这么多Linux版本,你究竟该怎么选择?