怎么解决缓存一致性问题?总线锁,缓存锁,MESI

本文介绍了缓存一致性问题的产生原因,由于CPU与内存速度差异导致的高速缓存引入,进而引发一致性问题。文章讨论了总线锁和缓存锁两种解决方案,重点解析了缓存锁中的MESI协议,阐述了其保证数据一致性的机制。
摘要由CSDN通过智能技术生成

转载请注明出处:https://blog.csdn.net/martin_ke/article/details/88851393

在之前的文章Java并发编程------线程安全问题:原子性,可见性,有序性和其物理层原理中说到了缓存一致性的问题。那我们我们就聊聊从物理层面来说,缓存一致性是怎么保证的吧~

为什么会产生缓存一致性问题?

  • 由于CPU的高速发展,CPU的处理速度和读写内存的速度的脱节。所以出现了存在于内存和处理器之间的高速缓存。每一个核都会去维护其自己的高速缓存,而每个核的高速缓存是互相不可见的。进而就产生了缓存一致性问题。

图片来自朋友的简书https://www.jianshu.com/u/64f43a5add47

那么怎么解决缓存一致性问题呢?
答案是:总线锁,缓存锁。

总线锁
顾名思义,总线锁就是用来锁住总线的,我们可以通过上图来了解总线在这个场景中所处的位置。当一个CPU核执行一个线程去访问数据做操作的时候,它会向总线上发送一个LOCK信号,此时其他的线程想要去请求主内存的时候,就会被阻塞,这样该处理器核心就可以独享这个共享内存。可以理解为,总线锁通过把内存和CPU之间

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值