虛擬記憶體
記憶體管理單元(MMU)
/ EM-em-YOO /
想像在 CPU 與記憶體之間的門口,站著一位勤勉的翻譯兼守衛:每個離開 CPU 的位址都經過他,從程式的私有編號轉換成大樓的真實座標、並被檢查權限——全都在一瞬間,在每一次存取時。記憶體管理單元(MMU)就是這塊硬體:晶片上為每一次記憶體參考執行位址轉換與保護檢查的部分。
具體來說,MMU 位於 CPU 核心與記憶體系統其餘部分之間。當核心發出一個虛擬位址,MMU 先諮詢它的 TLB;命中時幾乎瞬間產出實體位址與保護結果。TLB 未命中時,它執行(或觸發)一次分頁表走訪找出轉換、裝進 TLB、然後繼續。若該頁不存在,MMU 向作業系統引發分頁錯誤例外;若存取違反保護位元,它引發保護錯誤。MMU 通常還握有指向目前行程分頁表的分頁表基底暫存器,作業系統在每次情境切換時重新載入它。
為何重要:MMU 正是虛擬記憶體變得真實且快速之處——它在硬體中、在關鍵路徑上,做著用軟體做會慢得無望的事。它是硬體與作業系統協同設計的具體化身:MMU 機械地翻譯與檢查,而作業系統透過建立分頁表與處理錯誤來設定政策。沒有 MMU,處理器就無法提供真正的虛擬記憶體或硬體強制的行程隔離(這正是為何最簡單的微控制器因缺乏 MMU,所有程式碼都跑在同一個共享的實體位址空間裡)。
你的程式發出的每一次載入與儲存,都悄悄通過 MMU:虛擬位址進入、諮詢 TLB、實體位址輸出(或引發一個錯誤)——每秒數十億次,悄無聲息。
MMU:為每一次記憶體存取進行翻譯與保護的硬體門衛。
MMU 執行的是機制,不是政策:它忠實地用作業系統提供的表來翻譯與檢查,但對哪頁放哪裡毫無決定權——那是作業系統的工作。硬體與作業系統合力造就虛擬記憶體;缺一不可。
又称
另见