死锁原因,条件和解决

简介: 死锁原因,条件和解决

死锁概念和产生原因


死锁是指多个进程循环等待彼此占有的资源而无限期的僵持等待下去的局面。原因是:


  • 系统提供的资源太少了,远不能满足并发进程对资源的需求

  • 进程推进顺序不合适,互相占有彼此需要的资源,同时请求对方占有的资源,往往是程序设计不合理

死锁产生的必要条件


互斥条件:即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有


可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行的从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放


占有且等待条件:进程至少已经占有了一个资源,但又申请了一个新的被其他进程所占有的资源,此时处于等待状态


循环等待条件:若干个进程形成环形链,每个都占用对方申请的下一个资源


死锁的处理策略


为使系统不发生死锁,必须设法破坏产生死锁的四个必要条件之一,或者允许死锁产生,但当死锁发生时能检测出思索,并有能力实现恢复。


一般有死锁的预防、死锁避免、死锁的检测与恢复三种方法。


死锁预防:破坏导致死锁必要条件中的任意一个就可以预防死锁。例如,要求用户申请资源时一次性申请所需要的全部资源,这就破坏了保持和等待条件;将资源分层,得到上一层资源后,才能够申请下一层资源,它破坏了环路等待条件。预防通常会降低系统的效率。


死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,例如,使用银行家算法。死锁避免算法的执行会增加系统的开销。


死锁检测:死锁预防和避免都是事前措施,而死锁的检测则是判断系统是否处于死锁状态,如果是,则执行死锁解除策略。


死锁解除:这是与死锁检测结合使用的,它使用的方式就是剥夺。即将某进程所拥有的资源强行收回,分配给其他的进程。


死锁预防:


打破互斥条件:允许进程同时访问资源(有些资源就是不可以同时访问的,无实用价值)


打破不可抢占条件:比如给进程设置优先级,高优先级的可以抢占资源(实现困难,降低系统性能)


打破占有且等待条件:实行资源预分配策略,即进程在运行前一次性的向系统申请它所需要的全部资源(不可预测资源的使用,利用率低,降低并发性)


破坏循环等待条件:采用这种策略,即把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。所有进程对资源的请求必须严格按资源序号递增的顺序提出(限制和编号实现困难,增加系统开销,有些资源暂时不用也需要先申请,增加了进程对资源的占用时间)


死锁避免


允许进程动态的申请资源,但系统在进行资源分配前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源你分配给进程,否则,让进程等待。


所谓安全状态,是指系统能按某种进程推进顺序,为每个进程分配其所需的资源,直至满足每个进程对资源的最大需求,是每个进程都可以顺序的完成。此时成P1P2P3…为安全序列,如果系统无法找到一个安全序列,则称系统处于不安全状态。


并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可以避免进入死锁状态。


银行家算法是最著名的死锁避免算法。


死锁解除


资源剥夺法。挂起某些思索进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但应防止被挂起的进程长时间得不到资源时,而处于资源匮乏的状态。


进程撤销法。强制撤销一个或一部分进程并剥夺这些进程的资源。撤销的原则可以按进程的优先级和撤销进程代价的高低进行。


进程回退法。让一个或多个进程回退到足以回避死锁的地步,进程回退时资源释放资源而不是被剥夺。要求系统保持进程的历史信息,设置还原点。

相关文章
|
存储 Rust 并行计算
【密码学】一文读懂XTS模式
这篇文章的灵感来源于我偶然翻到的一个某U盘有关磁盘加密的一个介绍(这一篇不是广告蛤), 然后发现这个模式我之前还真没遇到过,因此呢,就学习了一下,就出来了这一篇文章。
9004 0
【密码学】一文读懂XTS模式
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
14322 2
|
5月前
|
数据采集 JSON 数据安全/隐私保护
Python 爬虫爬取应用商店数据:请求构造与数据解析
Python 爬虫爬取应用商店数据:请求构造与数据解析
|
25天前
|
存储 人工智能 自然语言处理
阿里云千问办公是什么?官网入口链接在哪?千问办公AI功能、价格、场景、常见问题汇总
阿里云千问办公(QwenWork)是面向办公场景的AI智能体平台,深度融合钉钉生态,支持用自然语言一键生成PPT、Word、Excel、网页及视频等成品,并具备多模态理解、浏览器自动化、定时任务等能力。提供个人版(免费/98元起)与企业版(198元/人/月)两种订阅模式,真正实现“一句话交付结果”。阿里千问办公QwenWork官网:https://t.aliyun.com/U/JNKJuO 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
10月前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
4159 7
|
1月前
|
人工智能 安全 数据挖掘
阿里千问办公如何收费?有免费版和付费版两种,注册免费送2000积分
阿里千问办公QwenWork提供免费版(注册赠2000积分)与付费版(个人/企业多档),支持AI办公提效。免费版含基础功能,付费版解锁高级模型、管理后台及VPC部署等权益,详情见官网。阿里千问办公官网:https://t.aliyun.com/U/JNKJuO 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
2月前
|
自然语言处理 文字识别 数据可视化
重构 RAG 上下文:非结构化文档切块优化与父子块架构实践
在 RAG 系统中,非结构化文档若采用固定字符数“硬切”,易导致语义断层与上下文污染。 本文针对该痛点,提出了非结构化文档 RAG 切块的三重递进优化策略:Markdown 层级切块、基于 Embedding 的语义切块以及父子块架构。文章详细阐述了层次路径与版本等元数据的绑定方法,横向对比了 Unstructured、板栗看板等主流工具,并解答了表格与切块大小设置等常见问题,助力打造高质量 Prompt。
235 0
|
3月前
|
人工智能 运维 文字识别
企业大模型本地化部署与数据安全实践:从 RAG 权限过滤到审计闭环
本文聚焦企业大模型本地化部署中的数据安全痛点,以RAG问答系统为例,详解权限过滤前置、元数据治理、审计闭环等关键实践,提供可落地的分层架构与FastAPI代码骨架,强调“模型看不见无权数据”才是安全底线。
520 0
|
3月前
|
人工智能 Java 测试技术
2026年vibe coding模式实测 中小企业Java开发效率解析
本文实测2026年vibe coding模式在中小企业Java开发中的落地效果,基于12个Spring Boot+MyBatis项目,对比TRAE等6款AI工具。结果表明:该模式支持口语化模糊需求输入,自动适配项目规范,单元测试生成准确率提升至72%,开发耗时降低47%,测试覆盖率从35%升至70%+,显著提升中小团队迭代效率。(239字)
312 0
|
安全 关系型数据库 MySQL
记一次MS14-058到域控实战记录
记一次MS14-058到域控实战记录
1558 0
记一次MS14-058到域控实战记录