JMM规范:Java内存模型与并发编程
2021-09-02 09:21:37 5 举报
JMM规范:Java内存模型与并发编程
作者其他创作
大纲/内容
用户空间
指令
Thread a
寄存器
3.load
Core 1:thread a
中断
注:每个线程有独享的工作内存,为了支持更多线程,大部分操作系统都会将缓存分配给工作内存
主内存 main memory
5.assign
栈、堆
主内存与缓存交互的基本单位:64byte
synchronizedcasreentrantlock
CPU 1
线程
指令:执行t2
空间局部性:一次缓存多个缓存行,便于数组等临近位置将来可能被使用的情况
CPU读取内存原则
6.store
共享变量
缓存行
创建阻塞唤醒销毁
Core 2
1. 内核管理线程的生命周期,需要频繁的在用户/内核两状态中切换,影响性能2. 通过减少线程数(使线程数与cpu核心数一致),减少上下文切换,提高性能
L2 cache 1MB
主内存
L2 cache
L1 cache256KB
1. 保存上下文(线程栈)2. 状态切换(用户态/内核态)3. CPU安全等级切换ring3/ring0
kernel内核指令
工作内存
L3 cache
进程2
L3 cache 6MB
方法区等
指令寄存器
L1 cache
7.wirte
线程表
BUS总线
CPU
执行引擎
程序计数器PC
C P U 缓 存 结 构
指令2
数据
指令1
4.从主存中查找
进程1
8大原子操作
1.lock /8.unlock
数据段
出参
BUS 总线
硬中断、软中断、时钟中断
+
4.use
Java进程
数据寄存器
2.read
3.查找3级缓存
Core 2:thread b
指令段
操 作 系 统 内 存 管 理 机 制
入参
1. 原子性2. 可见性3. 有序性
3大特性
1. lock2. unlock3. read4. load5. use6. assign7. store8. write
状态切换
KLT模式:由内核保存线程信息(状态、上下文)
保存t1上下文(t1挂起)
指向下一个指令
Java 内 存 模 型 & 8 大 原 子 操 作
Java KTL 模式
I/O
装载t2上下文(并执行)
1.查找1级缓存
内核空间
异步执行
时间局部性:变量在缓存中多驻留一段时间,便于循环等情况使用,减少寻址
指令:执行t1
进程表
加减乘除位移等
Thread b
硬盘
读/写
Core 1
不能直接交互需切换状态
DMA
ALU运算
2.查找2级缓存
0 条评论
回复 删除
下一页