死锁

同时满足以下4个条件便发生死锁:

1. 互斥:至少存在一个资源非共享,那么申请进程必须等到该资源被释放才能结束。

2. 占有并等待:一个进程必须占有至少一个资源,并等待另一个被其他进程占有的资源。

3. 非抢占:资源被占有后不能被其他进程抢占,只能等到该进程结束后释放。

4. 循环等待:有一组进程{p0,p1...pn-1},pi%n等待的资源被p(i+1)%n占有。

 

死锁预防,只要以上4个条件有一个不满足就不会死锁:

1. 互斥:这个条件没解决办法。

2. 占有并等待,两种解决办法:

  a. 进程在执行前先申请并获得所有资源。

  b. 进程在申请新的资源时必须释放占有的资源。

  这两种方法的缺点:资源利用率低且可能发生饥饿。

3. 非抢占,解决办法:进程申请一个不能被立即释放的资源,那么该进程所占有的资源都可能被抢占,如果申请到资源则还必须恢复等待时被抢占的资源才能继续执行。

4. 循环等待,解决办法:将资源编号,然后一个进程按照编号依次申请资源。

 

死锁避免:

1. 有序分配资源

2. 资源分配图算法检测

3. 银行家算法检测

posted @ 2017-03-23 20:27  poluner  阅读(121)  评论(0编辑  收藏  举报