SPID 약어는 무엇을 의미합니까?

SPID 약어는 무엇을 의미합니까?

ps이 플래그가 있는 명령은 -TTID(스레드 ID)라고도 알려진 SPID 열을 출력합니다. 그러면 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이는 SPID가 "공유 그룹 프로세스 ID"와 같은 것을 참조할 수 있음을 나타내는 IRIX(Linux의 스레드와 유사)에 새로운 "공유 그룹" 프로세스를 생성합니다.

말씀하신 대로 실제로 Linux의 스레드 ID는 psSPID 열에 표시됩니다.커널 관점에서 본 프로세스 ID( psPID 열에 표시된 프로세스 ID는 커널 관점에서 본 프로세스 그룹 ID입니다). 이는 이 옵션을 사용하여 LWP 열에 표시되는 정보와 동일합니다 -L. 이것이 실제로 IRIX 동작인지 여부는 확실하지 않습니다.IRIX ps매뉴얼 페이지-T옵션을 다음과 같이 기록하는 SPID 열에 대한 언급은 없습니다.

개별 커널 스레드에 대한 데이터를 나열합니다. 일반적으로 제공되는 정보는 프로세스의 모든 스레드의 합계입니다. 이는 POSIX 스레드 프로세스를 검사할 때 유용합니다.

답변2

procps의 SPID는 psTID 또는 스레드 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과 3개의 스레드 232811, 232813, 232814가 있습니다.

tid 및 spid는 별칭이며 둘 다 동일한 함수를 호출하여 동일한 값을 인쇄합니다. 차이점은 SPID는 SGI 운영 체제에서 나오는 반면 TID는 AIX에서 나온다는 것입니다.

관련 정보