當前位置:股票大全官網 - 股票投資 - Java內存模型的原理?

Java內存模型的原理?

本文主要介紹問題產生的背景、解決的問題、處理的思路以及相關的實施細則,這幾個部分是緊密聯系的。希望讀者看完這篇文章後能對Java內存模型系統有壹個相對清晰的認識,知道為什麽。

記憶模型產生背景。

在介紹java內存模型之前,Java課程認為首先要了解物理計算機中的並發問題,了解這些問題可以理清內存模型的背景。

物理機的並發問題和虛擬機中的情況有很多相似之處,物理機的解決方案對虛擬機的實現有相當大的借鑒意義。

物理機的並發性

硬件的效率

對於計算機處理器來說,僅僅通過處理器的“計算”來處理大多數操作任務是不可能的。處理器至少需要和內存交互,比如讀取運算數據,存儲運算結果。這種I/O操作很難消除(僅靠寄存器是不可能完成所有操作任務的)。

由於計算機的存儲設備和處理器的運算速度有幾個數量級的差距,為了避免處理器等待慢速內存完成讀寫操作,現代計算機系統增加了壹層讀寫速度盡可能接近處理器運算速度的緩存。

緩存在內存和處理器之間起到緩沖的作用:將操作所需的數據復制到緩存中,使操作快速運行,然後在操作完成後從緩存中同步回內存。

緩存壹致性問題

基於cache的存儲系統交互解決了處理器和內存速度的矛盾,但也給計算機系統帶來了更高的復雜度,因為它引入了壹個新的問題:cache壹致性。

在壹個多處理器系統中(或者壹個多核系統中只有壹個處理器),每個處理器(每個核)都有自己的高速緩存,它們共享同壹個主存。

當多個處理器的操作任務都涉及同壹個主存區時,可能會導致各自的緩存數據不壹致。

因此,每個處理器在訪問緩存時都需要遵循壹些協議,讀寫時也要按照協議進行操作,以保持緩存的壹致性。