2019-11-07 |

如何预防死锁?如何避免死锁?

A
B
C
D
答案:
p>预防死锁的方法:核心思想是破坏死锁的四个必要条件之一,即

 

  • 破坏请求与保持条件:采用预先静态分配的方法,即进程在运行前一次申请完它所需要的全部资源,在未满足全部资源时不运行;但系统资源被严重浪费,且易导致“饥饿”状态;
  • 破坏不可剥夺条件:当一个进程请求新的资源但未满足时,该进程必须释放已经保持的所有资源,以后需要时再重新申请;但反复地申请和释放资源会增加系统开销,降低系统吞吐量;
  • 破坏循环等待条件:采用顺序资源分配法,即给系统中的资源编号,规定每个进程必须按照编号顺序申请资源;但限制了新类型设备的增加。

避免死锁的方法:

  • 进程启动拒绝:如果一个进程的请求会导致死锁,则不执行该进程;
  • 资源分配拒绝:又名银行家算法,如果一个进程增加的资源请求会导致死锁,则不允许分配。

检测死锁的方法:

  • 为每个进程和每个资源制定唯一编号;
  • 设定一张资源分配表,记录各进程与占用资源之间的对应关系;
  • 设定一张进程等待表,记录各进程与申请资源之间的对应关系;
  • 判断是否出现环路,是则引发死锁。

解除死锁的方法:

  • 资源剥夺法:挂起某些死锁进程,并释放其所保持的资源,分配给其他死锁进程,但应防止被挂起的进程长时间得不到资源,而处于资源匮乏的状态;
  • 撤销进程法:强制撤销部分、甚至全部死锁进程,并释放其所保持的资源;撤销顺序可以按照进程优先级和撤销进程代价的高低来进行;
  • 进程回退法:让某些死锁进行回退到足以回避死锁的地步,回退过程中自愿释放自愿,但要求系统保留进程历史信息,设置还原点。
解释:

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论