緩存算法之belady現象


前言

  在使用FIFO算法作為缺頁置換算法時,分配的缺頁增多,但缺頁率反而提高,這樣的異常現象稱為belady Anomaly

  雖然這種現象說明的場景是缺頁置換,但在運用FIFO算法作為緩存算法時,同樣也是會遇到,增加緩存容量,但緩存命中率也會下降的情況。這也是我在學習緩存算法時遇到的概念,雖總結歸納之。

 

一、舉例

  假設我們有字符串"dcbadcedcbae",頁面置換算法采用FIFO算法,現在有兩個內存,一個是3頁,一個是4頁。結果如下

  

  由圖可以清楚的看到,前者缺頁數是9,而增加后的缺頁數反而是10.

 

二、分析

  讓我們仔細看看在每個時刻在內存的頁數。比如在時刻3,3頁內存的頁數是 a、c、b, 4頁內存的頁數是d、c、b、a,3頁內存是4頁內存的子集,所以此時如果3不缺頁,4肯定不缺頁。

  但是,比如在時刻6,3頁內存為e、d、c,4頁內存為e、c、b、a,3頁內存不是4頁內存的子集,那就意味着,4出現缺頁時,3反而不一定出現缺頁。時刻7和時刻10是同樣的道理。

 

三、結論

  如果內存中頁數更小的集合是內存頁數更大的集合的子集,這個算法被稱為stack algorithm。可以證明stack algorithm(如LRU)不會出現belady現象,FIFO會出現。

 

四、參考文獻

1、Belady’s Anomaly


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM