久久天天躁狠狠躁夜夜躁,国产精品入口福利,97久久精品人人爽人人爽蜜臀 ,中文字幕国产精品一区二区

當前位置首頁 > 信息公告

內(nèi)存映射文件的虛擬地址和物理地址的基本情況分析

更新時間:2023-11-14 文章作者:佚名 信息來源:網(wǎng)絡(luò)整理 閱讀次數(shù):

名詞解釋:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

1.PGD:Page.PUD:PageUpper.PMD:Page.PTE:PageTableEntryC3j物理好資源網(wǎng)(原物理ok網(wǎng))

測試程序:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

本測試程序建立了一個場景,復(fù)印了一個顯存映射文件的虛擬地址,一個全局變量尋地址,一個棧內(nèi)變量的虛擬地址和一個在堆上動態(tài)分配變量的虛擬地址。接出來,我們使用qemu啟動內(nèi)核和,之后運行這個測試程序,看一下MMU是怎樣從這幾個地址的虛擬地址找到其化學(xué)地址的。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

獲取:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

1)使用qemu啟動系統(tǒng)C3j物理好資源網(wǎng)(原物理ok網(wǎng))

內(nèi)核使用的是6.3,打開了選項,上述test.c早已編譯好,放在了的/test/mm目錄下。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

2)運行測試程序C3j物理好資源網(wǎng)(原物理ok網(wǎng))

其中,顯存映射文件變量的虛擬地址為,全局變量的虛擬地址為,棧內(nèi)變量的虛擬地址為,堆內(nèi)變量的虛擬地址為。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

在64位操作系統(tǒng)中,無論是還是ARM64,都使用48bit的虛擬地址,同時都將虛擬顯存地址空間分為內(nèi)核地址空間和用戶地址空間兩個部份,內(nèi)核地址空間的地址都已開頭,用戶地址空間以開頭,所以上述幾個虛擬地址都是用戶空間的地址,屬于a.out這個進程。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

不僅a.out復(fù)印的信息以外,我們還可以通過maps來看一下a.out進程顯存映射的基本情況:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

從這個圖中,可以看出a.out代碼段,堆棧,全局變量,動態(tài)鏈接庫等映射的虛擬地址空間的范圍、比如,棧的虛擬地址范圍為“-”,棧內(nèi)變量的虛擬地址恰好在這個區(qū)間內(nèi),還有堆的虛擬范圍為“03000”物理地址查詢方法,堆內(nèi)變量的虛擬地址也處于這個區(qū)間內(nèi)。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

3)獲取C3j物理好資源網(wǎng)(原物理ok網(wǎng))

接出來我們使用qemu的dump-guest-功能將虛擬機中的顯存dump下來,用于后續(xù)剖析a.out虛擬地址和化學(xué)地址的映射關(guān)系.我們在用qemu啟動虛擬機的時侯,使用了-參數(shù)C3j物理好資源網(wǎng)(原物理ok網(wǎng))

這樣的話,在qemu虛擬機里,可以使用ctrla+c步入qemu的控制臺。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

物理地址查詢方法_如何查詢物理地址查詢_查詢物理地址的幾種方法C3j物理好資源網(wǎng)(原物理ok網(wǎng))

之后運行命令“dump-guest--pdump-file-name”,這樣虛擬機的數(shù)學(xué)顯存就被dump到指定文件里了。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

4)從中獲取信息C3j物理好資源網(wǎng)(原物理ok網(wǎng))

我們使用crash來對dump文件進行剖析,首先我們使用crash打開dump文件,同時,也須要將內(nèi)核的elf文件作為參數(shù)。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

步入crash命令行以后,首先使用vm命令看一下a.out顯存使用的大致情況:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

可以看出,與/proc/80/maps信息基本相同。據(jù)悉,我們還得到了更多的信息,例如a.out在內(nèi)核中的地址是,pgd的地址是,我們使用crash命令來查看一下,瞧瞧信息是不是對的上。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

接出來我們看下a.out里四個變量的信息:?-addr:顯存映射文件虛擬地址?g-addr:全局變量虛擬地址?stack-addr:棧內(nèi)變量虛擬地址?heap-addr:堆內(nèi)變量虛擬地址C3j物理好資源網(wǎng)(原物理ok網(wǎng))

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【】整理了一些個人認為比較好的學(xué)習(xí)書籍、視頻資料共享在群文件上面,有須要的可以自行添加哦!!!(含視頻教程、電子書、實戰(zhàn)項目及代碼)C3j物理好資源網(wǎng)(原物理ok網(wǎng))

零聲白金VIP體驗卡(含基礎(chǔ)構(gòu)架/高性能儲存//QT/音視頻/Linux內(nèi)核)課程:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

1)首先我們使用vtop看一下-addr:的信息:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

從里面信息可以看出所對應(yīng)的數(shù)學(xué)地址是,我們之前聽到過a.out的pgd的數(shù)學(xué)地址是,這么中的0x7f8就是虛擬地址所對應(yīng)的PUD的地址在PGD中的偏斜量,也就是說+7f8這個地址上面,儲存著PUD頁表的化學(xué)地址,從上述信息來看,PUD的化學(xué)地址為,前面的0x67為該頁面的頁表屬性。以上就是對“PGD:=>”這一行信息的剖析。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

接出來“PUD:=>”,PUD的化學(xué)地址是,878為PMD的索引,所以,對這一行的剖析就是在+878這個地址顯存放著PMD的地址,即,067位頁面屬性。“PMD:=>”也類似,PMD的化學(xué)地址是,4f8是PTE的索引,所以,對這一行的剖析就是在+4f8這個地址顯存放著PTE的地址,即,067位頁面屬性。“PTE:=>”,這一行正式找到所處化學(xué)地址頁面的基地址,也就是pagetable的基地址,即,前面的025是頁面屬性。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

如何查詢物理地址查詢_查詢物理地址的幾種方法_物理地址查詢方法C3j物理好資源網(wǎng)(原物理ok網(wǎng))

至此找到了它對應(yīng)的數(shù)學(xué)地址,一般,最后12bit是虛擬地址在數(shù)學(xué)地址4k頁面內(nèi)的偏斜量,并且顯存映射文件的地址,顯存映射通過mmap將內(nèi)核的頁面映射到用戶進程的頁表中,是4k對齊,所以最后12bit為0.C3j物理好資源網(wǎng)(原物理ok網(wǎng))

我們還可以通過內(nèi)核提供的pageowner功能來這個頁面分配的過程。首先估算的PFN,即右移12bit,得到28ba,十補碼為10426:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

之后回到qemu虛擬機中,進行如下操作:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

可以看見PFN位10426這個頁面分配的過程。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

2)接出來我們再看全局變量“g-addr:”,操作基本相同。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

從上述信息可以看出,PGD的地址是,但是PUD的地址就儲存在的第0個索引內(nèi),也就是+0,PUD的地址為。PUD的第0個索引內(nèi)放著PMD的地址,為,PMD的+010儲存著PTE的地址,PTE的+640的地址儲存著所對應(yīng)的數(shù)學(xué)地址的頁面的基地址,再加上的12bit頁內(nèi)偏斜地址2f0,所以對應(yīng)的數(shù)學(xué)地址是。通過pageowner查看分配過程:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

3)接出來我們再看“stack-addr:”C3j物理好資源網(wǎng)(原物理ok網(wǎng))

從上述信息可以看出,PGD的地址是,但是PUD的地址就儲存在的第7f8個索引內(nèi),也就是+7f8,PUD的地址為。PUD的第fc0個索引內(nèi)放著PMD的地址,為,PMD的+0e8儲存著PTE的地址,PTE的+470的地址儲存著所對應(yīng)的數(shù)學(xué)地址的頁面的基地址,再加上的12bit頁內(nèi)偏斜地址f1c,所以對應(yīng)的數(shù)學(xué)地址是。通過pageowner查看分配過程:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

4)接出來我們看堆內(nèi)的變量“heap-addr:”C3j物理好資源網(wǎng)(原物理ok網(wǎng))

從上述信息可以看出,PGD的地址是,但是PUD的地址就儲存在的第0個索引內(nèi),也就是+0物理地址查詢方法,PUD的地址為。PUD的第0個索引內(nèi)放著PMD的地址,為,PMD的+040儲存著PTE的地址,PTE的+910的地址儲存著所對應(yīng)的數(shù)學(xué)地址的頁面的基地址,再加上的12bit頁內(nèi)偏斜地址6f0,所以對應(yīng)的數(shù)學(xué)地址是。通過pageowner查看分配過程:C3j物理好資源網(wǎng)(原物理ok網(wǎng))

總的來講,剖析vtop的復(fù)印信息須要了解,儲存PGD,PUD,PMD,PTE的顯存都是4k對齊,也就是最后12bit為0,vtop復(fù)印的信息一般就是頁面基地址加上索引,4k對齊的頁面在顯存管理中,最后12bit會用于描述該頁面的屬性,如067,025等,對應(yīng)這樣的組合。C3j物理好資源網(wǎng)(原物理ok網(wǎng))

發(fā)表評論

統(tǒng)計代碼放這里
主站蜘蛛池模板: 平原县| 蓬莱市| 伊金霍洛旗| 丹寨县| 高台县| 平昌县| 高台县| 波密县| 丰县| 宁城县| 桦甸市| 宁德市| 抚顺县| 桃江县| 怀化市| 永康市| 澄迈县| 潍坊市| 棋牌| 苏尼特右旗| 景宁| 大石桥市| 来安县| 清新县| 高陵县| 台州市| 赣州市| 宁化县| 邳州市| 柯坪县| 交城县| 梧州市| 唐山市| 广州市| 阳新县| 墨脱县| 南宫市| 秦皇岛市| 含山县| 中方县| 遂平县|