跳轉至

虛擬存儲管理方式

虛擬記憶體是一種技術,允許電腦系統提供一個比實體記憶體(主記憶體)更大的儲存空間。它透過將一部分資料儲存在較慢的輔助儲存(如硬碟)中,並在需要時將這些資料調入主記憶體來模擬一個大型的儲存空間。虛擬記憶體的出現使得程式設計師不再需要關心記憶體的實際大小,因為它創造了一個看似幾乎無限的儲存空間。

虛擬記憶體的定義

  • 虛擬記憶體實際上並不存在,它是一個抽象的概念,目的是為了擴展主存的容量,允許程式可以存取超出實際實體記憶體的儲存空間。
  • 它是透過離散分配的儲存管理方式(如分頁、分段等)來實現的,允許作業在不同時間調入主存,即使整個作業不完全載入到主存中。
  • 虛擬記憶體的容量取決於電腦的位址結構和輔助記憶體(如磁碟)的容量,而與實際的主記憶體容量無關。系統透過硬體和作業系統的協同工作,使得虛擬記憶體看起來像是主記憶體一樣快速,但其成本更低,接近輔助記憶體的成本。

虛擬記憶體的主要特徵

虛擬記憶體有四大特徵,分別是:

  • 離散性:虛擬記憶體打破了傳統的連續存放的限制。記憶體中的資料並不是連續存放的,而是分散的。這意味著系統不再要求程式的所有資料必須連續存放在實體記憶體中。

  • 多次性:虛擬記憶體支援部分裝載,即作業可以只載入一部分頁面或段到主記憶體。作業可以在執行時多次調入主記憶體。這樣,可以在主存空間有限的情況下,依然能夠運行大規模程式。

  • 對換性:虛擬記憶體允許在主記憶體和輔助儲存(如硬碟)之間對換資料。當某個資料頁不再使用時,它可以被換出主存,空出來的空間可以用來載入其他資料頁。對換機制確保了程式可以運行,儘管它的資料儲存並不完全在主記憶體中。

  • 虛擬性:透過虛擬記憶體,程式認為自己擁有一個巨大的位址空間,而實際上它的實體儲存空間要小得多。這使得程式設計師可以在不考慮物理記憶體限制的情況下編寫程式。

請求分頁式儲存管理

請求分頁式儲存管理是虛擬記憶體的一種實現方式,結合了分頁儲存管理頁面置換技術,它透過以下方式來管理虛擬儲存:

基本工作原理

在請求分頁式儲存管理中,作業的頁面並不會一次載入到主記憶體中,而是根據需要動態載入:

  • 部分裝載:作業啟動時,只裝入它的一部分頁面到主記憶體。其他頁面可以延遲載入。
  • 缺頁中斷:當程式執行過程中,如果造訪的頁面尚未載入到主存,就會觸發一個缺頁中斷。系統將偵測到缺頁,並啟動磁碟I/O操作,將缺少的頁面從輔助儲存(如磁碟)調入主記憶體。
  • 頁面置換:如果主記憶體空間已滿,系統需要選擇某個目前不活躍的頁面將其置換出去,為新載入的頁面騰出空間。這個過程涉及到頁面置換演算法(如LRU(最近最少使用)演算法)。

工作流程

  • 啟動作業:在作業啟動時,只會載入必要的部分頁面到主記憶體。這些頁面可能是程式的初始程式碼或程式執行時必須立即存取的部分。

  • 缺頁中斷:當程式執行時,如果遇到一個頁面不在主記憶體中,作業系統就會產生一個缺頁中斷。缺頁中斷觸發後,作業系統會尋找該頁面所在的輔助儲存。

  • 頁面置換:如果主記憶體空間已滿,作業系統會透過頁面置換演算法(如FIFO、LRU等)決定將哪個頁面調出,並將所需頁面調入主記憶體。被置換出去的頁面可能會寫回磁碟,以便將來再次需要時重新載入。

  • 位址轉換:透過位址轉換機制,程式存取的邏輯位址(虛擬位址)會被對應到實體位址。作業系統透過尋找頁表,找到頁面對應的實體位置。