亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 網(wǎng)絡(luò)知識(shí) > 網(wǎng)絡(luò)基礎(chǔ)知識(shí) > 虛地址的物理地址計(jì)算

      虛地址的物理地址計(jì)算

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

      虛地址的物理地址計(jì)算

        一般MAC地址在網(wǎng)卡中是固定的,當(dāng)然也有網(wǎng)絡(luò)高手會(huì)想辦法去修改自己的MAC地址。那么虛地址的物理地址怎么計(jì)算?學(xué)習(xí)啦小編整理了修改硬盤物理地址的相關(guān)資料。供大家參考!

        虛地址的物理地址計(jì)算參考如下

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

        MVA (Modified Virtual address,修改過的虛擬地址,這個(gè)地址由CPU產(chǎn)生#1)

        step1.通過TTBR找到粗表描述符

        轉(zhuǎn)換表基地址#2 + MVA的粗頁(yè)表索引 = 粗頁(yè)表的物理地址

        step2.通過粗表描述符找到小頁(yè)描述符

        粗頁(yè)表基地址#3 + MVA的小頁(yè)表索引 = 小頁(yè)表的物理地址

        step3.通過小頁(yè)描述符找到物理地址

        小頁(yè)基地址#4 + MVA的頁(yè)索引 = 物理地址

        step1得到的粗頁(yè)表的物理地址位定義

        step2得到的小頁(yè)表的物理地址位定義

        step3得到的物理地址位定義

        注1:嚴(yán)格的說,這個(gè)地址是可能是FCSE或ARM926ej-s處理器產(chǎn)生

        注2:轉(zhuǎn)換表基地址保存在TTBR,詳見TTBR

        注3:粗頁(yè)表基地址保存在粗頁(yè)表描述符中,詳見粗頁(yè)表描述符

        注4:小頁(yè)表基地址保存在粗頁(yè)表描述符中,詳見小頁(yè)表描述符

        --------------------------------------------------------------------------------------

        CP15

        系統(tǒng)控制協(xié)處理器(CP15)被用來配置和控制ARM926ej-s處理器。cache、mmu都通過CP15的寄存器來控制。需要使用專門的指令訪問CP15的寄存器。

        ARM926ej-s系統(tǒng)中的地址

        ARM926ej-s產(chǎn)生的地址為虛地址(VA),F(xiàn)CSE(快速上下文切換控制器)將VA轉(zhuǎn)換為修改過的虛地址(MVA)供MMU使用,MMU將MVA轉(zhuǎn)換為TCM和AMBA總線的物理地址(PA)。

        CP15的c1寄存器

        c1寄存器是ARM926ej-s處理器的控制寄存器。該寄存器用來使能或禁用cache、配置MMU。

        I 0: 禁用iCache,1使能iCache

        C 0:禁用dCache,1使能dCache

        如果c1寄存器禁用了cache,小頁(yè)表的C、B位是無效的。

        TLB

        MMU是OS分頁(yè)內(nèi)存管理的硬件基礎(chǔ)。MMU使用TLB(Translation lookaside buffer,即旁路轉(zhuǎn)換緩沖,或稱為頁(yè)表緩沖;用來存放虛擬地址到物理地址的轉(zhuǎn)換表)將虛擬地址轉(zhuǎn)換為物理地址。

        TLB保存在SDRAM中。

        TTBR

        TTBR是Translation Table Base Register的縮寫,中文全稱是:轉(zhuǎn)換表基地址寄存器。TTBR是協(xié)處理器CP15的c2寄存器。

        由于讀取TTBR時(shí)Bit13~Bit0是不可預(yù)測(cè)的,所以粗頁(yè)表的起始地址必須是按64K對(duì)齊的。

        粗表描述符

        填充為紅色的位固定為0/1。Bit8~Bit5為域控制位,可以定義16個(gè)域。

        小頁(yè)描述符

        填充為紅色的位固定為0/1。AP3~AP0為訪問控制位,訪問控制位和域控制位配合完成了對(duì)內(nèi)存訪問權(quán)限的管理。在boot中,禁用域控制,同時(shí)將AP3~AP0全部設(shè)置為3(任何人都可以讀寫)。只關(guān)注 C cache控制位,B buffer控制位。

        #寫通。讀命中,從Dcche讀取數(shù)據(jù),讀未命中,(cache)行填充;寫命中,寫數(shù)據(jù)帶Dcache,并緩沖到外邊存儲(chǔ)器寫未命中,緩沖到外部存儲(chǔ)器

        #寫回。讀命中,從Dcache讀取數(shù)據(jù),讀未命中,(cache)行填充;寫命中,寫數(shù)據(jù)帶Dcache ;寫未命中,緩沖到外部存儲(chǔ)器

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

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

        注意: *這里討論的以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.

        看過“虛地址的物理地址計(jì)算 ”的人還看了:

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

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

      3.物理地址和虛擬地址

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

      5.物理地址和邏輯地址的區(qū)別

      604271