Linux 的 PID 是进程和线程共享的吗?

输入 ps jfax 查看所有进程

╭─csy@Yoga14S-yjc /mnt/c/Users/17293

╰─➤ ps jfax

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND

0 1 0 0 ? -1 Sl 0 0:00 /init

1 7 7 7 ? -1 Ss 0 0:00 /init

7 8 7 7 ? -1 S 0 0:00 \_ /init

8 9 9 9 pts/0 809 Ss 1000 0:00 \_ -zsh

9 809 809 9 pts/0 809 R+ 1000 0:00 | \_ ps jfax

8 513 512 512 ? -1 S 113 0:00 \_ /usr/bin/pipexec -k -- [ D /usr/bin/etcd ] [ L /usr/bin/logger --tag etcd ] {D 1>L 0} {D 2>L 0}

513 515 512 512 ? -1 Sl 113 0:05 \_ /usr/bin/etcd

513 516 512 512 ? -1 S 113 0:00 \_ /usr/bin/logger --tag etcd

Linux 的 PID 是进程和线程共享的吗?

使用 top -p 515 命令查看进程号为 515 的详情

top - 21:33:28 up 6 min,  0 users,  load average: 0.00, 0.00, 0.00

Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 12272.9 total, 11875.0 free, 153.8 used, 244.0 buff/cache

MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 11879.8 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

515 etcd 20 0 11.5g 39592 16376 S 2.3 0.3 0:06.42 etcd

Linux 的 PID 是进程和线程共享的吗?

按下 shift + H 查看改进程的所有线程

top - 21:34:33 up 7 min,  0 users,  load average: 0.00, 0.00, 0.00

Threads: 20 total, 0 running, 20 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 12272.9 total, 11874.5 free, 154.2 used, 244.2 buff/cache

MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 11879.4 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

518 etcd 20 0 11.5g 39592 16376 S 0.7 0.3 0:00.51 etcd

528 etcd 20 0 11.5g 39592 16376 S 0.7 0.3 0:00.65 etcd

517 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:01.48 etcd

519 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.57 etcd

520 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.65 etcd

524 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.68 etcd

527 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.47 etcd

515 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.41 etcd

521 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd

522 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd

523 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd

525 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.46 etcd

526 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.39 etcd

529 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.12 etcd

530 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd

545 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.36 etcd

743 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.22 etcd

744 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.39 etcd

808 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.01 etcd

816 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.09 etcd

Linux 的 PID 是进程和线程共享的吗?

可以看到有一堆的进程,并且每个线程都有一个 pid

请问,pid 不是 process id 的意思吗?进程的 id 号?

为什么线程也和进程共享 pid

参考文章:
进程和线程之间有什么根本性的区别?


回答:

Stack Overflow上有相关的讨论,你可以参考一下这个:https://stackoverflow.com/que...

简单来说,从用户的角度所有线程都共享一个pid,但是从内核的角度每个线程都有独立的pid(虽然应该叫thread id更为合适)。你的截图里面有些是从用户角度来展示的,有些是从内核角度展示的。

以上是 Linux 的 PID 是进程和线程共享的吗? 的全部内容, 来源链接: utcz.com/p/938229.html

回到顶部