錯誤共享是指當同時運行的兩個應用程序試圖訪問每個程序或進程存儲在其自身緩存中的同一邏輯內存區域中的信息時,計算機程序中可能會出現這種情況。每個應用程序的緩存中的數據都是從同一個源復制的,因此修改一個緩存會...
錯誤共享是指當同時運行的兩個應用程序試圖訪問每個程序或進程存儲在其自身緩存中的同一邏輯內存區域中的信息時,計算機程序中可能會出現這種情況。每個應用程序的緩存中的數據都是從同一個源復制的,因此修改一個緩存會導致另一個必須從源重新加載。當一個程序對緩存線所做的更改實際上沒有影響第二個程序正在使用的數據時,共享的錯誤方面就會出現,在這種情況下,強制重新加載緩存是對系統資源的浪費,并且會對程序的性能產生負面影響。錯誤共享的問題很難檢測到,因為它不是應用程序中包含的任何代碼的直接結果,盡管有防止錯誤共享的有效方法,例如,將當前緩存行中的數據移動到另一行。

手持計算機錯誤共享發生的主要原因是操作系統或硬件如何處理讀寫數據。當程序讀取或寫入來自硬盤或其他源的信息時,它通常被加載到一個臨時緩存中以便快速訪問。從源位置緩存的信息量稱為緩存線,是一個邏輯內存塊,通常長度在2字節到256字節之間。在某些操作系統或系統架構下,程序可以在同時,如在并行處理中這意味著兩個獨立的程序有可能試圖訪問同一緩存線中的信息,因此每個程序都將擁有自己的源數據副本,這可能導致一個緩存中的更改不會反映到另一個緩存中,從而使其保存的數據失效當兩個程序試圖訪問同一條緩存線時,有許多機制被用來處理這種情況,但最常見的結果是一個程序被迫用另一個程序修改的更新信息重新加載其緩存當每個程序正在訪問的緩存線內的數據不相關時,of事件被稱為錯誤共享,因此強制一個程序重新加載緩存是對處理能力和其他資源的浪費。對于一個永遠不會修改其緩存中的信息的程序來說,這通常是一個問題,因此,應用程序不會覆蓋其他進程所做的更改。有兩種常見的方法可以防止或減輕錯誤共享的影響:第一種是在內存中的數據之前或之后添加空白信息,本質上是強制它進入另一個程序無法訪問的單獨緩存線。第二種方法是限制對緩存線的讀寫頻率,以便盡可能少地重新加載。更復雜的解決方案涉及緩存級別管理,甚至更改操作系統處理共享的方式。