分頁虛擬記憶體(page-based virtual memory)是一種內存管理技術,用於現代操作系統中,以提供進程一個連續的虛擬內存空間,同時有效地使用物理內存。這種技術將虛擬內存空間劃分為大小固定的區塊,稱為「頁」(pages),並將物理內存劃分為大小相同的區塊,稱為「頁框」(page frames)。
基本原理
-
虛擬地址與物理地址:
- 每個進程看到的是一個連續的虛擬地址空間,而實際上這些虛擬地址被映射到物理內存中的不連續頁框上。
-
頁和頁框:
- 虛擬內存空間和物理內存空間都被劃分為大小固定的頁(通常為4KB或8KB),虛擬頁被映射到物理頁框。
-
頁表(Page Table):
- 每個進程都有一個頁表,用於記錄虛擬頁與物理頁框之間的映射關係。頁表存儲在內存中,由硬件和操作系統管理。
- 頁表條目(Page Table Entry, PTE)包含了虛擬頁對應的物理頁框號以及其他控制信息(如是否存在於內存中、是否被修改等)。
-
頁表查詢:
- 當進程訪問某個虛擬地址時,處理器通過頁表查詢將虛擬地址轉換為物理地址。如果對應的頁框存在於物理內存中,則直接訪問;如果不在內存中(頁缺失),則觸發頁錯誤,由操作系統將所需頁從磁盤調入內存。
工作流程
-
地址轉換:
- 虛擬地址由頁號(高位部分)和頁內偏移量(低位部分)組成。
- 處理器使用頁號查詢頁表,獲取對應的物理頁框號,然後加上頁內偏移量,形成最終的物理地址。
-
頁錯(Page Fault)處理:
- 如果頁表查詢發現頁表條目無效(頁不在內存中),則產生頁錯。
- 操作系統處理頁錯,從磁盤中讀取所需頁到內存,更新頁表,然後重新執行引發頁錯的指令。
-
頁替換:
- 當內存不足時,操作系統需要將某些頁換出到磁盤,騰出空間存儲新的頁。這涉及頁替換算法,如最久未使用(LRU)算法。
優點
-
增強內存利用率:
- 分頁虛擬記憶體允許進程使用比實際物理內存更大的虛擬內存空間,並且可以動態地調整進程使用的內存。
-
內存保護:
- 各進程的虛擬地址空間相互隔離,增強了系統的穩定性和安全性。
-
靈活的內存管理:
- 操作系統可以方便地管理內存,實現內存的動態分配和釋放。
總結
分頁虛擬記憶體通過將虛擬內存劃分為固定大小的頁,並將這些頁映射到物理內存的頁框中,提供了一種有效的內存管理方法。它利用頁表實現虛擬地址到物理地址的轉換,處理頁錯和頁替換,從而提高內存利用率和系統的靈活性。這種技術在現代計算機系統中廣泛應用,支持多任務和多用戶環境下的高效運行。