計算機操作系統基礎(十)---存儲管理之虛擬內存

引言

本文爲第十篇,存儲管理之虛擬內存,在正式瞭解之前,有一個問題,一個遊戲十幾G,物理內存只有4G,那麼這個遊戲是怎麼運行起來的呢?爲了解決這個問題,就需要本篇中介紹到的虛擬內存的知識

虛擬內存概述

  • 有些進程實際需要的內存很大,超過物理內存的容量
  • 多道程序設計,使得每個進程可用物理內存更加稀缺
  • 不可能無限增加物理內存,物理內存總有不夠的時候

這些原因就促使虛擬內存技術的產生

  • 虛擬內存是操作系統內存管理的關鍵技術
  • 使得多道程序運行和大程序運行成爲現實
  • 把程序使用內存劃分,把部分暫時不使用的內存放置在輔存

舉例:

左邊爲進程的邏輯空間,紅色部分爲一個程序需要使用的內存,操作系統會將內存加載到物理內存中去,灰色的部分爲暫時不需要使用的內存,這部分會先放到磁盤中,這樣可以節省物理內存,把更多的物理內存讓給其它進程使用,並且,在這個裏邊,如果說這個進程的邏輯空間很大的話,這些很大,且暫時不需要的空間都可以放到磁盤裏邊暫時保管

程序的局部性原理

局部性原理指的是CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都趨於聚集在一個較小的連續區域中。這個原理也是使得虛擬內存技術可以實現的一個原因

因爲有局部性原理

  • 所以計算機在加載程序時,無需全部邏輯空間裝入內存,裝載部分即可(需要使用的部分)
  • 如果發現所使用的內存不在物理內存中,則發出缺頁中斷,發起頁面置換,把保存在輔存中的頁面置換到物理內存中,這樣程序又可以繼續運行下去了
  • 從用戶層面看,程序擁有很大的空間,既是虛擬內存

虛擬內存實際上是對物理內存的擴充,速度接近於內存,成本接近於輔存

虛擬內存的置換算法

  • 先進先出算法(FIFO)
  • 最不經常使用算法(LFU)
  • 最近最少使用算法(LRU)

高速緩存的替換時機

在高速緩存替換的時候,主要發生在CPU需要獲取緩存的時候,發現緩存中沒有對應的數據,此時就會發生高速緩存的替換,也就是從主存中載入所需數據

主存頁面的替換時機

主存缺頁的時候,就會去輔存中加載相關數據,這個時候就會發生主存頁面替換

對比來看:

  • 替換策略發生在:高速緩存-主存層次、主存-輔存層次
  • 高速緩存-主存層次的替換策略主要是爲了解決速度問題
  • 主存-輔存層次主要是爲了解決容量的問題(這也是存儲器存儲分層的理由)

在快速變化的技術中尋找不變,纔是一個技術人的核心競爭力。知行合一,理論結合實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章