计算机基本体系结构
CPU(运算器、控制器、寄存器)
运算器:进行数字运算、逻辑运算
控制器:控制数据的存取
寄存器:运算过程中数据的暂存位置
RAM
数据存储单元,每8位一个存储单元,称为cell
每个cell都有一个唯一的十六进制地址标识,0x00,00x01
为了确保CPU能在内存中寻址寻找数据,中间需要一个中间件,称为north bridge
CPU采用线路复用(32位电路)的方式完成数据寻址、数据存储等,例如00表示寻址、01表示数据读取等
PAE Physical Address Extension 物理地址扩展
在32位电路上又加了4位电路, 使32位CPU支持能够使用大于4G的内存
CPU缓存
将RAM中具有热区的数据缓存,加快CPU读取数据速度(20%)
当缓存占满时,会使用一定的置换策略进行数据置换(例如LRU),用于确保当后续数据需要被载入时有足够的空间
依赖于程序局部性
空间局部性:缓存加载数据时,除了加载对应cell的数据外,还会加载其附近的数据
时间局部性:一段数据被访问一次,其可能在一段时间内会再被访问
缓存类型:
一级缓存
一级指令缓存
一级数据缓存
二级缓存
三级缓存
一级、二级缓存对于多个CPU或者多核CPU来说是独有的
三级缓存是所有CPU共享的
由于RAM与缓存的空间相差太大,会导致缓存命中率低,采用了N路关联技术(一路关联、二路关联、四路关联、八路关联)
CPU处理写操作时,由于CPU是直接和一级缓存打交道,也就意味着该数据的修改会通知一级缓存、二级缓存、三级缓存、内存,此技术称为通写write through
另外一种技术称为write back,回写,CPU对缓存数据进行修改后,不会立即更新到RAM,只有数据要被缓存通过某种置换策略丢弃时才会被同步到RAM
显卡 同样需要北桥与CPU进行大量数据交换
I/O设备[磁盘、网卡、键盘、鼠标等]通过插入South Bridge,再通过North Bridge与CPU进行关联
高速IO PCI-E插槽,接入North Bridge
低速IO PCI[外部设备互联]插槽,接入South Bridge
CPU架构
SMP 对称多处理器
NUMA 非一致性内存访问
CPU如何区分不同的I/O设备? I/O Port
任何一个I/O设备为了和CPU进行数据交互,都要向CPU申请一片连续的I/O port
I/O设备控制器/适配器
将对应的I/O设备的信息转换成总线上可以传输的信号、进行信号的校验等
CPU如何获知哪个外部设备来了数据?
Poll:CPU轮询,效率低
通知机制
为了确保I/O设备与CPU进行数据信号交互,每个I/O设备需要向CPU中断控制器注册信号通路
CPU中断控制器[Interrupt Controller],即CPU暂停处理当前的事务,来接收外部设备来的信号,最起码先把信号加载到内存
CPU Context Swith: 上下文切换 ,进程在CPU上切换被CPU执行
DMA: Director Memory Access
CPU如果总是控制I/O设备读取数据,效率低下;其解决方案,CPU检测到I/O设备支持通过DMA机制,CPU将给DMA进行授权,让DMA由DMA芯片控制I/O设备将数据读取到内存,DMA一般是把数据读取到内存中最容易寻址的一块区域;内存中还有一块底层区域用于BIOS
DMA数据读取完成后,要向CPU中断控制器发送信号,告之CPU数据加载完成
临界区
指的是有可能发生总线冲突的区域
由于各硬件设备的速度差异较大,因此CPU还要具有能够协调各硬件协同工作的能力;通过脉冲信号(电平信号)完成
<================================================================================>
OS
Process: 进程
每个进程运行过程中要获取硬件资源
系统资源:CPU时间、存储空间
如何让CPU运行多个进程?
在CPU上按时间进行切片,也就是说CPU会为每个进程指令分配一定的运行时间
由指令计数器记录每个进程在时间片结束时,其指令运行的条目数
进程在运行时还需要RAM进行数据保存,如何确保多个进程共同使用RAM存储数据且不冲突?
按内存空间进行切片是不合适的
进程结束时可能会造成内存中存在好多漏洞
万一事先分配的内存空间不足,可能会覆盖其他进程所使用的内存空间
如何解决?
事先切割内存,以4K为默认单位,每个4k的存储槽称为页框page frame,每个4k中存储的数据称为页面page
在此基础上加一个映射机制,让每一个进程都认为自己拥有完整的内存使用,此映射器中用于保存线性地址与物理地址的映射关系
每个进程认为自己拥有的内存地址空间称为线性地址,真实的内存称为物理地址
I/O设备
内核 --> 进程
CPU在运行内核进程时,称为内核模式
CPU在运行用户空间进程时,称为用户模式,而用户模式的进程是不允许直接操作硬件的
CPU在进行一些指令时是分级别的,或者称为ring
ring -1 硬件辅助虚拟化
ring 0 特权指令
ring 1
ring 2
ring 3 用户空间指令,完全虚拟化[纯软件模拟]