进程的组成

进程主要由“程序”,“数据”,“进程控制块(PCB)” 三部分组成
1.程序
是描述进程功能的可执行机器指令,它通常作为静态文件存储在计算机硬盘等存储设备中。
2.数据
数据是进程的操作对象,同一段程序在不同数据集上的执行过程是不同的进程。
3.进程控制块
PID 进程标识符
PPID 父进程标识符
ID(UID) 进程启动的用户id
GID 用户所属归属组
一个进程创建的新进程称为这个进程的子进程(child process),创建子进程的进程称为父进程,当父进程被关闭时,子进程也被关闭,但是当子进程被关闭,父进程不会被关闭。

进程的状态

进程是由运行程序产生的,由于程序的运行情况不同,进程也包括多个状态,主要包括“运行态”,“就绪态”,“堵塞态”
1.运行态
当一个进程在CPU运行时,称该进程处于运行态。对于单CPU系统,处于运行态的进程只能有一个,对于多CPU系统,可以有多个进程同时处于运行态,即多个进程并发执行。
2.就绪态
当进程获得了除了CPU之外的其他所有系统资源,一旦调入CPU即可运行,则称该进程处于就绪态。
3.堵塞态
当一个进程正在请求I/O或者等待某一事件发生而暂停运行时,称该进程处于堵塞状态,也称为等待或睡眠态,此时进程即使得到CPU,它也无法运行。

在实际的操作系统中,除了上面的运行态,就绪态,堵塞态之外,还包括新建和终止两个状态。

4.新建态,新建态分为创建,但未提交的状态,以及提交状态
4.1 创建但未提交,进程创建分为两个阶段
4.1.1为新建进程创建必要的管理信息
4.1.2该进程进入就绪态
4.2提交态
随着进程被不断的创建,系统资源渐渐的不能满足所有进程的运行要求,尤其是内存资源,在这时就需要将某些进程挂起,即将其换出内存,存放在磁盘交换分区之中。
image.png
进程的基本状态图

image.png
1.活跃就绪态:指进程随时可以被调度的状态;

2.挂起就绪态:指进程被换到磁盘中时的就绪状态,此进程虽然是就绪态,但不能被直接调度,只有当内存中没有活跃就绪进程,或是挂起就绪态进程具有更高的优先级,系统才会将挂起就绪态进程调回内存,并转换为活跃就绪态;

3.活跃阻塞态:进程处于内存中,正在请求I/O或等待某一事件发生而暂停运行,一旦I/O完成或等待事件发生,进程就会进入活跃就绪态。

4.静止阻塞态:指进程被换到磁盘中时的阻塞状态,一旦I/O完成或等待事件发生,进程便进入挂起就绪态。

被挂起的进程不参加CPU的调度,通过这种方式可以平衡系统的负载。