物理地址與虛擬地址怎么轉(zhuǎn)換
MAC(Media Access Control或者Medium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬件地址,用來定義網(wǎng)絡設備的位置。今天學習啦小編給大家介紹一下物理地址虛擬地址轉(zhuǎn)換。供大家參考!
物理地址虛擬地址轉(zhuǎn)換參考如下
物理地址按照頁來分配成很多不同的頁,每個頁有頁號
有的頁里存放的是頁表,有的頁里存放的是可以寫的內(nèi)存
每個頁的大小是4KB,32位機器有2^32個地址
因此有2^32/2^21=2^20個頁號,即2的20次方個虛擬頁
物理地址也按照4K來分,但是物理地址一般沒有4G大小
|*****4K*****| 第0項
|*****4K*****| 第1項
|*****4K*****| 第2項
|*****4K*****| 第3項
|*****4K*****| 第4項
...
......
ARM的虛擬地址和物理地址的轉(zhuǎn)換
比如按照10 10 12來劃分
10位 10位 12位
|0000000010| - |0000000010| - |00000000010|
| 2 | | 2 | | 2 |
按照劃分,首先虛擬地址向右便宜22位的到,第一級(首級)頁表項
為數(shù)值2.
然后根據(jù)全局唯一的地址,即首級頁表的存放地址,這部分是連續(xù)的。
比如地址是第0XFF00 00FF
則可以得到第一級頁表內(nèi)存放的內(nèi)容:
即讀取0XFF00 00FF + 2*4k這個物理地址中的內(nèi)容,其中分為12bit+20bit
后面20bit表示了第二級頁表所在的物理頁,為什么用20bit,因為一共有20bit
個物理頁,比如得到的值是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次方個頁表項,需要2^20次方個32位,即2^10kb=2MB
2MB也不是很大,可是在linux下,每個進程有自己的獨立頁表,
那每個進程一上來就分配2MB,這樣的開銷很大。
因此多級頁表,主要是靈活,而且節(jié)省空間,每個32bit中有12bit的狀態(tài)位
表示了頁表的各種狀態(tài)。
已知一個虛擬地址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ù)當前的CR3寄存器中的物理地址定位頁目錄表基址
Cr3中存放的是物理地址, 這個物理地址指向進程的頁目錄表基址, 由此可以得到
頁目錄表基址(PDE) = Cr3 = 0xAA0E5000
3. 計算頁表項的地址
頁表地址存放在頁目錄表(PDE)中的第6個項目中, 也就是
[0xAA0E5000 + 4 * 6] = [0xAA0E5018] = 0x3D955867, 其中0x00000867為該頁表屬性值, PTE = 0x3D955000
3. 計算頁面物理地址
我們要找的頁面在這個頁表中的第0x2f5項, 所以虛擬地址所在的頁的物理地址為
[0x3D955000 + 0x2f5 * 4] = [0x3D955BD4] =
假設[0x3D955BD4] = 0x7095e847, 頁面的物理地址 x0x7095e000, 0x00000847表示的是頁面屬性
4. 計算最終的物理地址
由虛擬地址分離的偏移可以計算出最終的物理地址為
0x7095E000 + 0x00000518 = 0x7095E518.
學習啦小編介紹了物理地址虛擬地址轉(zhuǎn)換的相關(guān)知識,希望你喜歡。
物理地址與虛擬地址怎么轉(zhuǎn)換
上一篇:物理地址與虛擬地址映射
下一篇:物理地址能改嗎