🍗计算机硬件组成详解
一.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读取数据的速度。
- 寄存器: 使用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
-
磁头
负责读写数据
-
磁道
磁盘的数据, 对应的一串二进制, 图中的圈圈就是,一圈圈的.
//单位换算: 小写 b 代表着比特位 大写 B 代表字节 8bit(比特位) = 1Bytes(字节) 1024Bytes = 1KBytes 1024KBytes = 1MBytes 1024MBytes = 1GBytes 1024GBytes = 1TBytes 1024TBytes = 1PBytes
拓展: 对应产商的硬盘存储单位1000表示为一个单位, 例: 200G = 200*1000*1000B
-
扇区
-
一个扇区 = 512Bytes
, 硬盘的一次性读写数据的最小单位就是一个扇区 -
由扇区拓展出操作系统的1次性读写单位:操作系统的1次性读写的单位是1个block块,
1个blcok = 8个扇区的大小
,也就是4K。操作系统攒够了block块的容量才交给硬盘,以此来减少与硬盘打交道的次数,从而减少IO次数。buffer缓冲区--->大卡车 操作系统的block块--->收纳箱 硬盘的扇区--->单个快递盒子
-
block块大小可以自定义,默认1个block等于8个扇区大小
-
-
柱面
- 如图中所示, 所有的盘片上下形成的一个整体
磁盘的分区概念
: 从第一个柱面开始, 到第二个柱面结束, 下面所有的范围看做一个整体,就是一个磁盘分区
注意
:每个磁道上的扇区数量相同,磁盘上的磁道长度确实是长度不同,内圈的磁道短,越往外磁道的长短越长,但存贮资料时不是按磁道来存贮的,而是按扇区来存贮的,因此每圈磁道的容量是相同的!
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与操作系统的交接,获取了控制所有硬件的最高权限。
通过BIOS重置密码:https://www.cnblogs.com/songhaixing/p/13650755.html
四.总线
- 计算机所有组成部分就是硬件, 他们都集成在一块板子上,这个板子就是
主板
, 而总线
就是组件与组件之间来回传输数据的桥梁. 北桥(PCI桥)
: 负责连接CPU与内存, 图中可以看出北桥连接的都是高速硬件.南桥(ISA桥)
: 负责连接SCSI(硬盘的一种接口), USB(外部设备的一些接口), 图中可以看出板桥连接的都是慢速设备.
五.网线
-
常用线序:橙白, 橙, 绿白, 蓝, 蓝白, 绿, 棕白, 棕
-
千兆网卡-->双绞线
-
万兆网卡-->光纤