【操作系统】死锁的预防、避免、检测、解除

244 阅读2分钟

参考:blog.csdn.net/qq_33414271…

解决死锁的方式可以从多个角度去分析,一般的情况下分为预防、避免、检测、解除

  • 预防 限制并发进程对资源的请求,从而使得死锁的必要条件在系统执行的任何时间都不满足
  • 避免 系统在分配资源的时候,根据资源的使用情况提前做出预测,从而避免死🔒的发生
  • 检测 系统设有专门的机构,当死锁发生时,该机构能够检测死锁的发生,并精确地确定与死锁有关的进程和资源。
  • 解除 将进程从死锁状态下解脱出来

死锁的预防

破环死锁的四个必要条件中的一个就可以达到预防死锁的目的 互斥不剥夺在大多数情况下行不通 一般考虑破环请求和保持循环等待

  1. 静态资源策略 解释:进程在运行之前就能申请到所需要的全部资源才开始执行。进程要么占有所有的资源,要么不占有资源不执行。 缺点:资源的利用率很低. 主要破坏的是请求和保持条件

2.层次分配策略

破坏死锁产生的循环等待条件,所有资源被分成多个层次,得到某个资源之后只能申请更高层的资源,释放某个资源的时候,必须先释放较高层的资源。

死锁的避免

概念:通过控制系统对资源的分配,可以避免死锁的发生。案例: 银行家算法

系统在向一个进程分配资源的时候,是否会让系统进入非安全状态。当某个进行向系统申请资源时,如果系统分配这个资源后进入了非安全状态,那么系统就不会分配资源给这个进程,从而避免了死锁的发生。

安全状态: 系统的剩余资源可以使得系统内所有的进程都执行完毕的一种方案,如果这个方案存在,那么系统就是安全状态的。