2、死锁

厨子大约 3 分钟操作系统死锁原创面试题技术解析程序员资源管理

🌟死锁

死锁产生的条件

  • 请求和保持:请求新资源的同时,保持住已的占有资源不松手
  • 互斥:某一时刻下,一个资源只能一个进程所占有
  • 不可剥夺:获得的资源没有使用完时,别人不可以抢走
  • 循环等待:没有获得新资源,绝不死心。

处理死锁的方法

  • 鸵鸟法:对死锁不管不问
  • 预防死锁:设置某些限制条件,破坏死锁产生的四个条件之一
  • 避免死锁:资源分配的动态过程中,用某种方法防止系统进入不安全状态,从而避免死锁的发生。
  • 检测死锁:专门喊个人来检测死锁是否存在。

死锁预防

破坏四个条件之一:

  • 互斥条件:不太可能通过这个来解决
  • 请求和保持:静态分配,进程运行之前先分配所有资源给他
  • 不可剥夺:当某个资源长时间不能获得需要的新资源时,则放弃他的所有资源
  • 循环等待:当等待一段时间还没有获得资源时,则放弃等待

死锁的检测和解除

死锁检测:可以通过资源分配图来检测进程的资源占用情况及申请情况,进而来判断是否产生了死锁。如果资源分配图构成了环,则表示有死锁。

死锁解除:可以通过 剥夺资源进程撤销 等方式来解除死锁。

死锁产生的条件

序号
条件名称
描述说明
1
请求和保持
进程在请求新资源的同时,不释放已占有的资源
2
互斥
资源不能共享,某一时刻只能被一个进程占用
3
不可剥夺
资源只能由占有它的进程主动释放,不能被强制剥夺
4
循环等待
存在一个进程链,每个进程都在等待下一个进程所持有的资源

处理死锁的方法

方法名称
描述说明
鸵鸟法
忽略死锁问题,认为其发生概率极低,系统不做任何处理
预防死锁
破坏死锁产生的四个必要条件之一,防止死锁发生
避免死锁
在资源动态分配过程中,通过算法确保系统始终处于安全状态,避免进入死锁状态
检测死锁
定期运行检测算法,检查系统中是否存在死锁,若存在则采取措施解除