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