内存管理单元MMU学习
MMU
MMU是Memory Management Unit的縮寫,中文名是內存管理單元,有時稱作分頁內存管理單元(英語:paged memory management unit,縮寫為PMMU)。
它是一種負責處理中央處理器(CPU)的內存訪問請求的計算機硬件。它的功能包括虛擬地址到物理地址的轉換(即虛擬內存管理)、內存保護、中央處理器高速緩存的控制;
內存管理單元通常應用在桌面型計算機或者服務器,通過虛擬存儲器使得計算機可以使用比實際的物理內存更多的存儲空間。同時,內存管理單元還對實際的物理內存進行分割和保護,使得每個軟件任務只能訪問其分配到的內存空間。如果某個任務試圖訪問其他任務的內存空間,內存管理單元將自動產生異常,保護其他任務的程序和數據不受破壞。
基本概念
MMU位于處理器內核和連接高速緩存以及物理存儲器的總線之間。當處理器內核取指令或者存取數據的時候,都會提供一個有效地址(effective address),或者稱為邏輯地址、虛擬地址。應用代碼需要使用存儲空間時,操作系統通過MMU為其分配合適的物理存儲空間。有效地址不需要和系統的實際硬件物理地址相匹配,而是通過MMU將有效地址映射成對應的物理地址,以訪問指令和數據。
每條MMU匹配規則所對應的存儲器的大小定義為頁。通常最小的頁設定為4 KB。
為了加快MMU規則匹配的處理過程,有效地址和實際物理地址的對應表通常保存在一塊單獨的高速緩存中,稱為對應查找表(Translation Lookaside Buffer,TLB),TLB和實際物理存儲器可以同時進行并行的訪問。有效地址的高位作為在TLB進行匹配查找的依據,而有效地址的低位作為頁面內的偏址。
TLB可以包含很多個表項(entry),每個表項對應一個MMU的頁。操作系統或者應用啟動代碼必須正確的初始化TLB的所有表項。當應用程序提供的有效地址正好位于某個TLB表項制定的地址范圍內時,稱為產生了一次TLB命中;如果這個有效地址沒有位于任何一個TLB表項制定的地址范圍內,稱為一個TLB缺失,或者TLB未命中。
========
?以下摘自?Windows內核情景分析 一書;
在CPU的頁面映射機制中,MMU的作用是:
? ? 根據虛擬地址計算出該地址所屬的頁面;
? ? 再根據頁面映射表的起始地址計算出該頁面映射表項所在的物理地址;
? ? 根據物理地址在高速緩存的TLB中尋找該表項的內容;
? ? 如果該表項不在TLB中,就從內存將其內容裝載到TLB中;
? ? 檢查該表項的PA_PRESENT標志位,如果為1就表示映射的目標為某個物理頁面,因而可以訪問這個頁面,但是需要進一步檢查、比較CPU當前對此頁面是否具有所要求的訪問權限,如果權限不夠就使當前指令的執行失敗并產生一次頁面異常;
? ? 如果PA_PRESENT標志位為0,則說明該虛存頁面的映像不在內存中,當前指令的執行因此而失敗,CPU為此產生一次頁面異常,此時相應的異常處理程序應采取相應的措施;
內核的內存管理模塊就是圍繞著MMU的這些功能和要求而設計開發的;? ? ? ??
總結
以上是生活随笔為你收集整理的内存管理单元MMU学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言scanf函数的返回值、scanf
- 下一篇: 0-100之间的素数、判断素数的基本和优