码农知识堂 - 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:银行家算法

  • 相关阅读:
    【英雄哥六月集训】第 30天: 拓扑排序
    【数据结构】二叉树详解
    linux 在 docker 上部署启动 RabbitMQ
    typora整理markdown笔记
    CM311-3_YST_晨星MSO9385_2+8_安卓9.0_TTL免费升级固件【含教程】
    C语言字符转数字函数
    75. 颜色分类(中等 数组 双指针 排序)
    并发刺客(False Sharing)——并发程序的隐藏杀手
    【024】C++对C的扩展之命名空间namespace详解
    基于ACS40核心板的串口图传设计
  • 原文地址:https://blog.csdn.net/qq_46071165/article/details/126111625
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号