理解 dynamic loader 內部原理的幾個先備知識(下):Kernel 端的議題

jollen 發表於 December 29, 2006 9:20 PM

前些日子寫到「理解 dynamic loader 內部原理的幾個先備知識(上)」時提及,必須略懂 .bss section 的觀念,並且最後也提到「之後再寫日記,以一段 code 來說明。」。其實之後幾天我就把介紹 .bss section 觀念的日記寫好了,只是還沒有加入到專欄索引,趕快來把索引做好!

今天加入「BSS Section Concepts: .bss section 的基本觀念介紹」的專欄索引。

以下是必讀的二個專欄(及理由):

1. 必須先懂 ELF 到底是什麼東西,才會知道 .bss 是 ELF 的「一個節區」。可以參考 Jollen 的「 Executable and Linking Format: 重要的 ELF 格式介紹」專欄。

2. 接著才是讀「BSS Section Concepts: .bss section 的基本觀念介紹」專欄。.bss section 是「動態時期(run time)」,而不是「靜態時期(stored)」的觀念,這真的是很重要。

除了「理解 dynamic loader 內部原理的幾個先備知識(上)」提到以 ELF 為主軸的幾個重要先備知識外,在開始研究 dynamic loader 前,還有幾個重要觀念也是要先懂的。其中與 kernel 相關的議題整理如下:

1. 就整體來看,最好了解 kernel 的開機流程,也就是由 bootloader 載入 kernel 後一直到 init process(user-space)的整個過程。這部份,Jollen 正在準備一篇簡單的文章來跟大家分享。

2. 就內部來看,必須知道「下指令後、程式怎麼載入與執行」的流程。大致來看,這涉及 shell、fork system call、exec system call 三大主題。這部份,Jollen 也打算寫篇日記來介紹。

了解以上二個重要觀念後,再切入研究 dynamic loader(例如:process 與 libc.so.6 如何 "dynamic" linking)時,腦細胞的連結才會比較順暢。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw