物理頁面大小一級地址總線寬度不同,頁表的級數也不同。以AArch64運行狀態,4KB大小物理頁面,48位地址寬度為例,頁表映射的查詢過程如圖:
對于多任務操作系統,每個用戶進程都擁有獨立的進程地址空間,也有相應的頁表負責虛擬地址到物理地址之間的轉換。MMU查詢的過程中,用戶進程的一級頁表的基址存放在TTBR0。操作系統的內核空間公用一塊地址空間,MMU查詢的過程中,內核空間的一級頁表基址存放在TTBR1。當TLB未命中時,處理器查詢頁表的過程如下:
? 處理器根據虛擬地址第63位,來選擇使用TTBR0或者TTBR1。當VA[63]為0時,選擇TTBR0,TTBR中存放著L0頁表的基址。
? 處理器以VA[47:39]作為L0的索引,在L0頁表中查找頁表項,L0頁表有512個頁表項。
?L0頁表的頁表項中存放著L1頁表的物理基址。處理器以VA[38:30]作為L1索引,在L1頁表中找到相應的頁表項,L1頁表中有512個頁表項。
?L1頁表的頁表項中存放著L2頁表的物理基址。處理器以VA[29:21]作為L2索引,在L2頁表中找到相應的頁表項,L2頁表中有512個頁表項。
?L2頁表的頁表項中存放著L3頁表的物理基址。處理器以VA[20:12]作為L1索引,在L3頁表中找到相應的頁表項,L3頁表中有512個頁表項。
?L3頁表的頁表項里,存放著4KB頁面的物理基址,然后加上VA[11:0],這樣就構成了物理地址,至此處理器完成了一次虛擬地址到物理地址的查詢與翻譯的工作。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
相關推薦
哪位仁兄知道:MMU的一級頁表為什么必須是16K對齊,最好有計算公式~~~謝謝?。?!
發表于 02-14 23:46
剛開始學,好多東西都云里霧里的TT為什么在bootloader里要進行頁表初始化然后開啟MMU,然后在進入內核后還要創建頁表開啟
發表于 05-06 17:25
被用戶應用程序所訪問的。通過MMU可以控制地址空間的訪問權限,從而保護這些代碼不被破壞。MMU的實現過程,實際上就是一個查表映射的過程。建立
發表于 08-29 11:10
`訪問一個MMU的頁表里沒有填寫映射描述符的虛擬地址,會發生什么?百度沒有找到明確的解答,求前輩指導。`
發表于 06-25 09:40
號為2,頁框2的物理地址范圍是8192~12287,故MMU將虛擬地址1026映射為物理地址9218(頁框首地址+偏移量=8192+1026=9218)。以上就是
發表于 07-03 08:19
映射方式為段映射,且映射粒度為16M時,映射圖如下: 虛擬地址到物理地址的映射過程如下: 虛擬地址的[31:24]位存放一級
發表于 08-17 00:53
ARM裸機1期加強版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */創建頁
發表于 04-18 07:45
在看完MMU例程之后,我在原來程序的基礎上把一級頁表改成了兩級頁表,用一個粗頁和一個小
發表于 08-07 22:20
嗨,大家好,我遇到了Xilinx ISE映射過程的棘手問題。當我綜合我的設計時,我得到了一些FPGA資源的利用。雖然在映射過程中映射到FPGA上的LUT時,所有利用率都會達到0%。他很可能是由于
發表于 06-13 09:57
是不希望被用戶應用程序所訪問的。通過 MMU 可以控制地址空間的訪問權限,從而保護這些代碼不被破壞。二 MMU 地址映射的實現MMU 的實現過程
發表于 10-23 15:29
));//釋放內存池}LOS_ArchMmuMap 生成L1,L2頁表項,實現映射的過程mmu的map 就是生成L1,L2頁表項的
發表于 11-19 10:52
狀態,MMU頁表的選取又能分為幾種方式。本文首先分析異常級別、執行狀態、MMU頁表選取三者之間的
發表于 08-09 17:18
對于一個有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時候,一切時候,發出的地址都是虛擬地址,這個虛擬地址發給MMU后,MMU通過
發表于 02-02 14:08
?1.1w次閱讀
Translation and Protection) 頁表基址寄存器存儲了第一級頁表的基地址,通過訪問該寄存器,就能知道頁
發表于 10-08 11:52
?1215次閱讀
頁命中、缺頁 (1)頁命中 ? a) 處理器要對虛擬地址VA進行訪問。 ? b) MMU的TLB沒有命中,通過TWU遍歷主存頁表中的PTEA
發表于 11-26 16:19
?1029次閱讀
評論