面试问题浓缩总结 面试问题浓缩总结
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • 操作系统

    • 进程和线程
    • 互斥和同步
    • 死锁和饥饿
      • 基本概念
        • 产生死锁的原因
        • 产生死锁必要条件
        • 死锁的处理方法
    • 内存管理
    • IO管理
    • 其他
    • 面试问题整理
  • 计算机网络

  • 软件工程

  • 基础学科
  • 操作系统
小游
2021-03-20

死锁和饥饿

# 基本概念

# 产生死锁的原因

根本原因 就是系统能够提供的资源个数比要求该资源的进程数要少

基本原因 资源竞争和进程推进顺序不合理

# 产生死锁必要条件

  • 互斥 一个资源一次只能被一个进程使用;
  • 占有并等待 一个进程至少占有一个资源,并在等待另一个被其它进程占用的资源;
  • 非抢占 已经分配给一个进程的资源不能被强制性抢占,只能由进程完成任务之后自愿释放;
  • 循环等待 若干进程之间形成一种头尾相接的环形等待资源关系,该环路中的每个进程都在等待下一个进程所占有的资源。

# 死锁的处理方法

  • 鸵鸟策略 直接忽略死锁。因为解决死锁问题的代价很高,该方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。
  • 死锁预防 其实就是破坏产生死锁的四个必要条件
  • 死锁避免 动态地检测资源分配状态,以确保系统处于安全状态,比如使用银行家算法,或安全序列
  • 死锁解除 利用抢占(抢占它的资源) 、利用回滚(让进程回退到足以解除死锁的地步)、杀死进程

检测死锁可以检测有向图是否存在环,或者使用类似死锁避免的检测算法。

编辑 (opens new window)
上次更新: 2021/03/23, 23:05:20
互斥和同步
内存管理

← 互斥和同步 内存管理→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式