Process Creation, #2:Running a "User Process"

jollen 發表於 January 2, 2007 11:08 PM

Process Creation

在討論「Process Creation」議題時,首先要了解的就是「Linux 的三種 Process」。同樣是「執行中的程式(process)」,但是依其「特性(design perspective)」區分的話,可以歸納為以下三種:

  • idle process

  • kernel threads

  • user process

其中「user process」就是我們此系列日記所要介紹的對象。User process 是很單純的一種 process,簡單來說,以下二種「執行程式的方式」就是 user process:

  • 在 shell 模式中輸入 Linux command 所執行的外部程式

  • 由 init process 所執行的外部程式

那麼 user process 是怎麼執行的呢?嗯,先前我們提過的日記「Process Creation, #1:由 shell 執行外部程式《基本觀念與範例》」便介紹了這樣的觀念。

Process Creation:Running a Program

接著,我們就以一張圖來展示「在 shell 模式執行外部程式(running a program)」的流程。

running_a_program.jpg

這樣就很清楚了:

  1. 由 user 鍵入 UNIX command

  2. shell 在 PATH 路徑中尋找 command,即外部程式(stored program)

  3. shell fork/clone 自己,然後 child process 會將自己取代為 ELF image*1

至於「idle process」與「kernel threads」則不適用此圖!

*1 即外部程式:Linux 的執行檔為 ELF 的格式,所以稱其為「ELF image」

Also See

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。