萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

作業系統記憶體管理核心技術:分配策略、位址轉換、保護機制與虛擬記憶體

記憶體管理深度解析:從靜態分區到虛擬記憶體演進

記憶體管理是作業系統最核心、最複雜的子系統之一,解決「多程式如何共存、如何隔離、如何突破物理容量限制」三大根本問題。本文系統梳理管理功能、四種分配演進、位址轉換機制、保護策略與虛擬記憶體核心技術。

一、記憶體管理四大核心功能

功能核心任務關鍵技術
記憶體分配依策略分配主存空間分區、分頁、分段、伙伴系統、SLAB
位址轉換邏輯位址 → 物理位址MMU、頁表、TLB、段表、基址/界限暫存器
記憶體保護隔離程序、防止越界存取特權模式、頁表權限位、鑰匙/域、ASLR、DEP/NX
記憶體擴充小記憶體跑大程式覆蓋、交換、虛擬記憶體、記憶體壓縮

二、記憶體分配策略演進史

  1. 單一連續分配:早期單用戶系統,無保護、無多工。
  2. 固定分區:啟動時劃分固定大小分區,內部碎片嚴重、多工度固定。
  3. 動態分區:依程式大小動態切割,首次適配/最佳/最差適配,外部碎片需緊湊技術整理。
  4. 分頁式:邏輯/物理同分固定大小頁框,消除外部碎片,引入頁表、TLB、多級頁表。
  5. 分段式:按邏輯單元(代碼、資料、堆疊)分段,支援共享/保護,但產生外部碎片。
  6. 段頁式:段內分頁,結合邏輯模組化與物理管理優勢(Intel x86 保護模式、Multics、OS/2)。

三、位址轉換機制演進

三級位址空間映射

原始碼符號 → 編譯器 → 邏輯位址 → 載入器/連結器 → 線性位址 → MMU/頁表 → 物理位址

分頁式位址轉換流程

  1. CPU 產生邏輯位址:頁號 | 頁內位移
  2. 查 TLB(快取頁表項),命中 → 直接得物理頁框號。
  3. 未命中 → 走頁表走查(多級頁表:PGD → PUD → PMD → PTE)。
  4. 組合物理位址:物理頁框號 | 頁內位移。
  5. 若頁表項「不在場位」=1 → 觸發缺頁中斷 → 頁面置換演算法調入頁框。

四、記憶體保護機制

  • 分界法:基址/界限暫存器,硬體比較越界即例外(早期簡單系統)。
  • 分頁保護位:R/W/X、User/Supervisor、Dirty、Accessed、NX/DEP(防緩衝區溢位攻擊)。
  • 環狀保護:Ring 0 核心態、Ring 3 使用者態,特權指令/IO/暫存器僅 Ring 0 可用。
  • ASLR:隨機化堆疊、堆、共享庫、執行檔基址,緩解 ROP 攻擊。
  • 核心頁表隔離:KPTI 緩解 Meltdown 類側通道攻擊。

五、虛擬記憶體:突破物理限制的關鍵技術

兩大基石

  • 局部性原理:時間局部性(迴圈、遞歸)、空間局部性(陣列、類別成員)。
  • 需求分頁:只載入當前需要的頁,其餘留在磁碟。

頁面置換演算法

演算法原理優/缺點實作難度
FIFO最早調入的先淘汰簡單但有 Belady 異常低
LRU最久未使用的先淘汰接近最優,需硬體支援或近似中
Clock/Second Chance循環掃描參考位LRU 近似、低開銷低
LFU使用頻率最低先淘汰適應工作負載變化慢高
工作集/WSClock依時間窗口保留活躍頁面理論最強、實作複雜高

關鍵優化技術

  • 頁面預讀/預取:循序存取模式預先載入鄰近頁。
  • 複製時寫:fork() 共享物理頁,寫入時才複製。
  • 記憶體壓縮:zswap/zram 將冷頁壓縮留在記憶體,減少交換 I/O。
  • 巨型頁:2 MB/1 GB 大頁減少頁表層級、提升 TLB 覆蓋率(資料庫、HPC 關鍵)。

六、現代 OS 實作重點

  • Linux:mm_struct、vm_area_struct、反向映射、KSM 記憶體合併、CMA 連續記憶體分配器。
  • Windows:VAD 樹、工作集管理、超級預讀、記憶體壓縮存儲、核心頁表隔離。
  • 嵌入式/RTOS:靜態分配、記憶體池、MPU 保護單元、無 MMU 情況下的 uClinux 方案。
copyright © 萬盛學電腦網 all rights reserved