虚拟与物理地址

时间:2013-05-10 14:16:40

标签: memory virtual-memory

我对物理和虚拟地址概念有点不确定。这是我所理解的:

已编译(exe)应用程序文件中指令的虚拟地址是固定的,当应用程序开始执行时,这些固定的虚拟地址会动态映射到内存中的物理地址,并更新相应的页表条目

任何人都可以批准我是否对吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

虚拟地址是物理地址之上的抽象层。物理地址映射到ram芯片中的特定线。但是,每个进程都有自己的虚拟地址空间。操作系统和硬件在加载/存储时将虚拟地址转换为物理地址。

两个不同进程中的相同虚拟地址通常被转换为两个不同的物理内存位置。例如,您可以编写两个不同的程序,它们都在0x400000附近加载。

即使64位虚拟地址空间非常大并且可能包含所有正在执行的程序的所有代码和数据,您也无法在虚拟地址空间中找到其他进程的代码和/或数据,除非它由操作映射系统分为多个过程。

一个例子是共享库。它们被加载到内存中,操作系统将它们驻留的物理内存映射到多个进程的虚拟地址空间。另一个反例是IPC共享内存(http://en.wikipedia.org/wiki/Shared_memory)。

您提到的页表是操作系统用于将虚拟内存映射到物理内存的机制。