連結器與載入器與執行檔格式
啟動程式時(Linux的execve等),作業系統的載入器所進行的事項,下列何者正確?
- A讀取原始碼,當場編譯後再執行
- B依照執行檔的程式標頭,將各部分配置到記憶體,並在堆疊上準備引數等,再從入口位址開始執行
- C先將執行檔的所有符號名稱顯示在畫面上再執行
查看答案與解析
正確答案:B. 依照執行檔的程式標頭,將各部分配置到記憶體,並在堆疊上準備引數等,再從入口位址開始執行
載入器會讀取執行檔的標頭,將程式標頭所記載的各部分(區段,segment)附上讀取、寫入、執行的權限,對應到虛擬位址空間。接著準備BSS用的0值區域與堆疊,並將命令列引數與環境變數推入堆疊。若是動態連結,就從動態連結器開始,否則從執行檔的入口位址開始執行。
- A. 執行檔本身已經是機器碼。
- B. 正確。記憶體的準備與開始執行是載入器的工作。
- C. 不會顯示符號名稱。