天天看點

存儲管理——虛拟記憶體什麼是虛拟記憶體程式的局部性原理虛拟記憶體的置換算法

什麼是虛拟記憶體

為什麼需要虛拟記憶體?

1.程序需要的實際記憶體很大,超過實體記憶體容量

2.作業系統的多道程式設計,多個程序同時在記憶體裡面,使得每個程序可用實體記憶體更加稀缺

3.不可能無限增加計算機的實體記憶體

虛拟記憶體是作業系統記憶體管理的關鍵技術,它使多道程式的運作和大程式運作成為現實。

虛拟記憶體是如何工作的?

把程序所使用的記憶體進行劃分,把部分暫時不需要使用的記憶體放到輔助裡,也就是使用輔存暫時的儲存程式可能會使用的記憶體。

程式的局部性原理

局部性原理是指CPU通路存儲器時,無論是

存取指令

還是

存取資料

,所通路的存儲單元都

趨于聚集在一個較小的連續區域中

由于局部性原理,計算機在加載程式的時候,不需要把所有的邏輯空間都裝入記憶體裡面,而是裝載部分就可以了。如果通路頁不再記憶體裡面,就會發出缺頁中斷,發起頁面置換,把從儲存在輔存裡面的頁面置換到實體記憶體裡。從使用者的角度來看,就像程式擁有無限大的記憶體空間。

虛拟記憶體實際上是對實體記憶體的擴充,速度接近于記憶體,成本接近于輔存。

虛拟記憶體的置換算法

1.先進先出算法(FIFO)

2.最不經常使用算法(LFU)

3.最近最少使用算法(LRU)

前面的一篇學習筆記較為詳細的實作了這些算法:實作雙向連結清單的基礎上實作記憶體置換算法

CPU<——>高速緩存(緩存沒有資料)<—

需要從主存載入資料

—>主存(主存缺頁)<—從輔存加載頁面資料—>輔存

高速緩存的替換時機

高速緩存替換主要是發生在CPU需要擷取緩存時,發現緩存裡面沒有對應資料的時候,這時就需要從主存裡面載入相關的資料。

主存頁面的替換時機

類似的主存頁面的替換時機,發生在主存缺頁的時候,就會從輔存裡面去加載相關的頁面資料。

對比Cache與主存的替換時機:

  1. 替換政策發生在Cache——主存層次和主存——輔存層次,替換政策相關的算法都是一樣的。
  2. Cache——主存層次的替換政策主要是為了解決CPU的

    速度問題

  3. 主存——輔存層次主要是為了解決

    容量問題

繼續閱讀