大家好,很高兴又和大家见面啦!!!
今天的文章不是一篇技术文,只是一篇简单的学习感受分享。今天的内容会简单的介绍一下Linux的背景、发展史。在今天的内容中,我将会分享一下第一次接触Linux的学习感受与体会,以及自己尝试的一些基本指令。下面让我们一起走进Linux的世界吧!
首先我们要清楚一个概念,那就是科技的发展是以国家之间的对抗为背景的,一个国家要想强大,只能通过不断的提升自己的技术。在现在的核武器时代,如果我们还像原始人一样去拿着石头、木棍去和其他国家进行对抗的话,只会有一个结果,惨败。
时间回到二战时期,当时的战斗十分激烈,但是各国的武器装备却没有特别的先进,在战斗中栈主导地位的战略武器就是飞机和大炮,因此研制和开发新型的大炮和导弹就是当时的重中之重。为此美国陆军军械部在马里兰州的阿拉伯丁设立了“弹道研究实验室”。1
于1937年~1941年间,美国爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)教授和他的研究生克利福特·贝瑞(Clifford Berry)先生研发了“阿塔纳索夫-贝瑞计算机”(Atanasoff-Berry Computer,简称ABC)。
ABC计算机是第一台电子化的计算机,非图灵完备和不可编程是其最大限制。
1941年,莫克利(JohnW.Mauchly)在阿坦纳索夫家中借助了5天,在此期间“盗取”了阿塔纳索夫教授的研究成果及想法,之后于1942年提出了试制第一台能够计算导弹弹道轨迹的电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。
美国军方得知这一设想后,马上拨款大力支持,成立了以莫克利、埃克特(John Eckert)为首的研制小猪开始研制工作,预算经费为15万美元。于是世界上第二台电子计算机,世界上第一台通用计算机 ENIAC (Electronic Numerical Integrator And Computer)开始进入研发状态。
于1944年,也就是 ENIAC 的研发中期,当时弹道研究所的顾问——正在参与美国第一颗原子弹研制工作的数学家冯·诺依曼(von Neumann,1903-1957,美籍匈牙利人)带着原子弹研制过程中遇到的大量计算问题,在研制过程中期加入了研制小组。
当时的 ENIAC 设计中存在两个问题:
为了进行搭接,可能需要耗费数天的时间,这就导致计算机的速度被这一工作抵消了。
1945年,为了解决 ENIAC 存在的这两个问题,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”—— EDVAC (Electronic Discrete Variable Automatic Computer)。方案中提出的计算机体系结构一直延续至今,也就是现代计算机的冯·诺依曼结构。
EDVAC 的初步预算为10万美元,但最终的成本大约超过估计的4倍,约50万美元。2
1946年,第一台通用计算机 ENIAC 问世,并开始投入运行。
1949年8月,第一台离散变量自动电子计算机 EDVAC 问世,于1951年正式开始投入运行。
操作系统本质上就是一款软件,只不过这款软件是用来进行软硬件管理的
现代计算机是由软件和硬件组成的,在计算机中其软硬件的体系结构我们可以简单的分为4层结构:
所谓的硬件就是按照冯·诺依曼的体系结构而组成计算机的五大部件:
计算机中控制这些硬件使用的是硬件对应的驱动,而对驱动下达指令的是管理软硬件资源的软件,这个软件就是我们所说的操作系统,使用计算机的用户了。
对于这个分层结构的工作流程,我们可以简单的理解为:
如果我们将一台计算机想象成一个软硬件公司的话,那么我们就是公司的董事长,公司大大小小的事物都需要经过我们的同意,而操作系统就是公司的总经理,总经理会将董事长的指令进行解析并传递给下属,而这些驱动就是接收总经理指令的组长,组长在接到指令后就会将工作任务分配给对应的员工,也就是计算机硬件。
这么一看,咱在使用计算机时好歹也是个董事长,我的天我真牛,哈哈哈哈。
下面我们继续言归正传,下面来看一下操作系统的诞生与发展;
自从 ENIAC 问世以来,当时对计算机的工作还是采用的手工操作的方式。3
程序猿将对应用程序和数据的已穿空的纸袋(或者卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸袋(或卡片)后,才让下一个用户上机。
手工操作方式有两个特点:
根据这种操作特性,如果程序猿在使用计算机时,纸袋上面有一只小飞虫啥的,这就会造成程序的运行出现问题,于是便有了BUG一词。
在 EDVAC 问世之后,随着时代的更替,计算机也开始逐步发展,随着计算量的不断增加,于20世纪50年代后期开始出现了人机矛盾:
为了解决这个矛盾,摆脱人的手工操作,实现作业的自动过渡,于是第一个操作系统——联机批处理系统诞生了。
批处理系统是加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这些作业包括程序、数据和命令)。
首先出现的是联机批处理系统,即作业的输入和输出有CPU来处理。
虽然联机批处理系统客服了人机矛盾,提高了计算机的利用率,但是在作业输入和结果输出是,主机的告诉CPU仍处于空闲状态,等待慢速的输入和输出设备完成工作:主机处于“忙等”状态。
为了克服与缓解高速主机与慢速外设之间的矛盾,提高CPU的利用率,于是引入了脱机批处理系统,即输入与输出脱离主机的控制。
虽然脱机批处理系统极大缓解了人机矛盾以及主机与外设的矛盾,但是每次主机内存中仅存放一道作业,每当它运行期间发出输入和输出的请求后,高速的CPU便处于等待低速的输入和输出完成的状态,致使CPU空闲。
为了改善CPU的利用率,又引入了多道程序设计技术,即允许多个程序同时进入内存并运行。
多道程序系统的出现,标志着操作系统渐趋成熟,先后出现了作业调度管理、处理机管理、存储器管理、外设管理以及文件系统管理等功能。
20世纪60年代中期,在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统,简称批处理系统。
它有两个特点:
批处理系统的追求目标——提高系统资源利用率和系统吞吐量,以及作业流程的自动化。
批处理系统的一个重要缺点——不提供人机交互能力,给用户使用计算机带来不便。
虽然用户独占全机资源,并且直接控制程序的运行,可以随时了解程序运行情况。但这种工作方式因独占全机造成资源效率极低。
一种新的追求目标:既能保证计算机效率,又能方便用户使用计算机。 20世纪60年代中期,计算机技术和软件技术的发展使这种追求成为可能。
由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。
所谓的分时技术指的是把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。
具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。
特点:
- 多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。
- 交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。
- 独立性。用户之间可以相互独立操作,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
- 及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间。
分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。
分时系统可以同时接纳数十个甚至上百个用户,由于内存空间有限,往往采用对换(又称交换)方式的存储方法。即将未“轮到”的作业放入磁盘,一旦“轮到”,再将其调入内存;而时间片用完后,又将作业存回磁盘(俗称“滚进”、“滚出“法),使同一存储区域轮流为多个用户服务。
多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统。
虽然多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但却不能满足实时控制与实时信息处理两个应用领域的需求。
于是就产生了实时系统,即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。
实时系统在一个特定的应用中常作为一种控制设备来使用。
实时系统可分成两类:
实时操作系统的主要特点:
操作系统的三种基本类型——多道批处理系统、分时系统、实时系统。
通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。
例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。
再如:分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。
从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。
相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响。
至此,操作系统的基本概念、功能、基本结构和组成都已形成并渐趋完善。
Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,主要用于工程应用和科学计算等领域。4
UNIX系统是一个分时系统。
最早的UNIX系统于1970年问世。此前,只有面向批处理作业的操作系统,这样的系统对于需要立即得到响应的用户来说是太慢了。在60年代末,肯尼斯·蓝·汤普森(Kenneth Lane Thompson)和 丹尼斯·麦卡利斯泰尔·里奇(Dennis MacAlistair Ritchie) 都曾参加过交互方式分时系统Multics的设计,而开发该系统所使用的工具是CTSS。这两个系统在操作系统的发展过程中都产生过重大影响。在此基础上,在对当时现有的技术进行精选提炼和发展的过程中,K.Thompson于1969年在小型计算机上开发UNIX系统,后于1970年投入运行。
肯尼斯·蓝·汤普森也就是我们的B语言之父与UNIX之父,本人帅照如下:
丹尼斯·麦卡利斯泰尔·里奇也就是我们的C语言之父,本人帅照如下:
膜拜两位大佬
1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。
1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。
UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
第一个UNIX版本是免费给许多知名大学的计算机系使用的。
1972年,丹尼斯·麦卡利斯泰尔·里奇(Dennis MacAlistair Ritchie) 开发出C语言,用来改写原来用汇编语言编写的UNIX,由此产生了UNIX VersionV。贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。
1974年,Kenneth Thompson和Dennis Ritchie合写的“The UNIX Time-Sharing System”在Communication of ACM上发表,正式向外界披露了UNIX系统。
当时,PDP-11系列小型计算机在世界各地已经得到广泛应用,UNIX系统一开发后便广泛配备于美国各大学的PDP-11系列计算机上,由此为UNIX的广泛应用创造了物质条件。
1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。
1978年,UNIX Version VI发表,随后又于1979年用于VAX-11超级小型机。以后,不断地出现各种新的版本。
1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。
美国电话电报公司分别于1981年和1983年发表AT&T UNIX SystemII和UNIX SystemV。美国加州大学伯克莱分校也先后发表了UNIX的版本BSD4.1,BSD4.2和BSD4.3。
随着UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。
它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release4.2被许多厂商所采用,例如SUN Microsystem。
UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。
到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。
AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统。
为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open Software Foundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release 4。
UNIX系统的用户日益增多,应用范围也日益扩大。无论在各种类型的微型机、小型机,还是在中、大型计算机,以及在计算机工作站甚至个人计算机上,很多都已配有UNIX系统。不仅新推出的机型配有UNIX系统,而且一些历史较久的生产厂商,也竞相将原有机型配上UNIX系统以便打开销路、争取市场。
1991年10月5日,赫尔辛基大学的一名研究生林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。
下面就是我们这位大佬的帅照:
新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫安德鲁·斯图尔特·塔能鲍姆(Andrew Stuart “Andy” Tanenbaum)的教师开发的。
大佬帅照如下:
读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。
Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。
托瓦兹于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。托瓦兹绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。
Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
开源就是将代码进行公开。
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。
Linux作为一款开源的操作系统,它被全球顶尖的行业大佬紧紧的盯着,因此,代码中存在的问题可以尽快的被这些大佬们发现并且进行优化,因此,Linux是一款更稳定、更高效、更安全且有免费发行版本的操作系统。
Linux在很多地方都有相应的使用:
因为托瓦兹大佬的壮举,导致乔布斯能够通过操作系统赚到的money大幅度缩水,所以托瓦兹大佬也是乔布斯最痛恨的人之一。
Linux的发型版本分为技术角度和商业角度两个方面:
技术角度:Linux内核(kernel)版本
从技术角度出发,Linux发行的版本又称之为Linux内核版本,我们可以通过Linux网址:https://www.kernel.org/来找到我们所需要的对应版本并进行下载
这里的版本都是可以使用的,就比如v2.6版本,我们在进入这个版本的界面之后会看到基于这个版本下的不同版本:
就比如对于linux-2.6.11这个版本,这里的2.6.11这个版本号的命名是遵循主版本.从版本.修正次数的命名规则;
像这个2.6.11就表示的是在主版本v2下的第6版从版本,总共被修改了11次,并且v2.6这个从版本是可以进行稳定使用的版本。
商业化角度
商业化版本是基于内核版本进行二次开发的能够被我们使用并满足我们正常开发需求的商业化的产品。比如:centos 7,8、Ubuntu 12.04、kail、红旗、redhat(收费)……
我自己目前使用的是在VMware虚拟机上装载的centos7。下面我们就来看一下Linux的操作环境是怎么样的吧;
首先我们先打开VMware:
之后打开centos7:
之后选择登录的用户:
最后输入账户密码完成登录:
完成账户登录后我们就能看到对应的图形化界面:
之后选择应用程序(Applications)->终端(Terminal):
之后就可以在界面内进行操作了:
在进行操作前我们先认识几个指令:
//Linux基本操作指令
// ls——list——显示当前目录下的所有的文件名
// ll——展示当前目录下的所有文件名更详细的信息
// pwd——展示当前目录
// cd——进入指定文件
// mkdir——创建新的目录
// touch——创建新文件
// vim——编译新文件
// i——插入模式
// esc——切换正常模式
// :wq——保存并退出
// gcc——通过gcc打开指定文件
// ./a.out——运行指定文件
// cat——展示文件中的内容
下面我们尝试着通过这些指令来完成以下任务:
Hello Linux!
;下面我们先来看一下再文本文件中的操作步骤:
当我们创建好test.c文件后,我们就可以按照这个图中所示步骤来进行文本编辑。当我们保存好并退出文本后就可以开始运行文件了:
图中备注的指令功能不一定正确,但是目前我是这么理解并进行使用的,在后面的内容中我会再给大家好好的分享一下在Linux中的各种指令及其对应的基本操作。
刚才的操作代码我就放在下面了,大家可以看一下不同的指令及其使用:
[lq@localhost ~]$ pwd
/home/lq
[lq@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[lq@localhost ~]$ ll
total 0
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Desktop
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Documents
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Downloads
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Music
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Pictures
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Public
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Templates
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Videos
[lq@localhost ~]$ mkdir Linux
[lq@localhost ~]$ ls
Desktop Documents Downloads Linux Music Pictures Public Templates Videos
[lq@localhost ~]$ cd Linux
[lq@localhost Linux]$ ls
[lq@localhost Linux]$ touch test.c
[lq@localhost Linux]$ ls
test.c
[lq@localhost Linux]$ vim test.c
[lq@localhost Linux]$ cat test.c
#include
int main()
{
printf("Hello Linux!\n");
return 0;
}
[lq@localhost Linux]$ gcc test.c
[lq@localhost Linux]$ ls
a.out test.c
[lq@localhost Linux]$ ./a.out test.c
Hello Linux!
[lq@localhost Linux]$ ll
total 16
-rwxrwxr-x. 1 lq lq 8512 Jan 24 03:23 a.out
-rw-rw-r--. 1 lq lq 78 Jan 24 03:22 test.c
在今天的内容中,我们花费了大量的篇幅来介绍操作系统的发展历史,这里我觉得大家在学习Linux之前学习一下对应的历史是很有必要的,虽然文字内容偏多,篇幅过长,大家可以闲来无事时看一看,让自己对这个知识有一点印象。在文章最后,我也带领大家进行了Linux操作系统下的初次体验,虽然内容看着复杂,但是实质上我们就是通过各种指令来完成我们在Windows上进行的各种图形化操作。
今天的内容到这里就全部结束了,对于指令与图形化的内容以及Linux中的常见指令在下一个篇章中咱们将会介绍到,大家记得关注哦!希望本篇内容能帮助大家走进Linux的世界,最后感谢大家的翻阅,咱们下一篇再见!!!
ENIAC ↩︎
EDVAC ↩︎
操作系统发展史 ↩︎
UNIX操作系统 ↩︎