Bilibili 三面: 资源分配图中存在环路则一定出现死锁么?
这是一个或许对你有用的社群 一对一交流/面试小册/简历优化/求职解惑欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料《项目实战视频》从书中学往事上“练”《互联网高频面试题》面朝简历学习春暖花开《架构 x 系统设计》摧枯拉朽掌控面试高频场景题《精进 Java 学习指南》系统学习互联网主流技术栈《必读 Java 源码专栏》知其然知其所以然这是一个或许对你有用的开源项目国产Star破10w的开源项目前端包括管理后台、微信小程序后端支持单体、微服务架构RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能多模块https://gitee.com/zhijiantianya/ruoyi-vue-pro微服务https://gitee.com/zhijiantianya/yudao-cloud视频教程https://doc.iocoder.cn【国内首批】支持 JDK17/21SpringBoot3、JDK8/11Spring 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它满足了环路等待条件因此一定会发生死锁。每种类型一个资源的死锁检测算法是通过检测有向图是否存在环来实现从一个节点出发进行深度优先搜索对访问过的节点进行标记如果访问了已经标记的节点就表示有向图存在环也就是检测到死锁的发生。具体算法描述如下初始化创建一个资源分配图用有向边表示资源和进程之间的关系。深度优先搜索DFS从任意一个进程开始进行深度优先搜索。标记访问在搜索过程中对访问过的节点进程进行标记。检测环如果在搜索中遇到了已经被标记的节点说明存在环即检测到死锁。详细算法步骤选择一个未访问的进程作为起点。进行DFS访问其相邻的资源节点。标记该进程为已访问。如果从该进程出发可以回到任何已标记的进程则存在死锁。如果所有进程都被访问且没有形成环则没有死锁。每种资源类型多个实例上图中有三个进程四个资源每个数据代表的含义如下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 也可以执行了。所有的进程都可以顺利执行所以没有死锁。具体算法描述如下初始化定义E资源总量、A资源剩余量、C进程拥有的资源矩阵和R进程请求的资源矩阵。寻找可执行进程选择一个请求资源不超过A的进程执行。资源分配将该进程请求的资源分配给它并更新A和C。进程完成当进程执行完毕后将其拥有的资源释放回A并更新C。如果所有线程都可以顺利执行完毕则没有死锁详细算法步骤标记所有进程为未标记。从所有未标记的进程中选择一个其请求的资源向量Ri小于等于A。将该进程的资源需求从A中减去并更新C矩阵标记该进程为已执行。如果没有这样的进程检查是否有任何进程可以执行。如果没有则检测到死锁重复步骤2和3直到所有进程都被标记为已执行或检测到死锁总结总结下对于每种资源类型一个实例的场景若有环则必死锁其死锁检测算法基于图论中的环检测技术将死锁检测问题转化为有向图中的环判断问题对于没中资源类型多个实例的场景有环不一定死锁其死锁检测算法通过模拟资源分配和回收过程检测是否存在一系列进程可以顺利获取资源完成执行从而判断系统是否处于死锁状态欢迎加入我的知识星球全面提升技术能力。 加入方式“长按”或“扫描”下方二维码噢星球的内容包括项目实战、面试招聘、源码解析、学习路线。文章有帮助的话在看转发吧。 谢谢支持哟 (*^__^*

相关新闻

OpenClaw 安装文档

OpenClaw 安装文档

一、问题背景在阿里云 ECS 服务器(1.8GB 内存)上直接安装 OpenClaw 时,由于 OpenClaw 依赖 node-llama-cpp,需要从源码编译 llama.cpp(大型 C AI 库)。编译过程中 g 编译器会消耗大量内存(单个进…

2026/7/3 15:17:07 阅读更多 →
Si83402BAA-IF,具有低导通电阻的2通道隔离智能开关

Si83402BAA-IF,具有低导通电阻的2通道隔离智能开关

型号介绍今天我要向大家介绍的是 skyworks 的智能隔离开关——Si83402BAA-IF。该器件具有低导通电阻 (RON),能够在提供高连续电流的同时,对感性负载进行无限量的消磁。采用紧凑的 DFN 封装,并集成了安全等级的隔离功能。其逻辑接口为两个低功…

2026/7/3 15:17:10 阅读更多 →
RAGFlow工程师必看:微服务架构设计与企业级部署实践

RAGFlow工程师必看:微服务架构设计与企业级部署实践

文章详细介绍了RAGFlow开源RAG引擎的技术特点与架构设计,重点解析了其微服务架构、DeepDoc文档解析能力和Agent工作流机制。涵盖了生产环境资源规划、Docker容器化部署、异步任务流转、Elasticsearch索引优化等工程实践,为开发者构建企业级RAG系统提供了…

2026/7/3 15:17:11 阅读更多 →

最新新闻

3000元成本72小时赚50万美元——AI短剧出海怎么落地

3000元成本72小时赚50万美元——AI短剧出海怎么落地

一部AI短剧,成本3000元,上线海外平台72小时,GMV做到50万美元。 这不是标题党。这部叫《波斯复仇记》的作品,2026年上半年上线后,营收倍率接近1200倍。同期,广州头部短剧企业AI短剧出海订单同比激增5倍&…

2026/7/3 22:03:54 阅读更多 →
数字人多角色访谈怎么做:2026年数字人口播,5款实测解析

数字人多角色访谈怎么做:2026年数字人口播,5款实测解析

没有嘉宾也能做访谈视频,难点到底在哪 想做一档双人甚至多人对话的访谈短视频,但找不到合适的嘉宾、约不到档期、录音棚成本又高——这是很多知识博主、播客团队和中小企业内容号共同的难题。更现实的问题是:就算用 AI 数字人顶替嘉宾&#x…

2026/7/3 22:03:54 阅读更多 →
OpenCore Configurator:黑苹果引导配置的技术重构与架构解析

OpenCore Configurator:黑苹果引导配置的技术重构与架构解析

OpenCore Configurator:黑苹果引导配置的技术重构与架构解析 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore Configurator 作为一款专为…

2026/7/3 22:01:53 阅读更多 →
掌握图像转3D模型:ImageToSTL实现智能立体照片打印

掌握图像转3D模型:ImageToSTL实现智能立体照片打印

掌握图像转3D模型:ImageToSTL实现智能立体照片打印 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项…

2026/7/3 22:01:53 阅读更多 →
上海理工大学《线性代数B》期末试卷及答案2017-2023年(10份)PDF

上海理工大学《线性代数B》期末试卷及答案2017-2023年(10份)PDF

上海理工大学《线性代数B》期末试卷及答案2017-2023年(10份) 包括: 上海理工大学《线性代数B》2017-2018学年第二学期期末试卷A卷.pdf 上海理工大学《线性代数B》2017-2018学年第二学期期末试卷B卷.pdf 上海理工大学《线性代数B》2017-2018学…

2026/7/3 21:57:52 阅读更多 →
猫抓Cat-Catch:在浏览器限制中的技术哲学与架构演进之路

猫抓Cat-Catch:在浏览器限制中的技术哲学与架构演进之路

猫抓Cat-Catch:在浏览器限制中的技术哲学与架构演进之路 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓Cat-Catch作为浏览器资源嗅…

2026/7/3 21:55:51 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻