Linux
對於程序或輕量級程序,tgid 和 pid 是否有所不同?
tgid 和 pid 對於任何程序或任何輕量級程序都是相同的概念。
在
/proc/${pid}/status
中,tgid 和 pid 是不同的欄位。對於程序或輕量級程序,tgid 和 pid 是否有所不同?謝謝。
查看 時
/proc/${pid}/status
,Tgid:
andPid:
欄位將始終匹配,因為它們對於程序或程序的主執行緒是相同的。之所以有兩個不同的欄位,是因為生成的程式碼相同
/proc/${pid}/task/${tid}/status
,其中Tgid:
和Pid:
可能不同。(更具體地說,Tgid:
將匹配${pid}
並將在上面使用的文件名模板中匹配。Pid:
)${tid}
命名有點混亂,主要是因為執行緒支持只是後來才添加到 Linux 核心中,而且當時修改了調度程式碼以重用用於調度程序的邏輯,因此它現在可以調度執行緒。這導致重用“pids”的概念來辨識單個執行緒。因此,實際上,從核心的角度來看,“pid”仍然用於執行緒,而“tgid”被引入用於程序。但是從使用者空間你仍然希望 PID 來辨識一個程序,因此使用者空間實用程序,例如
ps
等,會將核心的“tgid”映射到 PID,並將核心的“pid”映射到“tid”(執行緒 id。)