第六章并发、死锁和饥饿浙江工业大学
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
但它们又都因不
P2
能获得所需的资 源而不能继续推
R2 分配
进,从而也不能 释放出自己占有 的资源,以致进
入死锁状态。
14
产生死锁的原因
2.进程推进顺序不当引起死锁
在多道程序系统中,并发执行的进程推 进序列不可预测,有些推进顺序,进程可以 顺利完成,这些推进顺序是合法的;而有的 推进顺序会引起进程无限期地等待永远不会 发生的条件而不能向前推进,造成了死锁。
不可抢占性资源 – 一旦系统把某资源分配给该进程后,就不能 将它强行收回,只能在进程用完后自行释放 – 如磁带机、打印机等
8
资源分配图
用资源分配图来表示系统状态。
资源分配图由结点和边组成,是由一组结 点N和一组边E所组成的一个对偶G=(N, E)。
(1) P是一组进程结点P={ P1,P2,…, Pn},R是 资源结点R={ r1,r2,…, rn },N=PUR,且 P∩R={ }。
非剥夺 (No preemption )(不可抢占)
– 不能强行抢占进程已占有的资源
Q: 上述三个条件是不是一定会导致死锁的 发生 ?
23
死锁的条件
循环等待 (Circular wait) – 存在一个封闭的进程-资源链,每个进 程至少占有一个该链中下一个进程所 需要的资源
(2) 任意一边e∈E,都连接着P中的一个结点 和R中的一个结点,我们用圆圈表示进程,方 框表示一类相同的资源,方框中的小圆表示一 类资源中的一个资源。
9
表示法 资源类(资源的不同类型):用方框表示 资源实例(存在于每个资源中):用方框
中的黑圆点表示 进程:用圆圈中加进程名表示 P
分配边: 资源实例进程的一条有向边 Pi
P1
...
Request 80 Kbytes; ...
Request 60 Kbytes;
P2
...
Request 70 Kbytes;
...
Request 80 Kbytes;
解决办法:使用虚拟存储机制
21
[例4]竞争可消耗资源引起死锁
进程P1、P2并发执行,通过信号量机 制进行同步。假设采用的是Receive阻塞机 制(即未收到信息则该进程被阻塞)
P1
...
Receive(P2);
...
Send(P2, M1);
P2
...
Receive(P1);
...
Send(P1, M2);
22
死锁的条件
死锁的三个必要条件 互斥 (Mutual exclusion)
– 一次只有一个进程可以使用一个资源
占有且等待 (Hold-and-wait)
– 当一个进程在等待分配得到其他资源时,将 继续占有已分配到的资源
统的资源。对于可重用的资源,当系统 把这类资源分配给某进程后,不能强行 收回,只能在进程用完后自动释放。当 多个进程竞争这类资源时就可能引起死 锁。
13
竞争资源
例如系统只有一台打印机R1和一台磁带 机R2,可供进程P1和P2共享。
分配 P1 申请
申请
两个进程都在等 待对方释放出自
R1
己所需要的资源,
并发性: 死锁和饥饿
第6章
1
死锁
多道程序系统中,多个进程并发执行可改善 系统的资源利用率和提高系统的处理能力,但也 带来一种危险,即死锁现象发生。所谓死锁是指 计算机系统和进程所处的一种状态。在系统中, 两个或多个进程无限期地等待永远不会发生的条 件,此时称系统处于死锁状态。 一组进程因竞争系统资源或相互通信所造成的永 久性阻塞 没有有效的通用解决办法 涉及到两个或更多的进程之间因对资源的需求所 引起的冲突
15
[例1]进程推进顺序不当引起死锁
进程P和Q并发执行,竞争两个资源A和B。 每个进程需要独占使用这两个资源。 进程P和Q程序如下:
Process P … Get A … Get B … Release A … Release B
Process Q …. Get B …. Get A … ReleasΒιβλιοθήκη Baidu B …. Release A
Rj
申请边:
进程资源类的一条有向边
Pi
Rj
10
系统资源分配图示例
○ R1
P1
P2
R2
○
11
产生死锁的原因
1.竞争资源引起死锁
– 竞争不可抢占性资源:资源不足 – 竞争可消耗性资源
2.进程推进顺序不合理 请求和释放资源的顺序不当
12
产生死锁的原因
1.竞争资源引起死锁 在多道程序系统,多个进程共享系
18
19
[例2]竞争可重用性资源引起死锁
进程P、Q并发执行,竞争访问磁盘D和磁带T。 假设按以下执行序列执行:p0p1q0q1p2q2
√√ √√
√
√
解决办法:定义资源请求的先后次序
20
[例3]竞争可重用性资源引起死锁
进程P1、P2并发执行,请求主存空间。 假设可用的主存空间初始为200KB,P1、P2 按以下顺序请求:
16
进程P和Q按路径1、 2、5、6推进顺序 合法,按3、4推进 顺序非法
17
修改P程序,可避免死锁
Process P … Get A … Release A … Get B … Release B
Process Q …. Get B …. Get A … Release B …. Release A
2
汽车以70 码的速度 行驶,如 果没有任 何的措施, 接下来会 发生什么?
3
怎么办?
4
进程A
进程B
①申请输入设备 ①申请输出设备
竞
②申请输出设备 ②申请输入设备
争
③释放输入设备 ③释放输出设备
外
④释放输出设备 ④释放输入设备
设
如果执行次序为:进程A①→进程B①..., 死
则发生死锁。
B在干什么?
可消费资源(Consumable Resources)(临时资源) – 可以创建并且可以消费的资源 – 进程消费完资源后,该资源就不存在了 – 如中断、信号、消息等
7
系统资源
可抢占性资源 – 进程在获得这类资源后,该资源可被其它进 程或系统抢占。 – 这类资源不会引起死锁 – 如处理器、主存等
锁
A
示
例
输入设备
输出设备
A在干什么?
B
5
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
系统资源
可重用资源 (Reusable Resources) – 一次只能供一个进程安全地使用 – 使用资源顺序:请求资源;使用资源;释放资源 – 进程用完资源后可以释放该资源,供其他进程再次 使用 – 如处理器、I/O通道、主存和辅存、设备等