MMU記憶體管理單元(1) 虛擬位址到實體地址轉換

2021-08-03 19:20:50 字數 1594 閱讀 2476

mmu的主要作用:虛擬位址到實體地址的轉換;訪問許可權控制;設定虛擬儲存空間的緩衝。

虛擬儲存器:程式一般存於掉電不丟失的硬碟中,但是硬碟讀寫速度慢。所以系統上電後一般只在rom中完成小部分硬體初始化程式,並把程式搬運到記憶體中。然後,從記憶體中開始執行程式。但是,記憶體有限,不能一次性把所有**載入到記憶體中,所以只把當前用到的一部分**載入過來,把沒用到的搬回磁碟。此時的效果等同於把所有程式載入到記憶體中,使用者看來系統具有的記憶體比實際記憶體大的多。對於32位的cpu系統中虛擬位址空間有4gb大小,而嵌入式系統中的實際實體地址空間可能遠小於此。

把虛擬位址空間分成乙個個固定大小的塊,每一塊為一頁。實體地址空間也分為同樣大小的頁。mmu要實現虛擬位址到實體地址的對映,cpu核發出虛擬位址va;va被轉換為變換後的虛擬位址mva給mmu;mmu把mva轉換成實體地址pa。

頁表:位於記憶體中,頁表的基位址存於cp15的c2暫存器中,表中每一行(叫乙個位址變換條目entry)對應於虛擬儲存空間的乙個頁,這個entry包含虛擬記憶體塊和物理塊位址的對應關係、該頁的許可權、該頁的緩衝特性。

tlb(快表):cpu和記憶體速度級別相差較大,每次到記憶體中查表代價較大。根據程式區域性性原理,把當前訪問需要的條目存放在乙個和cpu中暫存器速度差不多16字左右的tlb中。mmu把儲存空間分為16個域,pc15中c3每兩位控制乙個域的訪問許可權。

arm支援的儲存塊:段1mb;大頁64kb(可分為16kb子頁);小頁4kb(可分為1kb子頁);極小頁1kb(只能儲存在細頁表中)。

大致過程:

1)根據va和c2找到一級頁表條目

2)若是段描述符,返回實體地址

3)若該條目是二級頁表描述符,繼續根據虛擬位址找下乙個條目

4)找到第二個頁描述符,返回實體地址

一級頁表描述符

[1:0]=01粗頁表:256行,佔記憶體1kb,每個條目表示4kb空間;[31:10]是二級頁表位址。如:粗頁表+大頁,因為指向物理空間只能為1mb,所以256/16*64k或64/4;連續16個條目儲存同一大頁描述符。

c2[31:14]+mva[31:20]+0b00->粗頁描述符;

粗頁描述符[31:10]+mva[19:12]+0b00->大頁描述符;

大頁描述符[31:16]+mva[15:0]->pa

[1:0]=10段,[31:20]一塊1mb實體地址空間的起始位址。mva[19:0]在這塊中定址。

p15的c2[31:14]+mva[31:20]+0b00——>段描述符。

段描述符[31:20]+mva[19:0]–>pa。

[1:0]=11細頁表,1024行,每個條目表示1kb空間;[31:12]是二級頁表位址;細頁表+大頁,1024/64*64k或64/1,每個條目表示1kb,連續64個條目儲存同一大頁描述符

二級頁表描述符

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檔案,如圖 這兩...