【问题标题】:Is virtual address process-specific?虚拟地址是特定于进程的吗?
【发布时间】:2016-01-27 21:18:50
【问题描述】:

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

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

我对这些陈述是否正确?如果是,它们是否适用于 x86、x86-64 和 ARMv7、ARMv8 架构?

【问题讨论】:

  • 您是否阅读过processesvirtual memoryvirtual address space 上的相关维基页面...?
  • @BasileStarynkevitch 好吧,不是全部。但是,我不确定我是否理解正确。看答案,他们都在说相反的事情。如果有人回答问题,那么他/她声称他/她知道这个话题。所以我们现在有两个事实:)

标签: c memory memory-management heap-memory


【解决方案1】:

除了:

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

虽然这是一般情况,当然不同的进程可以共享映射页面(查看共享内存)然后指针可以指向相同的数据,给定这些页面被映射到虚拟地址空间中的相同位置。

但是是的,这是正确的理解。

【讨论】:

  • 另外,共享内存可以映射到不同进程中的不同地址。
  • 当然可以,但不是必须的。例如共享库的映射......我会改进措辞。
  • 谢谢。因此,声明的一点修正是:可能被翻译:)
  • 仍有部分问题没有得到解答。它是否适用于每个列出的架构?
  • @Miro 他们都有虚拟内存管理,所以基本上是一样的,是的。实现可能会有所不同,例如嵌套页表的深度...
猜你喜欢
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多