目录
1、进程的概述
1.1程序与进程的区别(重要)
程序 静态的 占磁盘空间
进程 动态的 (调度、执行、消亡),占内存空间。(进程是程序执行到结束间的这个过程)
1.2单道和多道程序设计
单道程序设计 所有进程一个一个排队执行。若A阻塞,B只能等待,即使CPU处于空闲状态。
多道程序设计 在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。
1.3并行和并发的区别 (重要)
并行和并发都是多个任务同时执行。
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。(多核)
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上不是同时执行的,只是把时间分成若干段,使得多个进程快速交替的执行。(单核)
1.4进程控制块PCB
进程运行时,内核为每个进程分配一个PCB(进程控制块),维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
PCB存在于进程的内核空间里面。
系统会为每个进程分配一个进程ID,其类型为pid_t(非负整数)
进程是系统分配资源的基本单位。
1.5进程的状态
进程状态:就绪态、执行态、等待态。
就绪态:执行条件全部满足,等待CPU的执行调度。
执行态:正在被CPU调度执行。
等待态:不具备CPU调度执行的条件,等待条件满足。
查看进程状态: ps aux ( | bash)
2、进程号PID
每个进程都由一个进程号来标识,其类型为pid_t(整型),进程号的范围:0~32767。进程号总是唯一的,但进程号可以重用。当一个进程终止后,其进程号就可以再次使用。
进程号(PID):标识进程的一个非负整型数。
父进程号(PPID)
进程组号(PGID):进程组是一个或多个进程的集合。
2.1获取进程号的函数
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
功能:
获取本进程号(PID)
参数:
无
返回值:
本进程号