我对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(物理地址)也称为加载地址,这是应该加载应用程序的地址。
一切都很好,但我的问题是为什么我们这么早就分配了物理地址。我的意思是如果我启动一个程序提到一些加载地址,但在加载时,系统发现可加载地址所属的页面框架已经分配给其他任务。在那种情况下,系统是否会等待进程或者是否会立即换出页面,从而使页面可用。
如果我们让系统根据可用的页面框架决定加载精灵部分的地址,你认为不会好多了吗?
答案 0 :(得分:1)
每个进程都在自己的地址空间中运行,因此每个可执行文件都可以指定它预期加载的位置,并且没有一个会相互干扰。