操作系统第五篇【死锁】

操作系统中的死锁问题(精简版) 什么是死锁 ​ 多个进程或线程互相以阻塞状态等待对方的资源,在得到所有的对方的资源之前,都不会释放自己现有的资源,这样形成的循环等待现象叫死锁。 产生死锁的四个条件 ​ 1、资源不共享(资源互斥) ​ 2、占有且等待(请求且保持) ​ 3、资源不可剥夺 ​ 4、环路等待 解决死锁的方法 1、资源剥夺法 ​ 将处于死锁状态的其中一个进程挂起,并抢占它的资源,将这些资源分配给其他等待的死锁进程 2、撤销进程法 ​ 按照优先级、强制杀死部分进程,将其资源释放出来,然后其他等待的死锁进程资源自 阅读详情

死锁的概念

死锁(Deadlock),这里指的是进程死锁。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁。

所谓死锁,是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。
计算机系统产生死锁的根本原因就是资源有限且进程间推进顺序不当

出现死锁的条件

  • 互斥条件

    • 即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。

  • 不剥夺条件

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

  • 请求和保持条件

    • 进程至少已经占有一个资源,但又申请新的资源;由于该资源已被另外进程占有,此时该进程阻塞;但是,它在等待新资源之时,仍继续占用已占有的资源。

  • 环路条件

640?wx_fmt=png
这里写图片描述

处理死锁

  • 死锁预防、死锁避免

  • 死锁检测、死锁恢复

死锁预防

死锁的预防是保证系统不进入死锁状态的一种策略。
它的基本思想是要求进程申请资源时遵循某种协议,从而打破产生死锁的四个必要条件中的一个或几个,保证系统不会进入死锁状态。

  • 破坏“请求和保持”条件

    • 即允许进程同时访问某些资源。

    • 但是,有的资源是不允许被同时访问的,像打印机等等,这是由资源本身的属性所决定的。

    • 所以,这种办法并无实用价值。

  • 破坏“不剥夺”条件

    • 即允许进程强行从占有者那里夺取某些资源。

  • 破坏“环路等待”条件

    • 可以实行资源预先分配策略。

死锁的避免

死锁的避免指在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。
在分配资源时判断是否会出现死锁,如不会死锁,则分配资源。

死锁的检测和恢复

保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。
死锁检测算法主要是检查是否有循环等待。

死锁检测算法是当进程进行资源请求时检查并发进程组是否构成资源的请求和占用环路。如果不存在这一环路,则系统中一定没有死锁。检测方法有进程-资源有向图和死锁定理

一旦发生死锁,就利用资源剥夺法或进程撤销法解除死锁。

  • 1)撤消陷于死锁的全部进程;

  • 2)逐个撤消陷于死锁的进程,直到死锁不存在;

  • 3)从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失;

  • 4)从另外的进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。

鸵鸟算法

最简单的方法,就是忽略死锁。
据说(尽管很多人认为不可能)鸵鸟遇到无法避免的危险时就把头埋在沙子里,对出现的危险不管不顾。
操作系统处理死锁的一种策略是不预防、不避免,对可能出现的死锁采取放任的态度,称作鸵鸟算法。

当出现死锁的概率很小,并且出现之后处理死锁会花费很大的代价时,执行死锁避免的开销很大,还不如不做处理。因此,鸵鸟算法是平衡性能和复杂性的一种方法。

….啥都不处理也能叫做成一个算法….

银行家算法

银行家算法是一种最有代表性的避免死锁的算法。又被称为“资源分配拒绝”法。

  • 一、安全状态

    • 所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次地运行完毕,这种进程序列{ P1 ,P2 …Pn}就是安全序列。

    • 如果存在这样一个安全序列,则系统是安全的。

  • 二、由安全状态向不安全状态的转换

    • 对于处于安全状态的系统,当某进程请求某些资源后,系统不再安全,也就是说,不存在一个安全序列,那么,此时系统处于不安全状态。

为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述系统中可利用的资源、所有进程对资源的最大需求、系统中的资源分配,以及所有进程还需要多少资源的情况。

  •  (1) 可利用资源向量Available。

  • (2) 最大需求矩阵Max。 

  • (3) 分配矩阵Allocation。  

  • (4) 需求矩阵Need。

设Requesti是进程Pi的请求向量,如果Request i[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

(1) 如果Request i[j]≤Need[i, j],便转向步骤(2); 否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。

2) 如果Request i[j]≤Available[j],便转向步骤(3); 否则,表示尚无足够资源,Pi须等待。

(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:

Available[j] = Available[j] - Request i[j];

Allocation[i, j] = Allocation[i, j] + Request i[j];

Need[i, j] = Need[i, j] - Request i[j];

(4) 系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待

640?wx_fmt=jpeg
这里写图片描述

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航:

  • https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang


现代操作系统 第六章 死锁 习题 Chapter 06 死锁 习题 知识点小记 从死锁中恢复:1.利用抢占恢复2.利用回滚恢复3.通过杀死进程恢复; 安全状态:即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕。 不安全状态:任何分配资源实力的序列都无法保证工作的完成。 安全状态和不安全状态的区别是:从安全状态出发,系统能够保证所有进程都能完成;而从不安全状态出发,就没有这样的保证。 死... 阅读详情

相关推荐

操作系统--死锁

死锁死锁概念死锁、活锁、饥饿区别产生死锁的4个必要条件什么时候会发生死锁预防死锁避免死锁(银行家算法)死锁的检测和解除 死锁概念 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。 例如: 有一座桥,桥每次只能通过1辆车,有2辆车来了,它们2个互不想让,谁都过不去,这就是死锁问题 在计算机系统中也存在同样的问题: 死锁、活锁、饥饿区别 来几张图看明白它们3个: 死锁: 活锁: 饥饿: 小结: 死锁和活锁2

weixin_45599288的博客 1676

操作系统 - 5.死锁

操作系统 - 死锁 1.死锁是什么? 死锁(Deadlock),这里指的是进程死锁。 它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁。 死锁,是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。 计算机系统产生死锁的根本原因就是资源有限且进程间推进顺序不当 2.出现死锁的条件 互斥条件 即某个资源在一段时...

尘迦子的博客 422

计算机操作系统 - 死锁详解

计算机操作系统 - 死锁详解

ShanMengChi的博客 2013

什么是死锁,简述死锁发生的四个必要条件,如何避免死锁,解除死锁

1.死锁:如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。2.产生死锁的原因:(1)竞争不可抢占性资源。(2)竞争可消耗资源。当系统中供多个进程共享的资源如打印机,公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。 (3)进程推进顺序不当。 进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。 如果

yishouwangnian的博客 1万+

[操作系统]死锁

我们把这类需要排他性使用的对象称为资源(resource)。资源可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。通常在计算机中有多种(可获取的)资源。简单来说,资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。资源分为两类:可抢占的和不可抢占的。

m0_51460756的博客 1723

【操作系统】死锁

我也不背代码,遇到题目现推:5个苹果,分了3个,还剩2个,如果有人释放1个,那么现在还有3个能分,以此类推。让权等待:进程不能进入临界时,应马上主动放开CPU,防止忙等待。下列同步机制中能实现让权等待的是:信号量方法【主动放弃CPU。银行家算法:当申请资源时,系统会预分配并检查预分配。

Lifelong learning. 1155

死锁产生的条件和处理死锁的方法

死锁是什么死锁(Deadlock)就是指两个或两个以上的进程在执行的过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁发生的条件若可能发生死锁,则必定要出现三个条件:1. 互斥条件: 指进程对所分配的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它

春风来不来的博客 7341

2.4 操作系统死锁(死锁的概念、产生、防止、预防、避免)

操作系统死锁的概念,死锁的产生、死锁的防止、死锁的避免、银行家算法、死锁的检测和解除、死锁定理

m0_62536353的博客 1791

死锁的解决方法

产生死锁的必要条件? 死锁的产生是必须要满足一些特定条件的: • 互斥条件:某资源只能被一个进程使用,其他进程请求该资源时,只能等待,直到资源使用完毕后释放资源。 • 请求和保持条件:程序已经保持了至少一个资源,但是又提出了新要求,而这个资源被其它进程占用,自己占用资源却保持不放。 • 不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。 • 循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。 处理死锁思路? • 预防死锁:破坏死锁的四个条件

weixin_45358354的博客 1万+

死锁(操作系统)

2.17 死锁的概念以及产生死锁的原因 死锁的定义 在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统 的处理能力。然而,多个进程的并发执行也带来了新的问题——死锁。所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 下面我们通过一些实例来说明死锁现象。 先看生活中的一个实例,在一条河上有一座桥,

Peter-H 4847

人形机器人系列——硬件介绍

人形机器人是多领域交叉技术的产物,主要由三大系统组成:感知系统、决策系统和执行系统。感知系统感知系统是人形机器人获取外界信息的途径,主要由各种传感器组成。其中,视觉传感器用于获取图像信息,如摄像头、激光雷达等;触觉传感器用于感知触碰和压力,如力/力矩传感器、声学传感器等。这些传感器收集到的信息为机器人的决策和执行提供基础。决策系统决策系统是人形机器人的大脑,负责处理和决策各种信息。它由芯片和算法组成。芯片是硬件基础,提供计算能力;算法是软件基础,用于处理和分析传感器收集到的信息,并做出相应的决策。执行系统。

liangwqi的博客 1万+

【面试题】操作系统之死锁(第五篇)

多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

abclui的专栏 1350

汽水音乐自动化薅羊毛教程:从零搭建稳定赚钱脚本

📖 前言:为什么要学习自动化脚本?在数字时代,时间就是金钱。汽水音乐等App通过观看广告奖励用户金币的模式,本质上是将我们的时间转化为收益。本教程将教你如何用Python自动化这个过程,让程序为你"打工",实现被动收入。通过本教程,你将学到:移动端自动化测试的核心技术Python在自动化领域的实际应用如何将重复性任务转化为自动化流程创造属于自己的"数字员工"第一章:环境准备与基础配置1.1 硬件要求Android手机一部(建议使用备用机)USB数据线。

weixin_44947827的博客 5788

操作系统死锁 四个必要条件

操作系统死锁 四个必要条件 操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进 程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能 继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解 除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或者多个进程无限期 地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。 产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分

Sunrise的博客 9462

PRD撰写效率翻倍秘籍:我是如何用大模型+飞书文档搭建自动化工作流的

本文分享了如何利用大模型与飞书文档构建自动化工作流,以大幅提升PRD撰写效率。通过结构化需求输入、设计模块化提示词模板,并借助自动化脚本桥接数据与文档,产品经理可将繁琐的文档撰写工作自动化,从而将精力聚焦于产品战略与用户洞察。

weixin_28520495的博客 405

自动驾驶仿真 (三)—— 基于PreScan与Simulink的AEB系统仿真

自动驾驶仿真三—— 基于PreScan&Simulink的AEB系统仿真1. AEB自动紧急制动系统1. 1 TTC碰撞时间模型1. 2 C-NCAP法规部分术语与定义1. 3 主动安全ADAS系统试验项目2. AEB仿真分析建模2.1 搭建场景2.2 传感器建模2.3 添加AEB控制系统3. 典型工况仿真3.1 CCRs仿真测试3.1 CCRm仿真测试4. 参考学习的书目教材 博主前面的博文已经介绍了Prescan&Simulink基本的场景建模及仿真分析流程,《自动驾驶仿真 (二)——

zhudj08的博客 1万+

【操作系统】死锁(详细)

【操作系统】死锁(详细)

FishC的博客 7570

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记

为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。

2403_85515624的博客 2343

计算机操作系统(十五)死锁的概念与死锁的处理方法

本文探讨了计算机操作系统中的死锁问题及其处理方法。首先定义死锁为多个进程因争夺资源而陷入的僵局,并分析了四个必要条件:互斥、不可剥夺、请求与保持、循环等待。随后提出四种应对策略:预防(破坏必要条件)、避免(银行家算法)、检测与恢复(资源分配图分析),以及忽略(适用于影响小的场景)。通过生活类比和技术分析,揭示了死锁的成因与解决方案,为系统资源管理提供了实践指导。

2402_83322742的博客 1709

Ceres&OpenCV 单目相机标定(论文复现)

Ceres&OpenCV 单目相机标定(论文复现)

dayuhaitang1的博客 370

[QMT量化交易小白入门]-105、震荡市最适合的策略:ETF多标的动态网格策略,回测年化收益47.81%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 2064

操作系统死锁题库

网络课课后题 1、在计算机系统拥有的各种软硬件资源中,内存是属于 A、可重用资源 B、不可重用资源 C、临界资源 D、独占资源 解析: 2、下列描述的各种现象中,属于活锁现象的是 A、相关进程进入阻塞状态,且无法唤醒 B、相关进程进入阻塞状态,且可以唤醒 C、相关进程没有阻塞,但是调度时刻被延迟推后 D、相关进程没有被阻塞,可被调度,但是执行没有进展(能上CPU,但得...

闲狗的博客 1万+

Python爬虫实战:携程旅游攻略爬取全流程解析(动态接口+反爬破解+异步爬取)

本文介绍了携程旅游攻略的爬取全流程,涵盖静态和动态页面抓取、异步请求、高级反爬策略以及数据存储和简单分析。增加用户评论和评分抓取结合NLP分析攻略文本情感与关键词建立旅游推荐系统自动化代理IP池和验证码识别模块。

2201_76125261的博客 2039

操作系统——死锁

本文系统介绍了死锁的概念、产生原因、必要条件及处理策略。死锁是指多个进程因竞争资源陷入互相等待的僵局,其产生需要满足互斥、不可剥夺、请求保持和循环等待四个必要条件。处理死锁的策略包括预防(破坏必要条件)、避免(银行家算法)和检测解除(资源剥夺、撤销进程、进程回退)。文章通过实例和算法分析,阐述了如何判断系统安全状态以及避免死锁的方法,为解决操作系统中的死锁问题提供了系统性的解决方案。

Smooth的博客 929

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

操作系统之死锁与死锁的处理

操作系统中死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局。具体来讲在多进程环境中,当一个进程请求资源时,如果该资源不能立即获得,那么进程就会进入等待状态。若果一个处于等待状态的进程P(i),由于所等待的资源被另一个处于等待状态的进程p(j)(i!=j)所持有,而p(j)所请求的资源又被p(i)持有,这样它们所请求的资源都不会获得,两进程一直处于等待状态,形成死锁。  一形成死锁的四个必要 银行家算法

一路前行 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 操作系统第二篇【进程管理】
下一篇: 多线程三分钟就可以入个门了!
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值