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 等,感兴趣的读者可自行查阅相关资料。

浙公网安备 33010602011771号