Linux

對於程序或輕量級程序,tgid 和 pid 是否有所不同?

  • December 31, 2018

tgid 和 pid 對於任何程序或任何輕量級程序都是相同的概念。

/proc/${pid}/status中,tgid 和 pid 是不同的欄位。對於程序或輕量級程序,tgid 和 pid 是否有所不同?

謝謝。

查看 時/proc/${pid}/statusTgid:andPid:欄位將始終匹配,因為它們對於程序或程序的主執行緒是相同的。

之所以有兩個不同的欄位,是因為生成的程式碼相同/proc/${pid}/task/${tid}/status,其中Tgid:Pid:可能不同。(更具體地說,Tgid:將匹配${pid}並將在上面使用的文件名模板中匹配。Pid:${tid}


命名有點混亂,主要是因為執行緒支持只是後來才添加到 Linux 核心中,而且當時修改了調度程式碼以重用用於調度程序的邏輯,因此它現在可以調度執行緒。這導致重用“pids”的概念來辨識單個執行緒。因此,實際上,從核心的角度來看,“pid”仍然用於執行緒,而“tgid”被引入用於程序。但是從使用者空間你仍然希望 PID 來辨識一個程序,因此使用者空間實用程序,例如ps等,會將核心的“tgid”映射到 PID,並將核心的“pid”映射到“tid”(執行緒 id。)

引用自:https://unix.stackexchange.com/questions/491691