學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 網(wǎng)絡(luò)知識(shí) > 網(wǎng)絡(luò)基礎(chǔ)知識(shí) > 虛擬地址到物理地址的轉(zhuǎn)換

虛擬地址到物理地址的轉(zhuǎn)換

時(shí)間: 春健736 分享

虛擬地址到物理地址的轉(zhuǎn)換

  學(xué)習(xí)啦小編今天為大家分享虛擬地址到物理地址的轉(zhuǎn)換的操作方法,歡迎大家前來(lái)閱讀。

  虛擬地址到物理地址的轉(zhuǎn)換

  已知一個(gè)虛擬地址0x01AF5518, 則轉(zhuǎn)換的過(guò)程如下:

  注意: *這里討論的以Windows下普通模式分頁(yè)的情況, 也就是2級(jí)頁(yè)表的情況*

  1.首先把虛擬地址拆分成3個(gè)部分(低12位, 中10位, 高10位), 換成2進(jìn)制如下:

  -> 0000 0001 1010 1111 0101 0101 0001 1000

  按照10, 10, 12的位數(shù)重新排列后

  -> (頁(yè)目錄索引)00 000 00110, (頁(yè)表項(xiàng)索引)10 1111 0101, (偏移)0101 0001 1000

  換算成十六進(jìn)制后可以得到如下結(jié)果

  頁(yè)目錄索引 = 6, 頁(yè)表項(xiàng)索引 = 0x2f5 , 偏移 = 0x518

  2. 根據(jù)當(dāng)前的CR3寄存器中的物理地址定位頁(yè)目錄表基址

  Cr3中存放的是物理地址, 這個(gè)物理地址指向進(jìn)程的頁(yè)目錄表基址, 由此可以得到

  頁(yè)目錄表基址(PDE) = Cr3 = 0xAA0E5000

  3. 計(jì)算頁(yè)表項(xiàng)的地址

  頁(yè)表地址存放在頁(yè)目錄表(PDE)中的第6個(gè)項(xiàng)目中, 也就是

  [0xAA0E5000 + 4 * 6] = [0xAA0E5018] = 0x3D955867, 其中0x00000867為該頁(yè)表屬性值, PTE = 0x3D955000

  3. 計(jì)算頁(yè)面物理地址

  我們要找的頁(yè)面在這個(gè)頁(yè)表中的第0x2f5項(xiàng), 所以虛擬地址所在的頁(yè)的物理地址為

  [0x3D955000 + 0x2f5 * 4] = [0x3D955BD4] =

  假設(shè)[0x3D955BD4] = 0x7095e847, 頁(yè)面的物理地址 x0x7095e000, 0x00000847表示的是頁(yè)面屬性

  4. 計(jì)算最終的物理地址

  由虛擬地址分離的偏移可以計(jì)算出最終的物理地址為

  0x7095E000 + 0x00000518 = 0x7095E518.

  學(xué)習(xí)啦小編分享了虛擬地址到物理地址的轉(zhuǎn)換的操作方法,希望大家喜歡。

575623