
极简计算机发展史
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区。而刚开始用户磁盘和CPU进行交互,CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子。

单核CPU的性能不可能无限制的增长,要想很多的提升新能,需要多个处理器协同工作。 基于高速缓存的存储交互很好的解决了处理器与内存之间的矛盾,也引入了新的问题:缓存一致性问题。在多处理器系统中,每个处理器有自己的高速缓存,而他们又共享同一块内存(下文成主存,main memory 主要内存),当多个处理器运算都涉及到同一块内存区域的时候,就有可能发生缓存不一致的现象。为了解决这一问题,需要各个处理器运行时都遵循一些协议,在运行时需要用这些协议保证数据的一致性。

volatile关键字在Java中用于解决多线程环境下的可见性和有序性问题,但无法保证原子性。它通过缓存一致性协议确保了共享变量的更新对其他线程立即可见,防止指令重排序,常用于状态标记量和单例模式的double check。然而,对于非原子操作如自增,volatile无法保证其原子性,需要借助synchronized或Atomic类来实现。
订阅专栏 解锁全文
1440

被折叠的 条评论
为什么被折叠?



