说明:文本基于DataWhale组队学习专栏任务总结
引言: 这些年,我学习计算机领域的知识之前,习惯于思考知识本身的几个基本要素:**1. 是什么;2. 从何而来;3. 能干什么。**我也越来越觉得,在学习任何一项技术之前,都有必要去思考这几个问题,并且带着这几个问题出发去学习,否则容易陷入思维误区,也容易没有目标,觉得一片茫然,从入门到放弃,久而久之就忘记了所学的内容。
所以,在学习Linux之前,有必要先了解Linux是什么、起源和特性(可能会有小伙伴对这个不理解,觉得学就完事了,干嘛非要知道它是怎么来的。其实我起初也有这个想法,但是我发现任何一个事物产生都有其背景,在此背景下出于某种需求或者在某种推动下诞生,再想想为什么不是其他技术诞生,而是它呢?)、Linux有什么作用。
1. 什么是操作系统
Linux是一个计算机操作系统,与windows类似,是一款系统软件。大家熟悉的操作系统中,计算机操作系统有Windows、Linux、Mac OS,移动端设备操作系统比较出名的有安卓、IOS,还有华为公司刚刚推出的鸿蒙。
怎么去理解操作系统的概念呢?我们从生活经验来理解计算机系统的层次结构:
场景:假如我们现在要在计算机上用QQ与朋友聊天,有经验的程序员会自己买硬件配置一台裸机,然后在裸机上安装Linux操作系统,再安装QQ应用,最后登录QQ与朋友聊天。
上面场景的装机过程,描述了计算机系统自底向上的层次结构,包含了底层硬件、操作系统、应用软件。操作系统承上启下,负责管理协调硬件、软件资源等计算机资源的工作、为上层的应用软件、用户提供建议的服务,所以操作系统是系统软件,是最接近底层硬件的软件,最早的操作系统是有汇编语言或C语言编写的。
说明:用户和操作系统直接交互的界面是shell命令,这种批处理命令接口允许用户直接使用。
这里根据以上描述,给出操作系统的定义:操作系统(Operating System,OS)是控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
2. Linux的起源
很久很久以前(上个世纪六十年代),那个时候计算机还没有普及,只有少数人才能使用,当时的计算机系统都是批处理操作系统。批处理操作就是一批任务一次性提交给计算机,中途无法与计算机交互,等待计算结果。一次只能一个用户使用,准备作业的I/O输入也需要很长时间,导致了计算机资源的极大浪费。
后来,1965年由贝尔实验室、美国麻省理工学院和通用电气公司联合发起的Multics工程计划,设计和开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。
分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。
这个计划因为追求的目标太庞大、太复杂,以至于它的开发人员都不知道要做成什么样子,后来失败了。在此经验教训下,由肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)在1969年实现了一种分时操作系统的雏形,1970年该系统正式取名为UNIX,寓意是小巧的、精简的。
丹尼斯·里奇是谁?熟悉C语言的同学应该知道,它因为在实验室喜欢玩计算机游戏【环游太空】发明了C语言,被誉为C语言之父。这是一种适合编写系统软件的高级语言,它的诞生是UNIX系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。1973年,Unix系统的绝大部分源代码都用C语言进行了重写,提高了Unix系统的可移植性。
从早期的UNIX系统文档和内容中可以清晰的看出,UNIX的发展是一个免费的、开源的、完全致力于将UNIX变的更优秀的过程。这个过程导致了代码的共享(不管是在贝尔实验室内部还是外部)从而使高质量的UNIX操作系统走向了快速的发展之路。
因为美国政府担心已经垄断了电话行业的AT&T公司再次垄断计算机行业,AT&T使被禁止出手计算机系统。因为AT&T在资产分解之前被严格限制直接出售计算机给消费者,所以UNIX源代码被授权给了大学用于教学、研究使用,只是象征性地收取一定费用。
20世纪70年代,美国加利福尼亚大学伯克利分校开发的UNIX版本FreeBSD,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。从BSD系统开始,各大厂商业公司开始了根据自身公司的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各种版本的Uinx系统,例如:SUN公司的Solaris,IBM公司的AIX,HP公司的HP UNIX等,并进行服务收费,想到这里AT&T肯定肺都气炸了,这不是为他人做了嫁衣吗,不让我挣钱,你们也别想挣钱。
70 年代末,Unix又面临了突如其来的被AT&T 回收版权的重大问题,特别是要求禁止对学生群体提供Unix 系统源代码,AT&T收回了版权,并且不再开源。这样的问题一度引起了当时Unix业界的恐慌,也因此产生了商业纠纷。如果想继续使用就需要购买授权,一份授权4万美元!!!
很多用户已经习惯了使用Unix,但突然要收费,很多人就非常不满!!!其中的一个人是理查德·斯托曼,他发起了自由软件运动,吹起了共产主义的号角(发起了GUN运动),并发布了软件界的共产主义宣言(GPL协议),并且这一运动得到了很多人的认同。
所谓自由软件自由就是指:自由使用、自由学习和修改、自由分发、自由创建衍生版。
1985年GNU理查德·斯托曼又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持,正所谓有钱好办事啊。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs、C语言编译器GCC以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件,就是操作系统的内核。其实历史好像是在等一个人出现,然后他就出现了!
1991年,李纳斯·托瓦兹Linus Torvalds,一个芬兰赫尔辛基大学的学生,出于个人爱好而编写的,当时他觉得教学用的迷你版UNIX操作系统Minix太难用了,于是决定自己开发一个操作系统。第一个版本于1991年9月发布,当时仅有10000行代码。由于Linux具有结构清晰、功能简捷等特点,许多大专院校的学生和科研机构的研究人员纷纷把它作为学习和研究的对象。
理查德·斯托曼立即就召唤linus加入,1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。
关于Linux Logo的由来是一个很有意思的话题,它是一只企鹅,为什么选择企鹅?
对此,笔者收集了资料,发现以下的说法最可靠。企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,任何国家都无权将南极洲纳入其版图。Linux选择企鹅图案作为Logo,其含义是:开放源代码的Linux为全人类共同所有,任何公司无权将其私有。
3. Linux基本特性
- 程序应该小而专一,程序应该尽量的小,且只专注于一件事上,不要开发那些看起来有用但是90%的情况都用不到的特性;
- Linux是完全免费的操作系统,并且开放源代码,任何人都可以随意修改其源代码。
- Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
- Linux安全可靠、稳定性高,Linux的代码是开源的,所以每个人都可以参与进入修补漏洞。常常被用于Web服务器项目部署任务。
- 大多数的开源软件的首要适配平台都是Linux,所以在Linux有许多免费又开源的软件工具让你使用。支持几乎所有的网络协议和开发语言
4. Linux的应用
-
100% 的世界超级计算机跑在 Linux 上。包括 NASA 的集群。
-
SpaceX 在其灰背隼火箭引擎上使用具有特殊容错设计的 Linux。借此,Linux 帮助完成了 32 次航天任务。
-
电影泰坦尼克是首个基于 Linux 服务器拍摄的电影。
-
目前互联互联网上 90% 以上的网站服务器采用的都是Linux后台服务器,随着大数据时代的到来,分布式、并行计算、嵌入式以及人工智能等都会首选Linux。