死锁的基本概念——
死锁是指多个进程因竞争系统资源或相互通信而造成的一种僵局,若无外力作用,这些进程都将永远不能向前推进。如:(设S1,S2的初值为1,1)
进程1 进程2
wait(S1); wait(S2);
wait(S2); wait(S1);
使用资源; 使用资源;
signal(S1); signal(S1);
signal(S2); signal(S2);
第1页/共62页
死锁的基本概念——
日常生活中的死锁例
假设一条河上有一座独木桥,若桥两端的人相向而行……
此时死锁发生了
第2页/共62页
死锁的基本概念——
死锁产生的原因是:
竞争资源:多个进程竞争资源,而资源又不能同时满足其需求。
进程推进顺序不当:进程申请资源和释放资源的顺序不当。
第3页/共62页
死锁的基本概念——
可剥夺和非剥夺资源
可剥夺资源是指某进程获得这类资源后,该资源可以被其他进程或系统剥夺。如CPU,存储器。
非剥夺资源又称不可剥夺资源,是指系统将这类资源分配给进程后,再不能强行收回,只能在进程使用完后主动释放。如打印机、读卡机。
注意:竞争可剥夺资源不会产生死锁!
第4页/共62页
死锁的基本概念——
竞争非剥夺资源引起的死锁:
例如,打印机R1和读卡机R2供进程P1和P2共享。P1占有R1, P2占有R2;若P1申请R2阻塞,P2申请R1阻塞。
P1
R1
R2
P2
第5页/共62页
死锁的基本概念——
永久性资源和临时性资源
永久性资源:可顺序重复使用的资源。如打印机。
临时性资源:由一个进程产生,被另一个进程使用短暂时间后便无用的资源,又称为消耗性资源。如消息。
竞争永久性资源和临时性资源都可能产生死锁。
第6页/共62页
死锁的基本概念——
竞争临时性资源引起的死锁:
如消息通信按下述顺序进行,则不会发生死锁:
P1:...Release(S1);Request(S2);...
P2:...Release(S2);Request(S1);...
若按下述顺序,则可能发生死锁:
P1:... Request(S2);Release(S1);...
P2:... Request(S1);Release(S2);...
第7页/共62页
死锁的基本概念——
进程推进顺序不当引起的死锁
当进程P1、P2共享资源A、B时,若推进顺序合法则不会产生死锁,否则会产生死锁。
合法的推进路线:①②③ 不合法的推进线路:④
P2释放A
P2释放B
P2申请A
P2申请B
P1申请A P1申请B P1释放A P1释放B
①
②
③
④
死锁区
死锁点
第8页/共62页
死锁的基本概念——
死锁产生的必要条件
互斥条件:在一段时间内某资源仅为一个进程所占有。
请求和保持条件:又称部分分配条件。当进程因请求资源被阻塞时,已分配资源保持不放。
不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走。
循环等待条件:死锁发生时,存在一个进程资源的循环。
第9页/共62页
死锁的基本概念——
注意
死锁是因资源竞争造成的僵局
死锁至少涉及两个进程
死锁与部分进程及资源相关
第10页/共62页
资源死锁PPT课件 来自淘豆网m.daumloan.com转载请标明出处.