Linux,Unix,GNU 到底有什么样的渊源?
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版本,你究竟该怎么选择?
Linux,Unix,GNU 到底有什么样的渊源?的更多相关文章
- LINUX&UNIX 安装vmware workstation10和centOS6
大一下时,学习了linux&unix这门课程,全字符的操作,我对它并不是很感冒,不过,还是找学长安装过虚拟机和Linux系统,在考前利用它和putty进行复习.现在重装系统之后,各类软件,自然 ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
- 资深系统管理员给Linux/Unix新人们的建议
根据同事多年跟踪的学员情况,我们发现,学员在同等条件学习Linux后,选择开发要比系统应用薪水要上升的更为迅速,而且更容易突破5000.8000或10000等每月的门槛:但是这个方向难度会更大,同时会 ...
- Linux/Unix工具与正则表达式的POSIX规范
http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之 ...
- 世纪大争论:Linux还是GNU/Linux?
我们在网上已经习惯用“Linux”来称呼Linux操作系统了,然而,偶尔也用“GNU/Linux”来称呼和指代同样的操作系统和软件.同时人们也在争论这两种称呼哪个更合适. 本文将不会选边站队,仅力图向 ...
- GNU/Linux的GNU是什么意思
这个组织中黑客云集,而且多是掌握核心技术的真正高手,他们的作品多是编译器.词法/语法分析器.底层函数库等大作.更重要的不是他们的技术,而是他们的哲学!他们的哲学就是技术上的“共产主义”——人人为我,我 ...
- 《Linux/UNIX系统编程手册》读书笔记
2018-1-30 一.UNIX.C语言以及Linux的历史回顾 1. UNIX简史.C语言的诞生 1969年,贝尔实验室的Ken Thompson首次实现了UNIX系统. 1973年,C语言步入成熟 ...
- Linux/Unix C编程之的perror函数,strerror函数,errno
#include <stdio.h> // void perror(const char *msg); #include <string.h> // char *strerro ...
- x86、Linux、GNU、GNOME是什么
一.指令集架构: 指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系,是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集 ...
随机推荐
- C#开发BIMFACE系列34 服务端API之模型对比5:获取模型构件对比差异
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE平台提供了服务端“获取修改构件属性差异”API,其返回的结果也是一个列表,仅针对修改的构件(不包含新增.删除的构件),是指对于一个 ...
- [YII2] 去除自带js,加载自己的JS,然后ajax(json)传值接值!
本想用YII2自带的JS,可是用着效果不好,想从新加载,找了好多终于实现啦!还有ajax(json)传值接值! 首先直接了当的就把YII2自带的js去掉! 把下面代码加入到/config/main.p ...
- 使用sqlmap结合dnslog快速注入
0x01 起因 实际项目中遇到一个oracle延时注入,需要获取数据,几十个库几百张表,等找到关键数据不知道要到哪天. 测试支持带外请求 于是想用使用sqlmap利用DNS进行OOB注入 0x02 阿 ...
- tp5--相对路径和绝对路径
首先,我们要先明白相对路径和绝对路径的理论: 绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\window ...
- 五分钟秒懂机器学习混淆矩阵、ROC和AUC
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第18篇文章,我们来看看机器学习领域当中,非常重要的其他几个指标. 混淆矩阵 在上一篇文章当中,我们在介绍召回率.准确率 ...
- 谷歌提高Google Assistant中Voice Match的准确性
谷歌正在提高 Google Assistant 中 Voice Match 的准确性,使其变得更加完善.谷歌表示一旦用户在 Google Assistant 中启用 Voice Match 功能,那么 ...
- ACM学习总结 6月11日
经过这几天没有队友的协助,又是算法题比较多,有点碰触到自己的短板,因为搜索的题目就做了1个,一遇到搜索就跳过,DP也有点忘得差不多了,四边形优化,斜率优化还不会,这是下一阶段努力方向,把之前做过的题, ...
- CodeForces - 1245A Good ol' Numbers Coloring (思维)
Codeforces Round #597 (Div. 2 Consider the set of all nonnegative integers: 0,1,2,-. Given two integ ...
- 《Docker从入门到跑路》之Dockerfile基本操作
一.简介 Dockerfile是一个文本文件,里面包含一条条指令,每一条指令就是一层镜像.一般情况下,Dockerfile分为4个部分: 基础镜像 维护者信息 镜像操作指令 容器启动时执行命令 例如: ...
- 201771010113-李婷华 实验一 软件工程准备-<软件工程的相关了解>
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 这个作业要求链接 https://www.cnblogs.com/nwnu- ...