01 进程的组成与状态
什么是进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的执行实体。
进程的组成
在UNIX系统中进程由以下三部分组成:
进程控制块PCB
为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。
PCB一般包括:
1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整形数字
2.特征信息:一般分系统进程、用户进程、或者内核进程等
3.进程状态:运行、就绪、阻塞,表示进程现的运行情况
4.优先级:表示获得CPU控制权的优先级大小
5.通信信息:进程之间的通信关系的反映,由于操作系统会提供通信信道
6.现场保护区:保护阻塞的进程用
7.资源需求、分配控制信息
8.进程实体信息,指明程序路径和名称,进程数据在物理内存还是在交换分区(分页)中
9.其他信息:工作单位,工作区,文件信息等
程序段
是进程中能被进程调度程序在CPU上执行的程序代码段。
数据段
一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。
进程的状态
进程是程序的一次执行,在这个执行过程中,有时进程正在被CPU处理,有时有需要等待CPU,可见进程的状态是会有各种变化,为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。
创建态
操作系统为新进程分配资源、创建PCB
就绪态
进程已经具备运行条件,但由于没有空闲CPU,暂时不能运行
运行态
进程占有CPU,并在CPU上运行
阻塞态
进程因等待某一事件而暂时不能运行
终止态
操作系统回收进程的资源、撤销PCB
注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态(双核环境下可以同时有两个进程处于运行态)
进程状态间的转换
创建态-->就绪态 系统完成创建进程相关的工作
就绪态-->运行态 获取到CPU资源,爱上执行
运行态-->就绪态 时间片到,或CPU被其他高优先级的进程抢占
运行态-->阻塞态 等待系统资源分配,或等待某事件发生(主动行为)
阻塞态-->就绪态 资源分配到位,等待的事件发生(被动行为)
运行态-->终止态 进程运行结束,或运行过程中遇到不可修复的错误
进程的组织方式
在一个系统中,通常有数十、数百乃至数千个进程。为了能对他们加以有效的管理,应当用适当的方式把这些进程信息组织起来。
链接方式
按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针。
索引方式
按照进程状态将PCB分为多张索引表,操作系统持有指向各个索引表的指针。