引言
本文爲第十篇,存儲管理之虛擬內存,在正式瞭解之前,有一個問題,一個遊戲十幾G,物理內存只有4G,那麼這個遊戲是怎麼運行起來的呢?爲了解決這個問題,就需要本篇中介紹到的虛擬內存的知識
虛擬內存概述
- 有些進程實際需要的內存很大,超過物理內存的容量
- 多道程序設計,使得每個進程可用物理內存更加稀缺
- 不可能無限增加物理內存,物理內存總有不夠的時候
這些原因就促使虛擬內存技術的產生
- 虛擬內存是操作系統內存管理的關鍵技術
- 使得多道程序運行和大程序運行成爲現實
- 把程序使用內存劃分,把部分暫時不使用的內存放置在輔存
舉例:
左邊爲進程的邏輯空間,紅色部分爲一個程序需要使用的內存,操作系統會將內存加載到物理內存中去,灰色的部分爲暫時不需要使用的內存,這部分會先放到磁盤中,這樣可以節省物理內存,把更多的物理內存讓給其它進程使用,並且,在這個裏邊,如果說這個進程的邏輯空間很大的話,這些很大,且暫時不需要的空間都可以放到磁盤裏邊暫時保管
程序的局部性原理
局部性原理指的是CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都趨於聚集在一個較小的連續區域中。這個原理也是使得虛擬內存技術可以實現的一個原因
因爲有局部性原理
- 所以計算機在加載程序時,無需全部邏輯空間裝入內存,裝載部分即可(需要使用的部分)
- 如果發現所使用的內存不在物理內存中,則發出缺頁中斷,發起頁面置換,把保存在輔存中的頁面置換到物理內存中,這樣程序又可以繼續運行下去了
- 從用戶層面看,程序擁有很大的空間,既是虛擬內存
虛擬內存實際上是對物理內存的擴充,速度接近於內存,成本接近於輔存
虛擬內存的置換算法
- 先進先出算法(FIFO)
- 最不經常使用算法(LFU)
- 最近最少使用算法(LRU)
高速緩存的替換時機
在高速緩存替換的時候,主要發生在CPU需要獲取緩存的時候,發現緩存中沒有對應的數據,此時就會發生高速緩存的替換,也就是從主存中載入所需數據
主存頁面的替換時機
主存缺頁的時候,就會去輔存中加載相關數據,這個時候就會發生主存頁面替換
對比來看:
- 替換策略發生在:高速緩存-主存層次、主存-輔存層次
- 高速緩存-主存層次的替換策略主要是爲了解決速度問題
- 主存-輔存層次主要是爲了解決容量的問題(這也是存儲器存儲分層的理由)
在快速變化的技術中尋找不變,纔是一個技術人的核心競爭力。知行合一,理論結合實踐