首页 > 编程语言 > 详细

Java程序员应该掌握的底层知识

时间:2020-07-28 01:15:13      阅读:103      评论:0      收藏:0      [点我收藏+]

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)

 

Java程序员应该掌握的底层知识

原文:https://www.cnblogs.com/btdxqz/p/13385042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!