第1页:第三章 进程管理
第三章 进程管理
- 进程的引入
- 进程的概念
- 进程的状态
- 进程的描述
- 进程的控制
第2页:进程的引入
进程的概念是操作系统中最基本、最重要的概念。它是在多道程序系统出现以后,为了刻画系统内部出现的情况,描述系统内部各作业的活动规律而引进的一个新概念,它是对程序的抽象。
第3页:多道程序系统的特点
- 并行性
- 在主存中同时存放多道作业并同时运行,充分利用系统资源
- 制约性
- 各程序同时存在于主存,可能因为竞争同一资源(如处理器、外部设备)而相互制约。因竞争资源而引起的相互制约称之为间接制约;因各并行程序之间需要相互协同而引起的竞争称之为直接制约
- 动态性
- 各程序在系统中所处的状态在不断变化,如有时在 CPU 上运行,有时因等待资源而停止运行
第4页:进程的概念
定义:Process 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。
第5页:进程与程序的区别
进程与程序的区别
- 进程是程序的执行,具有动态的特征;而程序只是一组指令的集合,是静态的概念
- 进程是有生命过程的,进程的存在是暂时的,存在从诞生(建立进程)到死亡(撤消进程)的这一过程,而程序的存在是永久的
- 进程是程序的执行,包括数据和处理数据的程序
- 一个程序可能对应多个进程
- 一个进程可以涉及多个程序,如主程序对应的进程可能涉及多个程序
第6页:进程的状态
- 运行状态(Running)
- 进程占有 CPU,并在 CPU 上运行
- 就绪状态(Ready)
- 一个进程已经具备运行条件,但由于无 CPU,暂时不能运行(当将 CPU 调度给该进程时,立即可以运行)
- 等待状态(Blocked)
- 指进程因等待某种事件的发生而暂时不能运行的状态(即使 CPU 空闲,该进程也不可以运行)
第7页:进程状态转换
在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换。
- 就绪—运行
- 运行—就绪
- 运行—等待
- 等待—就绪
第8页:进程状态转换图
进程状态转换示意图:本页以图示方式展示运行、就绪、等待三种状态之间“就绪→运行、运行→就绪、运行→等待、等待→就绪”四条转换路径。
第9页:进程转换(上)
- 就绪→运行
- 调度程序选择一个新的进程运行
- 运行→就绪
- 运行进程用完了时间片;运行进程被中断,因为一高优先级进程处于就绪状态
第10页:进程转换(下)
- 运行→等待
- 当一进程必须等待时:OS 尚未完成服务;对一资源的访问尚不能进行;初始化 I/O 且必须等待结果;等待某一进程提供输入
- 等待→就绪
- 当所等待的事件发生时
第11页:进程的挂起和解挂
为了更好的管理和调度进程及适应系统的功能目标,许多系统都有“挂起”和“解挂”一个进程的功能,原因在于:
- 系统有时可能出故障或某些功能受到破坏,需要暂时将系统中的进程挂起,以便故障消除后再恢复
- 用户在执行自己的作业过程中,要求挂起他的进程,以便进行某些检查和改正
- 系统中负载过重,资源相对不足,造成系统效率下降,需要挂起一部分进程以调整系统负荷
第12页:具有挂起功能的进程状态变化
具有挂起功能的进程状态变化示意图(a:active,s:suspension):本页以图示方式展示 Running、Blocked_s、Blocked_a、Ready_a、Ready_s 五种状态之间由事件发生、挂起、解除挂起、时间片完成与被调度等引发的十种转换。
第13页:进程的描述
进程的描述
进程的组成还包括:进程标识信息、进程状态信息、进程控制信息、用户堆栈、共享地址空间、用户私有地址空间(代码、数据)以及进程控制块。
第14页:进程控制块PCB的概念
进程控制块 PCB(Process Control Block)概念:系统为了管理进程而设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。系统利用 PCB 来控制和管理进程,所以 PCB 是系统感知进程存在的唯一标志,进程与 PCB 是一一对应的。
第15页:PCB包含的三类信息
进程控制块(PCB)包含以下三类信息
第16页:进程标志信息
进程标志信息
- 本进程的标志 ID:通常用系统中唯一的数字作为标记,该数字实际是该进程的 PCB 在系统的 PCB 表中的表目序号
- 建立本进程的进程(父进程)的标志 ID
- 用户标记
第17页:处理器状态信息
处理器状态信息
- 用户使用的寄存器
- 控制和状态寄存器:包括程序计数器 PC 和条件寄存器(或程序状态字 PSW)
- 堆栈指针
第18页:进程控制信息
进程控制信息
- 调度和状态信息:进程的状态、进程的调度优先级、与调度有关的信息
- 进程在有关队列中的链接指针
- 进程间的通信信息:包括标志位、信号或信号量、消息队列等
- 主存使用信息:包括分给进程的主存大小和位置
- 进程使用的其他资源信息
- 进程得到有关服务的优先级
第19页:PCB的组织方式
系统中的进程是很多的,状态也不一样。为了调度和管理进程,需将各进程的 PCB 用适当的方法组织起来,以下有三种方法:
- 把所有的 PCB 组织在一个表格中(简单,但查找不方便,适用于进程数目少的场合)
- 分别把有着相同状态的进程的 PCB 组织在同一表格中(如就绪进程表、等待进程表、运行进程表)
- 分别把具有相同状态的所有进程的 PCB 按优先级排成一个或多个队列(最常用的方法,如就绪队列、等待队列等,可能等待的资源相同,但优先级不同)
第20页:PCB的表格结构
PCB 的表格结构示意图:本页以图示方式展示 PCB1~PCB6 分别处于 Ready、Blocked、Running 等状态,并由就绪表与某阻塞表的起始地址进行组织。
第21页:PCB的队列结构
采用队列形式时,每个进程的 PCB 中要增加一链指针的表目项,以指向队列中的下一个进程的 PCB 起始地址。同表格形式一样,系统要设置固定单元以指出各队列的头——队列中第一个进程 PCB 的地址。
第22页:进程控制原语
创建、撤消进程以及完成进程各状态之间的转换是由具有特定功能的进程控制原语实现的。
- 建立进程原语
- 撤销进程原语
- 阻塞进程原语
- 唤醒进程原语
- 挂起进程原语
- 解除挂起原语
- 改变优先数原语
- 调度进程原语
第23页:创建进程
创建进程
- 创建一个 PCB
- 赋予一个统一的进程标识符(ID 号)
- 为进程映象分配主存空间
- 初始化进程控制块:设置初始值(如状态为 New,有无 I/O 设备或文件等)
- 设置相应的链接:如把新进程加到就绪队列的链表中
第24页:挂起进程
挂起进程
- 修改进程控制块的有关信息,如进程状态等
- 把修改后进程控制块加入有关等待进程队列
- 挂起命令的执行方式:把发出挂起命令的进程挂起(自我挂起);将指定标示符的进程挂起;把某进程及其进程族系挂起
第25页:解除挂起
解除挂起
- 从相应的等待进程队列中取出进程控制块
- 修改进程控制块的有关信息,如进程状态等
- 把修改后进程控制块加入有关就绪进程队列
第26页:撤消进程
撤消进程
- 根据撤销进程标识号,从相应队列中找到它的 PCB
- 将该进程拥有的资源归还给父进程或操作系统
- 若该进程拥有子进程,应先撤销他的所有子孙进程,以防它们脱离控制
- 被撤销进程出队,将它的 PCB 归还到 PCB 池
第27页:撤消进程的方式
撤消进程的方式
- 只撤消一个具有指定标示符的进程
- 撤消一个具有指定标示符的进程及其进程族系
- 一般采用第二种方式(为什么?)
第28页:改变优先级数原语
进程的优先级数是表示进程的重要性及运行的优先级,进程调度程序以此来确定优先调用哪一个进程到处理机上运行。为防止一些进程因优先数太低而长期不能运行,许多系统采用动态优先数。
影响优先数的因素
- 作业开始时的静态优先数
- 过程的类型(CPU 计算型、I/O 型)
- 过程所使用的资源量
- 在系统中的等待时间
第29页:本章结束致谢页
谢谢!