啟用PAE後虛擬位址到實體地址的轉換

2022-03-02 05:57:56 字數 1217 閱讀 3224

34安于此生

2013-11-3 20:54

16073

由常規的兩級頁表轉換得不到實體地址的引發的思考?

可能你會發現乙個鬱悶的事情--按照通常的兩級頁表的轉化得不到正確實體地址,到底是哪個環節出了問題咧,其實一切都是pae惹的禍!

pae是神馬?

pae:全稱phyiscal address extension,實體地址擴充套件.

如何判斷pae是否開啟了pae.

一般兩個特點:

我的電腦=》屬性=》常規面板中有實體地址擴充套件的字樣。

cr4暫存器的第5位為1說明開啟了pae

說明當前系統啟用了pae.

新的轉化規則

轉換示意圖

規則:每個項的長度為8

va為2位:(30—31)頁目錄指標表的索引

9位:(21—29)頁目錄表索引

9位:(12—20)頁表索引

12位:(0—11)頁內偏移

例如:開啟pae的情況下將計算器程序的入口點0x01012475轉化為實體地址

頁目錄指標表的索引    頁目錄表索引  頁表索引       頁內偏移

0x01012475 《=》         00                     000001000   000010010   010001110101

0x0                       0x8         0x12           0x475

1.!process 0 0獲取計算器程序的資訊

2.定位頁目錄指標表並獲取頁目錄表物理頁位址

頁目錄指標表項的下標為0,所以就是0x06d13801,因此0x06d13000是頁目錄表物理頁面的首位址。

3.定位頁表項

0x4250867就是要找的頁目錄表項,因此頁表物理記憶體頁面首位址為0x4250000.

4.定位物理頁面

0x56b7000就是物理頁面首位址,0x457是偏移,所以0x056b7475就是我們要轉化的實體地址了。

正好就是虛擬位址對應的內容。

修改實體地址處首位元組對比虛擬位址處顯示內容

虛擬位址處內容也隨之改變了。

快訊:[快訊]十年後再版!《加密與解密(第4版)》京東開始預售!

上傳的附件:

啟用PAE機制下虛擬位址到實體地址的轉換

最近突然想起用softice手工計算一下虛擬位址到實體地址的轉換,理論的東西如段表 頁表等已經很熟悉了,但真正實際操作就碰到了大問題,特別是分頁機制,根本不是從cr3到頁目錄表到頁表再到實體地址這麼簡單,後來讀了一下 intel 64 and ia 32 architectures software...

虛擬位址與實體地址

乙個程式編譯連線後形成的位址空間是乙個虛擬位址空間,但是程式最終還是要執行在物理記憶體中。因此,應用程式所給出的任何虛位址最終必須被轉化為實體地址,所以,虛擬位址空間必須被對映到物理記憶體空間中,這個對映關係需要通過硬體體系結構所規定的資料結構來建立。這就是我們所說的段描述符表和頁表,linux主要...

邏輯位址 實體地址 虛擬位址

用於記憶體晶元級的單元定址,與處理器和cpu連線的位址匯流排相對應。雖然可以直接把實體地址理解成插在機器上那根記憶體本身,把記憶體看成乙個從0位元組一直到最大空量逐字節的編號的大陣列,然後把這個陣列叫做實體地址,但是事實上,這只是乙個硬體提供給軟體的抽像,記憶體的定址方式並不是這樣。所以,說它是 與...