mmu
全稱叫做
memory manage unit,也就是記憶體管理單元。
在老版本的
linux
中要求處理器必須有
mmu,但是現在 linux 核心已經支援無
mmu
的處理器了。
mmu
主要完成的功能如下:
虛擬位址(va,virtual address)
、實體地址
(pa,
physcicaladdress)的概念:
對於 32 位處理器來說,
虛擬位址
範圍是 2^32=4gb。
主機板上有
512mb
的 ddr3
,即 512mb 的
物理記憶體
,經過 mmu
可以將其對映到整個
4gb
的虛擬空間。
開啟了mmu,就不能直接往實體地址寫資料。
物理記憶體和虛擬記憶體之間的轉換,需要用到兩個函式:ioremap
和 iounmap
ioremap
是個巨集,有兩個引數:
cookie
和 size
,真正起作用的是函式
__arm_ioremap
,此函式有三個引數和乙個返回值
phys_addr
要對映的物理起始位址
size
要對映的記憶體空間大小
mtype
ioremap
的型別,可以選擇
mt_device
、mt_device_nonshared
、 mt_device_cached 和
mt_device_wc
,ioremap
函式選擇
mt_device
返回值
__iomem
型別的指標,指向對映後的虛擬空間首位址
iounmap只有乙個引數 addr
,此引數就是要取消對映的虛擬位址空間首位址。
mmu記憶體管理單元詳解
MMU記憶體管理單元
mmu記憶體管理單元主要負責虛擬位址到實體地址的對映。在沒有使用虛擬儲存器的機器上,虛擬位址被直接送到記憶體匯流排上,使具有相同位址的物理儲存器被讀寫。而在使用了虛擬儲存器的情況下,虛擬位址不是被直接送到記憶體位址匯流排上,而是送到記憶體管理單元 mmu,再由mmu對映到物理記憶體中。如上圖所示,使...
MMU記憶體管理單元介紹
本篇文章簡要闡述mmu的概念,以及以段位址的轉換過程為例,簡單說明mmu將虛擬位址轉換成實體地址的過程。更多詳細內容請檢視 arm mmu 中文手冊 pdf mmu的實現過程,實際上就是乙個查表對映的過程。建立頁表 translate table 是實現mmu功能不可缺少的一步。頁表是位於系統的記憶...
記憶體管理單元MMU實驗
mmu介紹 許可權管理 當我們使用windows時,有時候會彈出位址訪問錯誤,但這不影響整個作業系統的執行。假設a b程式的時序圖如下 因為a b程式的位址空間各不相同。許可權管理就使得a程式無法訪問b程式的位址。如果a程式寫的非常糟糕,a程式並不能破壞核心。假如有兩個hello.c檔案,如圖 這兩...