首页 Linux教程Linux 计算机基础

Linux经典入门教程

Linux 操作系统安装

运维派是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai

1 计算机系统

计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备

计算机有很多形式,比如:生活中常见的家用电脑,笔记本,智能手机,平板电脑等,还有生产环境中提供重要业务支撑的各种服务器(Server),都算是计算机。

其中一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成

1.1 计算机硬件

计算机发展历史:

  1. 第一代计算机(1946-1957)  电子管时代
  2. 第二代计算机(1958-1964) 晶体管时代
  3. 第三代计算机(1965-1970) 集成电路时代
  4. 第四代计算机(1971以后) 大规模集成电路时代
1.1.1 世界上第一台计算机

Linux 计算机基础插图

1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算

1.1.2 冯·诺依曼体系结构

Linux 计算机基础插图(1)

1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:

  1. 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
  2. 计算机应该按照程序顺序执行
  3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

冯·诺依曼

Linux 计算机基础插图(2)

早期计算机系统的输入设备:穿孔纸带

Linux 计算机基础插图(3)

1.1.2.1 二进制和十进制转换
  • 2^0=1=1
  • 2^1=2=10
  • 2^3=8=1000
  • 2^4=16=10000
  • 2^5=32
  • 2^6=64
  • 2^7=128=10000000
  • 2^8=256=100000000
  • 2^9=512
  • 2^10=1024=
  • 2^11=2048
  • 2^12=4096
1.1.2.2 常见单位
  • 10的36次方 X
  • 10的33次方 C
  • 10的30次方 D
  • 10的27次方 N
  • 10的24次方 B
  • 10的21次方 Y
  • 10的18次方 E
  • 10的15次方 P
  • 10的12次方 T 二进制 2^40
  • 10的 9次方 G 二进制 2^30
  • 10的 6次方 M 二进制 2^20
  • 10的 3次方 K 二进制 2^10=1024
  • 10的 2次方 百
  • 10的 1次方 十
  • 10的-1次方 分 d
  • 10的-2次方 厘 c
  • 10的-3次方 m
  • 10的-6次方 μ
  • 10的-9次方 n
  • 10的-12次方 p
  • 10的-15次方 f
  • 10的-18次方 a
1.1.3 摩尔定律

由英特尔(Intel)创始人之一戈登·摩尔于1965年提出,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍

Linux 计算机基础插图(4)

1.1.4 计算机分类
1.1.4.1 按规模划分
  1. 超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机
  2. 大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe
  3. 小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能 64 位计算机。在中国,小型机习惯上用来指UNIX服务器
  4. 微型计算机:指采用 X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司发起去IOE运动,代替小型机
1.1.4.2 按功能和角色划分

服务器和客户机
服务器:即 Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务

客户机:即 Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机

服务器按应用功能可分为: Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器、ERP服务器等

1.1.4.3 服务器按外形分类

PC服务器常见的三种外型:

  • 塔式服务器
  • 刀片式服务器
  • 机架式服务器

塔式Tower服务器

Linux 计算机基础插图(5)

早期的服务器形式,目前较少使用 外形以及结构和平时使用的立式PC差不多 机箱空间大,主板扩展性较强,插槽较多 预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪

刀片式Blade服务器

Linux 计算机基础插图(6)

在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度

更高的密度,集中管理,高性能,灵活扩展,按需配置

可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务

机架式Rack服务器

Linux 计算机基础插图(7)

Linux 计算机基础插图(8)

  • 按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器
  • 机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器
  • 机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)
  • 现阶段是最主流的的服务器
1.1.5 服务器硬件组成

Linux 计算机基础插图(9)

服务器配置示例(参考价格47588元)

Linux 计算机基础插图(10)

1.1.5.1 服务器硬件---CPU

Linux 计算机基础插图(11)

CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分

CPU 架构:

  • CISC:Complex Instruction Set Computer,复杂指令集
  • RISC:Reduced Instruction Set Computer,精减指令集

精减指令集和复杂指令集:

早期计算机一直沿用CISC指令集方式。它的设计目的是要用最少的机器语言指令来完成所需的计算任务。在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。CISC的指令系统庞大,功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂; 无法并行;无法兼容。大约20%的指令占据了80%的处理器时间。其余80%指令使用频度只占20%的处理机运行时间。由此CISC生产厂商长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器,同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误。目前个人计算机x86体系 CPU 厂商一直在走CISC的发展道路,包括Intel、AMD、 VIA(威盛)等。之所以称为X86,是因为最早Intel的CPU型号是8086,后来出现了80286,80386,80486,80586等,所以之后的Intel和其兼容的厂商的生产CPU都称为X86 CPU。而后CPU从最初的8 位,16位,32位,发展到目前主流的64位。为了区别非64位的CPU,一般将64位的CPU称为X86-64。由于最早在1999由AMD设计公开 64 位技术,称为 x86-64,后来改名为 AMD64,不同厂商称呼有所不同,所以AMD 64,x86-64,x64都指的是64位的基于X86的CPU。

因为CISC存在上面的问题,于是有了RISC,它是图灵奖得主John L. Hennessy和David A. Patterson对行业的重大贡献,由加州大学伯克利分校于1980年发布,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,使其实现更容易,指令并行执行程度更好,此称为精简指令集RISC(Reduced Instruction Set Computing)。精减指令集其风格是强调计算机结构的简单性和高效性,其特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水线技术。当需要完成复杂任务时,就由多个指令组合来实现。常用的精简指令集微处理器包括:ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等。说到这里不得不提一下ARM,全世界超过95%的智能手机和平板电脑都采用ARM架构,当前最先进的华为的海思麒麟990 CPU,高通的骁龙865 CPU,苹果的A13 CPU也都属于ARM架构。ARM可以说是目前世界上使用最广泛的CPU架构了。

CPU类型

  • X86:CISC
  • ARM:Acorn RISC Machine 高通,华为麒麟
  • RISC-V 阿里玄铁910
  • MIPS 龙芯
  • Power:IBM
  • Powerpc:apple,ibm,moto
  • Ultrasparc :Sun
  • Alpha:HP
  • 安腾:compaq

服务器CPU公司

  • Intel: Xeon 至强 Itanium 安腾
  • AMD: Althlon MP
  • IBM: Power

按照CPU体系架构来区分,服务器主要分为两类: x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高 非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统

微处理器 1971年11月15日,Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。性能很低,但它的集成度却要高很多,一块4004的重量还不到一盅司 Intel从8086开始,就进入了我们常说的x86时代。而80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU,就是传说中的IA-32时代 x86-64( 又称x64,即英文词64-bit extended,64位拓展 的简写)是x86架构的64位拓展,向后兼容于16位及32位的x86架构。x64于1999年由AMD设计,AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T” Intel公司的CPU发展历程

Linux 计算机基础插图(12)

CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样 外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率 倍频:倍频则是指CPU外频与主频相差的倍数 三者关系是:主频=外频x倍频 高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3 内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度 地址总线宽度:决定了CPU可以访问的物理地址空间

1.1.5.2 服务器硬件---主板

Linux 计算机基础插图(13)

主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一 主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件

1.1.5.3 服务器硬件---内存

Linux 计算机基础插图(14)

内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路 内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大

外存:硬盘,U盘,软盘,光盘

内存和外存的区别:

  • 内存断电后数据丢失
  • 外存断电后数据可以保存

服务器内存常用技术:

1、 在线备用内存技术

  • 当主内存或者是扩展内存中的内存出现多位错误时或者出现物理内存故障时,服务器仍继续运行
  • 由备用内存接替出现故障内存的工作
  • 备用的内存区域必须比其它区域的内存容量要大或相同

2 、内存镜像

  • 镜像为系统在出现多位错或内存物理故障时提供数据保护功能,以保证系统仍能正常的运行
  • 数据同时写入两个镜像的内存区域
  • 从一个区域进行数据的读取

**容量:**即该内存的存储容量,单位一般为GB

内存带宽: 内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位 单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是双通道内存就要再乘以2

计算公式:内存带宽=内存总线频率×数据总线位数/8

范例:

单通道DDR(Double Data Rate双倍速率)内存带宽计算 DDR4-4000:4000MHz*64bit/8=32000MB/S DDR4-3600:3600MHz*64bit/8=28800MB/S

双通道: DDR4-4000:4000MHz*64bit*2/8=64000MB/S

1.1.5.4 服务器硬件---硬盘

Linux 计算机基础插图(15)

常见的磁盘接口种类:

  • IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口
  • SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口
  • SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口
  • SAS:Serial Attached SCSI,是目前服务器上主流的接口
  • 光纤通道:Fiber Channe,高性能服务器上采用的接口
  • M.2 :固态硬盘接口,性能更强

结构分类

  • 机械硬盘HDD(Hard Disk Drive)
  • 固态硬盘SSD(Solid State Drives )

机械硬盘:

Linux 计算机基础插图(16)

  • 存储介质(Media)——盘片 盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何暇疵
  • 读写磁头(Read Write Head)——磁头 磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输
  • 马达( Spindle Motor & Voice Coil Motor ) 马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不产生高温躁音

机械硬盘基本参数:

  • 容量:容量是硬盘最主要的参数。单位有MB、GB、TB,常见容量:500GB,1T,2T,3T,4T,6T
  • 转速:转速是指硬盘盘片每分钟转动的圈数,单位为rpm。常见:7200rpm,10000rpm,15000rpm
  • 传输速率:传输速率(Data Transfer Rate) 。硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s),常见:6Gb/s,12Gb/s
  • 缓存:硬盘缓存的目的是为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度
  • 磁盘尺寸:3.5”/2.5”/1.8”
  • 是否支持热插拔

SSD硬盘:

Linux 计算机基础插图(17)

SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘。其特别之处在于没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低

1.1.5.5 服务器硬件---网卡

Linux 计算机基础插图(18)

服务器都在主板上集成了网卡,传输速率为1Gbps,即千兆网卡

特殊应用需要高端网卡,如光纤网卡,Infiniband网卡等,传输速率能达到10Gbps、20Gbps,即万兆网卡

1.1.5.6 服务器硬件---相关其它硬件

服务器硬件---阵列卡

Linux 计算机基础插图(19)

Raid卡用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU的资源得以释放,阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统 阵列卡可以用来提高磁盘子系统的性能及可靠性 支持的多种RAID级别,RAID0,1,5,6等 阵列卡提供缓存及电池保护

服务器硬件---电源

Linux 计算机基础插图(20)

支持服务器的电力负载,支持冗余,防止电源故障 ,故障预警和防止 ,故障之前的预防性维护,保证服务器持续运行,电源子系统包括:冗余电源和风扇

服务器硬件---显卡

服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M,GPU: Graphic Processing Unit,即“图形处理器”

服务器硬件---热插拔技术

热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用

服务器硬件---机柜

Linux 计算机基础插图(21)

机架式服务器-服务器放置在机柜中

通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm)

外观尺寸一般为:宽600*深1000*高2000(mm)

在一个机架上,累计设备U数一般不超过26U,全1U设备部署数量一般不超过16台,全2U设备一般不超过12台,全4U设备一般4到7台

机架式服务器-机架及其配件

Linux 计算机基础插图(22)

1.1.5.7 各种硬件处理速度和性能优化

服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈

电脑的各个设备部件之间的延时从高到底的排列,依次是机械硬盘、固态硬盘、内存、CPU

Linux 计算机基础插图(23)

上图可以看到,CPU最快,一个时钟周期是0.3纳秒,内存访问需要120纳秒,固态硬盘访问需要50-150微秒,传统硬盘访问需要1-10毫秒, 网络访问最慢,都是几十毫秒。 上图最有趣的地方在于它把计算机世界的时间和人类世界的时间做了对比,常常把CPU比喻成跑得很快,但是记不住事情的“阿甘”, 他的一个时钟周期如果按1秒算: 内存访问就是6分钟 一次 CPU 上下文切换(系统调用)需要大约需要1小时 在 1Gbps 的网络上传输 2K 的数据需要10多个小时 从 SSD 读取 1MB 的顺序数据,大约需要 1ms,换算成人类时间是 1个月 从磁盘读取 1MB 连续数据需要 20ms,换算成人类时间是 20个月 如果说打开一个网页可以秒开的话,那也相当于100年

对于CPU来说,这个世界真是太慢了!

存储器的层次结构

从两幅图看计算机的本质

上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案

并发和多线程 CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:

  1. 人类需要多个程序“同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一种多个程序同时在运行的假象,即并发
  2. 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,一定要切换,去执行别的程序。

说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来表示,这就是进程了。如果一个进程只有一个“执行流”, 如果进程去等待硬盘的操作,那这个程序就会被阻塞,无法响应用户的输入了,所以必须得有多个“执行流”,即多线程

缓存 需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢?

可以把最常访问的热点数据放到CPU的缓存中嘛, 其实CPU也是这么做的,但是CPU的L1, L2, L3级缓存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库数据怎么保持一致性?

缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式啊,用什么算法?.....

异步 对于Tomcat这样的应用服务器,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来, Tomcat会建立1万个线程来处理吗? 不会的,因为线程多了开销会很大 ,线程切换起来也很慢,所以它只好用个线程池来复用线程。现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去访问硬盘,数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回(阻塞了),那剩下的九千个请求就没法处理了,对吧?所以后来人们就发明了新的处理办法,仅使用几个线程(例如和CPU核心数量一样),让他们疯狂运行,遇到I/O操作,程序就注册一个钩子函数放在那里,然后线程就去处理别的请求,等到I/O操作完成了,系统会给这个线程发送一个事件, 线程就回过头来调用之前的钩子函数(也叫回调函数)来处理。

这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想。

单线程 Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢? 它为什么不像Tomcat那样使用多线程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作不知道要快到哪里去了所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁!

本文链接:http://www.yunweipai.com/33771.html

Linux经典入门教程

Linux 操作系统安装

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部