前言
在谈linux之前,需要先了解一下,Unix历史。早在Linux出现之前的二十年(1970年代),就有一个相当稳定而成熟的操作系统了,那就是Linux的前身Unix,其实也可以说没有Unix就没有今天的Linux,但为什么Unix淡出了人们的视野呢,我们带着疑问往下了解。
linux的核心是由Linus Torvalds(林纳斯·本纳第克特·托瓦兹)在1991年时候开发出来的,放在网络上给大家提供下载,后来大家感觉此物好用而精简,随后才有了更多的相关技术人员去下载研究他了,那为什么这么多人喜欢它呢,下面慢慢说来,林纳斯·本纳第克特·托瓦兹本人:
Unix和Linux
-
1969年以前,早期的计算机并不像现在一样,人手一个,一般是用于科技研究、军事、技术单位等使用,平常老百姓几乎不可能碰到。造成一个问题就是机器很少,人特别多,也许一个大学里面只有一台,但是有N多人都想用。在1960年麻省理工学院发展了“相容分时系统CTSS” 可以让多个终端系统连接大型主机。就是1个服务器连接多个客户端。这仿佛就是多个人同时使用一台计算机,其实其中有cpu分片的功能来完成此任务。
如此,终端设备无论在哪,只要在终端机前面输入输出作业,就可以利用主机提供的功能。终端没有运算能力只管输入输出。一般比较先进的也就提供30个不到的终端。 -
1965年后,贝尔实验室Bell、麻省理工学院MIT、奇异公司GE,发起了Multics计划,让主机可以达成300个终端。后来因为资金不足、计划进度等问题,就退出研究了。
-
1969年,贝尔研究室退出了Multics计划,但是原计划的人员中有一位Ken Thompson(汤姆森.肯),1969年8月,这哥们趁老婆不在家自己用4周时间写了一个核心程序,汤姆森将Multics计划话中的系统简化了,最后叫Unics(还不叫Unix)。
-
1973年,Unix正式诞生由于汤姆森这个哥们,写的这个系统是在太好用了,经过贝尔实验室的流传与数次改版,成为如今用C语言写成的Unics核心,也就是Unix。
-
1977年,Unix代码使用高级C语言编写,非常具有移植性,只要取得此代码加以更改编写就可以移植到其他的主机上。柏克莱大学bill joy对代码进行修改后命名为Berkeley Software Distribution(BSD)。
-
1979年,软件很好用,广为流传,很多公司针对自己的计算机开发自己的版本,1979年时才慢慢转移到家用主机上面。
-
1984年,GNU计划与FSF基金会,Richard Mathew Stallman(史托曼)在1984年发起GNU计划,计划目的是建立一个自由、开放的Unix系统。于是他不仅宣传让同事使用此内核程序,自己还开编写C语言的编译器也就是gcc,其中GNU开发的几个重要软件,后来的很多软件都可以通过这些基础程序开发,包括后面的Linux:
- Emacs 代码编辑器工具
- GNU C (GCC)
- GNU C Library (glibc)
- Bash shell
-
1991年芬兰的赫尔辛基大学的Linus Torvalds(拖瓦兹,莱纳斯),他使用bash,gcc等工具写了一个内核程序,可以在386机器上运行,从此开始Linux的发展之路。后来很多人觉得这个linux内核很不错,就一起研究。才有了今天Linux的壮举。
为什么称为GNU?GNU是(GNU‘S Not Unix,gnu不是Unix~),在程序中是无限循环意思。
什么是open source哪?程序的编写者,将源代码一起公布,供大家参考修改,二次开发。也就叫《开源》,如今有许多著名的软件都是开源了,还有一个专门用于开源代码的知名网站,GitHub,这个网站的源码,面向全世界,开源的代码数量更是不计其数,这就是GNU开源精神。
Linux操作系统介绍
kerne(系统内核)l+Softwares(软件)+tools(工具)我们称之为Linux distribution,翻译过来就是,linux发行商软件。
主流的linux操作系统
- Debian
- centos(停止维护)
- Ubuntu
- Gentoo
- RedHat
- Kali Linux
- Arch Linux
- OpenSuse
- Deepin(国产)
以上顺序不分排名。
程序和进程
- 什么是程序?程序就是开发人员编写好的代码信息,也就是源代码。
- 什么是进程?进程就是正在运行的程序,被称之为进程。
- 什么是守护进程?守护进程就是除非主动停止,否则一直都在运行的进程。
缓冲和缓存
- 缓冲(buffer): 它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
- Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。
举个例子,缓冲就相当于我们人坐地铁时,要进入地铁站,而如果人流量特别大,大家全都拥挤到地铁站,会导致地铁站的负载太大,根本没法正常运行了,但是如果大家排队依次进去,循序渐进,地铁站的压力一直维持在一个平均水品,那地铁站就能正常运行了。人人都有地铁坐。而写缓冲也就是这么个概念,我们要对磁盘写入数据,这个要进地铁站的人就代表数据,而内存里的缓冲区就代表排队,而地铁站内就是磁盘空间。
- 缓存(cache): 缓存的工作原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在CPU缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。
- Cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。简单来说就是buffer偏重于写,而cache偏重于读
举个例子,当我们要去打水喝,每次都需要,先把水从地下抽上来,然后取水喝水,如果人多了起来,那后面的人要想喝上水还不等的渴死啊。所以这时候,我们会先将水打上来,放到大水缸里,需要喝水直接在水缸里取,这样效率不是快很多嘛。打水这个过程就是我们通过读取磁盘等,效率较低的方式读取数据,而存储水的水缸就是缓存区,我们喝水的人,也就是要读取数据的程序。
服务器介绍
什么是服务器?服务器就是操作系统的媒介,操作系统是安装在服务器上的,而服务器就是计算机,电脑,但是他与平常的电脑最大的不同点是,他的很多硬件都是服务器规格,要保证,长时间运行不停止,依然不会出现问题,说白了就是非常高配置的电脑。
远程控制卡
- 远程控制卡的主要作用,是在服务器关机的状态下,可以控制服务器的运行,(开关机)和远程网络安装系统,因为我们的服务器为了724小时不间断运行,不能把服务器放在家里吧,所以一般服务器都在机房,机房有多条线路,电源,还有专人看守等,可以满足服务器724小时不间断运行的条件。所以我们要想在家远程控制机器的开关机,就需要到了远程控制卡,最主要的一个功能就是在服务器关机的状态下,通过远程的方式,也能将服务器开机。
服务器硬件介绍
- cpu路数:cpu路数就是cpu的颗数,也是最多几颗cpu,我们家用的电脑一般就一颗CPU,而前面提到了,服务器是非常高配置的电脑,所以一颗CPU的算力大概率满足不了业务需求,所以服务器一般都可以配置多个CPU,共同提供计算处理能力。
- cpu核数:服务器CPU核心数,核心处理服务器系统任务和并行处理任务能力,一个CPU可以拥有多个核心,可以理解一个核心处理一个任务,多个核心就能同时处理多个任务。
存储介质
-
内存:临时存储数据,重启后内存数据可能会丢失,因为内存的读取效率要比磁盘高,所以很多时候我们需要将数据存放在内存中,供我们加速读取,比如前面提到的读缓存,有时候缓存就是在内存中,加快了我们读取硬盘速度的效率。
-
硬盘:永久存储数据,数据不会轻易丢失。一份数据如何算作持久化存储?就是将数据存放在硬盘中,只存放在内存肯定不能算持久化,存到磁盘的数据,除非磁盘损坏,或者主动删除,否则不论重启还是关机等,都不会丢失。
存储效率:CPU>内存>固态硬盘>机械硬盘硬盘
机械硬盘转速信息: 家用的电脑: 5400–7200转速,企业服务器10k—15k转速,转速越高,读写也就越快。
硬盘存储容量单位:1024Byte == 1KB 1024KB == 1MB 1024MB == 1GB 1024GB == 1TB 1024TB == 1PB 1024PB == 1EB 1024EB == 1ZB
硬盘种类
硬盘接口种类可分为下面几种:
- IDE
- sata
- scsi
- sas(服务器硬盘主流接口)
- PCI-E(服务器固态硬盘接口)
服务器的电源
服务器电源要有冗余能力,前面也提到了,服务器要7*24小时不间断运行,所以电源非常重要,一旦服务器断电,所有的程序业务也就终止了,所以啊,电源一定要最好双路电源,也就是两路电路,一路停电了,另一路供上,初次以外还有UPS供电,就是给服务器装个电池,停电了,也能运行10-60分钟,够我们保存数据,应急处理等。有些机房还会有发电机或太阳能发电储能,以防万一。
- 服务器上要有多个电源
- 不间断供电系统 UPS (电池)可持续供电10—60分钟
- 要有发电机,以备不时之需。
生产中数据的读写方式
用户数据:写 → \rightarrow →保存到内存中(缓冲区) → \rightarrow →定时定量 → \rightarrow →存储到硬盘
用户数据:读 ← \leftarrow ←从内存中读取(缓存区) ← \leftarrow ←热点数据 ← \leftarrow ←存储硬盘中
操作系统的组成
- 操作系统是由,系统内核、机器语言(二进制)组成。
- 解释器 (bash),将我们输入的命令,转换为机器语言,二进制。
- 外围软件程序 如:C语言、Java、Python、Golang等。
我们给操作系统发出指令,操作系统通过系统内核的bash解释器,解析指令然后指示服务器的硬件工作,如CPU、硬盘、内存等。