什麼是虛拟記憶體
為什麼需要虛拟記憶體?
1.程序需要的實際記憶體很大,超過實體記憶體容量
2.作業系統的多道程式設計,多個程序同時在記憶體裡面,使得每個程序可用實體記憶體更加稀缺
3.不可能無限增加計算機的實體記憶體
虛拟記憶體是作業系統記憶體管理的關鍵技術,它使多道程式的運作和大程式運作成為現實。
虛拟記憶體是如何工作的?
把程序所使用的記憶體進行劃分,把部分暫時不需要使用的記憶體放到輔助裡,也就是使用輔存暫時的儲存程式可能會使用的記憶體。
程式的局部性原理
局部性原理是指CPU通路存儲器時,無論是
存取指令
還是
存取資料
,所通路的存儲單元都
趨于聚集在一個較小的連續區域中
。
由于局部性原理,計算機在加載程式的時候,不需要把所有的邏輯空間都裝入記憶體裡面,而是裝載部分就可以了。如果通路頁不再記憶體裡面,就會發出缺頁中斷,發起頁面置換,把從儲存在輔存裡面的頁面置換到實體記憶體裡。從使用者的角度來看,就像程式擁有無限大的記憶體空間。
虛拟記憶體實際上是對實體記憶體的擴充,速度接近于記憶體,成本接近于輔存。
虛拟記憶體的置換算法
1.先進先出算法(FIFO)
2.最不經常使用算法(LFU)
3.最近最少使用算法(LRU)
前面的一篇學習筆記較為詳細的實作了這些算法:實作雙向連結清單的基礎上實作記憶體置換算法
CPU<——>高速緩存(緩存沒有資料)<—
需要從主存載入資料
—>主存(主存缺頁)<—從輔存加載頁面資料—>輔存
高速緩存的替換時機
高速緩存替換主要是發生在CPU需要擷取緩存時,發現緩存裡面沒有對應資料的時候,這時就需要從主存裡面載入相關的資料。
主存頁面的替換時機
類似的主存頁面的替換時機,發生在主存缺頁的時候,就會從輔存裡面去加載相關的頁面資料。
對比Cache與主存的替換時機:
- 替換政策發生在Cache——主存層次和主存——輔存層次,替換政策相關的算法都是一樣的。
- Cache——主存層次的替換政策主要是為了解決CPU的
速度問題
- 主存——輔存層次主要是為了解決
容量問題