第六章并发、死锁和饥饿浙江工业大学解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

但它们又都因不
P2
能获得所需的资 源而不能继续推
R2 分配
进,从而也不能 释放出自己占有 的资源,以致进
入死锁状态。
14/78
产生死锁的原因
2.进程推进顺序不当引起死锁
在多道程序系统中,并发执行的进程推 进序列不可预测,有些推进顺序,进程可以 顺利完成,这些推进顺序是合法的;而有的 推进顺序会引起进程无限期地等待永远不会 发生的条件而不能向前推进,造成了死锁。
P1
...
Receive(P2);
...
Send(P2, M1);
P2
...
Receive(P1);
...
Send(P1, M2);
22/78
死锁的条件
死锁的三个必要条件 互斥 (Mutual exclusion)
– 一次只有一个进程可以使用一个资源
占有且等待 (Hold-and-wait)
– 当一个进程在等待分配得到其他资源时,将 继续占有已分配到的资源
可消费资源(Consumable Resources)(临时资源) – 可以创建并且可以消费的资源 – 进程消费完资源后,该资源就不存在了 – 如中断、信号、消息等
7/78
系统资源
可抢占性资源 – 进程在获得这类资源后,该资源可被其它进 程或系统抢占。 – 这类资源不会引起死锁 – 如处理器、主存等
15/78
[例1]进程推进顺序不当引起死锁
进程P和Q并发执行,竞争两个资源A和B。 每个进程需要独占使用这两个资源。 进程P和Q程序如下:
Process P … Get A … Get B … ReleaBaidu Nhomakorabeae A … Release B
Process Q …. Get B …. Get A … Release B …. Release A
18/78
19/78
[例2]竞争可重用性资源引起死锁
进程P、Q并发执行,竞争访问磁盘D和磁带T。 假设按以下执行序列执行:p0p1q0q1p2q2
√√ √√


解决办法:定义资源请求的先后次序
20/78
[例3]竞争可重用性资源引起死锁
进程P1、P2并发执行,请求主存空间。 假设可用的主存空间初始为200KB,P1、P2 按以下顺序请求:
B在干什么?

A


输入设备
输出设备
A在干什么?
B
5/78
SPOOLing系统死锁示例
不够!
进程A
满啦!
输出井 A
L
A
F
L
B
M
C
B
G
M
N
C
H
N
D
O
E
D
I
O
P
Q
不够! F GHI J K
进程B
不够! 进 程 C
6/78
系统资源
可重用资源 (Reusable Resources) – 一次只能供一个进程安全地使用 – 使用资源顺序:请求资源;使用资源;释放资源 – 进程用完资源后可以释放该资源,供其他进程再次 使用 – 如处理器、I/O通道、主存和辅存、设备等
2/78
汽车以70 码的速度 行驶,如 果没有任 何的措施, 接下来会 发生什么?
3/78
怎么办?
4/78
进程A
进程B
①申请输入设备 ①申请输出设备

②申请输出设备 ②申请输入设备

③释放输入设备 ③释放输出设备

④释放输出设备 ④释放输入设备

如果执行次序为:进程A①→进程B①..., 死
则发生死锁。
统的资源。对于可重用的资源,当系统 把这类资源分配给某进程后,不能强行 收回,只能在进程用完后自动释放。当 多个进程竞争这类资源时就可能引起死 锁。
13/78
竞争资源
例如系统只有一台打印机R1和一台磁带 机R2,可供进程P1和P2共享。
分配 P1 申请
申请
两个进程都在等 待对方释放出自
R1
己所需要的资源,
非剥夺 (No preemption )(不可抢占)
Rj
申请边:
进程资源类的一条有向边
Pi
Rj
10/78
系统资源分配图示例
○ R1
P1
P2
R2

11/78
产生死锁的原因
1.竞争资源引起死锁
– 竞争不可抢占性资源:资源不足 – 竞争可消耗性资源
2.进程推进顺序不合理 请求和释放资源的顺序不当
12/78
产生死锁的原因
1.竞争资源引起死锁 在多道程序系统,多个进程共享系
不可抢占性资源 – 一旦系统把某资源分配给该进程后,就不能 将它强行收回,只能在进程用完后自行释放 – 如磁带机、打印机等
8/78
资源分配图
用资源分配图来表示系统状态。
资源分配图由结点和边组成,是由一组结 点N和一组边E所组成的一个对偶G=(N, E)。
(1) P是一组进程结点P={ P1,P2,…, Pn},R是 资源结点R={ r1,r2,…, rn },N=PUR,且 P∩R={ }。
并发性: 死锁和饥饿
第6章
1
死锁
多道程序系统中,多个进程并发执行可改善 系统的资源利用率和提高系统的处理能力,但也 带来一种危险,即死锁现象发生。所谓死锁是指 计算机系统和进程所处的一种状态。在系统中, 两个或多个进程无限期地等待永远不会发生的条 件,此时称系统处于死锁状态。 一组进程因竞争系统资源或相互通信所造成的永 久性阻塞 没有有效的通用解决办法 涉及到两个或更多的进程之间因对资源的需求所 引起的冲突
(2) 任意一边e∈E,都连接着P中的一个结点 和R中的一个结点,我们用圆圈表示进程,方 框表示一类相同的资源,方框中的小圆表示一 类资源中的一个资源。
9/78
表示法 资源类(资源的不同类型):用方框表示 资源实例(存在于每个资源中):用方框
中的黑圆点表示 进程:用圆圈中加进程名表示 P
分配边: 资源实例进程的一条有向边 Pi
P1
...
Request 80 Kbytes; ...
Request 60 Kbytes;
P2
...
Request 70 Kbytes;
...
Request 80 Kbytes;
解决办法:使用虚拟存储机制
21/78
[例4]竞争可消耗资源引起死锁
进程P1、P2并发执行,通过信号量机 制进行同步。假设采用的是Receive阻塞机 制(即未收到信息则该进程被阻塞)
16/78
进程P和Q按路径1、 2、5、6推进顺序 合法,按3、4推进 顺序非法
17/78
修改P程序,可避免死锁
Process P … Get A … Release A … Get B … Release B
Process Q …. Get B …. Get A … Release B …. Release A
相关文档
最新文档