并不可能发生死锁,但若改成下述的运行顺序: P1: …Request(S3); Release(S1); … P2: …Request(S1); Release(S2); … P3: …Request(S2); Release(S3); … 则可能发生死锁。 图3-14 进程之间通信时的死锁 2.进程推进顺序不当引起死锁 由于进程在运行中具有异步性特征,这就可能使上述P1和P2两个进程按下述两种顺序向前推进。 1) 进程推进顺序合法 在进程P1和P2并发执行时,如果按下述顺序推进: P1:Request(R1);Request(R2); P1:Releast(R1);Release(R2); P2:Request(R2);Request(R1); P2:Release(R2);Release(R1); 图3-15 进程推进顺序对死锁的影响 2) 进程推进顺序非法 若并发进程P1和P2按曲线④所示的顺序推进,它们将进入不安全区D内。此时P1保持了资源R1,P2保持了资源R2,系统处于不安全状态。因为这时两进程再向前推进,便可能发生死锁。例如,当P1运行到P1:Request(R2)时,将因R2已被P2占用而阻塞;当P2运行到P2:Request(R1)时,也将因R1已被P1占用而阻塞,于是发生了进程死锁。 3.5.2 产生死锁的必要条件 虽然进
原创力文档

文档评论(0)