码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2.5 - 死锁


    目录

    一、死锁

    1、概念

    2、产生死锁的四个条件

    3、死锁的预防

    4、死锁的避免

    5、系统不发生死锁的资源计算(常考)

    二、考点1:不发生死锁的最小资源数计算

    三、考法2:银行家算法


    一、死锁

    1、概念

    • 两个或者两个以上的进程,相互需要对方的资源,但是又不释放自己的资源,导致无法运行下去的情况。
    • 例如卖家不拿到钱就不给买家货,买家不拿到货就不给卖家钱,导致生意无法进行。

    2、产生死锁的四个条件

    • 互斥
    • 保持和等待
    • 不剥夺
    • 环路等待

    3、死锁的预防

    • 打破产生死锁的四个条件中的任意一个。
    • 例如买卖案例中,买家直接剥夺了卖家的货,然后把钱给卖家,卖家拿到钱就打破了死锁。

    4、死锁的避免

    • 有序资源分配法
    • 银行家算法
    思想
    在把资源分配出去之前先分析资源分配出去是否是安全的。也就是说给进程分配资源之前会先衡量系统是否会进入不安全的状态,如果系统会进入不安全的状态,则不给进程分配资源;如果存在安全的序列,也就是系统处于安全状态,则给进程分配资源。
    安全状态
    系统里面的这些进程,能按照某一个次序,依次执行下去,存在这样的一个序列,我们九城系统是安全的。
    举例说明          
    就下面的例子来说,银行将资金分配给项目之前,会先判断资金是否会进入不安全状态,发现当项目能否按照特定的顺序依次完成时(2), 资金就处于安全的状态,所以银行会将资金分配给项目。
    (1)如果即将银行的50万分配给项目2或者项目3,三个项目依然无法运行,银行的钱也收不回来了,就变成死锁了。
    (2)如果将银行的钱给项目1,项目1就有150万了,就能正常运行了,项目1完成后银行可以收回150万,再分配给项目3,项目三就有300万了,也可以正常运行了,项目3运行完成后,银行可以收回300万,再分配给项目2 200万,项目2有400万了也可以正常运行,项目2运行完成之后银行可以收回400万,至此银行的500万就全部收回了。整个运行过程不会形成死锁。

    5、系统不发生死锁的资源计算(常考)

    • 给系统中每一个进程分配所需最大资源少一个后,系统还剩一个资源,就不会发生死锁。
    • 举例说明
    P1共需4个资源,P2共需3个额资源,P3共需5个资源。给P1分配3个资源,P2分配2个资源,P3分配4个资源,还剩一个资源,系统就不会死锁。所以系统有10个资源时,系统就不会产生死锁。

    二、考点1:不发生死锁的最小资源数计算

    三、考法2:银行家算法

  • 相关阅读:
    【01背包问题】
    中国计算机学会芯片大会 (CCF Chip 2024)
    Yarn框架原理
    目标检测的方法
    腾讯回应没有获得首批游戏版号,先让小公司回血更要紧;小鹏汽车被曝毁约20余名应届生;大厂一半以上程序员愿意降薪跳槽|极客头条
    如何平衡需求的优先级冲突?
    Dubbo的高级特性:服务管控篇
    基于Springboot的社区志愿者服务管理系统
    Nginx网站服务(安装nginx,nginx访问配置)
    工厂验厂审核流程
  • 原文地址:https://blog.csdn.net/qq_46071165/article/details/126111625
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号