国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 網(wǎng)絡(luò)知識 > 網(wǎng)絡(luò)基礎(chǔ)知識 > 虛擬地址到物理地址

    虛擬地址到物理地址

    時間: 春健736 分享

    虛擬地址到物理地址

      CPU通過地址來訪問內(nèi)存中的單元,地址有虛擬地址和物理地址之分。那么虛擬地址到物理地址,怎么轉(zhuǎn)換?學(xué)習(xí)啦小編整理了修改硬盤物理地址的相關(guān)資料。供大家參考!

      虛擬地址到物理地址參考如下

      虛擬地址和物理地址的概念

      CPU通過地址來訪問內(nèi)存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內(nèi)存管理單元),或者有MMU但沒有啟用,CPU核在取指令或訪問內(nèi)存時發(fā)出的地址將直接傳到CPU芯片的外部地址引腳上,直接被內(nèi)存芯片(以下稱為物理內(nèi)存,以便與虛擬內(nèi)存區(qū)分)接收,這稱為物理地址(Physical Address,以下簡稱PA),如下圖所示。

      物理地址示意圖

      如果CPU啟用了MMU,CPU核發(fā)出的地址將被MMU截獲,從CPU到MMU的地址稱為虛擬地址(Virtual Address,以下簡稱VA),而MMU將這個地址翻譯成另一個地址發(fā)到CPU芯片的外部地址引腳上,也就是將虛擬地址映射成物理地址,如下圖所示[1]。

      虛擬地址示意圖

      MMU將虛擬地址映射到物理地址是以頁(Page)為單位的,對于32位CPU通常一頁為4K。例如,虛擬地址0xb700 1000~0xb700 1fff是一個頁,可能被MMU映射到物理地址0x2000~0x2fff,物理內(nèi)存中的一個物理頁面也稱為一個頁框(Page Frame)。

      內(nèi)核也不能直接訪問物理地址.但因為內(nèi)核的虛擬地址和物理地址之間只是一個差值0xc0000000的區(qū)別,所以從物理地址求虛擬地址或從虛擬地址求物理地址很容易,+-這個差就行了

      物理地址(physical address)

      用于內(nèi)存芯片級的單元尋址,與處理器和CPU連接的地址總線相對應(yīng)。

      ——這個概念應(yīng)該是這幾個概念中最好理解的一個,但是值得一提的是,雖然可以直接把物理地址理解成插在機器上那根內(nèi)存本身,把內(nèi)存看成一個從0字節(jié)一直到最大空量逐字節(jié)的編號的大數(shù)組,然后把這個數(shù)組叫做物理地址,但是事實上,這只是一個硬件提供給軟件的抽像,內(nèi)存的尋址方式并不是這樣。所以,說它是“與地址總線相對應(yīng)”,是更貼切一些,不過拋開對物理內(nèi)存尋址方式的考慮,直接把物理地址與物理的內(nèi)存一一對應(yīng),也是可以接受的。也許錯誤的理解更利于形而上的抽像。

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

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

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

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

      -> 0000 0001 1010 1111 0101 0101 0001 1000

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

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

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

      頁目錄索引 = 6, 頁表項索引 = 0x2f5 , 偏移 = 0x518

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

      Cr3中存放的是物理地址, 這個物理地址指向進程的頁目錄表基址, 由此可以得到

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

      3. 計算頁表項的地址

      頁表地址存放在頁目錄表(PDE)中的第6個項目中, 也就是

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

      3. 計算頁面物理地址

      我們要找的頁面在這個頁表中的第0x2f5項, 所以虛擬地址所在的頁的物理地址為

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

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

      4. 計算最終的物理地址

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

      0x7095E000 + 0x00000518 = 0x7095E518.

      看過“虛擬地址到物理地址 ”的人還看了:

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

    2.物理地址和虛擬地址

    3.物理地址與虛擬地址怎么轉(zhuǎn)換

    4.物理地址與虛擬地址映射

    5.linux虛擬地址怎么映射物理地址

    604312