【操作系统】死锁

进程死锁的检测:资源分配图的化简判断是否有死锁发生 操作系统课程设计 设计内容:       进程死锁的检测:资源分配图的化简判断是否有死锁发生 设计要求:       ·建立所需的数据结构。       ·从文件中读取资源分配的情况(文件格式自定义)。       ·编写资源分配图的化简算法。       ·每化简一步,在屏幕上显示化简的当前结果。       ·最后给出结论,是否死锁。如果死锁,给出死锁进 阅读详情

1 死锁的基本概念

1.1 死锁的定义

一组进程中,每个进程都无限等待被该组进程中的另一进程所占有的资源,因而永远无法得到资源,这种现象称为进程死锁,这一组进程就称为死锁进程。死锁会导致大量资源浪费。

1.2 死锁出现的原因

资源数量有限,锁和信号量错误使用。
可重用资源:可被多个进程多次使用
可消耗资源:只可使用一次、可创建和销毁的资源

1.3 活锁和饥饿

活锁:先加锁再轮询,既无进展也没有阻塞;
饥饿:资源分配策略导致

1.4 产生死锁的必要条件

互斥使用(资源独占):一个资源每次只能给一个进程使用
占有且等待(请求和保持):进程在申请新的资源的同时保持对原有资源的占有
不可抢占:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
循环等待:存在一个进程等待队列P1,P2,…Pn,其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1的资源,形成一个等待环路。

2 资源分配图

2.1 定义

资源分配图(Resource Allocation Graph,RAG),是用有向图描述系统资源和进程的状态。
二元组G=(V,E)。V:结点的集合,分为P(进程),R(资源)两部分,
P={P1,P2,…,Pm}
R={R1,R2,…,Rn}
E:有向边的集合,其元素为有序二元组,
(Pi,Rj)或(Rj,Pi)

2.2 资源分配图的画法

系统由若干类资源构成,一类资源称为一个资源类;每个资源类中包含若干个同种资源,称为资源实例。
资源类:用方框表示
资源实例:用方框中的黑圆点表示
进程:用圆圈中加进程名表示
分配边:资源实例—>进程
申请边:进程—>资源类,如下图所示:
在这里插入图片描述

2.3 死锁定理

如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。
如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。

2.4 资源分配图化简

步骤:
1、找一个非孤立且只有分配边的进程结点:去掉分配边,将其变为孤立结点
2、再把相应的资源分配给一个等待该资源的进程:即将该进程的申请边变为分配边。
重复1、2步。

3 死锁预防

3.1 解决死锁的方法

  • 不考虑此问题(鸵鸟算法)
  • 死锁预防:是一种静态策略,即设计合适资源分配算法不让死锁发生
  • 死锁避免:是一种动态策略,即以不让死锁发生为目标,跟踪并评估资源动态分配过程,根据评估结果决策是否分配
  • 死锁检测与解除

3.2 死锁预防(DeadLock Prevention)

定义:在设计系统时,通过确定资源分配算法,排除发生死锁的可能性
具体做法:破坏产生死锁的四个必要条件之一。

3.2.1 破坏“互斥使用”条件

资源转换技术:把独占资源转换成共享资源

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

1 实现方案1:要求每个进程在运行前必须一次性申请它所要求的的所有资源。但是该方案资源利用率低,而且容易产生饥饿现象。
2 实现方案2:在允许进程动态申请资源的前提下规定,当一个进程在申请新的资源不能立即得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请。

3.2.3 破坏“不可抢占”条件

实现方案:当一个进程申请的资源被其他进程占用时,可以通过操作系统抢占这一资源(两个进程优先级不同)。该方案的局现性在于:适用于状态易于保存和恢复的资源。

3.2.4 破坏“循环等待”条件

通过定义资源类型的线性顺序实现。
实现方案:资源有序分配法,具体来说就是,把系统所有资源编号,进程在申请资源时必须严格按照资源编号的递增次序进行,否则操作系统不予分配。

4 死锁避免

4.1 定义

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

安全状态:如果系统中存在一个由所有进程构成的安全序列P1,P2,…,Pn,则系统处于安全状态。

4.2 安全序列

一个进程序列{P1,P2,…Pn}是安全的,如果对于每一个进程Pi(1≤i≤n):
它以后还需要的资源量不超过系统当前剩余资源量与所有进程Pj(j<i)当前占有资源量之和,则成系统处于安全状态。安全状态一定没有死锁发生,不安全状态一定导致死锁。

4.3 一种典型的死锁避免算法——银行家算法

【操作系统】死锁避免之银行家算法

5 死锁检测与解除

5.1 死锁检测

允许死锁发生,但是操作系统会不断监视系统进展情况判断是否发生死锁;一旦发生死锁,将会解除死锁并以最小的代价恢复操作系统的运行。

检测时机:
1、当进程由于资源请求不满足而等待时检查死锁,缺点是系统开销大
2、定时检测
3、系统资源利用率下降时检测死锁

5.2 死锁解除

死锁解除最核心的是以最小的代价恢复系统的运行。有如下方法:

  • 撤销所有死锁进程
  • 进程回退(Rollback)再启动
  • 按照某一原则逐一撤销死锁进程,直到死锁解除
  • 按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前的对应状态),直到死锁解除
操作系统--死锁 死锁死锁概念死锁、活锁、饥饿区别产生死锁的4个必要条件什么时候会发生死锁预防死锁避免死锁(银行家算法)死锁的检测和解除 死锁概念 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。 例如: 有一座桥,桥每次只能通过1辆车,有2辆车来了,它们2个互不想让,谁都过不去,这就是死锁问题 在计算机系统中也存在同样的问题: 死锁、活锁、饥饿区别 来几张图看明白它们3个: 死锁: 活锁: 饥饿: 小结: 死锁和活锁2 阅读详情

相关推荐

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

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

ShanMengChi的博客 2013

如何理解操作系统的资源分配图呢?

资源分配图是死锁的一种准确而形象地描述,通过资源分配图,可以对当前系统资源分 配和申请情况一目了然,便于对死锁进行分析并采取对策。 一、资源分配图 资源分配图是一张有向图,一个系统资源分配图SRAG (System Resource Allocation Graph)可定义为一个二元组,即SRAG= (V, E),其中V是顶点的集合,而E是有向边的集合。顶点集合可分为两种部分:P= (P1,P...

一个不爱说话的程序员 8437

[操作系统]死锁

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

m0_51460756的博客 1723

资源分配图

为了准确的描述死锁问题,我们引出了资源分配图

专注前端领域方向的内容 2万+

金蝶个版本下载地址,记得保存收藏。

专业版 V10.0 http://downloads.cmcloud.cn/kis/kis_pro/10.0/kiszybV10sp1.rar V11.0 http://downloads.cmcloud.cn/kis/kis_pro/11.0/KISV11Setup.rar V12.0 http://dow...

饺子的博客 2506

【开源~磁悬浮】零代码,纯硬件闭环:从霍尔到H桥的磁悬浮稳定术

本文详细介绍了如何不依赖任何代码,仅通过模拟和数字电路的组合,实现一个完整的磁悬浮闭环控制系统。从霍尔传感器检测位置,到运放电路进行信号调理与模拟PID控制,再到H桥驱动电磁铁执行纠偏,全程使用基础电子元器件搭建。文章深入剖析了系统原理、电路设计、调试技巧与实践经验,展现了纯硬件实现自动控制的独特魅力与挑战。

perl8的博客 622

【操作系统】资源分配图化简法---死锁的检测方法

操作系统——资源分配图化简法---死锁的检测方法 一 、了解进程资源图 二、 化简资源分配图 方法步骤 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞(“不阻塞”即:系统有足够的空闲资源分配给它)的第二步:把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来第三步:看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。第四步:最后,所有的资源和进程都变

一拳Marx 1万+

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2270

进程死锁

死锁概念死锁,是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。计算机产生死锁的根本原因是资源有限且操作不当。产生死锁的必要条件(1)互斥条件。即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。(2)不可抢占条件。进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。(3)占有且申请条件。进程至少已...

u013102349的博客 461

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

从宁德新能源面试官视角,拆解Halcon/OpenCV图像处理工程师的硬核技能树(附避坑指南)

本文从宁德新能源面试官视角出发,详细拆解Halcon/OpenCV图像处理工程师的核心技能树,涵盖硬件选型、算法实现和系统工程思维三大能力维度。文章提供工业视觉工程师面试的实战避坑指南,包括硬件配置要点、算法优化技巧及职业发展路径,助力求职者系统提升图像处理专业技能。

weixin_28732953的博客 129

操作系统死锁

死锁是指两个或两个以上的进程(或线程)在执行过程中,由于竞争资源或彼此通信而造成的一种相互等待的现象。若无外力干涉,这些进程都将无法向前推进。一个经典的死锁类比是“哲学家就餐问题”有五位哲学家围坐在一张圆桌旁,他们只在思考和吃饭两种行为间交替。桌子中间有一大盘米饭,每个哲学家左右两边各有一根筷子。哲学家需要同时拿起左右两边的两根筷子才能吃饭。如果所有哲学家都同时拿起自己左边的筷子,那么每个人都会等待右边的人放下筷子。由于没有人会先放下筷子,所有人都将永远等待下去,这就是死锁。策略核心思想。

hour_go的博客 1133

第14.11章 高翔博士最新开源框架Lightning-LM源码解读(十一):离线定位模块全解析,从激光匹配到位姿图优化的极致优化

本文介绍了Lightning-LM离线定位模块的技术架构与实现细节。该模块基于3D激光雷达与IMU融合,采用改进版NDT匹配算法实现高精度定位,具备动态图层更新、多源信息融合等特性。核心流程包括数据预处理、激光里程计处理、IMU预测与点云去畸变、位姿图优化等环节,通过轻量级miao库实现高效增量优化。文章详细解析了模块的代码结构、关键函数功能及数据流,为SLAM系统的开发与优化提供了实践参考。

行知SLAM 375

操作系统——死锁

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

Smooth的博客 929

从“点云”到“图像”:华为896线激光雷达的技术飞跃与行业影响浅析

华为发布全球首款896线双光路激光雷达,实现车载感知从"3D点云"到"3D成像"的跨越。该产品采用创新双光路架构,集成广角和长焦单元,单帧点云量达128线产品的7倍,可在55米外识别小狗摇尾巴等细节。实测数据显示,其能识别120米外14厘米低矮障碍物,夜间低反射率目标识别距离提升190%。尽管速腾聚创随后发布更高线数产品,但华为强调实用性和量产可行性,成本仅增加1-2万元。这一突破标志着激光雷达进入大规模应用阶段,将加速高阶智驾功能普及,强化华为在智能汽车领域的技术底

致力于lidar应用开发 212

2025年12月GESP真题及题解(C++一级): 小杨的爱心快递

2025年12月GESP真题及题解(C++一级): 小杨的爱心快递

王老师青少年编程 1648

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

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

Sunrise的博客 9462

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

操作系统死锁题库

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

闲狗的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

一路前行 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

操作系统之死锁

1. 死锁的定义1. 资源竞争1. 互斥条件2. 不剥夺条件3. 请求并保持条件4. 循环等待条件

song0789的博客 1243

操作系统---死锁

产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。互斥条件。只有对必须互斥使用的资源的争抢才会导致死锁(如哲学家的筷子、打印机设备)。像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)。不剥夺条件。进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。请求和保持条件。进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放那个。循环等待条件。

2401_84420653的博客 1825

操作系统中的死锁

死锁1 死锁的基本概念2 资源分配图(RAG)3 处理死锁的方法3.1 死锁预防3.2 死锁避免 1 死锁的基本概念 死锁的定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃 从死锁的定义中可以得到几个推论:参与死锁的所有进程都在等待资源;参与死锁的进程是当...

weixin_39754631的博客 1898
上一篇: 【操作系统】死锁避免之银行家算法
下一篇: 【反向代理服务器】Nginx的基础架构
少侠露飞
博客等级 码龄9年 214粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值