并发_JMM与并发三大特性
2023-03-29 15:01:13 13 举报
AI智能生成
为你推荐
查看更多
JMM,并发
作者其他创作
大纲/内容
控制器(Control)
运算器(Datapath)
存储器(Memory)
输入(Input system)
输出(Output system)
计算机五大核心组成部分
控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和 操作控制器OC(Operation Controller) 等组成
控制单元
运算单元是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较
运算单元
存储单元包括 CPU 片内缓存Cache和寄存器组,是 CPU 中暂时存放数据的地方
数据单元
CPU指令结构
L1 Cache,分为数据缓存和指令缓存,逻辑核独占
L2 Cache,物理核独占,逻辑核共享
L3 Cache,所有物理核共享
三级缓存结构
存储器存储空间大小:内存>L3>L2>L1>寄存器
存储器速度快慢排序:寄存器>L1>L2>L3>内存;
特点
高速缓存以解决I\\O速度和CPU运算速度之间的不匹配问题
CPU缓存结构
操作系统内部内部程序指令通常运行在ring0级别
Linux与Windows只用到了2个级别:ring0、ring3
,操作系统以外的第三方程序运行在ring3级别
所以线程阻塞唤醒是重型操作了
ring0ring1ring2ring3
4个运行级别
CPU运行安全等级
可由用户代码 和 内核代码进行引用
用户空间
只能由内核代码进行访问
内核空间
因为有两种空间,进程与线程只能运行在用户方式(usermode)或内核方式(kernelmode)下
内核线程(KLT)
用户线程(ULT)
内存管理
在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就是局部性原理
时间局部性(Temporal Locality)
如果一个存储器的位置被引用,那么将来他附近的位置也会被引用
比如顺序执行的代码、连续创建的两个对象、数组等
例如一个二维数据求和,你横向相加的速度,必定快于纵向相加的速度
空间局部性(Spatial Locality)
局部性原理
CPU高速缓存
计算机基础
JMM是围绕原子性,有序性、可见性展开
是共享数据区域
所有线程创建的实例对象都存放在主内存中
实例对象是成员变量还是方法中的本地变量(也称局部变量)
类信息
常量
态变量
信息包括
多条线程对同一个变量进行访问可能会发生线程安全问题
主内存
主要存储当前方法的所有本地变量信息
还有主内存中的变量副本拷贝
线程中的本地变量对其它线程是不可见的
线程间无法相互访问工作内存,因此存储在工作内存的数据不存在线程安全问题。
工作内存
寄存器
缓存
硬件内存
JMM只是一种抽象的概念,是一组规则,并不实际存在
JMM
内存模型与硬件内存架构的关系
lock(锁定)
unlock(解锁)
read(读取)
load(载入)
use(使用)
assign(赋值)
store(存储)
write(写入)
八大原子操作
主内存与工作内存之间的具体交互协议
JMM模型
当一个线程修改了共享变量的值,其他线程能够看到修改的值
通过 volatile 关键字
通过 内存屏障
通过 synchronized
通过 Lock
通过 final
保证可见性
可见性
即程序执行的顺序按照代码的先后顺序执行
有序性
一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行
原子性
并发编程的可见性,原子性与有序性问题
JMM与三大特性1
0 条评论
回复 删除
下一页