學(xué)習(xí)啦>學(xué)習(xí)電腦>網(wǎng)絡(luò)知識>網(wǎng)絡(luò)基礎(chǔ)知識>

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

時間: 春健736 分享

  MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。今天學(xué)習(xí)啦小編給大家介紹一下物理地址虛擬地址轉(zhuǎn)換。供大家參考!

  物理地址虛擬地址轉(zhuǎn)換參考如下

  物理地址按照頁來分配成很多不同的頁,每個頁有頁號

  有的頁里存放的是頁表,有的頁里存放的是可以寫的內(nèi)存

  每個頁的大小是4KB,32位機(jī)器有2^32個地址

  因此有2^32/2^21=2^20個頁號,即2的20次方個虛擬頁

  物理地址也按照4K來分,但是物理地址一般沒有4G大小

  |*****4K*****| 第0項(xiàng)

  |*****4K*****| 第1項(xiàng)

  |*****4K*****| 第2項(xiàng)

  |*****4K*****| 第3項(xiàng)

  |*****4K*****| 第4項(xiàng)

  ...

  ......

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

  比如按照10 10 12來劃分

  10位 10位 12位

  |0000000010| - |0000000010| - |00000000010|

  | 2 | | 2 | | 2 |

  按照劃分,首先虛擬地址向右便宜22位的到,第一級(首級)頁表項(xiàng)

  為數(shù)值2.

  然后根據(jù)全局唯一的地址,即首級頁表的存放地址,這部分是連續(xù)的。

  比如地址是第0XFF00 00FF

  則可以得到第一級頁表內(nèi)存放的內(nèi)容:

  即讀取0XFF00 00FF + 2*4k這個物理地址中的內(nèi)容,其中分為12bit+20bit

  后面20bit表示了第二級頁表所在的物理頁,為什么用20bit,因?yàn)橐还灿?0bit

  個物理頁,比如得到的值是3,則這個第二級頁表的的物理地址是4k*3,然后

  看第二個10位,即二級頁表的頁內(nèi)便宜,得到的是2,則可以得到第二級頁表的

  物理得只是4k*3 + 2,然后讀取(4k * 3) + 2中的值,32位,其中20位表示了

  第三級頁表的物理地址,比如是0x0000 FF00,然后讀取后12位的值,即2

  則得到在第0x0000 ff00這個頁表中的第2位,從而得到物理地址。

  頁表最多占用多少內(nèi)存?

  2^10個32位 2^10個32位 + 2^12個32位

  即2^11 + 2^12 = 2kb + 4kb = 6kb

  如果不采用2級頁表的話

  那么有2^20次方個頁表項(xiàng),需要2^20次方個32位,即2^10kb=2MB

  2MB也不是很大,可是在linux下,每個進(jìn)程有自己的獨(dú)立頁表,

  那每個進(jìn)程一上來就分配2MB,這樣的開銷很大。

  因此多級頁表,主要是靈活,而且節(jié)省空間,每個32bit中有12bit的狀態(tài)位

  表示了頁表的各種狀態(tài)。

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

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

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

  -> 0000 0001 1010 1111 0101 0101 0001 1000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  0x7095E000 + 0x00000518 = 0x7095E518.

  學(xué)習(xí)啦小編介紹了物理地址虛擬地址轉(zhuǎn)換的相關(guān)知識,希望你喜歡。

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

MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。今天學(xué)習(xí)啦小編給大家介紹一下物理地址虛擬地址轉(zhuǎn)換。供大家參考! 物理地址虛擬地址轉(zhuǎn)換參考如下 物
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • 物理地址與虛擬地址映射
    物理地址與虛擬地址映射

    MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。今天學(xué)習(xí)啦小編給大家介紹一

  • 物理地址修改軟件
    物理地址修改軟件

    MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。那么物理地址怎么修改?今天

  • 物理地址修改器apk
    物理地址修改器apk

    MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。那么物理地址怎么修改?今天

  • 物理地址修改工具
    物理地址修改工具

    MAC(Media Access Control或者M(jìn)edium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。那么物理地址怎么修改?今天

579981