【问题标题】:Virtual and Physical addresses in ELFELF 中的虚拟和物理地址
【发布时间】:2012-10-08 04:24:55
【问题描述】:

我对 ELF 部分的虚拟地址和物理地址有这个基本的疑问。

objdump -h,显示一组逻辑和物理地址。

$ objdump -h my.elf
Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0003c3d0  00080000  00080000  00010000  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE

根据理论,LMA(物理地址)也称为加载地址,这是应用程序应该加载的地址。

一切都很好,但我的问题是为什么我们这么早就分配物理地址。我的意思是,如果我启动一个提到某个加载地址的程序,但在加载时,系统发现可加载地址所属的页框已分配给其他任务。在这种情况下,系统是等待进程还是立即换出页面以使页面可用。

您不认为如果我们让系统根据可用的页框来决定在哪个地址加载精灵部分会更好吗?

【问题讨论】:

  • 您的用户模式应用程序将永远知道它的内存在哪个物理地址。见this question

标签: linker elf


【解决方案1】:

每个进程都在自己的地址空间中运行,因此每个可执行文件都可以指定它期望加载的位置,并且不会相互干扰。

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2015-05-04
    • 2013-05-05
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多