Linux内核进程管理之进程ID

本文介绍了Linux内核中的进程ID管理,包括PID的四种类型:PID、TGID、PGID和SID。详细讲解了PID命名空间的概念,阐述了命名空间如何实现进程的资源隔离,并允许PID重复。此外,还解析了PID的数据结构及其关键成员,以及与之相关的函数,如获取PID、线程组ID、进程组ID和会话组ID的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程ID简介


一个进程实体对应一个task_struct结构体,关于这个结构体后续的文章会有介绍,这里我们只需要知道通过该结构体我们可以获得该进程使用的所有资源信息。
进程ID顾名思义就是进程的ID,一个进程有四种类型的ID,分别是:

  • PID:用于唯一标记一个进程

这句话在以前是完全无误的,但是现在还必须加上一个条件,那就是在一个命名空间内唯一标记一个进程。关于命令空间,下一个章节会有介绍

  • TGID:线程组ID

一个进程可能包含多个线程,组成一个线程组,线程组内所有的线程的TGID都等于组长的PID。

  • PGID:进程组ID。

多个进程可以组成一个进程组,一个进程组内所有进程的PGID都等于组长的PID。

SID:几个进程组可以组成一个会话组,会话组内所有的进程都有相同的SID。

PID命名空间介绍


Linux的命名空间是一种资源隔离机制,我们拿PID来做说明。
在这里插入图片描述
上图是3级namespace,上级和下级之间是父子关系。关于namespace有两点十分关键:

  1. 各个namespace之间的是相互隔离的,也就是说PID可以重复。如上图各个namespace都有PID为1的进程。
  2. 在下级namespace中创建的进程,在上级namespace中是可见的。如上图在level2 namespace中创建了进程PID=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值