ch同步通信与死锁.ppt

一种具体的死锁检测方法,检测算法步骤如下: 1)currentavail=available; 2)如果allocation[k,*]!=0,令finish[k]=false;否则finish[k]=true; 3)寻找一个k,它应满足条件:(finish[k]==false)(request[k,*]=currentavail[*]);若找不到这样的k,则转向5); 4)修改currentavail[*]=Currentavail[*]+allocation[k,*]; finish[k]=true;然后转向3); 5)如果存在k(1≤k≤n),finish[k]=false,则系统处于死锁状态,并且finish[k]=false的Pk为处于死锁的进程。 * 结束所有进程的执行,重新启动操作系统。方法简单,但以前工作全部作废,损失很大。 撤销陷于死锁的所有进程,解除死锁继续运行。 逐个撤销陷于死锁的进程,回收其资源重新分派,直至死锁解除。 * 剥夺陷于死锁的进程占用的资源,但并不撤销它,直至死锁解除。可仿照撤销陷于死锁进程的条件来选择剥夺资源的进程 根据系统保存的检查点,让所有进程回退,直到足以解除死锁,这种措施要求系统建立保存检查点、回退及重启机制。 当检测到死锁时,如果存在某些未卷入死锁的进程,而随着这些进程执行到结束,有可能释放足够的资源来解除死锁。

文档评论(0)

1亿VIP精品文档

相关文档