Linux,Unix, GNU, 你可能经常听到这些名字被放在一起, 比如 "Linux 是类 Unix 系统", "Linux 其实应该叫 GNU/Linux" 等等. 为什么会有这些说法, 这些名词的历史渊源和背景到底是什么样的, 今天我就来给大家做一个解密.
1 Unix 的起源
Unix 操作系统是在 1960 年代末, 由当时就职于美国贝尔实验室的肯. 汤普逊 (Kenneth Thompson) 和 丹尼斯. 里奇(Dennis Ritchie) 发明的. 这两个人都是计算机领域的传奇. 他们除了发明了 Unix 系统之外, 还一起发明了 B 语言和 C 语言, 1983 年两人共同获得了图灵奖.
1960 年代末, 肯. 汤普逊和丹尼斯. 里奇一起参与了一个项目, 由贝尔实验室, 麻省理工学院, 以及通用电气公司联合开发了一套多使用者分时作业系统, 名叫 Multics(英文全称: MULTiplexed Information and Computing System). 同时肯. 汤普逊自己又写了一个叫 "star travel" 游戏可执行于 Multics 之上. 后来由于种种原因贝尔实验室撤出了 Multics 计划.
可能汤普逊为了能够继续玩他的 "star travel" 游戏. 他和丹尼斯. 里奇花了一个月的时间用之前他们设计的 B 语言开发了一套全新的操作系统, 并起名叫做 Unics(英文全称: UNiplexed Information and Computing System), 所以 Unics 这个名字是借鉴 Multics 而起的. 不过后来也不知怎么的, Unics 慢慢就变成了 Unix, 不过名字读起来应该差不多. 所以第一版的 Unix 是基于 B 语言来开发的. B 语言在进行系统编程时不够强大. 汤普逊和丹尼斯. 里奇对其进行了改造, 并于 1971 年发明了 C 语言. 然后 1973 年他们用 C 语言对 Unix 系统进行了重新编写.
2 GNU 计划
提到 GNU 计划不得不再讲一个人, 理查德. 斯托曼 (Richard Stallman). 他也是计算机世界里的一个传奇人物, 他是自由软件运动的精神领袖, GNU 计划以及自由软件基金会(Free Software Foundation) 的创立者, 著名黑客. 他的主要成就包括 Emacs 及后来的 GNU Emacs,GNU C 编译器及 GNU 调试器等等.
肯. 汤普逊和丹尼斯. 里奇编写的 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 操作系统的内核, 下面是他当时公布的一封电子邮件.
这封电子邮件里强调了三点:
这个操作系统内核是运行在 PC 个人电脑上 (386) 的, 所以学生以及对系统开发感兴趣的人都可以在家安装.
这个系统用的是 GNU 的工具来做的开发, 比如 bash 和 gcc
没有使用 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 版本, 你究竟该怎么选择?
来源: https://www.cnblogs.com/jfzhu/p/12895692.html