我知道如果頁面不在主內存中,CPU會從交換文件中提取它。所以如果一個虛擬地址沒有物理地址對應的地方,CPU就會把它從磁盤中拿出來。因此映射到虛擬地址可以位於以下兩個位置之一:無論是在物理內存中還是在磁盤中。我的問題是虛擬地址本身在哪裏?因爲CPU需要這個虛擬地址才能執行映射。 CPU獲得這個地址在哪裏?當我們使用gdb來查看虛擬地址空間時,gdb在哪裏獲取所有這些虛擬地址?虛擬內存地址在哪裏?
對於前:
虛擬地址0x420000
頁表20
RAM的0x800000
這裏20(頁表條目)駐留在內存中。 0x800000(物理地址)駐留在RAM中。 0x420000信息駐留在哪裏? CPU需要從某個地方獲取這些信息,否則它將如何執行地址轉換?
現在我想我知道hwere虛擬地址信息來自。它來自pc計數器的應用程序本身,它將它傳遞給CPU,然後CPU進行轉換。
它不駐留在任何地方,它是虛擬的。唯一的物理表現形式是由操作系統和交換文件維護的頁面映射表。 –
不存在的郵政地址在哪裏?他們不。地址沒有物理存在。這是您可以用來查找*確實存在的信息的信息。虛擬地址就是用來定位映射到進程地址空間的數據的信息。地址本身不「駐留」在任何地方。 – jalf
但是你確實從某個地方得到了郵政地址。否則,你會如何找到存在? –