析
現(xiàn)在進入頁式映射的過程了, Linux系統(tǒng)中的每個進程都有其自身的頁面目錄PGD, 指向這個目錄的指針保存在每個進程的mm_struct數(shù)據(jù)結(jié)構(gòu)中。 每當調(diào)度一個進程進入運行的時候,內(nèi)核都要為即將運行的進程設(shè)置好控制寄存器cr3, 而MMU的硬件則總是從cr3中取得指向當前頁面目錄的指針。當我們在程序中要轉(zhuǎn)移到地址0x08048368去的時候, 進程正在運行,cr3早以設(shè)置好,指向我們這個進程的頁面目錄了。 先將線性地址0x08048368展開成二進制:
0000 1000 0000 0100 1000 0011 0110 1000
對照線性地址的格式,可見最高10位為二進制的0000 1000 00, 也就是十進制的32,所以MMU就以32為下標在其頁面目錄中找到其目錄項。這個目錄項的高20位指向一個頁面表,CPU在這20位后添上12個0就得到頁面表的指針。找到頁面表以后, CPU再來看線性地址中的中間10位,0001001000,即十進制的72.于是CPU就以此為下標在頁表中找相應的表項。表項值的高20位指向一個物理內(nèi)存頁面,在后邊添上12個0就得到物理頁面的開始地址。假設(shè)物理地址在0x620000的,線性地址的最低12位為0x368. 那么test()函數(shù)的入口地址就為0x620000 0x368 = 0x620368
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【www.cmtents.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|