进程ID简介
一个进程实体对应一个task_struct结构体,关于这个结构体后续的文章会有介绍,这里我们只需要知道通过该结构体我们可以获得该进程使用的所有资源信息。
进程ID顾名思义就是进程的ID,一个进程有四种类型的ID,分别是:
- PID:用于唯一标记一个进程
这句话在以前是完全无误的,但是现在还必须加上一个条件,那就是在一个命名空间内唯一标记一个进程。关于命令空间,下一个章节会有介绍
- TGID:线程组ID
一个进程可能包含多个线程,组成一个线程组,线程组内所有的线程的TGID都等于组长的PID。
- PGID:进程组ID。
多个进程可以组成一个进程组,一个进程组内所有进程的PGID都等于组长的PID。
SID:几个进程组可以组成一个会话组,会话组内所有的进程都有相同的SID。
PID命名空间介绍
Linux的命名空间是一种资源隔离机制,我们拿PID来做说明。
上图是3级namespace,上级和下级之间是父子关系。关于namespace有两点十分关键:
- 各个namespace之间的是相互隔离的,也就是说PID可以重复。如上图各个namespace都有PID为1的进程。
- 在下级namespace中创建的进程,在上级namespace中是可见的。如上图在level2 namespace中创建了进程PID=