文章目录

  • 前言
  • 操作系统的内存模型
  • 处理器与缓存一致性
  • 无法避免的I/O——内存、高速缓存(Cache)
  • 处理器与高速缓存的一致性问题
  • 操作系统的内存模型示意图
  • 参考资料


前言

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

操作系统的内存模型

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

处理器与缓存一致性

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

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

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

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

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

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

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

java jvm缓存多个进程间共享 jvm内存缓存_java jvm缓存多个进程间共享

参考资料

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