出於某種原因,我需要將代碼段的虛擬地址轉換爲物理地址。我做了以下實驗:Linux中進程代碼段的頁面轉換。爲什麼頁表條目爲某些頁面取0?
我從START_CODE和END_CODE在A處理的mm_struct,這是最初的地址和可執行代碼的最終地址得到虛擬地址。
我得到的過程A.
的CR3我通過網頁翻譯的虛擬地址到物理地址的頁面。例如,過程A中有10個代碼段。我將翻譯頁面每個開始處的10個虛擬地址。
我發現一些頁面會得到Page Table Entry(PTE)== 0.某些頁面可以成功轉換爲物理地址。
我嘗試Firefox和Minicom作爲我的過程,他們兩人都會陷入困境。
我想我的問題是:有誰可以向我解釋爲什麼PTE == 0?這是否意味着這些頁面已被換出到磁盤?如果是這種情況,我怎麼才能找到這些網頁?
感謝您的任何輸入!
這是在內核模式(如從常規設備驅動程序)或用戶模式? – wallyk
謝謝你的提問。實際上,這既不在內核模式下,也不在用戶模式下。我正在另一臺計算機上進行取證。假設我有一個內存轉儲4G文件,進程A的CR3,進程A的start_code和end_code(虛擬地址)。我需要找出進程A的可執行代碼。 –