操作系统-死锁

一、什么是死锁

多个进程占有并等待
死锁是指多个并发进程,各自持有资源又都等待别的进程释放所拥有的资源,在未改变这种状态之前不能向前推进,这种状态称为死锁,死锁产生的根本原因是系统资源不足。

二、死锁的必要条件

互斥、非抢占、占有并等待、循环等待

  • 互斥:并发进程要求和占用的资源只能被一个进程使用
  • 不可抢占:进程已经获得的资源,在未使用完成前,不可被剥夺
  • 占有并等待:进程申请并等待新资源的过程中,继续占有已分配的资源
  • 循环等待:若干进程形成首尾相接的循环链,循环等待上一个进程的资源

三、死锁预防

  • 打破互斥
  • 打破占有并等待:当系统能够满足当前进程的全部资源需求时,才一次性地将所申请的资源全部分配给该进程
  • 打破非抢占:一个进程请求当前被另一个进程占用的一个资源时,操作系统可以抢占另一个进程,要求它释放资源
  • 打破循环等待:采用资源有序分配,其基本思想是将系统中的所有资源顺序编号,将紧缺的,稀少的采用较大的编号,在申请资源时必须按照编号的顺序进行,一个进程只有获得较小编号的进程才能申请较大编号的进程

四、死锁避免

  • 资源拒绝分配策略又称为银行家算法
    资源拒绝分配策略又称为银行家算法,该策略能够保证系统中进程和资源总是处于安全状态。当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态,如果是,则同意这个请求;否则阻塞该进程直到同意该请求后系统状态仍然是安全的。

五、死锁检测

六、死锁解除

  • 取消所有死锁进程
  • 回滚死锁进程到前面定义的某些检查点,然后重新启动所有进程
  • 基于某种最小代价原则,连续取消死锁进程直到不再存在死锁
  • 基于某种最小代价原则,连续抢占资源知道不存在死锁
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章