12.0、JVM 学习——操作系统内存模型与高速缓存一致性

本文介绍了操作系统内存模型的基础概念,包括处理器如何通过高速缓存与主内存交互以解决速度不匹配问题,以及多处理器环境下高速缓存一致性的重要性。文章还探讨了为确保缓存一致性而设计的各种协议。

前言

体能状态先于精神状态,习惯先于决心,聚焦先于喜好。

操作系统的内存模型

由于Java 虚拟机的跨平台特性,使得我们一般无需关注各个操作系统是如何对内存等资源进行管理的,这个根源是 JVM 有自己的内存模型。
事实上,JVM 的内存模型是基于操作系统的,那么操作系统自身的内存模型是怎样的呢?本文就这一点进行“超级简单”的介绍。

处理器与缓存一致性

为了调和内存和处理器处理速度差距过大的问题,一般我们会增加告诉缓存(Cache)作为缓冲,每一个处理器都有自己的告诉缓存,这样一来在有多个处理器时就会遇到缓存不一致的问题。

无法避免的I/O——内存、高速缓存(Cache)

多线程是为了尽可能的提高处理器的运算利用效率,但是处理器本身并不能存储——这不是它的职能。
处理器至少需要和内存进行交互,比如读取运算数据、存储运算结果等。
计算机的处理器与存储设备的运算速度有几个数量级的差距,所以现代计算机系统一般都在内存和处理器之间增加一层缓冲,性能接近处理器的存储硬件——高速缓存(Cache)。

处理器与高速缓存的一致性问题

由于每一个处理器都有一个自己的告诉缓存,而所有的处理器并不是割裂的存在的,他们需要共享一个主内存,所以这就涉及到高速缓存的一致性问题。
现代计算机体系是建立在各种协议之上的,为了解决缓存不一致的问题,人们指定了一系列的协议,规定不同处理器在读写缓存数据时的统一规范(作为了解有 MSI、MESI、MOSI、Synapse、Firefly、Dragon Protocol)。

操作系统的内存模型示意图

处理器通过高速缓存进行运算,高速缓存通过相关协议和主内存保持内存同步

在这里插入图片描述

参考资料

[1]、《深入理解 Java 虚拟机》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值