专栏文章索引:Linux
有问题可私聊 ~
目录
一、什么是计算机
1.计算机的组成
2.计算机各个部件简单工作原理
3.计算机的功能
二、操作系统简介
1.操作系统是什么?
2.操作系统的主要功能:
3.操作系统内核的功能:
三、为什么要学习Linux
四、Linux 入门
1.开源共享精神
2.Linux的诞生与特点
(1)Linux的诞生
(2)Linux的特点
(3)Linux的应用领域
(4)Linux的组成
(5)Linux的内核版本和发行版本
五、为什么要用虚拟机学习
1.使用虚拟机学习linux的好处
2.在虚拟机上如何学好linux
六、Linux认证
一、什么是计算机
1.计算机的组成
- 控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
- 运算器:功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
- 存储器:功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
- 输入设备:输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常 见的输入设备有键盘、鼠标等。
- 输出设备:它把计算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。常用的输出设备有显示终端、打印机、绘图仪等。
2.计算机各个部件简单工作原理
3.计算机的功能
接收输入设备的指令和数据,经过cpu的数据和逻辑运算处理产生有用的信息存储起来 或者输出到屏幕上。
那么我们的计算机所接受到的指令和数据都是什么样的呢?其实我们的计算机只认识0,1代码。而且 计算机最重要的运算与逻辑判断是在CPU内部,而CPU是有微指令集的。因此,我们需要CPU帮忙工作 时,就得要参考微指令集的内容,然后编写让CPU读得懂的指令码给CPU执行,这样就能够让CPU运行 了。早期对计算机的全部操作都是采取人工操作方式进行的,早期的操作方式是由纸带或卡片打孔和没 打孔来代替0和1输入计算机来实现一些功能的,就相当于是直接使用机器语言让计算机工作。但是使用 机器语言去操控计算机有几个缺点:
- 需要了解机器语言。
- 需要了解所有硬件的相关功能函数。因为你的程序必须要写给机器看,你就得去参考机器本 身的功能,然后针对该功能去编写程序代码。例如你要让DVD影片能够放映,那就得要参考DVD光 驱的硬件信息。看参考手册是很费劲的。
- 程序不具有可移植性。每个CPU都有独特的微指令集,同样,每个硬件都有其功能函数。
- 程序具有专一性。因为这样的程序必须要针对硬件功能函数来编写,如果已经开发了一个浏 览器程序,想要再开发文件管理程序时,还得要从头参考硬件的功能函数来继续编写。
为了解决这个问题,计算机科学家就设计出一种让人类看得懂的程序语言,然后创造一种“编译器”来将 这些人类写的程序语言翻译成机器能看懂的机器码。这样一来我们修改与编写程序就变得容易多了。目 前常见的编译器有C,C++,JAVA等。
但是,在这样的环境下我们还得要考虑整体的硬件系统来设计程序。举例来说:当你需要将运行的数据 写入内存中,你就得要自行分配一个内存块出来让自己的数据能够填上去,所以你还得要了解到内存的 地址是如何定位的。为了要克服硬件方面老是需要重复编写句柄的问题,所以就有了操作系统。
二、操作系统简介
1.操作系统是什么?
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计 算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。
2.操作系统的主要功能:
是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的 兼容性,为了达到这个目的,操作系统内核提供一系列具备预定功能的多内核函数,通过一组称为系统 调用的接口(应用编程接口API,由操作系统实现提供的所有系统调用所构成的集合,是应用程序和系统 之间的接口)呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处 理,将处理的结果返回给应用程序。
3.操作系统内核的功能:
- 系统调用接口:程序员通过该接口与内核进行通信
- 程序管理:一部计算机可能同时间有很多的工作在等待CPU运算处理,内核这个时候必须要能够控 制这些工作,让CPU的资源做有效的分配才行。另外,良好的CPU调度机制(就是CPU先运行哪个 工作的排列顺序)将会有效加快整体系统性能。
- 内存管理:控制整个系统的内存管理,系统所有的程序代码与数据都必须要先存放在内核当中。通 常内核会提供虚拟内存的功能,当内存不足时可以提供内存交换的功能。
- 文件系统管理 :例如数据的输入和输出等的工作,还有不同文件格式的支持等。
- 设备驱动:硬件的管理是内核的主要工作之一,设备的驱动程序就是内核管理着硬件的代码,设备 的驱动程序可以使硬件准备好工作,时刻等待着程序的调用。好在目前都有所谓的“可加载模块”功 能,可以将驱动程序编辑成模块,就不需要重新编译内核。
常见的操作系统:UNIX、Linux类、MacOS、Windows类、iOS、Android、ChromeOS等等
三、为什么要学习Linux
Linux因其高效率、易于裁剪、应用广等优势,成为了当今中高端服务器的主要操作系统,并且处于一个 不可替代的地位。
- Linux也成为了开源软件的代名词
陪伴互联网时代的7大开源软件
加密互联网的安全协议OpenSSL
数据仓库大王--MySQL
万能开发工具Eclipse
互联网的门卫Apache
大数据的心脏Hadoop
互联网的排版引擎WebKit - Linux在服务器领域的发展
Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,已经形 成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、金融、农业、交通、电信等 国家关键领域。 - Linux在桌面领域的发展
近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、 红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、 OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是 Ubuntu Linux,已经积累了大量社区用户。 - Linux在嵌入式系统方面广泛使用及领域的发展
Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广 泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。 - Linux在云计算/大数据领域的发展
Linux在云计算/大数据领域的发展互联网产业的迅猛发展,促使云计算、大数据产业的形成并 快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会 的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始 取代Unix成为最受青睐的云计算、大数据平台操作系统。
四、Linux 入门
1.开源共享精神
简单来说,开源软件的特点就是把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使 用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修 改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外 开源社区的根基都很庞大,人气也相当高。
坦白来讲,每位投身于Linux行业的技术人或者程序员只要听到开源项目就会由衷地感到自豪,这是一种 从骨子里带有的独特情怀。开源的企业不单纯是为了利益,而是互相扶持,努力服务好更多的用户。开 源软件最重要的特性有下面这些:
Ø 低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而 且相较于商业软件公司,开源社区很少存在倒闭的问题。
Ø 高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试 的用户量众多,一般的bug还没有等爆发就已经被修补。
Ø 低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用 开源社区推动的软件项目可以节省大量的人力、物力和财力。
Ø 更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光 之下。
但是,如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世 界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的 权益。对于那些只知道一味抄袭、篡改、破解或者盗版他人作品的不法之徒,终归会在某一天收到法院 的传票。对于准备编写一款开源软件的开发人员,也非常建议先了解一下当前最热门的开源许可协议, 选择一个合适的开源许可协议来最大限度保护自己的软件权益。
Ø GNU GPL(GNU General Public License,GNU通用公共许可证):只要软件中包含了遵循GPL协 议的产品或代码,该软件就必须也遵循GPL许可协议且开源、免费,因此这个协议并不适合商用软件。 遵循该协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。 GPL开源许可协议最大的4个特点如下所示。
- 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
- 传播自由:允许软件以各种形式进行传播。
- 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
- 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
Ø BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重 新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。
- 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。
- 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协 议。
- 不允许用原始软件的名字、作者名字或机构名称进行市场推广。
Ø Apache许可证版本(Apache License Version)许可协议:在为开发人员提供版权及专利许可的同 时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、 Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议 的软件时,要严格遵守下面的4个条件。
- 该软件及其衍生品必须继续使用Apache许可协议。
- 如果修改了程序源代码,需要在文档中进行声明。
- 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作 者声明的内容信息。
- 如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。
Ø MPL(Mozilla Public License,Mozilla公共许可)许可协议:相较于GPL许可协议,MPL更加注重 对开发者的源代码需求和收益之间的平衡。
Ø MIT(Massachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一, 只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
2.Linux的诞生与特点
Linux——UNIX派生的自由软件
“Linux”这个单词根据Linus Torvalds本人的发音应该是“哩呐克斯”,音标是 ['li:nэks] 重音在“哩”上
(1)Linux的诞生
Multics计划
上世纪六十年代,人们还在用批处理计算机,也就是一次性给一批任务到计算机,然后等待结果,中途 不能和计算机进行交互,而且准备作业需要耗费大量时间。于是1965年,贝尔实验室(Bell),麻省理 工学院(MIT)和通用电气(GE)准备联手开发“分时多任务处理系统”,即300台以上终端机可以同时连 接一台大型计算机进行作业,并取名为Multics(Multiplexed Information and Computing System, 多路信息计算系统)。但由于项目进度落后,资金短缺,1969年,贝尔实验室放弃了这个项目,决定退 出(后来Multics成功开发完成,尽管没有再被重视)。
Unix的诞生与打飞机游戏
调回到贝尔实验室的工程师看到费时的批处理机器,十分怀念先进的Multics。一位工程师Ken Thompson在研发Multics的时候,写了一个叫太空大战(SpaceTravel),是飞机发射子弹那种类型的 游戏,然而这个游戏只能运行在Multics上面,他很想要移植这个游戏继续玩。1969年8月,Thompson 在库房发现了一台闲置的PDP-7,刚好此时休假并且妻儿都去加利福尼亚探亲度假去了,经过四个星期 的努力,用BCPL(Basic Combined Programming Language,基本组合编程语言)汇编语言编写了一 组内核程序,还包括内核工具程序,以及一个小的文件系统。完成之后,Thompson激动地把身边的同 时叫过来,让他们来玩他的游戏。由于这个系统是由Multics简化而来,同事们就戏称这个系统 为"UNiplexed Information and Computing Service”,即没路信息计算系统,缩写为Unics,取其谐音 Unix。这时已经是1970年了,于是就将1970年定为Unix元年,现代计算机的计时也就是这个时候开始 的(比如mysql数据库的TIMESTAMP)。
Unix的发展
Unix实在太好用了,这套系统在Bell实验室广为流传。但Unix是用汇编语言写的,高度依赖硬件,于是 Thompson和Dennis Ritchie合作准备用更高级的语言改写,提高可移植性。Thompson改进了BCPL, 称为了B语言,然而这套语言在内存方面有限制,一筹莫展。又和Ritchie尝试了Pascal,发现编译出来 的内核性能并不好。最终Ritchie决定再对B语言进行改进,成为了大名鼎鼎的C语言,重新改写了Unix。 1974年7月,Bell实验室公开了Unix,引起了学术界的广泛讨论,并大量应用于教育目的。1978年学术 界老大伯克利大学,推出了以Unix第六版为基础并加入改进的新Unix,并命名为BSD(Berkeley Software Distribution伯克利分发版),于是Unix的分支BSD系列就诞生了。由于Unix的高度可移植性 与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了Unix操作系统的开发。然而当 时Bell属于AT&T,AT&T被《谢尔曼反托拉斯法》规定了不能销售除了电话机电报机等之外的商品,后 来随着AT&T的分解,Bell可以卖出Unix了,第七版Unix明确提出“不可对学生提供源码”,Unix走向了商 业化。高昂的授权费导致很多大学停止了对Unix的研究。
Minix操作系统
Unix进行了商业化,教师们都用不起了,1987年,身为ACM和IEEE两会资深会员的荷兰数学与计算机科 学系统教授Andrew S. Tanenbaum开发了Minix操作系统,是Unix的缩小版,用于学生学习操作系统原 理,很多技术大牛希望改进Minix,但遭到了AST教授的丑拒,他认为Minix就是为了教学,让学生一学 期学完,并不想被加入杂乱的东西。
GNU计划
Richard M.Stallman看不惯版权收费,于1984年创立自由软件体系GNU(Gun is Not Unix),拟定了 普遍公用版权协议(General Public License,GPL),所有GPL协议下的自由软件都遵循着 Copyleft(非版权)原则:自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必 须向所有用户公开 。GNU希望开发一个类似UNIX并且是自由软件的完整操作系统——GNU系统。到90 年代初,GNU项目开发出许多高质量的免费软件,包括emacs编辑器(已经在博哥的带领下中 毒……)、bash shell程序、gcc系列编译程序、gdb调试程序。
POSIX标准
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的 一簇标准,该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应 用程序可以在源代码一级上在多种操作系统上移植和运行。
Linux终于诞生了
此时,IBM公司开发的MS-DOS操作系统、Apple公司开发的Mac操作系统,Unix操作系统,Minix操作 系统全都要收费。GNU尽管已经开发出最受期盼的GNU C编译器,开发的操作系统HURD却进度缓慢, 渴求一款自由软件操作系统诞生来证明自己存在的价值。与此同时,Linus利用圣诞的压岁钱和贷款购买 了一台386兼容电脑,并从美国邮购了一套Minix系统软件,在等待邮寄到达的期间,Linus认真学习了 有关Intel 80386的硬件知识。为了能通过Modem拨号连接到学校的主机上,他使用汇编语言并利用 80386CPU的多任务特性编制出了相关程序。甚至为了将老式电脑的软件复制到新电脑上,为一些硬件 编写了驱动程序。Linus逐渐认识到了Minix的诸多限制,产生了自己编写一个新的操作系统的想法。 1991年4月,Linus花费了全部时间研究Minix-386系统,并尝试移植GNU的gcc、bash、gdb到新系统 上。1991年4月13日,Linus在comp.os.minix上发布信息说自己成功将bash移植到了Minix上,而且已 经爱不释手,离不开这个shell软件了。1991年7月3日,Linus在comp.os.minix上透露了正在进行Linux 系统的开发,并已经开始考虑POSIX的兼容了。1991年8月25日,Linus在comp.os.minix上发布了 “What would you like to see in minix?”,透露出正在开发一个免费的386操作系统,新开发的系统会移 植bash和gcc,并且声明他开发的操作系统没有用一行Minix的源代码。1991年10月5日,Linus在 comp.os.minix上发布消息,正式向外宣布Linux内核诞生(Free minix-like kernel sources for 386- AT)。Linux遵循GPL协议,也给GNU运动送上了一份最好的礼物。Linux提供内核,GNU提供外围软 件,GNU/Linux就成了密不可分的体系。
(2)Linux的特点
- 源代码开放
- 真正的多用户多任务
- 完全兼容POSIX标准
- 强大的可移植性
- 丰富的网络功能
- 良好的用户界面
- 可靠的系统安全
- 高度的稳定性
(3)Linux的应用领域
- 服务器领域
- 桌面应用领域
- 嵌入式系统
- 集群、虚拟化、云计算、大数据平台基石
(4)Linux的组成
Linux内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。
文件系统: 文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前浒的文件系统,如ext4、 FAT、VFAT、ISO9660、NFS、SMB等。
Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
应用程序:包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
(5)Linux的内核版本和发行版本
Linux的内核版本
版本号经历了三种不同的命名方案:
1.0~2.6之前的版本:A.B.C
A--有大幅度变动的主版本号;
B--有一些重大修改的次版本号
C--是指有轻微修订的修正号,C为奇数开发版,偶数是稳定版。
2.6.0.0~2.6.39.4版本:A.B.C.D
A和B--依次固定为2和6;C--是内核的版本;D--安全补丁号。
3.0版本开始:X.A.B
X--主版本号,目前有3或4;A--内核的版本,B--安全补丁。
从本版本开始不再使用偶数代表稳定版,奇数代表开发版这样的命名方式
mainline--主线版本(代表目前主力在做的版本或曰开发版)
stabled--稳定版
longterm--长期支持版
EOL (End of Life)--已停止技术支持的旧版本。
Linux的发行版本
Red Hat Enterprise Linux 简介
Red hat Linux 9 之后,发展为两个分支:
社区版 :Fedora (Cloud 云端/Server服务器/Workstation工作站 三大版本)
企业版:Enterprise
最新版:Red Hat Enterprise Linux 8.0
派生版: CentOS 、Scientific Linux、Oracle Linux
五、为什么要用虚拟机学习
1.使用虚拟机学习linux的好处
- 利用虚拟机软件搭建Linux学习环境简单,容易上手,重要的是利用虚拟机模拟出来的Linux与真实 的Linux几乎没有区别。
- 企业里运维人员的工作环境大多数是在Windows桌面系统下通过SSH工具远程连接千百里之外的 Linux服务器进行管理和维护的。因此,用虚拟机软件来搭建环境是非常接近企业工作环境的。
- 如果用虚拟机学习,只要计算机配置高一点,就可以同时开启多个Linux虚拟机,在上班、回家的 路上,带着笔记本电脑就能随时学习。
- 使用虚拟机系统环境,我们可以随意对虚拟系统进行设置和更改操作,甚至可以格式化虚拟机系统 硬盘,进行重新分区等操作,而且不用担心会丢掉有用数据。
- 虚拟化技术能大幅提升系统的安全性。
2.在虚拟机上如何学好linux
学习Linux不是逛自由市场(版本选择)
忘记Windows思维方式 一定要习惯用命令
实战+理论结合学习
学会使用Linux联机帮助
克服畏惧心理
学会独立思考、解决问题
保存虚心学习态度
六、Linux认证
Linux 的相关认证比较多,其中红帽的Linux 认证和LPI 的认证比较常见。
红帽Linux认证
RHCSA英文全称:Red Hat Certified System Administrator ,中文全称:红帽认证系统管理员 RHCE英文全称:Red Hat Certified Engineer,中文全称:红帽认证工程师。
RHCA英文全称:Red Hat Certified Architect,中文全称:红帽认证架构师。
RHCSS英文全称:Red Hat Certified Security Specialist,中文全称:红帽认证安全专家。 RHCDS英文全称:Red Hat Certified Datacenter Specialist ,中文全称:红帽认证数据中心专家。
RHCVA英文全称:Red Hat Certified Virtualization Administrator,中文全称:
红帽企业虚拟化管理
红帽 OpenStack 认证工程师 红帽 OpenStack 认证系统管理员
LPI的Linux认证
LPIC:Linux Professional Institute Certification,是由LPI颁发的全球范围的Linux专业认证。该认证 为世界标准的、中立的,也是全球最大的专业认证。
LPIC被各国承认并证明个人使用Linux技术水平的认证项目。此项目可以满足Linux专业人士的知识需 学习Linux不是逛自由市场(版本选择) 忘记Windows思维方式 一定要习惯用命令 实战+理论结合学习 学会使用Linux联机帮助 克服畏惧心理 学会独立思考、解决问题 保存虚心学习态度 要是用人单位聘用人才的重要参考。
LPIC 是中立性认证。中立性的认证已经成为业界的共识,LPI 作为一个非盈利的机构,只参与设置认 证考试标准的工作,独立于众多Linux 产品供应商、培训提供机构和课件发行机构,LPI 认证考试不是推 销某个软件产品的工具。目前从Linux 团体和业内专业人员所关注的程度来看,LPI 认证得到了最为广泛 的支持。这其中的部分原因归功于LPI 认证的设计完全采用了Linux 操作系统和开放源代码软件的同样开 发方式,Linux 公司和团体中有许多人都为该认证提供了大量的支持和帮助。
七、搭建Linux学习环境
搭建Linux学习环境有以下三种方式:
(1)安装独立的Linux系统,不再安装其他操作系统。
(2)安装Windows与Linux并存的多操作系统,启动时通过菜单选择要启动的操作系统。
(3)在虚拟机中安装Linux操作系统。 建议使用VMware Workstations 最新版本
搭建过程见:
创建虚拟机、添加镜像以及配置Linux_创建虚拟镜像-CSDN博客