SPID 缩写代表什么?

SPID 缩写代表什么?

ps带有该标志的命令输出-TSPID 列,也称为 TID(线程 ID)。但 SPID 代表什么?

源代码ps似乎也不知道为什么这个名字是:

trace("-T adds strange SPID column (old sproc() threads?)\n");

https://gitlab.com/procps-ng/procps/-/blob/newlib/src/ps/parser.c#L320

答案1

参考sproc,它在 IRIX 上创建一个新的“共享组”进程(类似于 Linux 上的线程)表明 SPID 可以引用诸如“共享组进程 id”之类的内容。

正如你所说,实际上 Linux 上的ps线程 ID 显示在 SPID 列中,IE从内核角度来看的进程ID(psPID列中显示的进程ID是从内核角度来看的进程组ID)。这与带有该选项的 LWP 列中显示的信息相同-L。目前尚不清楚这是否真的符合 IRIX 行为;IRIXps手册页没有提到 SPID 列;它将-T选项记录为

列出各个内核线程的数据。通常,所提供的信息是进程的所有线程的总和。这在检查 POSIX 线程进程时很有用。

答案2

procps 中的 SPIDps显示 TID 或线程 ID。与显示进程或线程进程 ID 的 PID 和 TGID 列相反。

一个进程具有相同的进程 ID 和线程 ID。该进程的任何线程也将共享进程 ID,但线程 ID 不同。

$ ps -L -o pid,tgid,tid,spid,cmd 232810
    PID    TGID     TID    SPID CMD
 232810  232810  232810  232810 /usr/libexec/gnome-terminal-server
 232810  232810  232811  232811 /usr/libexec/gnome-terminal-server
 232810  232810  232813  232813 /usr/libexec/gnome-terminal-server
 232810  232810  232814  232814 /usr/libexec/gnome-terminal-server

有主进程232810,然后是三个线程232811、232813和232814。

tid 和 spid 是别名,它们都调用相同的函数来打印相同的值。区别在于 SPID 来自 SGI 操作系统,而 TID 来自 AIX。

相关内容