linux-kernel-process-and-thread
【Linux Kernel】Process and Thread的關係
2026-04-19·6·
LinuxKernelOS
Linux Kernel中的Process, Thread其實跟我們一般認知的定義有些不太一樣,因此這篇文章來記錄這些名詞上的差異。
最開始的Linux,並沒有follow POSIX的標準,且當初也沒有針對多執行緒去設計架構,都還是以單執行緒為主,因此最早期設計了task_struct這個資料結構當作Scheduler調度CPU資源的單位,一個task_struct就代表一個Process。
後來多核CPU逐漸成為主流後,多執行緒的設計就很有必要了,但Linux為了方便便延續了之前的設計,將task_struct定義改為Lightweight Process(LWP),其實就是我們一般認知的Thread的概念,而Process這個名詞則變成了一組LWP的集合,Linux稱之為Thread Group。
task_struct又被稱作Process descriptor(也就是OS中的PCB),存放所有跟該LWP有關的資料,其中有兩個重要的欄位:
// task_struct中的欄位
pid_t pid;
pid_t tgid;
以及另外兩個重要的function: