Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 記憶體管理核心知識:核心/用戶空間劃分、請求分頁、虛擬位址佈局

編輯:Linux 教學

Linux 虛擬記憶體架構核心觀念:空間劃分、分頁機制、位址映射。

Q1:為什麼將進程位址空間劃分為「核心空間」與「用戶空間」?

A:

  • 32 位元系統虛擬位址空間 4GB (0x00000000 ~ 0xFFFFFFFF)。
  • 核心空間:高 1GB (0xC0000000 ~ 0xFFFFFFFF),全體進程共享,核心程式碼、資料結構、頁表駐留此處。
  • 用戶空間:低 3GB (0x00000000 ~ 0xBFFFFFFF),各進程獨立,互不干擾。
  • 進程透過系統呼叫 從用戶空間陷入核心空間執行特權操作。
  • x86_64 擴展至 128TB 用戶空間 + 128TB 核心空間 (標準實作 48-bit)。

Q2:Linux 如何實現「請求分頁」?

A:

  1. 進程存取的虛擬頁若不在實體記憶體 (Page Table Entry 無效位),觸發缺頁中斷 (#PF)。
  2. 核心分配一個實體頁框,視情況初始化 (零頁、從磁碟讀入、Copy-on-Write)。
  3. 更新頁表對應,重新執行故障指令。
  4. 此技術將實體頁框分配推遲至真正被存取時,節省記憶體、加速啟動、支援大於實體記憶體的虛擬空間。

補充:關鍵資料結構

  • struct mm_struct:描述進程虛擬位址空間 (VMA 列表、頁表指標)。
  • struct vm_area_struct:單一虛擬記憶體區域 (起始/結束位址、權限、對應檔案)。
  • struct page:描述單一實體頁框狀態 (引用計數、flags、對應 address_space)。
  • pgd_t, p4d_t, pud_t, pmd_t, pte_t:多級頁表層級類型。

x86 三級 vs x86_64 四級頁表

  • x86 (PAE):PGD → PMD → PTE (三級)。
  • x86_64:P4D → PUD → PMD → PTE (四級),支援 256TB 虛擬空間。

理解空間劃分與請求分頁,是深入核心記憶體管理、驅動開發與效能調校的基石。

Copyright © Windows教程網 All Rights Reserved