linux进程身份 - 进程类型与进程关系

来源:互联网 发布:网络推广怎么找广告主 编辑:程序博客网 时间:2024/05/16 01:37

文章系列


进程类型


进程与线程(轻量级进程)

借用情景分析中的定义,本小节来介绍linux内核中的进程与线程,在linux中进程都具有下列四个要素:
1. 有一段程序供其执行,这段程序不一定是进程所专有,可以与其他进程共用
2. 有进程专用的系统堆栈空间
3. 有自己独立的task_struct数据结构
4. 有独立的存储空间,意味着有专用的用户空间
上述四个要素缺一条就不成其为进程,如果只具备前三个要素那个称为线程,也可以看作是个轻量级进程;特别地,如果完全没有用户空间就称为内核线程,而如果共享用户空间则称为用户线程

进程组

进程组是一个或多个进程的集合。

线程组

线程组是多个线程的集合。

会话组

会话组是一个或多个进程组的集合。

进程关系


进程、线程、进程组、线程组的关系可以看下图:

这里写图片描述

上图进程P0创建了子进程P1、P2和P3,那么进程P1、P2和P3的父进程为P0,进程P0、P1、P2和P3组成了一个进程组(如果进程P0是这个进程组的组长)。
子进程P2创建了线程T1、T2和T3,那么进程P2就可以看作这三个线程的线程组组长T0,线程T0、T1、T2和T3组成了一个线程组。

上图中进程描述符的相关字段解释如下:

字段 说明 real_parent 指向创建本进程的描述符,如果父进程不存在,就指向init进程的描述符 parent 它的值通常与real_parent一致,但偶尔不同 children 一个链表,指向创建的子进程 sibling 指向兄弟进程 group_leader 指向线程组组长的描述符 thread_group 线程组链表的连接头
0 0