連結器與載入器與執行檔格式

關於ELF檔案中的「區段(section)」與「段(segment)」的差異,下列何者正確?

  1. A區段是Windows的稱呼,段是Linux的稱呼,兩者內容相同
  2. B區段是連結器處理的細小單位,段則是載入器載入記憶體的單位,將權限相同的區段彙整在一起
  3. C段只存在於磁碟上,不會載入記憶體
查看答案與解析

正確答案:B. 區段是連結器處理的細小單位,段則是載入器載入記憶體的單位,將權限相同的區段彙整在一起

ELF有兩種觀點。連結器以.text、.rodata、.data、.bss等細小的區段為單位進行結合與重定位。載入器則以程式標頭所記載的段為單位對應到記憶體,例如將.text與.rodata彙整到可讀取與執行的段,將.data與.bss彙整到可讀寫的段。依權限彙整,較容易設定以分頁為單位的保護。

  • A. 兩者都是ELF的用語,但作用不同。
  • B. 正確。一個是為連結而設的觀點,一個是為執行而設的觀點。
  • C. 段才是載入記憶體的單位。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 藉由不讓記憶體分頁同時具備「可寫入」與「可執行」(W^X,寫入與執行分離),較容易防禦的攻擊為下列何者?
  2. 在Linux的共用函式庫中,將libfoo.so.1的「.1」這類soname的版本號碼調高,一般是在什麼時候?
  3. 在Linux上對執行檔使用ldd指令,可得知下列何者?
  4. 主要作業系統所使用的執行檔格式組合,下列何者正確?
  5. 當遞迴過深而超過堆疊的上限時,在Linux等系統上一般會發生的事,下列何者正確?

這個領域的比較