操作系统课件-第三章进程管理8(死锁问题2)
合集下载
操作系统进程管理2PPT课件
2
1
3
4
5
7 6
Fig2-2 前趋图示例
7
.
1.2程序的顺序执行
顺序是指程序执行时,仅当前一操作完成后,才 能执行后继操作。
I1
C1
P1
I2
C2
P2
特点: ➢ 顺序性 ➢ 封闭性(运行时独占资源,与外 界封闭) ➢ 可再现性
8 .
1.3程序并发执行
1. 思想:以输入、计算、打印三个操作为例:对于某 一作业的三个操作必存在顺序关系,但多个作业之 间并不一定。其前趋图如下:
16 .
2.3进程的特征
5)结构特征:为能正确的执行并发,为每一个进程配置
了一个数据结构,称为进程控制块(PCB)。则一个进 程实体就由数据段、程序段、PCB三部分构成。
• 进程实体 = 数据段+程序段+PCB
PCB
私有 数据块
程 序 段
进程的结构
• 程序和进程不一定具有一一对应的关系。 17 .
19 .
2.5 进程的类型与区别
进程的类型
▪ 在系统中同时有多个进程存在,但归纳起来 有两大类:
▪ 1、系统进程 执行操作系统核心代码的进程。 系统进程起着资源管理和控制的作用。
▪ 2、用户进程 执行用户程序的进程。
20 .
2.5 进程的类型与区别
系统进程的特征 ➢ (1)系统进程是操作系统用来管理系统资源并
行活动的并发软件。 ➢ (2)系统进程之间的关系由操作系统自己负责。 ➢ (3)系统进程直接管理有关的软、硬设备的活
动。 ➢ (4)在进程调度中,系统进程的优先级高于用
户进程。
21 .
2.5 进程的类型与区别
计算机操作系统第三章处理机调度与死锁 ppt课件
2决定接纳哪些作业
选用何种调度算法:先来先服务、 短作业优先、基于作业优先级、响 应比高者优先。
PPT课件
6
注意
批处理系统中,作业是首先进入外存, 然后经由作业调度分批进入内存;
分时系统及实时系统中,由于对响应 时间有要求,因此用户输入的命令和数据 等是直接进入内存的,无须配置作业调度 机制。
PPT课件
PPT课件
14
同时具有三级调度的调度队列模型
作业 调度
后备队列
中级 调度
时间片完 就绪队列 就绪、挂起队列
进程调度
进程完成
CPU
挂起
事件出现
事件发生
阻塞、挂起队列 阻塞队列
挂起 等待事件
具有高、低、中三级调度的调度队列模型
PPT课件
15
选择调度方式和调度算法的若干准则
• 面向用户的准则
– 周转时间短(批处理) – 响应时间快(分时) – 截止时间保证(实时) – 优先权准则(all)
4
2 作业控制块
多道批处理系统中,为每个作业配备一个作业 控制块(JCB),它是作业在系统中存在的标志。
作业运行期间,系Biblioteka 按照JCB中的信息对作业进行 控制。
JCB中保存了系统对作业进行管理和调度所需 的全部信息。例如:作业标识、用户名称、用户帐 户、作业类型、作业状态、调度信息、资源需求、 进入系统时间、开始处理时间、作业完成时间、作 业退出时间、资源使用情况等。
第三章 处理机调度与死锁
要解决的三个问题:
WHAT:按什么原则分配CPU? —进程调度算法
WHEN:何时分配CPU? —进程调度的时机
HOW: 如何分配CPU? —CPU调度过程(进程的上下文切换)
操作系统 死锁PPT
银行家算法描述
当进程Pi提出资源申请时,系统执行下列步骤: (1) 若Request[i]≤Need[i], 转(2);否则错误返回 (2) 若Request[i]≤Available[i], 转(3);否则进程等待 (3) 假设系统分配了资源,则有: Available=Available-Request[i]; Allocation[i]=Allocation[i]+Request[i]; Need[i]=Need[i]-Request[i] (4) 执行安全性算法,若系统新状态是安全的,则分配 完成,若系统新状态是不安全的,则恢复原状态, 进程等待。
第35/46页
死锁的检测和解除
死锁检测
允许死锁发生,操作系统不断监视系统进展情况, 判断死锁是否发生;一旦死锁发生则采取专门的措施, 解除死锁并以最小的代价恢复操作系统运行
检测时机
当进程等待时检测死锁,其缺点是系统的开销大 定时检测 系统资源利用率下降时检测死锁
第36/46页
进程-资源分配图PRAG
分配矩阵Allocation :n*m矩阵,表示每个进程已 分配的资源数。 int Allocation[n][m]
A P1 P2 P3 P4 2 1 2 1 B 1 2 2 3 C 2 1 2 2
第25/46页
银行家算法的数据结构(4)
需求矩阵Need :n*m矩阵,表示每个进程还需要 各类资源数。 int Need[n][m]
进程在等待一新资源时继续占有已分配的资源。
不剥夺条件(系统规定)
不能强行剥夺进程拥有的资源。
环路等待条件(进程/资源之间的关系)
存在一个进程等待队列{ P1 , P2 , … , Pn }, 其中P1等 待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有 的资源,形成一个进程等待环路。
操作系统课件 第3章
接收
P1
产生Βιβλιοθήκη S3S1消息通信顺序: 消息通信顺序: P1:…Release(S1);Request(S3);… P2:…Release(S2);Request(S1);… P3:…Release(S3);Request(S2);… 消息通信顺序: 消息通信顺序: P1:…Request(S3); Release(S1); … P2:…Request(S1); Release(S2); … P3:…Request(S2);Release(S3); …
17
第三章 死锁
3.6.3 利用银行家算法避免死锁
1. 银行家算法中的数据结构 (1) 可利用资源向量 可利用资源向量Available:是一个含有m个元素的数组, :是一个含有 个元素的数组 个元素的数组, 其中每一个元素代表一类可利用的资源数目, 其中每一个元素代表一类可利用的资源数目, 其初始值是系 统中所配置的该类全部可用资源的数目, 统中所配置的该类全部可用资源的数目, 其数值随该类资源 的分配和回收而动态地改变.如果 的分配和回收而动态地改变.如果Available[j]=K,则表示系 , 统中现有R 类资源K个 统中现有 j类资源 个. (2) 最大需求矩阵 最大需求矩阵Max: 这是一个 ×m的矩阵, 它定义了系 : 这是一个n× 的矩阵 的矩阵, 统中n个进程中的每一个进程对 类资源的最大需求 统中 个进程中的每一个进程对m类资源的最大需求 . 如果 个进程中的每一个进程对 类资源的最大需求. Max[i,j]=K,则表示进程i需要 j类资源的最大数目为 . ,则表示进程 需要 类资源的最大数目为K. 需要R
16
第三章 死锁
3. 由安全状态向不安全状态的转换 由安全状态向不安全状态的转换 如果不按照安全序列分配资源, 如果不按照安全序列分配资源,则系统可能会由安全状 态进入不安全状态. 态进入不安全状态. 例如, 时刻以后, 又请求 台磁带机, 又请求1台磁带机 例如,在T0时刻以后,P3又请求 台磁带机,若此时系 时刻以后 统把剩余3台中的 台分配给 ,则系统便进入不安全状态. 统把剩余 台中的1台分配给 台中的 台分配给P3,则系统便进入不安全状态. 因为,此时也无法再找到一个安全序列. 因为,此时也无法再找到一个安全序列. 进程 P1 P2 P3 最大需求 10 4 9 已分配 5 2 2 可用 3
P1
产生Βιβλιοθήκη S3S1消息通信顺序: 消息通信顺序: P1:…Release(S1);Request(S3);… P2:…Release(S2);Request(S1);… P3:…Release(S3);Request(S2);… 消息通信顺序: 消息通信顺序: P1:…Request(S3); Release(S1); … P2:…Request(S1); Release(S2); … P3:…Request(S2);Release(S3); …
17
第三章 死锁
3.6.3 利用银行家算法避免死锁
1. 银行家算法中的数据结构 (1) 可利用资源向量 可利用资源向量Available:是一个含有m个元素的数组, :是一个含有 个元素的数组 个元素的数组, 其中每一个元素代表一类可利用的资源数目, 其中每一个元素代表一类可利用的资源数目, 其初始值是系 统中所配置的该类全部可用资源的数目, 统中所配置的该类全部可用资源的数目, 其数值随该类资源 的分配和回收而动态地改变.如果 的分配和回收而动态地改变.如果Available[j]=K,则表示系 , 统中现有R 类资源K个 统中现有 j类资源 个. (2) 最大需求矩阵 最大需求矩阵Max: 这是一个 ×m的矩阵, 它定义了系 : 这是一个n× 的矩阵 的矩阵, 统中n个进程中的每一个进程对 类资源的最大需求 统中 个进程中的每一个进程对m类资源的最大需求 . 如果 个进程中的每一个进程对 类资源的最大需求. Max[i,j]=K,则表示进程i需要 j类资源的最大数目为 . ,则表示进程 需要 类资源的最大数目为K. 需要R
16
第三章 死锁
3. 由安全状态向不安全状态的转换 由安全状态向不安全状态的转换 如果不按照安全序列分配资源, 如果不按照安全序列分配资源,则系统可能会由安全状 态进入不安全状态. 态进入不安全状态. 例如, 时刻以后, 又请求 台磁带机, 又请求1台磁带机 例如,在T0时刻以后,P3又请求 台磁带机,若此时系 时刻以后 统把剩余3台中的 台分配给 ,则系统便进入不安全状态. 统把剩余 台中的1台分配给 台中的 台分配给P3,则系统便进入不安全状态. 因为,此时也无法再找到一个安全序列. 因为,此时也无法再找到一个安全序列. 进程 P1 P2 P3 最大需求 10 4 9 已分配 5 2 2 可用 3
操作系统第3章
给其抢它占进原程则,有决:不允许某进程抢占已 经分配优出先去权的原处则理;机。 优点:短实作现业简优单先,原系则统;开销小。 缺点:时难间于片满原足则紧。急任务的要求。
3.1 处理机调度的基本概念
3. 中级调度
挂起和激活,存储器管理中的对换功能。
主要目的: 为了提高内存的利用率和系统的吞吐量。
三种调度相比较:
● 高级调度的相关概念
作业:用户一次请求计算机系统为其完成任务所做工作 的总和。它通常包括程序、数据和作业说明书,系统根 据说明书对程序进行控制。 作业步:指每个作业在运行期间,都必须经过若干个相 对独立,又相互关联的顺序加工步骤,其中的每一个加 工步骤称为作业步。一个典型的作业可分成三个作业 步:① “编译”作业步,② “连结装配”作业步,③ “运行”作业步 作业状态:作业状态分为后备、运行和完成三种状态。 作业控制块(Job Control Block,JCB)
调度方式
3.1.3 选择调度方式和调度算法的若干准则 2. 面向系统的准则吞吐量:单位时间内系统所
完成的作业数
(1)系统吞吐量高
调度方式和算法对处理机的
(2)处理机利用率好 利用率起着十分重要的作用
(3)各类资源的均衡利 用
对于单用户微机或某些实 时系统,该准则并不重要
3.2 调度算法
3.2.1 先来先服务调度算法
进程插入到就决定: ●接纳多少个作业——取决于多道程序度 ●接纳哪些作业——取决于调度算法
▲内存中同时运行的 作业数目太多,会影 响系统的服务质量。 如,周转时间长。
▲内存中同时运行的 作业数目太少,会导 致系统资源利用率和 系统吞吐量低。
3.1.1 高级、中级和低级调度
算,而很少请求I/O。如,科学计算
3.1 处理机调度的基本概念
3. 中级调度
挂起和激活,存储器管理中的对换功能。
主要目的: 为了提高内存的利用率和系统的吞吐量。
三种调度相比较:
● 高级调度的相关概念
作业:用户一次请求计算机系统为其完成任务所做工作 的总和。它通常包括程序、数据和作业说明书,系统根 据说明书对程序进行控制。 作业步:指每个作业在运行期间,都必须经过若干个相 对独立,又相互关联的顺序加工步骤,其中的每一个加 工步骤称为作业步。一个典型的作业可分成三个作业 步:① “编译”作业步,② “连结装配”作业步,③ “运行”作业步 作业状态:作业状态分为后备、运行和完成三种状态。 作业控制块(Job Control Block,JCB)
调度方式
3.1.3 选择调度方式和调度算法的若干准则 2. 面向系统的准则吞吐量:单位时间内系统所
完成的作业数
(1)系统吞吐量高
调度方式和算法对处理机的
(2)处理机利用率好 利用率起着十分重要的作用
(3)各类资源的均衡利 用
对于单用户微机或某些实 时系统,该准则并不重要
3.2 调度算法
3.2.1 先来先服务调度算法
进程插入到就决定: ●接纳多少个作业——取决于多道程序度 ●接纳哪些作业——取决于调度算法
▲内存中同时运行的 作业数目太多,会影 响系统的服务质量。 如,周转时间长。
▲内存中同时运行的 作业数目太少,会导 致系统资源利用率和 系统吞吐量低。
3.1.1 高级、中级和低级调度
算,而很少请求I/O。如,科学计算
操作系统 进程管理PPT课件
第三章 进程的描述与控制
17
PCB的内容
进程描述信息:
进程标识符(process ID),唯一,通常是一个整数 进程名,通常基于可执行文件名(不唯一) 用户标识符(user ID);进程组关系
进程控制信息:
当前状态 优先级(priority) 代码执行入口地址 程序的外存地址 运行统计信息(执行时间、页面调度) 进程间同步和通信;阻塞原因
一个具有一定功能的程序关于某个数据集合 的一次运行活动。
进程是一个程序与其数据一道通过处理机的 执行所发生的活动
第三章 进程的描述与控制
7
进程同程序的比较
程序是指令的有序集合,其本身没有任何运行的含 义,是一个静态的概念。而进程是程序在处理机上 的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有 一定生命期的。程序是永久的,进程是暂时的。
间断性 失去程序的封闭性 不可再现性
第三章 进程的描述与控制
6
2.1.2 进程的定义
进程的概念是60年代初首先由麻省理工学 院的MULTICS系统和IBM公司的CTSS/360 系统引入的。进程有很多各式各样的定义, 如:
行为的一个规则叫做程序,程序在处理机上 执行时所发生的活动称为进程(Dijkstra)
第三章 进程的描述与控制
16
2.1.5 进程控制块(Process Control Block)
为了描述一个进程和其它进程以及系统资源 的关系,为了刻画一个进程在各个不同时期 所处的状态,人们采用了一个与进程相联系 的数据块,称为进程控制块(PCB)。
系统利用PCB来控制和管理进程,所以PCB 是系统感知进程存在的唯一标志 进程与PCB是一一对应的
操作系统原理课件-第八讲死锁问题(DEADLOCK)
B.从进程集合n中找到一个能满足下述二个条件:
Finish[i] = false和Necdi≤Work,如找到则执行步骤C,如找不 到同时满足以上二条件的进程则执行步骤D。
C.当进程i获得资源后可顺利执行直到完成,并释放出分配给它的 资源,表示如下:
work = work+Allocationi ; Finish[i]=true ;转执行步骤B。 D.如果所有的Finish[i]=true,则表示系统处于安全状态,否则 系统处于不安全状态。
P4
743
431
002
P2
745
600
302
P0
10 4 7 7 4 3
010
532 743 745 10 4 7 10 5 7
True
True True T0时刻的另 True 一个安全序 True 列
2、 P1请求资源
P1发出请求向量Request(1,0,2),系统按银行家算法进行检查: (1)Request1(1,0,2)≤Need(1,2,2) (2)Request1(1,0,2) ≤Available(3,3,2) (3)系统假定可为P1分配资源,并修改Available,Allocation1和
Need向量。 (4)检查此时系统是否安全。
发现可以找到一个安全序列{P1,P3,P4,P0,P2},因此系 统是安全的,可以立即将P1所申请的资源分配给它。
3、P4请求资源
P4发出请求向量Request4(3,3,0),系统按银行 家算法进行检查: (1)Request4(3,3,0)≤Need4(4,3,1) (2)Request4(3,3,0)≮Available(2,3,0),让 P4等待。
假设用Requesti[ j]=k表示并发执行时进程i提出请求j类资 源k个。系统按下述步骤进行检查:
Finish[i] = false和Necdi≤Work,如找到则执行步骤C,如找不 到同时满足以上二条件的进程则执行步骤D。
C.当进程i获得资源后可顺利执行直到完成,并释放出分配给它的 资源,表示如下:
work = work+Allocationi ; Finish[i]=true ;转执行步骤B。 D.如果所有的Finish[i]=true,则表示系统处于安全状态,否则 系统处于不安全状态。
P4
743
431
002
P2
745
600
302
P0
10 4 7 7 4 3
010
532 743 745 10 4 7 10 5 7
True
True True T0时刻的另 True 一个安全序 True 列
2、 P1请求资源
P1发出请求向量Request(1,0,2),系统按银行家算法进行检查: (1)Request1(1,0,2)≤Need(1,2,2) (2)Request1(1,0,2) ≤Available(3,3,2) (3)系统假定可为P1分配资源,并修改Available,Allocation1和
Need向量。 (4)检查此时系统是否安全。
发现可以找到一个安全序列{P1,P3,P4,P0,P2},因此系 统是安全的,可以立即将P1所申请的资源分配给它。
3、P4请求资源
P4发出请求向量Request4(3,3,0),系统按银行 家算法进行检查: (1)Request4(3,3,0)≤Need4(4,3,1) (2)Request4(3,3,0)≮Available(2,3,0),让 P4等待。
假设用Requesti[ j]=k表示并发执行时进程i提出请求j类资 源k个。系统按下述步骤进行检查:
操作系统课件第三章
就绪 时间片完 执行
完成状态
进程 调度
终止 作业
Operating System
2024/1/17
Page 7
作业与进程的关系
❖ 作业可被看作是用户向计算机提交任务的任务实体, 例如一次计算、一个控制过程等
❖ 进程是计算机为了完成用户任务而设置的执行实体, 是系统分配资源的基本单位。
❖ 计算机要完成一个任务实体,必须有一个以上的执行 实体,即一个作业总是由一个以上的多个进程组成
1 n
n i1
Ti TSi
Operating System
事 件 出 现
时间片完 就绪 队列 阻塞 队 列
进程调度
进程完成 CPU
等待事件
Operating System
2024/1/17
Page 25
调度队列模型
具有高级和低级调度的调度队列模型
❖ 在批处理系统中,不仅需要进程调度,而 且还要有作业调度
❖ 就绪队列的形式 ➢ 在批处理系统中,常用高优先权队列。 进程进入就绪队列时,按优先权高低插 入相应位置,调度程序总是把处理机分 配给就绪队首进程
Operating System
2024/1/17
Page 29
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 2.
Operating System
2024/1/17
Page 30
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 (1) 周转时间短。 (2) 响应时间快。 (3) 截止时间的保证。 (4) 优先权准则。
Operating System
2024/1/17
Page 12
完成状态
进程 调度
终止 作业
Operating System
2024/1/17
Page 7
作业与进程的关系
❖ 作业可被看作是用户向计算机提交任务的任务实体, 例如一次计算、一个控制过程等
❖ 进程是计算机为了完成用户任务而设置的执行实体, 是系统分配资源的基本单位。
❖ 计算机要完成一个任务实体,必须有一个以上的执行 实体,即一个作业总是由一个以上的多个进程组成
1 n
n i1
Ti TSi
Operating System
事 件 出 现
时间片完 就绪 队列 阻塞 队 列
进程调度
进程完成 CPU
等待事件
Operating System
2024/1/17
Page 25
调度队列模型
具有高级和低级调度的调度队列模型
❖ 在批处理系统中,不仅需要进程调度,而 且还要有作业调度
❖ 就绪队列的形式 ➢ 在批处理系统中,常用高优先权队列。 进程进入就绪队列时,按优先权高低插 入相应位置,调度程序总是把处理机分 配给就绪队首进程
Operating System
2024/1/17
Page 29
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 2.
Operating System
2024/1/17
Page 30
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 (1) 周转时间短。 (2) 响应时间快。 (3) 截止时间的保证。 (4) 优先权准则。
Operating System
2024/1/17
Page 12
操作系统第三章PPT课件
一、处理机调度的层次 二、调度队列模型 三、选择调度方式和算法的准则
2021
第三章 处理机调度和死锁4
一、处理机调度的层次
创建
高级调度
就绪态
运行态
退出
等待态
低级调度
挂起等待态 挂起就绪态
中级调度
2021
第三章 处理机调度和死锁5
一个作业从提交开始,往往要经历三级调度:
高级调度、低级调度、中级调度
P1 P2 P3 P4
❖ Gantt图
到达时间 0.0 2.0 4.0 5.0
服务时间 7 4 1 4
优先权 3 2 4 1
P1 P2
P4
P2 P1
P3
02
5
9 10
15 16
平均周转时间=((15-0)+(10-2)+(16-4)+(9-5))/4=9.75
2021
第三章 处理机调度和死锁30
3、优先权:通常用某范围内的整数表示,称为优先数。有些系 统中,优先数越大优先权越高,有些则反之。如: 优先权的类型:静态优先权和动态优先权
计算机操作系统
Computer Operating System
主讲:姜 华
聊城大学计算机学院
2021
1
第三章 处理机调度与死锁
Processor Scheduling and Deadlock
调度是操作系统的基本功能,几乎所有的计算机 资源在使用之前都要经过调度。处理机是最重要的计 算机资源,提高处理机的利用率及改善系统性能,在 很大程度上取决于处理机调度性能的好坏,因而,处 理机调度成为操作系统设计的中心问题之一。
❖ FCFS
P1 0 2 45
2021
第三章 处理机调度和死锁4
一、处理机调度的层次
创建
高级调度
就绪态
运行态
退出
等待态
低级调度
挂起等待态 挂起就绪态
中级调度
2021
第三章 处理机调度和死锁5
一个作业从提交开始,往往要经历三级调度:
高级调度、低级调度、中级调度
P1 P2 P3 P4
❖ Gantt图
到达时间 0.0 2.0 4.0 5.0
服务时间 7 4 1 4
优先权 3 2 4 1
P1 P2
P4
P2 P1
P3
02
5
9 10
15 16
平均周转时间=((15-0)+(10-2)+(16-4)+(9-5))/4=9.75
2021
第三章 处理机调度和死锁30
3、优先权:通常用某范围内的整数表示,称为优先数。有些系 统中,优先数越大优先权越高,有些则反之。如: 优先权的类型:静态优先权和动态优先权
计算机操作系统
Computer Operating System
主讲:姜 华
聊城大学计算机学院
2021
1
第三章 处理机调度与死锁
Processor Scheduling and Deadlock
调度是操作系统的基本功能,几乎所有的计算机 资源在使用之前都要经过调度。处理机是最重要的计 算机资源,提高处理机的利用率及改善系统性能,在 很大程度上取决于处理机调度性能的好坏,因而,处 理机调度成为操作系统设计的中心问题之一。
❖ FCFS
P1 0 2 45
操作系统课件-第三章进程管理8(死锁问题2)
17
例题
1 .(北大 95 )一个 OS 有 20 个进程,竞 争使用 65 个同类资源,申请方式是逐个 进行的,一旦某个进程获得它所需要的 全部资源,则立即归还所有资源。每个 进程最多使用三个资源。若仅考虑这类 资源,该系统有无可能产生死锁,为什 么? 2.死锁和饥饿的主要差别是什么?
18
1 答:不可能。因为死锁产生的原因有两点: 系统资源不足或推进顺序不当,在本题中,进 程所需的最大资源数为60,而系统共有该类资 源65个,其资源数已足够系统内各进程使用。 2 答:简言之,死锁是某进程等待一个不会发 生的事件的一种现象;而饥饿现象是某进程正 等待这样一个事件,它发生了但总是受到其它 进程的影响,以至轮不到(或很难轮到)该进 程。
还需要 Need A B C 7 4 1 (0 6 0 3 Available A B C 3 3 (2 3 2 2 2 0) 0 0 1 1 1 2
可用
P0 P1 P2 P3 P4
0 1
2 2) 3 0 2 2 1 1 0 0 2
若P1发出请求向量 Request(1,0,2)
r1
P2
资源分配图
14
封锁进程:是指某个进程由于请求了超过了系 统中现有的未分配资源数目的资源,而被系统 封锁的进程。 非封锁进程:即没有被系统封锁的进程资源分 配图的化简方法:假设某个RAG中存在一个进 程Pi,此刻Pi是非封锁进程,那么可以进行如 下化简:当Pi有请求边时,首先将其请求边变 成分配边(即满足Pi的资源请求),而一旦Pi的所 有资源请求都得到满足,Pi就能在有限的时间 内运行结束,并释放其所占用的全部资源,此 时Pi只有分配边,删去这些分配边(实际上相 当于消去了Pi的所有请求边和分配边),使Pi 成为孤立结点。(反复进行) 。
例题
1 .(北大 95 )一个 OS 有 20 个进程,竞 争使用 65 个同类资源,申请方式是逐个 进行的,一旦某个进程获得它所需要的 全部资源,则立即归还所有资源。每个 进程最多使用三个资源。若仅考虑这类 资源,该系统有无可能产生死锁,为什 么? 2.死锁和饥饿的主要差别是什么?
18
1 答:不可能。因为死锁产生的原因有两点: 系统资源不足或推进顺序不当,在本题中,进 程所需的最大资源数为60,而系统共有该类资 源65个,其资源数已足够系统内各进程使用。 2 答:简言之,死锁是某进程等待一个不会发 生的事件的一种现象;而饥饿现象是某进程正 等待这样一个事件,它发生了但总是受到其它 进程的影响,以至轮不到(或很难轮到)该进 程。
还需要 Need A B C 7 4 1 (0 6 0 3 Available A B C 3 3 (2 3 2 2 2 0) 0 0 1 1 1 2
可用
P0 P1 P2 P3 P4
0 1
2 2) 3 0 2 2 1 1 0 0 2
若P1发出请求向量 Request(1,0,2)
r1
P2
资源分配图
14
封锁进程:是指某个进程由于请求了超过了系 统中现有的未分配资源数目的资源,而被系统 封锁的进程。 非封锁进程:即没有被系统封锁的进程资源分 配图的化简方法:假设某个RAG中存在一个进 程Pi,此刻Pi是非封锁进程,那么可以进行如 下化简:当Pi有请求边时,首先将其请求边变 成分配边(即满足Pi的资源请求),而一旦Pi的所 有资源请求都得到满足,Pi就能在有限的时间 内运行结束,并释放其所占用的全部资源,此 时Pi只有分配边,删去这些分配边(实际上相 当于消去了Pi的所有请求边和分配边),使Pi 成为孤立结点。(反复进行) 。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16
进 程 管 理
死锁的恢复。是与检测死锁相配套的一 种措施,用于将进程从死锁状态下解脱 出来。常用的方法有: 1撤消进程;最简单撤消进程的方法是使 全部死锁的进程夭折掉;另一方法是按 照某种顺序逐个地撤消进程,直至有足 够的资源可用,死锁状态消除为止 2挂起进程(剥夺资源)。使用挂起/激活 机构挂起一些进程,剥夺它们的资源以 解除死锁,待条件满足时,再激活进程。 目前挂起法比较受到重视。
请找出该表中T0时刻以后存在的安全序列(至少2种)
资源情况 进程 P0 P1 P2 P3 P4 Max A B C 7 5 3 9 2 4 2 0 2 3 3 2 2 2 3 Allocation A B C 0 1 2 0 3 0 2 0 1 0 0 0 2 1 2 Need A B C 7 4 1 2 6 0 0 1 4 3 3 2 0 1 1
11
Available A B C 3 3 2
进 程 管 理
3 死锁的检测和恢复
死锁的检测和恢复技术是指定期启动 一个软件检测系统的状态, 一个软件检测系统的状态,若发现有死 锁存在,则采取措施恢复之。 锁存在,则采取措施恢复之。 (1)死锁的检测 (1)死锁的检测 检查死锁的办法就是由软件检查系统 中由进程和资源构成的有向图是否构成 一个或多个环路,若是,则存在死锁, 一个或多个环路,若是,则存在死锁, 否则不存在。 否则不存在。
还需要 Need A B C 7 4 1 (0 6 0 3 Available A B C 3 3 (2 3 2
可用
P0 P1 P2 P3 P4
0)
(3 0 2) 3 0 2 2 1 1 0 0 2
2 2 2 0) 0 0 1 1 1
若P1发出请求向量 Request(1,0,2)
4 3
工作向量Work.它表示系统可提供给进程继续运行所需要的各类资源的数目 资源情况 进程 P1 P3 P4 P2 P0 work A B C 3 3 5 3 7 4 7 4 10 4 2 2 3 5 7 Need A B C 1 2 0 1 4 3 6 0 7 4 2 1 1 0 3 Allocation A B C 2 0 2 1 0 0 3 0 0 1 0 1 2 2 0
5
进 程 管 理
二、银行家算法 设Requesti是进程Pi的请求向量,如果进程Pi需要K个 Rj类资源,当Pi发出资源请求后,系统按下述步骤进行 检查: 1 如果Requesti≤Needi,则转向步骤2;否则认为出错。 (因为它所需要的资源数已超过它所宣布的最大值。 2如果Requesti≤Available,则转向步骤3;否则,表示系 统中尚无足够的资源,Pi必须等待 3 系统试探把要求的资源分配给进程Pi,并修改下面数据 结构中的数值: Available:=Available-Requesti; Allocation:=Allocation+Requesti; Needi:= Needi- Requesti; 4 系统执行安全性算法,检查此次资源分配后,系统是 否处于安全状态。若安全,正式将资源分配给进程Pi, 以完成本次分配;否则,将试探分配作废,恢复原来 的资源分配状态,让进程Pi等待。
15
进 程 管 理
P1 r1 P2 r2
P1 r1 P2 r2
P1 r1 P2 r2
死锁定理: 系统中某个时刻S为死锁状态的充要条件是 S时刻系统的资源分配图是不可完全简化的。 在经过一系列的简化后,若能消去图中的所 有边,使所有的进程都成为孤立结点,则称该 图是可完全简化的;反之的是不可完全简化的。
Work+Allocation finish +
A B C 5 3 7 4 7 4 10 4 10 5
2 3 5 7 7
true true true true true
进 程 管 理
思考和练习
假定系统中有五个进程{P0、P1、P2、P3、P4}和 三种类型的资源{A,B,C},每一种资源的数量 分别为10、5、7,在T0时刻的资源分配情况如图
12
进 程 管 理
死锁的检测:实质是确定是否存在环路 等待现象,一旦发现这种环路便认定死 锁存在,并识别出该环路所涉及的有关 进程,以供系统采取适当的措施来解除 死锁。最常用的是一种基于资源分配图 RAG和死锁定理的检测死锁算法。
13
进 资源分配图(RAG) 程 管 系统死锁可用资源分配图来描述,该图是由一组结点N和 一组边E所组成的一对偶G=(N,E)。(用圆圈代表一个 理 进程,用方框代表一类资源,由于一种类型的资源可 能有多个,可用方框中的一个点代表一类资源中的一 个资源) 几个概念:请求边,分配边 P1 r1 请求r2 r2
进 程 管 理
安全状态的例子
例:假定系统有三个进程P1、P2、P3,共有12台磁带机。 进程P1总共要求10台磁带机,P2和P3分别要求4台和九 台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和 2台,还有3台空闲没有分配。 进程 P1 P2 P3 最大需求 10 4 9 已分配 5 2 2 可用 3
7
要记住的一些变量的名称
1 Available(可利用资源向量) 某类可利用的资源数目,其初值是系统中所配置的该类全部可用 资源数目。 2 Max最大需求矩阵 某个进程对某类资源的最大需求数 3 Allocation分配矩阵 某类资源当前非配给某进程的资源数。 4 Need需求矩阵 某个进程还需要的各类资源数。 Need= Max-Allocation 系统把进程请求的资源分配给它以后要修改的变量 Available:=Available-Request; Allocation:=Allocation+Request; Need:= Need- Request;
2
进 程 管 理
银行家算法
银行家算法是最有代表性的避免死锁算 法,是Dijkstra提出的银行家算法。这是 由于该算法能用于银行系统现金贷款的 发放而得名。为实现银行家算法,系统 中必须设置若干数据结构。
3
进 程 管 理
一、银行家算法中的数据结构 1 可利用资源向量Available 是一个含有m个元素,其中的每一个元素代 Available= 3 5 4 表一类可利用的资源数目,其初值是系统中所 2 8 3 配 置 的 该 类 全 部 可 用 资 源 数6目 。 如 果 8 1 Available[j]=k, 表示系统中现有Rj类资源k个。 2 最大需求矩阵Max 是一个含有n m的矩阵,它定义了系统中n个 进程中的每一个进程对m类资源的最大需求。 如果Max(i,j)=k, 表示进程i需要Rj类资源的最 大数目为k。
Available A B C
P0 P1 P2 P3 P4
3 3 3 2 (2 3 0) 2 2 2 0) 0 0 1 1 3 1
9
10,5 7
进程
资源情况
最大值 Max A B C 7 5 3 9 2 4 2 0 2 3 3 2 2 2 3
已分配 Allocation A B C 0 1 2 0 0 0
4
进 程 管 理
3 分配矩阵Allocation 是一个含有n m的矩阵,它定义了系统中每 一类资源当前已分配给每一进程的资源数。如 果Allocation(i,j)=k, 表示进程i当前已分得Rj类 资源k个。 4 需求矩阵Need 是一个含有n m的矩阵,用以表示每一个进 程尚需的各类资源数。如果Need(i,j)=k, 表示 进程i还需要Rj类资源k个,方能完成其任务。 Need(i,j)= Max(i,j)-Allocation(i,j)
20
进 程 管 理
21
进 程 管 理
小结
进程的并发执行, 使得它们之间存在着 进程的并发执行 , 使得它们之间 存在着 两种制约关系: 两种制约关系 : 由共享资源引起的间接 制约关系称为互斥; 制约关系称为互斥 ; 由于协作完成同一 任务而引起的直接制约关系称为同步。 任务而引起的直接制约关系称为同步 。 为了正确地解决进程之间的同步和互斥, 为了正确地解决进程之间的同步和互斥 , 系统设置同步机构: 锁和信号量机构。 系统设置同步机构 : 锁和信号量机构 。 这种同步机构称为低级通信。 进程之间 这种同步机构称为低级通信 。 的高级通信机构有消息缓冲、 信箱、 的高级通信机构有消息缓冲 、 信箱 、 管 共享内存和共享文件等机构, 道 、 共享内存和共享文件等机构 , 其最 大特点是通信双方可交换大量的数据。 大特点是通信双方可交换大量的数据。
Hale Waihona Puke 1 答:不可能。因为死锁产生的原因有两点: 系统资源不足或推进顺序不当,在本题中,进 程所需的最大资源数为60,而系统共有该类资 源65个,其资源数已足够系统内各进程使用。 2 答:简言之,死锁是某进程等待一个不会发 生的事件的一种现象;而饥饿现象是某进程正 等待这样一个事件,它发生了但总是受到其它 进程的影响,以至轮不到(或很难轮到)该进 程。
6
进 程 管 理
三、安全性算法 系统所执行的安全性算法可描述如下: 1 设置两个向量 ①工作向量Work.它表示系统可提供给进程继续运行所需要的各类资 源的数目,它含有m个元素,执行安全算法开始时, Work:=Available。 ②Finish.它表示系统是否有足够的资源分配给进程,使之运行完成。 开始时先做Finish[i]:=false;当有足够的资源分配给进程时, 令Finish[i]:=true. 2 从进程集合中找到一个能满足下述条件的进程:① Finish[i]=false; ②Needi≤Work. 如找到,执行步骤3;否则执 行步骤4。 3 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它 的资源,故执行: Work:=Work+Allocation; Finish[i]:=true; Goto step2; 4 如果所有进程的Finish[i]=true,则表示系统处于安全状态;否 则,系统处于不安全状态。
进 程 管 理
死锁的恢复。是与检测死锁相配套的一 种措施,用于将进程从死锁状态下解脱 出来。常用的方法有: 1撤消进程;最简单撤消进程的方法是使 全部死锁的进程夭折掉;另一方法是按 照某种顺序逐个地撤消进程,直至有足 够的资源可用,死锁状态消除为止 2挂起进程(剥夺资源)。使用挂起/激活 机构挂起一些进程,剥夺它们的资源以 解除死锁,待条件满足时,再激活进程。 目前挂起法比较受到重视。
请找出该表中T0时刻以后存在的安全序列(至少2种)
资源情况 进程 P0 P1 P2 P3 P4 Max A B C 7 5 3 9 2 4 2 0 2 3 3 2 2 2 3 Allocation A B C 0 1 2 0 3 0 2 0 1 0 0 0 2 1 2 Need A B C 7 4 1 2 6 0 0 1 4 3 3 2 0 1 1
11
Available A B C 3 3 2
进 程 管 理
3 死锁的检测和恢复
死锁的检测和恢复技术是指定期启动 一个软件检测系统的状态, 一个软件检测系统的状态,若发现有死 锁存在,则采取措施恢复之。 锁存在,则采取措施恢复之。 (1)死锁的检测 (1)死锁的检测 检查死锁的办法就是由软件检查系统 中由进程和资源构成的有向图是否构成 一个或多个环路,若是,则存在死锁, 一个或多个环路,若是,则存在死锁, 否则不存在。 否则不存在。
还需要 Need A B C 7 4 1 (0 6 0 3 Available A B C 3 3 (2 3 2
可用
P0 P1 P2 P3 P4
0)
(3 0 2) 3 0 2 2 1 1 0 0 2
2 2 2 0) 0 0 1 1 1
若P1发出请求向量 Request(1,0,2)
4 3
工作向量Work.它表示系统可提供给进程继续运行所需要的各类资源的数目 资源情况 进程 P1 P3 P4 P2 P0 work A B C 3 3 5 3 7 4 7 4 10 4 2 2 3 5 7 Need A B C 1 2 0 1 4 3 6 0 7 4 2 1 1 0 3 Allocation A B C 2 0 2 1 0 0 3 0 0 1 0 1 2 2 0
5
进 程 管 理
二、银行家算法 设Requesti是进程Pi的请求向量,如果进程Pi需要K个 Rj类资源,当Pi发出资源请求后,系统按下述步骤进行 检查: 1 如果Requesti≤Needi,则转向步骤2;否则认为出错。 (因为它所需要的资源数已超过它所宣布的最大值。 2如果Requesti≤Available,则转向步骤3;否则,表示系 统中尚无足够的资源,Pi必须等待 3 系统试探把要求的资源分配给进程Pi,并修改下面数据 结构中的数值: Available:=Available-Requesti; Allocation:=Allocation+Requesti; Needi:= Needi- Requesti; 4 系统执行安全性算法,检查此次资源分配后,系统是 否处于安全状态。若安全,正式将资源分配给进程Pi, 以完成本次分配;否则,将试探分配作废,恢复原来 的资源分配状态,让进程Pi等待。
15
进 程 管 理
P1 r1 P2 r2
P1 r1 P2 r2
P1 r1 P2 r2
死锁定理: 系统中某个时刻S为死锁状态的充要条件是 S时刻系统的资源分配图是不可完全简化的。 在经过一系列的简化后,若能消去图中的所 有边,使所有的进程都成为孤立结点,则称该 图是可完全简化的;反之的是不可完全简化的。
Work+Allocation finish +
A B C 5 3 7 4 7 4 10 4 10 5
2 3 5 7 7
true true true true true
进 程 管 理
思考和练习
假定系统中有五个进程{P0、P1、P2、P3、P4}和 三种类型的资源{A,B,C},每一种资源的数量 分别为10、5、7,在T0时刻的资源分配情况如图
12
进 程 管 理
死锁的检测:实质是确定是否存在环路 等待现象,一旦发现这种环路便认定死 锁存在,并识别出该环路所涉及的有关 进程,以供系统采取适当的措施来解除 死锁。最常用的是一种基于资源分配图 RAG和死锁定理的检测死锁算法。
13
进 资源分配图(RAG) 程 管 系统死锁可用资源分配图来描述,该图是由一组结点N和 一组边E所组成的一对偶G=(N,E)。(用圆圈代表一个 理 进程,用方框代表一类资源,由于一种类型的资源可 能有多个,可用方框中的一个点代表一类资源中的一 个资源) 几个概念:请求边,分配边 P1 r1 请求r2 r2
进 程 管 理
安全状态的例子
例:假定系统有三个进程P1、P2、P3,共有12台磁带机。 进程P1总共要求10台磁带机,P2和P3分别要求4台和九 台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和 2台,还有3台空闲没有分配。 进程 P1 P2 P3 最大需求 10 4 9 已分配 5 2 2 可用 3
7
要记住的一些变量的名称
1 Available(可利用资源向量) 某类可利用的资源数目,其初值是系统中所配置的该类全部可用 资源数目。 2 Max最大需求矩阵 某个进程对某类资源的最大需求数 3 Allocation分配矩阵 某类资源当前非配给某进程的资源数。 4 Need需求矩阵 某个进程还需要的各类资源数。 Need= Max-Allocation 系统把进程请求的资源分配给它以后要修改的变量 Available:=Available-Request; Allocation:=Allocation+Request; Need:= Need- Request;
2
进 程 管 理
银行家算法
银行家算法是最有代表性的避免死锁算 法,是Dijkstra提出的银行家算法。这是 由于该算法能用于银行系统现金贷款的 发放而得名。为实现银行家算法,系统 中必须设置若干数据结构。
3
进 程 管 理
一、银行家算法中的数据结构 1 可利用资源向量Available 是一个含有m个元素,其中的每一个元素代 Available= 3 5 4 表一类可利用的资源数目,其初值是系统中所 2 8 3 配 置 的 该 类 全 部 可 用 资 源 数6目 。 如 果 8 1 Available[j]=k, 表示系统中现有Rj类资源k个。 2 最大需求矩阵Max 是一个含有n m的矩阵,它定义了系统中n个 进程中的每一个进程对m类资源的最大需求。 如果Max(i,j)=k, 表示进程i需要Rj类资源的最 大数目为k。
Available A B C
P0 P1 P2 P3 P4
3 3 3 2 (2 3 0) 2 2 2 0) 0 0 1 1 3 1
9
10,5 7
进程
资源情况
最大值 Max A B C 7 5 3 9 2 4 2 0 2 3 3 2 2 2 3
已分配 Allocation A B C 0 1 2 0 0 0
4
进 程 管 理
3 分配矩阵Allocation 是一个含有n m的矩阵,它定义了系统中每 一类资源当前已分配给每一进程的资源数。如 果Allocation(i,j)=k, 表示进程i当前已分得Rj类 资源k个。 4 需求矩阵Need 是一个含有n m的矩阵,用以表示每一个进 程尚需的各类资源数。如果Need(i,j)=k, 表示 进程i还需要Rj类资源k个,方能完成其任务。 Need(i,j)= Max(i,j)-Allocation(i,j)
20
进 程 管 理
21
进 程 管 理
小结
进程的并发执行, 使得它们之间存在着 进程的并发执行 , 使得它们之间 存在着 两种制约关系: 两种制约关系 : 由共享资源引起的间接 制约关系称为互斥; 制约关系称为互斥 ; 由于协作完成同一 任务而引起的直接制约关系称为同步。 任务而引起的直接制约关系称为同步 。 为了正确地解决进程之间的同步和互斥, 为了正确地解决进程之间的同步和互斥 , 系统设置同步机构: 锁和信号量机构。 系统设置同步机构 : 锁和信号量机构 。 这种同步机构称为低级通信。 进程之间 这种同步机构称为低级通信 。 的高级通信机构有消息缓冲、 信箱、 的高级通信机构有消息缓冲 、 信箱 、 管 共享内存和共享文件等机构, 道 、 共享内存和共享文件等机构 , 其最 大特点是通信双方可交换大量的数据。 大特点是通信双方可交换大量的数据。
Hale Waihona Puke 1 答:不可能。因为死锁产生的原因有两点: 系统资源不足或推进顺序不当,在本题中,进 程所需的最大资源数为60,而系统共有该类资 源65个,其资源数已足够系统内各进程使用。 2 答:简言之,死锁是某进程等待一个不会发 生的事件的一种现象;而饥饿现象是某进程正 等待这样一个事件,它发生了但总是受到其它 进程的影响,以至轮不到(或很难轮到)该进 程。
6
进 程 管 理
三、安全性算法 系统所执行的安全性算法可描述如下: 1 设置两个向量 ①工作向量Work.它表示系统可提供给进程继续运行所需要的各类资 源的数目,它含有m个元素,执行安全算法开始时, Work:=Available。 ②Finish.它表示系统是否有足够的资源分配给进程,使之运行完成。 开始时先做Finish[i]:=false;当有足够的资源分配给进程时, 令Finish[i]:=true. 2 从进程集合中找到一个能满足下述条件的进程:① Finish[i]=false; ②Needi≤Work. 如找到,执行步骤3;否则执 行步骤4。 3 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它 的资源,故执行: Work:=Work+Allocation; Finish[i]:=true; Goto step2; 4 如果所有进程的Finish[i]=true,则表示系统处于安全状态;否 则,系统处于不安全状态。