Linux系统综述

一.Linux系统的发源

1.Multics计划

上个世纪六十年代,那个计算机还没有很普及,只有少数人才能使用,而且当时的计算机系统都是批处理的,就是把一批任务一次性提交给计算机,然后就等待结果。并且中途不能和计算机交互。往往准备作业都需要花费很长时间,并且这个时候别人也不能用,导致了计算机资源的浪费。

为了改变这种情况,在1965年前后,贝尔实验室(Bell)、麻省理工学院(MIT)以及通用电气(GE)联合起来准备研发一个分时多任务处理系统,简单来说就是实现多人同时使用计算机的梦想,并把计算机取名为Multics(多路信息计算系统),但是由于项目太复杂,加上其他原因导致了项目进展缓慢,1969年贝尔实验室觉得这个项目可能不会成功,于是就退出不玩了。

2.Unix的诞生

Bell退出Multics计划之后,Bell实验室的那批科学家就没有什么事做了,其中一个叫做Ken Thompson的人在研发Multics的时候,写了一个叫做太空大战(Space Travel)的游戏,大概就是一个很简单的打飞机的游戏,但是这个游戏运行在Multics上。当Bell退出了Multics后,Thompson就没有了Multics的使用环境了,为了能够继续游戏,于是他花了一个月的时间写了一个小型的操作系统,用于运行Space Travel,当完成之后,Thompson怀着激动的心情把身边同事叫过来,让他们来玩他的游戏,大家玩过之后纷纷表示对他的游戏不感兴趣,但是对他的系统很感兴趣。

因为MULTICS是“Multiplexed informtion and Computing Service”的缩写(多路信息计算系统),于是他们命名这个系统为:“UNiplexed Information and Computing Service”,缩写为“UNICS”(没路信息计算系统,与Multics相反)。后来大家取其谐音,就称其为“UNIX”了。

这个时候已经是1970年了,于是就将1970年定为Unix元年,因此计算机上的时间就是从这一年开始计算的。

后来Unix这个小操作系统就在Bell实验室内部流行开,并经过不断地改良最终在1974年7月Unix发展到第5个版本,Bell实验室公开了Unix,结果引起了学术界的广泛兴趣并对其源码索取。所以,Unix第五个版本就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和拓展1978年学术界的老大伯克利大学,推出了一份以第六版为基础,加上一些改进和新功能而成的Unix。并命名为BSD(Berkeley Software Distribution伯克利分发版),开创了Unix的另一分支:BSD系列。

于是乎Unix就有了两个分支,一个就是BSD系列的分支,一个就是Bell本身发放的分支,当时因为Bell属于AT&T,AT&T受到了美国《谢尔曼反托拉斯法》的影响,不能销售除了电话机电报机等之外的商品,后来AT&T分解,Bell可以卖Unix了,Unix走向了商业化,如果想继续使用就需要购买授权,一份授权4万美元

3.Minix及Linux的诞生Linux系统综述

在Unix昂贵的授权费用下,很多大学不得不停止对其研究,老师导致上课也不知道讲什么了。在1987年荷兰有个大学教授安德鲁写了一个Minix,类似于Unix,专用于教学。当Minix流传开来之后,世界各地的黑客们纷纷开始使用并改进,希望把改进的东西合并到Minix中,但是安德鲁觉得他的系统是用于教学的,不能破坏纯净性,于是拒绝了

在1991年9y月17日,Linus Torvalds(林纳斯.托瓦兹)在互联网上公布了自己写的Linux,可能是表达对安德鲁的不满吧(为什么不接受大家的好意呢?你让大家的满腔热情往哪放呢?),于是Linus发布了一个帖子,大概就是说:我写了一个操作系统的内核,但是还不够完善,你们以任何姿势使用不收费,也可以帮助我一起修改。帖子发出后引起了强烈的反响。在大家的努力下,于1994年Linux的1.0版本正式发布

为什么会引起这么强烈的反应呢?这就要从了另一个人说起,那就是Richard Stallman(*软件之父)。Stallman是一个非常“激进”的人,因为Unix商业化的影响,他认为软件是全人类的智慧结晶,不应该为某一家公司服务。在八十年代,他发起了*软件运动,吹起了共产主义的号角(发起了GNU运动),并发布了软件界的共产主义宣言(GPL协议),并且这一运动得到了很多人的认同。

所谓*软件就是指:*使用、*学习和修改、*分发、*创建衍生版。

GNU的定义是一个递归缩写,就是GNU IS NOT UNIX。就是说Unix是流氓,我不是。有意思的是,GNU运动是上个世纪八十年代开始的,而那个时候Linux还没有诞生呢 ,所以Stallman宝宝心里苦啊,就在大家逐渐失去信心的时候,1991年Linus Torvalds带着他的Linux闪亮登场了,给GNU运动画了一个完美的句号。

Linux为什么会引起如此强烈的反响呢?因为Unix有版权,爱好编程的*分子在研究Unix的时候很容易吃上官司 ,而Linux是遵循GPL协议的,可以免费使用,让黑客们尽情的施展(这里的黑客指那些技术大牛,不是指那些利用计算机干坏事的人)。于是Linux提供内核(kernel),GNU提供外围软件,就这样GNU/Linux诞生了

所以,看到这里你就会了解到Unix是1970年出现的,Linux是1991年发布的,但Linux是不同于Unix的操作系统。

注解:

1.FSF:Linux为什么会引起如此强烈的反响呢?这就要从另一个人说起,那就是 Richard Stallman。Stallman不仅是一个程序员,还是一名有思想的社会批评家。他认为将UNIX变成一个公司专有的商业化的操作系统是对他作为一个创造者的社会权利的限制。商业化的操作系统不允许对其进行共享或修改,不仅反社会,而是不道德、错误的。而这种问题的解决方案就是从头开始编写UNIX下的软件,并且可以*发行。

1984年1月,Stallman从麻省理工人工智能实验室辞职,投身于该项目,短时在间内,他吸引了一批程序员。在1985年,他们启动了一个称为*软件基金会(Free Software Foundation,FSF)的组织。Stallman的指导原则是:“计算机用户应该能够*地修改软件以适应自己的需求,并且可以*地分享软件,因为帮助他人是基本的社会责任”。

2.GNU:因为任何计算机的核心都是操作系统,所以Stallman为FSF指定的第一个目标就是创建一个能够*共享并可以被任何人修改的操作系统。为了使新操作系统能够*发行,Stallman意识到操作系统必须从头开始编写。

为了能够平稳地融入到当时流行的编程文化中,因此Stallman决定新的操作系统应该与Unix兼容,也就是说它看上去就像Unix一样,并且能够运行Unix程序。按照他曾经工作过的编程社区的传统,Stallman为还没有构建的操作系统齐了一个古怪的名称:GNU。

GNU是一个递归缩写,就是GNU IS NOT UNIX。就是说Unix是流氓,我不是。

3 GPL:GNU自己的内核Hurd,因为理念太先进了,研发进度很缓慢。但是,FSF的程序员们经过勤奋工作,创建了大量的兼容于Unix系统的开放源代码的软件。例如,文本编辑器(Emacs)、C编译器(gcc)、C++编译器(g++)、调试器(gdb)、Unix shell(Bash)、……。

在1980年代后期,Stallman在创建*软件方面已经积累了一定的经验,他认为如果要创建一大批的*软件,那么它需要一个合适的许可证协议,并在这个许可证协议下发行该软件。为了这个目的,他提出了非盈利版权(copyleft)这一理念。为了实现非盈利版权这一思想,Stallman提出并编写了通用公共许可证(general public license、GPL),并于1989年发布。

GPL的核心是:在软件上应用GPL协议后,任何人可以发行该软件、查看源代码、修改该软件并发行修改后的软件。此外,GPL协议要求任何重写发行软件(包括修改后的版本)的人,都不能剥夺软件的*使用或者添加自己的限制。

4.FreeBSD、OpenBSD以及NetBSD
我们已经知道:从1991年Linux发布了Linux 0.01起,Linux成了了*软件的主流,那么,在商业化道路上的Unix是否有可*共享的版本呢?答案是显而易见的。

BSD是1980年代两大Unix主流之一(另一是System V)。BSD是加利福尼亚大学伯克利分校计算机科学系开发的,自1980年起,由计算机科学研究小组(Computer Science Research Group,CSRG)管理与开发。

1980年代末,BSD酷爱者开始对AT&T公司对Unix的商业化运作感到不满。基于这一原因,CSRG制定了一个目标:完全重写所有基于AT&T公司的BSD部件。这样可以使BSD摆脱AT&T的法律制约。
1989年,CSRG提供了第一个全部开放源代码的BSD发行版——Networking Release 1(更正式的称号是4.3BSD NET/1)。NET/1包含了很多独立自主的网络工具,但是系统并不是完全独立的(也就是包含了UNIX的代码)。

1991年,CSRG发行了一个新颁布的BSD——NET/2。除了6个内核文件外,BSD中的所有内容都完全属于自己了。

1992年,Bill Jolitz重新编写了最后6个有问题的文件,并为PC创建了一个新版本的BSD。他将这个操作系统称为386/BSD,并且开始通过Internet发行。伯克利分校的圣神目标——一个与AT&T公司UNIX无关的操作系统实现了。最终,BSD可以在全球作为开放源代码的软件*发行。

在很短的时间呢,386/BSD流行起来,而且维护它的人数日益递增。但是,Jolitz拥有一份全职工作,他没有时间处理所有提交的补丁和增强。基于这一原因,一组志愿者接管了这项工作。该小组所做的第一件事就是将该操作系统重命名为FreeBSD

刚开始,FreeBSD只能运行在PC硬件上。有一些用户希望在其他类型的机器上运行BSD,因此人们成立了一个新的小组,该小组的目标就是尽可能地将FreeBSD移植到许多其他类型的计算机上,这个新小组提供的版本称为NetBSD

1990年代中期,NetBSD小组又分出另一个小组,该小组主要关注安全和密码学问题。这个小组的操作系统称为OpenBSD

可以看出,BSD的*世界里只有3个主要的发行版:FreeBSD、NetBSD、OpenBSD。这与Linux世界差别很大。在Liunx世界里,差不多有数百个不同的发行版。

BSD是完全的开源软件,也可以通过Internet*发行,那么,为什么是Linux成为快速流行起来的Unix版本呢?

原因有二:首先,Linux基于GPL协议发行,对Linux所做的任何事情都属于全世界。而BSD许可证没有GPL严格,在BSD许可证下,允许使用BSD创建新产品而不共享该新产品。所以,许多程序员喜欢使用Linux。Linux比BSD更成功的第二个原因在于Linux发行时机上。因为Linux Torvalds在1991年发行了Linux内核,而386/BSD直到1992年才发行,所以Linux在发行时间上占得先机。结果是,Linux吸引了大量正在焦急地等待全球第一个*版本Unix的程序员。

二:Linux系统的特点

1.Linux优势总览

稳定的系统:打个比方,安装Linux的主机连续运行一年以上不曾宕机、不必关机是很平常的事,我的windows系统今早打开时是黑屏,强行关机之后才恢复,原因不明

安全性和漏洞的快速修补 :Linux有众多电脑高手在使用,所以维护者众多,更新维护很快,而windows则是所有人都会用,且不开源

多任务,多用户 :你可以在一个Linux主机上规划出不同等级的用户,而且每个用户登录系统时工作环境可以不同,此外你还可以允许不同用户在同一时间登陆主机以使用主机的资源

用户和用户组的规划 :在linux的机器上,文件可分为可读可写可执行三类(windows上也可以设置这些属性),此外,这些属性还可以分为三类:分别是文件拥有者、文件所属用户组、其他非拥有着与用户组者,这对于项目或者其他项目开发者具有良好的保密性

相对较少的系统资源占用这是最吸引眼球的地方,目前市面上任何一款个人计算机都可以达到使用Linux搭建一个服务上百人以上的主机

可定制裁剪,移植到嵌入式平台(如安卓设备)

可选择的多种图形用户界面(如GNOME,KDE)

2.Linux优势详解

1.模块化程度高

Linux的内核设计非常精巧,分成进程调度内存管理进程间通信虚拟文件系统网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。

2.源码公开

由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条 款,就可以*使用Linux 源代码,为用户提供了最大限度的*度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化, 所以是否能获得源代码 对于嵌入式系统的开发是至关重要的。加之Linux的软件资源十分丰富,每种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。这一切就使设 计者在其基础之上进行二次开发变得非常容易。另外,由于Linux源代码公开,也使用户不用担心有“后闸”等安全隐患。

同时,源码开放给各教育机构提供极大的方便,从而也促进了Linux的学习、推广和应用。

3.广泛的硬件支持

Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。目前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。

由于世界范围内有众多开发者在为Linux的扩充贡献力量,所以Linux有着异常丰富的驱动程序资源,支持各种主流硬件设各和最新的硬件技术,甚至可在没有存储管理单元MMU 的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。

4.安全性及可靠性好

内核高效稳定。Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。

Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。

5.具有优秀的开发工具

开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状 态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不 用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从操作系统到应用软件各个级别的调试。

6.有很好的网络支持利文件系统支持

Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,并且很容易移植到嵌入式系统当中。目前,Linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是NFS的一个很好的平台。

另一方面,由于Linux有很好的文件系统支持(例如,它支持Ext2、FAT32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。

7.与UNIX完全兼容

目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。

但由于Linux不是为实时而设计的,因而这就成了Linux在实时系统中应用的最大遗憾。不过,目前有众多的*软件爱好者正在为此进行不懈的努力,也取得了诸多成果。

三:Linux相比其他操作系统的优势

1:系统运行稳定,性能高,高稳定性,适合7*24小时不间断的服务运行模式

2:Linux 系统上有着大量的可用软件,且绝大多数是免费的,构建成本低廉

3:Linux 系统有良好的可移植性,它几乎支持所有的 CPU 平台,这使得它便于裁剪和定制

4:支持几乎所有的网络协议及开发语言

四:Linux系统的应用范围以及前景

1.从大方向Linux的不同应用领域来看

1.作为企业服务器系统

Linux虽然比Windows和Unix晚出现,但是目前已经占据了90%以上的市场,像BAT/TMD甚至微软官方门户网站都是使用的Linux系统。利用Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题。目前Linux系统已经参透到电信、金融、*、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux操作系统。

2.嵌入式Linux系统应用领域

这个领域对于大多数运维是不太熟悉的,因为这种Linux系统主要用作开发平台,举个例子:网络设备路由交换、防火墙的系统,专用的控制系统,比如自动售货机、手机、PDA、各种家用电器等,如果这些你不是很明白,那么安卓手机你一定知道,Android就是基于Linux开发来的。这个领域我们更多的看作是开发,而开发本很就是一个来钱快,耗精力的行业,个人认为这也是一个“看天赋”的行业,不是单纯编写几万行代码就可以弥补的,更多的是对算法、数据结构的认知和理解;可以是长久不衰的一个扬爷,但只适合少部分人。

3.Linux在桌面领域的发展

近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在*、企业、OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。

2.从技术领域来看(区块链-云计算-大数据-AI)

1.云计算

也是我最熟悉的,你可以将云计算看作**“运维**”技术的**“深耕”,关于云计算的概念可以自行百度,也可以看一下亚马逊对于云计算技术的定义与应用,但无论是亚马逊云、google云、阿里云几乎都是部署在Linux系统上**,再对硬件、软件资源的分配应用,说白了就是“你想要多少,我就给多少;不想要了就还回去,省钱省事”,最直接的一句话“如果你想成为一个牛X的云计算工程师,Linux必须且一定是你要学习的技术”。这里你一定要学会的技术:KVM、Docker、K8S、Openstack等,当然openstack一般是教学入门的最好云平台技术,有的公司会再做二次开发(例如华为的云计算认证)。

2.大数据

如果说云计算和企业业务息息相关,那么大数据和“用户”的生活无法分割,我相信大家都有过在某宝搜索一些商品,下次登录后“猜你喜欢”会有大量的相关链接的推荐,这就是大数据的魅力,基于Linux上部署hadoop、Spark这些服务,对互联网上额“数据”进行整理、分析、挖掘等等等等。

3.AI人工智能和区块链

这两个实际上主要是“开发”的层次,但是与“云计算”、“大数据”是息息相关的,但是底层上都是Linux为操作系统。