进程的定义、组成、组成方式
程序
#专业课
程序:就是一个指令序列.
单道程序阶段
- 早期的计算机只支持单道程序,CPU和内存是联的.在这个阶段,内存中只会存放运行一个程序
- 内存中包含了程序段、数据段
- 程序的代码放在程序段中,程序运行的数据放在数据段内(如变量)
- 程序段存放在内存的低地址部分,数据段存放在内存的高地址部分
多道程序阶段
- 内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同
- 为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念
进程实体
- 操作系统为每个运行的程序配置了一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
- 进程实体:由PCB、程序段、数据段构成,一般来说我们把进程实体简称为进程
- 例如创建进程,实质上是指创建进程实体中的PCB,而撤销进程,实质上是撤销进程实体中的PCB
- PCB是进程唯一存在的标志
进程的定义
- 进程是程序的一次执行过程
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
- 进程是动态的,进程实体的静态的
进程的组成
- 程序段[程序运行本身需要的数据]
- 程序代码存放在此
- 数据段[程序运行本身需要的数据]
- 程序运行时使用、产生的运算数据。如全局变量,局部变量、宏定义的常量就存放在数据段内
- PCB[进程管理相关的数据存放在此]
- 操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息
- PCB的组成包括了进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息
- 进程描述信息包括了进程标识符PID、用户标识符UID
- 进程控制和管理信息包括了进程当前状态、进程优先级
- 资源分配清单包括了程序段指针、数据段指针、键盘、鼠标
- 处理机相关信息包括了各种寄存器值
进程的组织
进程的组织方式分为链接方式和索引方式
链接方式
- 链接方式
- 按照进程将PCB分为多个队列
- 操作系统持有指向各个队列的指针
- 指针包括了执行指针、就绪队列指针、阻塞队列子指针
- 执行指针:指向当前处于运行态的进程
- 就绪队列指针:指向当前处于就绪态的进程
- 阻塞队列指针:指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因的不同,再分为多个阻塞队列
索引方式
2.索引方式
1. 根据进程状态的不同、建立几张索引表
2. 操作系统持有指向各个索引表的指针
进程的特征
进程具有动态性、并发性、独立性、异步性、结构性
动态性
- 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的
并发性
- 并发性:内存中有多个进程实体,各进程课并发的执行
独立性
- 独立性:进程是能够独立运行、独立获得资源、独立接受调度的基本单位
异步性
- 异步性:各进程按照各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
结构性
- 结构性:每个进程都会配置一个PCB.结构上看,进程由程序段、数据段、PCB三部分组成
进程控制
进程控制基本概念
进程控制的主要功能是指对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程切换的功能
进程控制实现
我们用原语来实现进程的控制.原语的特点是执行期间不允许中断,只能一气呵成
原语采用‘关中断指令’和‘开中断指令’
进程控制相关原语
进程控制会导致进程状态的切换。无论哪个原语,要做的无非三件事情:
- 更新PCB中的信息
- 如修改进程状态标志位、将运行环境保存到PCB,从PCB恢复运行环境
- 所有进程控制原语一定会修改进程状态标志
- 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
- 某进程开始运行前必须要恢复其运行环境
- 将PCB插入合适的队列
- 分配/回收资源
不同原语的分类与情形
进程的创建
创建原语
- 创建原语
- 申请空白PCB
- 为新进程分配所需的资源
- 初始化PCB
- 将PCB插入就绪队列
引起进程创建的事件
- 引起进程创建的事件
- 用户登录:分时系统中,用户登录成功,系统会为其创建一个新的进程
- 作业调度:多道批处理系统中,有新的作业放入内存时,会为其创建一个新的进程
- 提供服务:用户向操作系统提出某些请求时,会创建一个进程处理该请求
- 应用请求:由用户进程主动请求创建一个子进程
进程的终止
撤销原语
- 撤销原语
- 从PCB集合中找到终止进程的PCB
- 若进程正在执行,立刻剥夺CPU,将CPU分配给其他进程
- 终止其所有子进程
- 将该进程拥有的所有资源归还给父进程或操作系统
- 删除PCB
引起进程终止的事件
- 引起进程终止的事件
- 正常结束
- 异常结束 [[001-1-5-中断#中断和异常]]
- 外界干预
进程的阻塞
阻塞原语
- 阻塞原语
- 找到要阻塞的进程对应的PCB
- 保护进程运行现场,将PCB状态信息设置为“阻塞态”,暂时停止进程运行
- 将PCB插入相应事件的等待队列
引起进程阻塞的事件
- 引起进程阻塞的事件
- 需要等待分配系统的某种资源
- 需要等待相互合作的其他进程完成工作
进程的唤醒
唤醒原语
- 唤醒原语
- 在事件等待队列中找到PCB
- 将PCB从等待队列中移除,设置进程为就绪态
- 将PCB插入就绪队列,等待被调度
引起进程唤醒的事件
- 引起进程唤醒的事件
- 等待的事件发生
进程的切换
切换原语
- 切换原语
- 将运行环境信息存入PCB
- PCB移入相应队列
- 选择另一个执行,并更新其PCB
- 根据PCB恢复新进程所需的运行环境
引起进程切换的时间
- 引起进程切换的事件
- 当前进程时间片到
- 有更高的优先级进程到达
- 当前进程主动阻塞