Tim*_*Tim 3 linux process thread linux-kernel
对于任何进程或任何轻量级进程,tgid 和 pid 都是相同的概念。
在 中/proc/${pid}/status,tgid 和 pid 是不同的字段。对于进程或轻量级进程,tgid 和 pid 是否有所不同?
谢谢。
当查看 时/proc/${pid}/status,Tgid:和Pid:字段将始终匹配,因为它们对于进程或进程的主线程是相同的。
之所以有两个单独的字段,是因为使用相同的代码来生成/proc/${pid}/task/${tid}/status,其中Tgid:和Pid:可能彼此不同。(更具体地说,Tgid:将匹配${pid}并且将在上面使用的文件名模板中Pid:匹配。)${tid}
命名有点令人困惑,主要是因为线程支持后来才添加到 Linux 内核中,并且当时修改了调度程序代码以重用用于调度进程的逻辑,因此现在可以调度线程。这导致重新使用“pid”的概念来识别各个线程。因此,实际上,从内核的角度来看,“pid”仍然用于线程,而“tgid”则被引入用于进程。但是在用户空间中,您仍然希望 PID 来识别进程,因此用户空间实用程序(例如ps等)会将内核的“tgid”映射到 PID,并将内核的“pid”映射到“tid”(线程 ID)。