MMU內存管理單元簡介

MMU 全稱叫做 Memory Manage Unit,也就是內存管理單元。
在老版本的 Linux 中要求處理器必須有 MMU,但是現在 Linux 內核已經支持無 MMU 的處理器了。
MMU 主要完成的功能如下:
  • ①完成虛擬空間到物理空間的映射,即地址映射。
  • ②內存保護,設置存儲器的訪問權限,設置虛擬存儲空間的緩衝特性。
虛擬地址(VA,Virtual Address)、物理地址(PAPhyscicalAddress)的概念:
對於 32 位處理器來說,虛擬地址範圍是 2^32=4GB
主板上有 512MB DDR3,即 512MB 的物理內存,經過 MMU 可以將其映射到整個 4GB 的虛擬空間。
 
圖解:
 

開啓了MMU,就不能直接往物理地址寫數據。 

物理內存和虛擬內存之間的轉換,需要用到兩個函數:ioremap iounmap
  • ioremap 函數用於獲取指定物理地址空間對應的虛擬地址空間,定義在 arch/arm/include/asm/io.h 文件中
  • iounmap 函數用於釋放掉 ioremap 函數所做的映射
ioremap 是個宏,有兩個參數:cookie size,真正起作用的是函數__arm_ioremap,此函數有三個參數和一個返回值
phys_addr 要映射的物理起始地址
size 要映射的內存空間大小
mtype
ioremap 的類型,可以選擇 MT_DEVICEMT_DEVICE_NONSHARED、 MT_DEVICE_CACHED 和MT_DEVICE_WCioremap 函數選擇 MT_DEVICE
返回值 __iomem 類型的指針,指向映射後的虛擬空間首地址
 
iounmap只有一個參數 addr,此參數就是要取消映射的虛擬地址空間首地址。
 

MMU內存管理單元詳解

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章