- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机操作系统
6 并发程序设计– 6.6 死锁
6.6.1 死锁的产生
死锁的产生
允许多个进程并发执行共享系统资源时,系
统必须提供同步机制和进程通信机制
然而,对这种机制使用不当的话,可能会出
现进程永远被阻塞的现象
例如,两个进程分别等待对方占有的一个资
源,于是两者都不能执行而处于永远等待,
这种现象称为“死锁”
死锁的定义
一组进程处于死锁状态是指:每一个进程都在
等待被另一个进程所占有的、不能抢占的资源。
例如,
存在n个进程P1, P2, …, Pn
进程Pi因为申请不到资源Ri而处于等待状态
而Ri又被Pi+1 占有,Rn被P1 占有
显然,这n个进程的等待状态永远不能结束,
这n个进程就处于死锁状态
死锁的产生(例1)
例1 竞争资源产生死锁。设系统有打印机、读
卡机各一台,它们被进程P和Q共享。两个进程
并发执行,它们按下列次序请求和释放资源:
进程P 进程Q
请求读卡机 请求打印机
请求打印机 请求读卡机
…… ……
释放读卡机 释放读卡机
释放打印机 释放打印机
死锁的产生(例2)
例2 PV操作使用不当产生死锁
进程Q1 进程Q2
……… ………
P(s1); P(s2);
P(s2); P(s1);
……… ………
使用r1和r2; 使用r1和r2;
……… ………
V(s1); V(s2);
V(s2); V(s1);
……… ………
死锁的产生(例3)
例3 同类资源分配不当引起死锁
若系统中有m个资源被n个进程共享,当每个
进程都要求K个资源,而m n·(K-1)+1时,
如果分配不得当就可能引起死锁
例如,m=5,n=5,k=2,采用的分配策略是
为每个进程轮流分配。首先,为每个进程轮
流分配一个资源,这时,系统中的资源都已
分配完了;于是第二轮分配时,各进程都处
于等待状态,导致了死锁
死锁的产生(例4)
例4 对临时性资源使用不加限制引起死锁
在进程通信时使用的信件可以看作是一种临时
性资源,如果对信件的发送和接收不加限制的
话,则可能引起死锁
比如,进程P1等待进程P3的信件S3来到后再向
进程P2发送信件S1;P2又要等待P1的信件S1来
到后再向P3发送信件S2;而P3也要等待P2的信
件S2来到后才能发出信件S3。在这种情况下就
形成了循环等待,永远结束不了,产生死锁
解决死锁问题的三个方法
综合上面的例子,产生死锁的因素不仅与系
统拥有的资源数量有关,而且与资源分配策
略,进程对资源的使用要求以及并发进程的
推进顺序有关
可从
本人专注于k12教育,英语四级考试培训,本人是大学本科计算机专业毕业生,专注软件工程计算机专业,也可承接计算机专业的C语言程序设计,Java开发,Python程序开发。
原创力文档


文档评论(0)