2012-10-08 119 views
1

我對ELF部分的虛擬和物理地址有這個基本的疑問。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(物理地址)也稱爲加載地址,這是應用程序應該加載的地址。

一切都很好,但我的問題是爲什麼我們這麼早分配物理地址。我的意思是,如果我啓動一個提到某個加載地址的程序,但在加載時系統發現可加載地址所屬的頁面框架已被分配給其他任務。在這種情況下,系統是要等待進程還是要立即換出頁面,以使頁面可用。

你不覺得如果我們讓系統根據可用的頁面框架決定在哪個地址加載一個精靈部分會好很多。

+1

你的用戶模式應用程序將永遠不會知道它的內存在哪個物理地址上。見[這個問題](http://stackoverflow.com/questions/6218384/virtual-and-physical-addresses-of-sections-in-elf-files)。 –

回答

0

每個進程都在其自己的地址空間中運行,因此每個可執行文件都可以指定它希望加載的位置,而不會互相干擾。

相關問題