虚拟地址是进程特定的吗?

5

我一直在研究与内存管理相关的主题。我想知道,我是否理解正确:

  • 指针(虚拟)地址是进程特定的
  • 不同的进程可以有相同地址的指针,但这些指针被转换为不同的物理地址

我的理解正确吗?如果是,它们适用于x86、x86-64和ARMv7、ARMv8架构吗?


你是否阅读了关于进程虚拟内存虚拟地址空间的相关维基页面? - Basile Starynkevitch
@BasileStarynkevitch 嗯,并不是所有的人都这样。但是,我不确定我是否理解正确。看看答案,它们都在说相反的事情。如果有人回答问题,那么他/她声称自己了解这个主题。所以现在我们有两个真相 :) - kravemir
1个回答

8

除了:

不同的进程可以有相同地址的指针,但是这些指针会被翻译成不同的物理地址

虽然这是一般情况,但如果不同的进程共享映射页面(请查阅共享内存),那么指针可能会指向相同的数据,前提是页面被映射到虚拟地址空间的相同位置。

但是没错,这就是正确的理解。


3
共享内存在不同进程中可能映射到不同的地址。 - Some programmer dude
当然可以,但不是必须的。例如共享库的映射...我会改善措辞。 - user2371524
谢谢。因此,语句的小修复可能会被翻译 :) - kravemir
仍有未回答的问题。这是否适用于每个列出的架构? - kravemir
1
@Miro,它们都具有虚拟内存管理,因此基本上是相同的。实现可能会有所不同,例如嵌套页表的深度... - user2371524

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接