1 进程和线程的描述

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

虚拟内存信息:描述每个进程拥有的地址空间。

处理器环境信息:描述进程的执行环境(处理器的寄存器及堆栈等)

2 进程状态与进程间的层级

11.png

先来看一下进程状态,它是怎么确定的呢?查看一下 task_struct 结构体,会发现里面有状态成员变(status),进程就是根据该变量来告诉内核自己当前处于什么样的状态,你应该什么时候正确使用我。

进程的状态大致分为三类:运行态,阻塞态,就绪态。而后来,随着操作系统的丰富,以及进程的并发需求,而成了上图所示的状态切换。

12.png

上图是对内核中的进程层次的一个大致分析,它不仅仅是层次的框架,同时也是操作系统中所有进程衍生的一个大致过程。可以看出操作系统中最开始的进程为 init 进程。

13.png

这是一段程序的显示结果,pid 代表着当前进程的编号,ppid 代表当前进程的父进程的编号。从上图中的编号中,可以找到父进程与子进程之间的对应关系。

14.png

这是对上面程序产生的进程的一个层次结构的展示,层次结构是一个很重的理解点,只有清晰地梳理透彻进程层次结构,才能明确进程的状态转化,以及进程结构体中成员变量变换的含义。

15.png

16.png

3 task_struct的多样性与统一性

21.png

22.png

23.png

24.png

25.png

26.png

27.png

28.png

29.png

2a.png

2b.png

2c.png

2d.png

2e.png

2f.png

2ff.png

4 进程创建过程

31.png

32.png

33.png

34.png

35.png

36.png

37.png

38.png

39.png

3a.png

3b.png

3c.png

5 进程调度

51.png

52.png

53.png

54.png

55.png

56.png

57.png

58.png

59.png