進程監視器中的位址是什麼

進程監視器中的位址是什麼

在「進程監視器」下,如果我們選擇特定進程然後選擇其屬性,在事件屬性下,進程標籤會顯示每個單獨庫檔案的位址以及這些位址引用什麼?堆疊下的位址也指向虛擬或實體記憶體位置嗎?

答案1

顯示的所有位址都是虛擬的。它們是進程虛擬位址空間中 DLL 或其他映射檔案的起始位址。 「堆疊」標籤中顯示的位址也是虛擬的。

您可以在 Process Explorer 中看到類似的細分 - 啟用下部窗格中的「DLL 視圖」。也在 VMmap 中,但有更多細節。 VMmap 包括每個可執行檔內「部分」的位址。將有一節用於程式碼,一節用於只讀數據,一節用於「資源」等,再加上一些控制資訊。

對於x86/x64上的虛擬記憶體作業系統來說,直接使用(即引用)實體位址其實是極為困難的。一旦系統「進入虛擬」狀態,即在 CR0 中設定「分頁啟用」位元(這在啟動的早期發生),運行程式碼(無論是核心模式還是用戶模式)聲明的所有位址都會被 CPU 解釋為虛擬位址,在將它們呈現給記憶體控制器之前,必須將其轉換為實體資料(使用頁表中的信息)。

作業系統中的核心程式碼當然會「管理」實體記憶體(例如,將其分配給需要它的進程)並操作頁表條目和物理頁號,但它不能透過直接「引用」記憶體記憶體的實體位址。

相關內容