繁体   English   中英

虚拟地址与物理地址

[英]Virtual vs Physical Address

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

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

任何人都可以批准我是否正确?

提前致谢

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

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

即使64位虚拟地址空间很大,并且可能包含所有正在执行的程序的所有代码和数据,但是除非操作系统将其映射到多个虚拟地址空间中,否则您将无法在虚拟地址空间中找到另一个进程的代码和/或数据。流程。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM