什么时候将虚拟地址分配给程序/进程?

时间:2018-05-08 19:46:02

标签: linux virtual-memory

这对许多人来说可能听起来非常愚蠢,但我想对这个话题有清晰的认识。 例如:当我们在linux(ubuntu,x86)上构建一个C程序时,它会在成功编译和链接过程后生成a.out。 a.out包含哪种类型的地址?是虚拟地址吗?如果没有,那么在哪个步骤(从构建程序到加载到内存中)虚拟地址将发挥作用?

1 个答案:

答案 0 :(得分:-1)

编译器生成地址。链接器生成地址。它们只是地址。

如果您在没有逻辑地址转换的系统上进行开发或运行,那么这些地址将被解释为物理地址。

如果您在使用逻辑地址转换的系统上进行开发或运行,那么这些地址将被解释为逻辑地址。

  

a.out包含哪种类型的地址?是虚拟地址吗?

它包含未指定类型的地址。

  

如果没有,那么在哪个步骤(从构建程序到将其加载到内存中)中,虚拟地址将会起作用?

这完全取决于处理器如何解释这些地址。