news 2026/5/7 12:03:24

Bilibili 三面: 资源分配图中存在环路则一定出现死锁么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Bilibili 三面: 资源分配图中存在环路则一定出现死锁么?

👉这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:

  • 《项目实战(视频)》:从书中学,往事上“练”

  • 《互联网高频面试题》:面朝简历学习,春暖花开

  • 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题

  • 《精进 Java 学习指南》:系统学习,互联网主流技术栈

  • 《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRMAI大模型、IoT物联网等功能:

  • 多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 微服务:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本

来源:飞天小牛肉

  • 前言

  • 死锁检测模型

  • 每种资源类型一个实例

  • 每种资源类型多个实例

  • 总结


前言

死锁避免算法大部分小伙伴应该都能说出来 “银行家算法”,死锁检测算法确实不常问也不常见,最近在一篇 Bilibili 的三面面经中看见了死锁检测算法,遂写出此文。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

死锁检测模型

在并发系统中,多个进程可能会因为资源竞争而陷入死锁。死锁检测模型提供了一种机制,通过将系统状态抽象为资源分配图,来识别死锁的存在。在这个图中,每个进程和资源都被表示为节点,资源和进程之间的有向边表示资源的分配和请求。

可证明结论:

  • 无环安全状态:如果资源分配图是一个无环图,系统处于安全状态,因为存在一种资源分配序列可以使得所有进程顺利完成。

  • 环存在不确定性:如果图中存在环,系统处于不安全状态,但不一定处于死锁状态

    • 当每种资源类型只有一个实例时,死锁一定发生

    • 如果资源类型有多个实例,系统也可能通过资源的动态分配来避免死锁

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

每种资源类型一个实例

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。

图 a 可以抽取出环,如图 b,它满足了环路等待条件,因此一定会发生死锁。

每种类型一个资源的死锁检测算法是通过检测有向图是否存在环来实现,从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有向图存在环,也就是检测到死锁的发生。具体算法描述如下:

  1. 初始化:创建一个资源分配图,用有向边表示资源和进程之间的关系。

  2. 深度优先搜索(DFS):从任意一个进程开始,进行深度优先搜索。

  3. 标记访问:在搜索过程中,对访问过的节点(进程)进行标记。

  4. 检测环:如果在搜索中遇到了已经被标记的节点,说明存在环,即检测到死锁。

详细算法步骤:

  1. 选择一个未访问的进程作为起点。

  2. 进行DFS,访问其相邻的资源节点。

  3. 标记该进程为已访问。

  4. 如果从该进程出发可以回到任何已标记的进程,则存在死锁。

  5. 如果所有进程都被访问且没有形成环,则没有死锁。

每种资源类型多个实例

上图中,有三个进程四个资源,每个数据代表的含义如下:

  • E 向量:资源总量

  • A 向量:资源剩余量

  • C 矩阵:每个进程所拥有的资源数量,每一行都代表一个进程拥有资源的数量(P1、P2、P3 三个进程)

  • R 矩阵:每个进程请求的资源数量

进程 P1 和 P2 所请求的资源都得不到满足,只有进程 P3 可以,因此我们让 P3 先执行,之后释放 P3 拥有的资源,此时 A = (2 2 2 0)。这样的话 P2 就可以执行了,执行后释放 P2 拥有的资源,A = (4 2 2 1) 。P1 也可以执行了。所有的进程都可以顺利执行,所以没有死锁。具体算法描述如下:

  1. 初始化:定义E(资源总量)、A(资源剩余量)、C(进程拥有的资源矩阵)和R(进程请求的资源矩阵)。

  2. 寻找可执行进程:选择一个请求资源不超过A的进程执行。

  3. 资源分配:将该进程请求的资源分配给它,并更新A和C。

  4. 进程完成:当进程执行完毕后,将其拥有的资源释放回A,并更新C。如果所有线程都可以顺利执行完毕,则没有死锁

详细算法步骤:

  1. 标记所有进程为未标记。

  2. 从所有未标记的进程中选择一个,其请求的资源向量Ri小于等于A。

  3. 将该进程的资源需求从A中减去,并更新C矩阵,标记该进程为已执行。

  4. 如果没有这样的进程,检查是否有任何进程可以执行。如果没有,则检测到死锁

  5. 重复步骤2和3,直到所有进程都被标记为已执行或检测到死锁

总结

总结下:

  • 对于每种资源类型一个实例的场景,若有环则必死锁;其死锁检测算法基于图论中的环检测技术,将死锁检测问题转化为有向图中的环判断问题

  • 对于没中资源类型多个实例的场景,有环不一定死锁;其死锁检测算法通过模拟资源分配和回收过程,检测是否存在一系列进程可以顺利获取资源完成执行,从而判断系统是否处于死锁状态


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 1:40:26

信息差永远是最容易上手的生意

图一是一条元宝红包活动相关的视频,几秒钟时长截图时间戳是5.4w评论,目前7w左右,大概用时3小时,还在持续上涨。博主3条视频,分别是7w,6w,还有一条刚刚发,目测这波涨粉可观&#xff0…

作者头像 李华
网站建设 2026/5/6 21:40:12

别被“涂颜色”骗了——从「栅栏涂色(Paint Fence)」看动态规划真正的思维方式

别被“涂颜色”骗了 从「栅栏涂色(Paint Fence)」看动态规划真正的思维方式 作者:Echo_Wish 一、引子: 一道题,为什么能坑这么多人? 先说个很真实的现象。 Paint Fence(栅栏涂色),在 LeetCode 里不算难题, 但我见过: 初学 DP 的同学写不出来 工作好几年的工程师…

作者头像 李华
网站建设 2026/4/23 13:10:04

2026企业自动化运维系统怎么选?五大主流系统核心能力深度对比

随着企业数字化转型迈入深水区,IT 架构正朝着异构化、分布式、云原生化的方向加速演进,混合云部署、微服务架构与容器化技术的深度融合,使运维场景面临异构环境适配难、流程标准化不足、合规要求严苛、生态集成复杂四大核心技术挑战。在此背景…

作者头像 李华
网站建设 2026/4/26 15:28:03

【KB HOME】联手【德伦学院】湖景别墅餐会暨公益慈善活动

美国知名住宅开发商 KB Home 将携手房地产教育机构『德伦学院』(GoGo Real Estate School),于2026年2月7日上午在南加州Menifee都市举办一场湖滨别墅主题的地产行业座谈会,并同步结合公益募捐行动。本次活动以真实开发项目为交流背…

作者头像 李华
网站建设 2026/4/30 16:38:11

细节全公开!我是如何用 AI 一天上线一个网站的

2026 年刚开年,Trae 就给每个用户都发了 600 积分,还没领到的朋友,抓紧去 Trae.ai 的官网快快去领取吧。【非广告,热心博主,纯提醒🐶】 领到了 600 积分后,大概一个月的时间就过期了&#xff0…

作者头像 李华
网站建设 2026/5/1 4:38:26

冷库:连锁超市的“第二利润中心”

在华东某三线城市,一家拥有32家门店的连锁超市正悄然进行着一场静默革命。这场革命不发生在拥挤的生鲜区,也不在收银台前,而是在后场那些终日轰鸣的冷库里。令人惊讶的是,这场看似技术性的改造,竟在一年内为这家企业带…

作者头像 李华