整理常见问题一死锁条件

发布时间 2023-10-10 09:36:16作者: 娜乌西卡在路上

1、死锁的条件

死锁是两个或两个以上的进程在执行过程中,由于竞争资源或进程推进顺序非法造成的阻塞现象,若无外力作用将无法推进下去。

四个必要条件

1)互斥条件:一个资源每次只能被一个进程使用(涉及的资源是非共享的)

2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

3)不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺;

4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系;

解决方法

1)预防:通过设置某些限制条件,以破坏产生死锁的四个条件中的一个或几个,来防止发生死锁。具体可通过以下三种方法实现:

  A、防止部分分配(摒弃请求和保持条件)

  B、防止“不剥夺”条件出现

  C、防止“环路等待”条件出现

2)避免:在进程请求分配资源是,采用某种算法(银行家算法)来预防可能发生的死锁,从而拒绝可能引起死锁的某个资源请求。

  避免死锁与预防死锁的区别在于:预防死锁是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。

3)检测:软件检查系统中由进程贺资源构成的有向图是否构成一个或多个环路,若是,则存在死锁,否则不存在。

4)解除

  A、将陷入死锁的进程全部撤销

  B、逐个作废死锁进程,直至死锁不再存在

  C、从死锁进程中逐个地强迫抢占其所占资源,直至死锁不存在