Linux 进程树图解

1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 背景

本文基于 Linux 4.14 内核源码进行分析。

3. 图解进程树

3.1 初始状态

初始系统中只有 init_task 祖先进程,此时进程树的状态如下:

3.2 经 kthread() 或 fork() 创建第1个进程后

kernel_thread()__kthread_create_on_node()fork()vfork() 创建第1个进程后,进程树由上一小节中的图示变为下图的状态:

3.3 经 clone() 创建第2个进程后

在上一小节的基础上,在第1个进程里调用 clone(CLONE_THREAD, ...) 创建第2个进程后,进程树状态如下:

4. 后记

了解进程树的结构,对于了解调度子系统是有益的,譬如理解进程的退出终止过程、信号处理相关逻辑都会带来好处。

5. 扩展

本篇没有展示 进程组、session、namespace 等,感兴趣的读者可自行查阅相关资料。

posted @ 2025-04-08 09:12  JiMoKuangXiangQu  阅读(40)  评论(0)    收藏  举报