在谈linux之前,需要先了解一下,Unix历史。早在Linux出现之前的二十年(1970年代),就有一个相当稳定而成熟的操作系统了,那就是Linux的前身Unix,其实也可以说没有Unix就没有今天的Linux,但为什么Unix淡出了人们的视野呢,我们带着疑问往下了解。
linux的核心是由Linus Torvalds(林纳斯·本纳第克特·托瓦兹)在1991年时候开发出来的,放在网络上给大家提供下载,后来大家感觉此物好用而精简,随后才有了更多的相关技术人员去下载研究他了,那为什么这么多人喜欢它呢,下面慢慢说来,林纳斯·本纳第克特·托瓦兹本人:
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:
1991年芬兰的赫尔辛基大学的Linus Torvalds(拖瓦兹,莱纳斯),他使用bash,gcc等工具写了一个内核程序,可以在386机器上运行,从此开始Linux的发展之路。后来很多人觉得这个linux内核很不错,就一起研究。才有了今天Linux的壮举。
为什么称为GNU?GNU是(GNU‘S Not Unix,gnu不是Unix~),在程序中是无限循环意思。
什么是open source哪?程序的编写者,将源代码一起公布,供大家参考修改,二次开发。也就叫《开源》,如今有许多著名的软件都是开源了,还有一个专门用于开源代码的知名网站,GitHub,这个网站的源码,面向全世界,开源的代码数量更是不计其数,这就是GNU开源精神。
kerne(系统内核)l+Softwares(软件)+tools(工具)我们称之为Linux distribution,翻译过来就是,linux发行商软件。
以上顺序不分排名。
举个例子,缓冲就相当于我们人坐地铁时,要进入地铁站,而如果人流量特别大,大家全都拥挤到地铁站,会导致地铁站的负载太大,根本没法正常运行了,但是如果大家排队依次进去,循序渐进,地铁站的压力一直维持在一个平均水品,那地铁站就能正常运行了。人人都有地铁坐。而写缓冲也就是这么个概念,我们要对磁盘写入数据,这个要进地铁站的人就代表数据,而内存里的缓冲区就代表排队,而地铁站内就是磁盘空间。
举个例子,当我们要去打水喝,每次都需要,先把水从地下抽上来,然后取水喝水,如果人多了起来,那后面的人要想喝上水还不等的渴死啊。所以这时候,我们会先将水打上来,放到大水缸里,需要喝水直接在水缸里取,这样效率不是快很多嘛。打水这个过程就是我们通过读取磁盘等,效率较低的方式读取数据,而存储水的水缸就是缓存区,我们喝水的人,也就是要读取数据的程序。
什么是服务器?服务器就是操作系统的媒介,操作系统是安装在服务器上的,而服务器就是计算机,电脑,但是他与平常的电脑最大的不同点是,他的很多硬件都是服务器规格,要保证,长时间运行不停止,依然不会出现问题,说白了就是非常高配置的电脑。
内存:临时存储数据,重启后内存数据可能会丢失,因为内存的读取效率要比磁盘高,所以很多时候我们需要将数据存放在内存中,供我们加速读取,比如前面提到的读缓存,有时候缓存就是在内存中,加快了我们读取硬盘速度的效率。
硬盘:永久存储数据,数据不会轻易丢失。一份数据如何算作持久化存储?就是将数据存放在硬盘中,只存放在内存肯定不能算持久化,存到磁盘的数据,除非磁盘损坏,或者主动删除,否则不论重启还是关机等,都不会丢失。
存储效率:CPU>内存>固态硬盘>机械硬盘硬盘
机械硬盘转速信息: 家用的电脑: 5400–7200转速,企业服务器10k—15k转速,转速越高,读写也就越快。
硬盘存储容量单位:1024Byte == 1KB 1024KB == 1MB 1024MB == 1GB 1024GB == 1TB 1024TB == 1PB 1024PB == 1EB 1024EB == 1ZB
硬盘接口种类可分为下面几种:
服务器电源要有冗余能力,前面也提到了,服务器要7*24小时不间断运行,所以电源非常重要,一旦服务器断电,所有的程序业务也就终止了,所以啊,电源一定要最好双路电源,也就是两路电路,一路停电了,另一路供上,初次以外还有UPS供电,就是给服务器装个电池,停电了,也能运行10-60分钟,够我们保存数据,应急处理等。有些机房还会有发电机或太阳能发电储能,以防万一。
用户数据:写 → \rightarrow →保存到内存中(缓冲区) → \rightarrow →定时定量 → \rightarrow →存储到硬盘
用户数据:读 ← \leftarrow ←从内存中读取(缓存区) ← \leftarrow ←热点数据 ← \leftarrow ←存储硬盘中
我们给操作系统发出指令,操作系统通过系统内核的bash解释器,解析指令然后指示服务器的硬件工作,如CPU、硬盘、内存等。