计算机底层知识
- 微机原理
- 计算机组成原理
- 操作系统
CPU基本组成
PC -> Program Counter 程序计数器 (记录当前指令地址)
Registers -> 寄存器 ,暂时存储CPU计算需要用到的数据
ALU -> Arithmetic & Logic Unit 运算单元
CU -> Control Unit 控制单元
MMU -> Memory Management Unit 内存管理单元
缓存
-
缓存一致性协议
MESI -
缓存行
缓存行越大,局部性空间效率越高,但读取时间慢
缓存行越小,局部性空间效率越低,但读取时间快
取一个折中值,目前多用:64字节 -
缓存行对齐 @Contended
CPU乱序执行
-
本质
为了提升效率 -
导致问题
乱序执行 -
禁止重排序
内层屏障- CPU层级
intel 源语 原语(mfence lfence sfence) 或者锁总线- JVM层级
8个hanppens-before原则 4个内存屏障 (LL LS SL SS)load + store 相互组成
hanppens-before原则
linux
操作系统和硬件访问指令级别 0 1 2 3
- 内核态 ---》 内核空间
- 可以访问ring 0
- 支持200多个系统调用
- 用户态 ---》 用户空间
- 可以访问ring 3
进程 线程 纤程
- 进程
进程在linux中也称为task
进程的描述符:PCB(process control block)
-
线程
- 僵尸线程
父进程产生(fork())子进程后,会维护子进程的一个PCB结构,子进程退出,由父程序如果没有释放,就成了僵尸进程,只会占用一个TCP- 孤儿线程
子进程结束之前,父进程已经退出 -
纤程(协程)
Q1: 纤程概念
a: 线程里面的线程,占用资源少,运行在用户空间,不涉及用户态和内合态的切换,线程在JVM和OS一一对应
Q2: 纤程的使用场景 VS 线程池
a: 很短的计算任务,并发量高,就没必要和内核打交道,
Q3:Java支持
a: 目前可通过类库使用,open JDK还在探索