我正在運行某個數組變量的程序。我正在使用Linux系統(ubuntu)支持的/ proc/self/pagemap文件將此陣列的虛擬地址(VA)轉換爲物理地址(PA)。我試圖通過多次運行相同的程序來觀察VA-PA映射(連續運行之間的時間間隔)。我觀察到的是PA在所有運行中都保持不變。爲什麼在運行中物理地址是相同的?
如果VA保持不變,但PA爲什麼保持不變也是合理的。 PA依賴於由OS維護的RAM中可用的空閒頁面。它必須隨時改變系統負載。考慮到所有這些,我期望PA能夠變化,但與之相反的是我觀察到的。
我缺少回答這個問題的OS/Architecture的什麼概念?
說明你嘗試啓動其他一些程序,如果你得到同樣的檢查清除緩存?如果您始終擁有相同的內存佈局,則不需要使用不同的物理地址空間(取決於操作系統的實施情況),但程序的大小也會影響其放置位置。也許當它足夠小時,你就佔據了一個空間,沒有其他一般的工具可以使用。 – Hayt