0
我對物理和虛擬地址的概念有點不確定。以下是我所瞭解的內容:虛擬與物理地址
已編譯(exe)應用程序文件中指令的虛擬地址是固定的,當應用程序開始執行時,這些固定虛擬地址會動態映射到內存中的物理地址並更新相應的頁面表項。
任何人都可以批准我是否正確?
在此先感謝
我對物理和虛擬地址的概念有點不確定。以下是我所瞭解的內容:虛擬與物理地址
已編譯(exe)應用程序文件中指令的虛擬地址是固定的,當應用程序開始執行時,這些固定虛擬地址會動態映射到內存中的物理地址並更新相應的頁面表項。
任何人都可以批准我是否正確?
在此先感謝
虛擬地址是物理地址頂層的抽象層。物理地址映射到RAM芯片中的特定行。然而,每個進程都有自己的虛擬地址空間。操作系統和硬件在加載/存儲時將虛擬地址轉換爲物理地址。
兩個不同進程中的相同虛擬地址通常會被轉換爲兩個不同的物理內存位置。例如,你可以編寫兩個不同的程序,它們都在0x400000附近加載main。
儘管64位虛擬地址空間非常大,並且可能包含所有正在執行的程序的所有代碼和數據,但您不能在虛擬地址空間內找到其他進程的代碼和/或數據,除非它被操作系統分成多個進程。
一個例子是共享庫。它們被加載到內存中,操作系統將它們所在的物理內存映射到多個進程的虛擬地址空間中。另一個反例是IPC共享內存(http://en.wikipedia.org/wiki/Shared_memory)。
您提到的頁表是操作系統用於將虛擬內存映射到物理內存的機制。