亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2560 | 回復(fù): 1
打印 上一主題 下一主題

[內(nèi)存管理] ARM架構(gòu)中PMD,PTE與page之間的關(guān)系求解! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-10-30 16:04 |只看該作者 |倒序瀏覽
最近看ARM架構(gòu)的內(nèi)存頁表的管理代碼,有些疑問搞不清楚。

ARMv7采用的是2level的管理模式,所以PMD等同于PGD。當一個虛擬地址addr在kernel中映射時,先根據(jù)addr算出PGD,然后根據(jù)PGD得到PTE,在根據(jù)PTE如何能得到該虛擬地址addr的物理地址?

有如下一下疑問:
1. 根據(jù)pmd算pte時,一般使用的是kernel中的pte_offset_map函數(shù)
  1. static inline pte_t *pmd_page_vaddr(pmd_t pmd)
  2. {
  3.         return __va(pmd_val(pmd) & PHYS_MASK & (s32)PAGE_MASK);
  4. }

  5. #define __pte_map(pmd)                pmd_page_vaddr(*(pmd))

  6. #define pte_offset_map(pmd,addr)        (__pte_map(pmd) + pte_index(addr))
復(fù)制代碼
根據(jù)代碼看來,PMD指針指向的內(nèi)存中保存的值低12位是沒有使用的,因為分配pte時,同時分配的linux pt and h/w pt,剛好是1個page,理論上這個PMD指針指向的值應(yīng)為是4k對齊才對,為何在去PTE時,需要& PAGE_MASK?

2. pte指針指向的值,低十二位用來表示該映射的page的屬性值,高12位就為pfn,但是最終是如何映射到虛擬地址addr的物理地址的囁?看網(wǎng)友有句話寫的,感覺有點問題:PTE表中的高20bit的值 + 線性地址的低 12bit的值,就是具體的物理地址。是這么簡單的映射嗎?

論壇徽章:
0
2 [報告]
發(fā)表于 2014-10-31 17:01 |只看該作者
又研究了一下kernel,結(jié)合網(wǎng)友的分析,自己解釋如下:
1. 確實地址是對齊的,但是kernel在實現(xiàn)時,為了節(jié)省mem,在低12bit中保存了該頁目錄的屬性,所以在取值賦給PTE時需要clear低12bit;
2. 就是這樣簡單的映射,但是寫了個程序,感覺非kernel線性地址的虛擬地址轉(zhuǎn)換好像沒有問題,但是相反線性地址范圍不對;奇怪
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP