物理頁面大小一級地址總線寬度不同,頁表的級數(shù)也不同。以AArch64運(yùn)行狀態(tài),4KB大小物理頁面,48位地址寬度為例,頁表映射的查詢過程如圖:
對于多任務(wù)操作系統(tǒng),每個用戶進(jìn)程都擁有獨(dú)立的進(jìn)程地址空間,也有相應(yīng)的頁表負(fù)責(zé)虛擬地址到物理地址之間的轉(zhuǎn)換。MMU查詢的過程中,用戶進(jìn)程的一級頁表的基址存放在TTBR0。操作系統(tǒng)的內(nèi)核空間公用一塊地址空間,MMU查詢的過程中,內(nèi)核空間的一級頁表基址存放在TTBR1。當(dāng)TLB未命中時,處理器查詢頁表的過程如下:
? 處理器根據(jù)虛擬地址第63位,來選擇使用TTBR0或者TTBR1。當(dāng)VA[63]為0時,選擇TTBR0,TTBR中存放著L0頁表的基址。
? 處理器以VA[47:39]作為L0的索引,在L0頁表中查找頁表項(xiàng),L0頁表有512個頁表項(xiàng)。
?L0頁表的頁表項(xiàng)中存放著L1頁表的物理基址。處理器以VA[38:30]作為L1索引,在L1頁表中找到相應(yīng)的頁表項(xiàng),L1頁表中有512個頁表項(xiàng)。
?L1頁表的頁表項(xiàng)中存放著L2頁表的物理基址。處理器以VA[29:21]作為L2索引,在L2頁表中找到相應(yīng)的頁表項(xiàng),L2頁表中有512個頁表項(xiàng)。
?L2頁表的頁表項(xiàng)中存放著L3頁表的物理基址。處理器以VA[20:12]作為L1索引,在L3頁表中找到相應(yīng)的頁表項(xiàng),L3頁表中有512個頁表項(xiàng)。
?L3頁表的頁表項(xiàng)里,存放著4KB頁面的物理基址,然后加上VA[11:0],這樣就構(gòu)成了物理地址,至此處理器完成了一次虛擬地址到物理地址的查詢與翻譯的工作。
-
處理器
+關(guān)注
關(guān)注
68文章
19586瀏覽量
232140 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6968瀏覽量
124364 -
MMU
+關(guān)注
關(guān)注
0文章
92瀏覽量
18489
發(fā)布評論請先 登錄
相關(guān)推薦
關(guān)于MMU的一級頁表為什么必須是16K對齊
關(guān)于頁表和MMU的問題
ARM MMU 理解(基于ARM 920T)
MMU的產(chǎn)生及MMU工作過程詳解
ARM11 S3C6410的地址表
裸機(jī)加強(qiáng)版MMU章節(jié)頁表創(chuàng)建,地址映射相同
為什么我把MMU裸機(jī)程序修改成兩級頁表后程序編譯時提示找不到‘memset’函數(shù)?
映射過程中映射到FPGA上的LUT時利用率都會達(dá)到0%是為什么?
ARM的內(nèi)存管理(MMU)是如何實(shí)現(xiàn)的?
鴻蒙內(nèi)核源碼分析(內(nèi)存映射篇):虛擬地址與物理地址之間是如何映射的
詳解ARMv8-A系列CPU的MMU隱射查找過程
對MMU和頁表工作機(jī)制的簡單評析

評論