计算机硬件组成详解

一.CPU详解

CUP的作用:程序员通过控制CPU, 由CPU这个组件下发指令来控制其他组件.

1.CPU的分类与指令集

1.1 指令集:

把程序员控制cpu的指令, 转成CPU操作某个组件的指令.这些指令不会自行的运行, 由人类控制它才能运行

1.2 CPU的分类

  • 精简指令集: 指令集简短, 能完成的事情非常简单.

优点: 不容易错, 更稳定.
缺点: 实现复杂操作的时候指令就会成堆.
作用: 针对稳定的需求, 针对大型计算机架构的服务器就需要精简的指令集.
例子: 网络设备, 服务器等.
  • 复杂指令集: 单条指令比较复杂.

优点: 单条指令集完成的事情比较多, 完成复杂的事情只需要几条指令集.
缺点: 单条指令指令比较复杂,容易出错不稳定.
作用: 针对功能更丰富,更强大的服务或设备就需要复杂指令集.
例子: 个人电脑等.
  • 拓展知识

中国计算机硬件行cpu行业的落后,更多的是cpu精简指令集的开发,做上层的开发,尤其是涉及到硬件方面,是比较薄弱的。

2.x86 -64

2.1 (x86):

指的是CPU的型号, 或者是CPU架构的一种统称

  • x86的来历

最早的那颗Intel发明出来的CPU代号称为8086,后来在8086的基础上又开发出了80285、80386....,因此这种架构的CPU就被统称为x86架构了。 
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机上面,因此,个人计算机常被称为x86架构的计算机!
程序员开发出的软件最终都要翻译成cpu的指令集才能运行,因此软件的版本必须与cpu的架构契合.
举个例子,我们在MySQL官网下载软件MySQL时名字为:Windows(x86,32-bit),ZIP Archive 或者 (mysql-5.7.20-win32.zip)   
我们发现名字中有x86,这其实就是告诉我们:该软件应该运行在x86架构的计算机上。

2.2 (64):

cpu的位数,指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的一次性能从内存中取出64位二进制指令。注意:CPU的取主要决定于内存一次性能给多少二进制指令。

  • 二进制的来历

内存基于电信号工作,人们定义高电频代表数字1,低电频代表数字0,0101之间高低电频的变化,就类比出了二进制。

2.3 CPU的向下兼容性:

x86-64的cpu既能运行64位的软件也能运行32位的软件。

64位的cpu读取提供32位指令集的内存,会在32位之前补全32个0。

3.内核态和用户态

  • 什么是内核态与用户态

CPU工作的两种状态, 就是CPU的运行状态,也叫计算机的运行状态
  • 为什么cpu要有这两种状态

避免代码进行潜在的危险操作,防止给操作系统带来隐患
  • CPU的 2 种指令集状态

    CPU是计算机系统最核心的硬件,而cpu的核心就是指令集,CPU有两种指令集状态:
    1://控制其他硬件的指令集, 
    2://运算相关的指令集
    
  • 内核态

    运行的程序是操作系统, 也就是操作系统当前工作的状态,也就是说当前状态下,cpu中所有的指令集开放(控制其他硬件的指令集 + 运算相关的指令集),可以操作硬件。(操作系统正在操控硬件)

  • 用户态

    运行的程序是应用程序,当前状态cpu中只开放运算相关的指令集,不能操作硬件。(应用程序正在运行)

  • 内核态与用户态的切换

    什么时候进行切换,应用程序的运行涉及到计算机硬件的操作,那就必须从用户态切换到内核态才能实现,因此计算机工作时频繁的发生内核态与用户态之间的转换。

4.多线程与多核芯片

  • 摩尔定律(moore)

摩尔(moore)定律指出, 计算机芯片的晶体管数量每18个月翻一倍, 现在已经不太确定了
  • 2 核 4 线程

2核代表有2个CPU,4线程指的是每个CPU都有2个线程,通常也叫假4核。
  • 4核8线程

4核代表有4个CPU,8线程指的是每个CPU都有2个线程,通常也叫假8核。

二.存储器

1.储存器结构:

  • 结构从上到下:cpu,寄存器,高速缓存,内存,硬盘,磁盘

  • 为了提高cpu读取数据的速度,所以在cpu与磁盘之间引入了内存,然后cpu从内存中读取数据其实也是慢的,所以之间加入的高速缓存,高速缓存还是不够块,又在cpu与高速缓存之间又增加了寄存器,这样一步一步提高cpu读取数据的速度。

img

  • 寄存器: 使用cpu同等材质制造而成,在cpu内部集成,存着cpu运行下一步操作立马需要的指令.

  • 高速缓存:存放cpu经常使用的数据。cpu读取数据的时候,先从高数缓存中查看自己所需要的数据,如果有直接从高速缓存中取走,速度很快:2ns(这叫高速缓存命中),如果没有才跑到内存中找.

2.RAM

  • RAM 英文全称 random access memory,又叫随机存取存储器。

  • 可存可取内存,断电数据丢失,就是我们通常所说的内存

拓展:

linux系统会把内存分为两种区域:
1.buffer:缓冲区, 攒一大波数据,在刷入硬盘
2.cache:缓存, 把硬盘的数据在内存中缓存好, CPU取得时候可以直接从内存中取.

ps:buffer与cache的区别是什么?

1.写入数据到内存, 这个数据的内存空间称为缓冲区(buffer),写入到内存buffer缓冲区, 写缓冲.
2.从内存读取数据, 这个存数据的内存空间称为缓存区(cache), 从内存cache读取缓存区, 度缓存.

3.ROM

  • ROM英文全称ready only memory又叫只读存储器。

  • 只读内存,出产自带。为了保证安全性计算机产商出产就往ROM中写死一段核心程序。这段核心程序叫BIOS(BIOS英文全称basic input output system,又叫基本输入输出操作系统),保证计算机在没有任何高级操作系统的前提下,计算机可以正常启动。

4.CMOS

  • 存放BIOS程序产生的数据, 比如: 启动设备的优先级等

在计算机领域,CMOS常指保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。
有时人们会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定。
  • 优点: 耗电量极低, 主板电池为时钟芯片供电, 时钟芯片存放在CMOS中.

  • 缺点: 数据容易丢失, 断电数据丢失

  • 拓展: 主板电池使用寿命为3~5年

5.机械硬盘

  • 什么是机械硬盘

    机械硬盘依赖于机械的运动, 盘片基于磁信号, 所以也称之为磁盘. 
    高磁信号代表:二进制 1
    低磁信号代表:二进制 0
    

img

  • 磁头

    负责读写数据

  • 磁道

    磁盘的数据, 对应的一串二进制, 图中的圈圈就是,一圈圈的.

    //单位换算:
    小写 b 代表着比特位
    大写 B 代表字节
    8bit(比特位) = 1Bytes(字节)
    1024Bytes = 1KBytes
    1024KBytes = 1MBytes
    1024MBytes = 1GBytes
    1024GBytes = 1TBytes
    1024TBytes = 1PBytes
    

    拓展: 对应产商的硬盘存储单位1000表示为一个单位, 例: 200G = 20010001000B

  • 扇区

    1. 一个扇区 = 512Bytes, 硬盘的一次性读写数据的最小单位就是一个扇区

    2. 由扇区拓展出操作系统的1次性读写单位:操作系统的1次性读写的单位是1个block块1个blcok = 8个扇区的大小,也就是4K。操作系统攒够了block块的容量才交给硬盘,以此来减少与硬盘打交道的次数,从而减少IO次数。

      buffer缓冲区--->大卡车
      操作系统的block块--->收纳箱
      硬盘的扇区--->单个快递盒子
      
    3. block块大小可以自定义,默认1个block等于8个扇区大小

  • 柱面

    1. 如图中所示, 所有的盘片上下形成的一个整体

    2. 磁盘的分区概念: 从第一个柱面开始, 到第二个柱面结束, 下面所有的范围看做一个整体,就是一个磁盘分区

注意:每个磁道上的扇区数量相同,磁盘上的磁道长度确实是长度不同,内圈的磁道短,越往外磁道的长短越长,但存贮资料时不是按磁道来存贮的,而是按扇区来存贮的,因此每圈磁道的容量是相同的!

7.IO延迟

  • 定义

1. IO延迟 = 平均寻道时间 + 平均延迟时间(一般为9ms)
2. 例子:假设当前硬盘转轴(盘片)转速是7200/min,也就是120/s,那么转一圈需要花费1/120≈8ms,半圈也就是4ms(假设找到数据要半圈)
  • 平均寻道时间

机械手臂从一个柱面随即移动到相邻的柱面的时间成为寻道时间。
找到了磁道就以为找到了数据所在的那个圈圈,但是还不知道数据具体在这个圈圈的具体位置。
所以机械手臂移动柱面的时间,就叫平均寻道时间。
目前受限于物理工艺水平目前机械硬盘可以达到得是5ms
  • 平均延迟时间

1. 机械手臂到达正确的磁道之后还必须等待旋转到数据所在的扇区,这段时间就叫平均延迟时间。 
2.基于上面例子,转半圈需要花费4ms,受限于硬盘得转速
  • 硬盘读写慢的原因

1. 由上述可知,硬盘主要是慢在找数据得过程,读数据是很快得过程。因此想优化程序运行效率,就要让程序减少与硬盘打交道的过程,数据能从内存取,就不要从硬盘取。
2. 文件读写就是与硬盘打交道的过程,因此要减少文件的读写操作.
3. 文件是操作系统给人提供操作硬盘的虚拟单位

7.固态硬盘

  • 固态硬盘基于电工作,取代了机械硬盘容易损坏的缺点

  • 使用的是物理元件, 闪存芯片

8.虚拟内存

  • 当内存不够用的时候, 在硬盘上划出一块空间, 这个空间就叫虚拟内存.

  • linux系统中的 swap 分区就是虚拟内存.

  • 作用: 当内存不够用的时候, 保证程序的正常运行.

9.磁带

  • 一般用于备份, 价格低, 容量大, 便于携带

三.操作系统的启动流程

1.未安装高级操作系统时的硬件

  • CPU

  • ROM: 充当内存, 存放BIOS系统, BIOS能保证没有安装高级操作系统的情况下,正常启动.

  • CMOS: 充当硬盘, 存放BIOS程序产生的数据

2.安装高级操作系统后的硬件

  • CPU

  • RAM: 开机之后, 操作系统就加载到内存.

  • 本地硬盘: 分区, 启动盘(一般是C盘)存放操作系统.

3.启动流程

  • 计算机通电

  • 优先加载BIOS, 硬件自检: CPU, 内存, 硬盘等.

  • BIOS读取CMOS存储器中的参数, 选择启动设备

  • 从启动设备上(也就是即将安装的操作系统)读取第一个扇区的内容(称之为主引导记录MBR).

MBR主引导记录:MBR主引导记录共512字节
1.前446字节:boot loader-->grub程序
2.后64字节为分区信息
3.最后2字节为标志位。
  • grub程序负责将操作系统内核装载入内存,启动正真意义上的操作系统。

该分区信息指的就是上面所读取第一个扇区内容得后64个字节的分区信息.
  • 然后正真意义上的操作系统询问BIOS,以获取配置信息。对于每种设备,操作系统会检查其设备驱动程序是否存在,如果没有,操作系统会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核,完成了BIOS与操作系统的交接,获取了控制所有硬件的最高权限。

四.总线

img

  1. 计算机所有组成部分就是硬件, 他们都集成在一块板子上,这个板子就是主板, 而总线就是组件与组件之间来回传输数据的桥梁.

  2. 北桥(PCI桥): 负责连接CPU与内存, 图中可以看出北桥连接的都是高速硬件.

  3. 南桥(ISA桥): 负责连接SCSI(硬盘的一种接口), USB(外部设备的一些接口), 图中可以看出板桥连接的都是慢速设备.

五.网线

  • 常用线序:橙白, 橙, 绿白, 蓝, 蓝白, 绿, 棕白, 棕

  • 千兆网卡–>双绞线

  • 万兆网卡–>光纤

六.计算机系统结构图

img