CPU的制作过程
CPU是如果制作的
CPU的原理
汇编语言的执行过程
汇编语言的本质:机器语言的助记符 其实就是机器语言
执行过程 :计算机通电->cpu读取内存中的程序(电信号输入)->时钟发生器不断震荡通电->推动cpu内部一步一步执行(执行多少取决于指令需要的时钟周期)->计算机完成->写回(信号)->写给显卡输出(图形)
计算机的组成
CPU的组成
PC -> Program Counter 程序计数器 (记录当前指令地址)
Registers -> 暂时存储CPU计算需要用到的数据
ALU -> Arithmetic & Logic Unit 运算单元
CU -> Control Unit 控制单元
MMU -> Memory Management Unit 内存管理单元
CPU的乱序执行
cpu在进行读等待的同时执行指令,是cpu乱序的根源不是乱,而是提高效率
CPU层面:Intel -> 原语(mfence lfence sfence) 或者锁总线
JVM层级:8个hanppens-before原则 4个内存屏障 (LL LS SL SS)
as-if-serial : 不管硬件什么顺序,单线程执行的结果不变,看上去像是serial
CPU 合并写
Write Combining Buffer
一般是4个字节
由于ALU速度太快,所以在写入L1的同时,写入一个WC Buffer,满了之后,再直接更新到L2
UMA:统一访问内存
NUMA
Non Uniform Memory Access
ZGC - NUMA aware
分配内存会优先分配该线程所在CPU的最近内存
系统启动过程
通电 -> bios uefi 工作 -> 自检 -> 到硬盘固定位置加载bootloader -> 读取可配置信息 -> CMOS-》0x7c00(系统内存引导地址)-》操作系统
OS
微内核 - 弹性部署 5G IoT
宏内核 - PC phone
外核 - 科研 实验中 为应用定制操作系统 (多租户 request-based GC JVM)
cpu分不同的指令级别
linux内核跑在ring 0级, 用户程序跑在ring 3,对于系统的关键访问,需要经过kernel的同意,保证系统健壮性
内核执行的操作 - > 200多个系统调用 sendfile read write pthread fork
JVM -> 站在OS老大的角度,就是个普通程序
面试高频:进程和线程有什么区别?
答案:进程就是一个程序运行起来的状态,线程是一个进程中的不同的执行路径。专业:进程是OS分配资源的基本单位,线程是执行调度的基本单位。分配资源最重要的是:独立的内存空间,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)
纤程:用户态的线程,线程中的线程,切换和调度不需要经过OS
优势:1:占有资源很少 OS : 线程1M Fiber:4K 2:切换比较简单 3:启动很多个10W+
目前2020 3 22支持内置纤程的语言:Kotlin Scala Go Python(lib)... Java? (open jdk : loom)
原文:https://www.cnblogs.com/btdxqz/p/13385042.html