每日一档之计算机底层知识

183 阅读2分钟

计算机底层知识

  • 微机原理
  • 计算机组成原理
  • 操作系统

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还在探索