Skip to content

Commit 1829b64

Browse files
committed
feat: supplement to pid and tgid
1 parent 80f102a commit 1829b64

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

docs/Ch04/images/PID_true.png

95 KB
Loading

docs/Ch04/index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ root 14 0.0 0.0 0 0 ? S 02:33 0:00 [migration/0]
8181

8282
由于 kthreadd 运行于内核空间,故需按大写 K(++"Shift"++ + ++"k"++)键显示内核进程后才能看到。然而无论如何也不可能在 htop 中看到 0 号进程本体,只能发现 1 号和 2 号进程的 PPID (Parent PID) 是 0。
8383

84+
??? question "PID 真的标识的是进程吗?"
85+
86+
在 Linux 内核中,PID 实际上是被用来唯一标识内核调度的基本单位——**任务**(task),可以将其简单理解为 **线程**(thread)。对于单线程程序来说,一个进程里只有一个线程,因而 PID 就可以唯一标识该进程;但对于多线程程序来说,一个进程里有多个线程,每个线程都有自己的 PID,且所有线程都位于同一个 **线程组**(thread group)中,其唯一标识为 **线程组 ID**(TGID),与主线程的 PID 相同,因而 TGID 可以唯一标识该进程。
87+
88+
在 htop 中,使用快捷键 ++"Shift"++ + ++"H"++ 可以切换是否显示线程,在同时开启了显示线程和树形结构的情况下,可以看到同一进程的其他线程均归属于主线程之下。
89+
90+
![PID_true](images/PID_true.png)
91+
8492
### 进程优先级与状态 {#process-priority-and-stat}
8593

8694
我们平时使用操作系统的时候,可能同时会开启浏览器、聊天软件、音乐播放器、文本编辑器……前面提到它们都是进程,但是单个 CPU 核心一次只能执行一个进程。为了让这些软件看起来「同时」在执行,操作系统需要用非常快的速度将计算资源在这些进程之间切换,这也就引入了进程优先级和进程状态的概念。

0 commit comments

Comments
 (0)