[操作系统] 死锁

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

死锁



1. 资源

在计算机系统中有一些对象,当两个或多个进程同时使用时会造成系统瘫痪,操作系统需要具有对这种对象排他访问的能力。我们把这些需要排他使用的对象称为资源。一些类型的资源会有若干个相同的实例,其中任何一个都可以来满足对资源的请求。简单来说,资源就是随着时间的推移,必须能获得、使用及释放的任何东西。

资源分为可抢占资源和不可抢占资源:

  1. 可抢占资源:可以从拥有它的进程中抢占而不会产生任何副作用。
  2. 不可抢占资源:在不引起相关的计算失败的情况下,无法把它从占有它进程处抢占过来。

死锁和不可抢占资源有关,有关可抢占资源的潜在死锁通常可以通过在进程之间重新分配资源而化解。

2. 死锁概述

如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的。

大多数情况下,每个进程都在等待一个资源,而该资源又在被其他等待资源的进程占有,由于这个等待的进程集合中的任何一个进程都无法释放资源,就会造成死锁,这种类型的死锁称为资源死锁。

3. 资源死锁的条件

资源死锁有四个必要条件:

  1. 互斥条件:每个资源要么已经分配给一个进程,要么可以被使用。
  2. 占有和等待条件:已经得到了某个资源的进程可以再请求新的资源。
  3. 不可抢占条件:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。
  4. 环路等待条件:死锁发生时,系统中一定有由两个或两个以上的进程组成的一条的环路,该环路中的每个进程都在等待着下一个进程所占有的资源。

死锁发生时,上述四个条件一定要同时满足,只要有一个条件不成立,死锁就不会发生。

4. 处理死锁的策略

有四种处理死锁的策略:

4.1 鸵鸟算法

忽略该问题,假装根本没有问题发生。如果死锁发生的频率很低,甚至超过了硬件故障或操作系统故障的频率,那么该方法或许可以考虑。

4.2 死锁检测和死锁恢复

系统不试图阻止死锁的产生,而是允许死锁发生,当检测到死锁发生时,采取措施进行恢复。

死锁检测有两种方法:

  1. 资源分配图:适用于每种类型一个资源的死锁检测。
  2. 矩阵检测法:适用于每种类型多个资源的死锁检测。

死锁恢复的方法:

  1. 资源抢占恢复:时所发生时,将某个资源变为可抢占资源。在不通知原进程的情况下,将某一资源从一个进程强行取走给另一个进程使用,接着又送回,这种做法是否可行主要取决于资源本身的特性。
  2. 利用回滚恢复:周期性的将文件状态写入检查点,当发生死锁时,可以对检查点进行检查并恢复。但是死锁发生时到检查点之间的工作会全部丢失。
  3. 杀死进程恢复:缺点是有些进程第一运行会影响第二次运行的结果。

4.3 死锁避免

在该方法中需要定义一种状态:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。在分配资源前对状态进行检查可以避免死锁的发生。银行家算法就是著名的死锁避免算法,但一般情况下,该方法缺乏实际价值,因为很难在进程运行前就知道对每种资源需求的最大值。

4.4 死锁预防

破坏四个死锁必要条件的任意一个。

  1. 破坏互斥条件:很难实现,有可能造成资源混乱。
  2. 破坏占有和等待条件:规定所有进程请求资源时,要么获得全部资源,要么不进行分配。与银行家算法一样缺点是很难在进程运行前直到需要多少资源。
  3. 破坏不可抢占条件:与资源特性有关,有些资源的抢占不可行。
  4. 破坏环路等待条件:将资源编号,所有请求必须按照资源编号顺序进程申请。



参考书目:现代操作系统第三版

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

相关推荐

[操作系统]死锁

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

m0_51460756的博客 1723

操作系统学习笔记010

死锁 在计算机系统中有很多独占性的资源,在任一时刻它们都只能被一个进程使用。(如打印机、磁带、系统内部表中的表项)在很多应用中,需要一个进程排他性地访问若干种资源而不是一种。死锁也可能发生在机器之间。软硬件资源都有可能出现死锁。 本章重点:考察几类死锁,了解它们是如何出现的,学习防止或者避免死锁的办法。 1 资源 类需要排他性使用的对象称为资源(resource)。资源可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。 1.1 可抢占资源和不可抢占资源 可抢占资源(preemptable

hui1097的博客 701

动态分配资源与银行家算法

模拟实现动态资源分配。同时要求编写和调试一个系统动态资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生

操作系统笔记——不可抢占性资源和临界资源比较

一、可抢占性资源 可抢占性资源:某个进程在获得这类资源后,这类资源还是会比其他进程或系统抢占。 常见可抢占性资源:CPU、主存 举例:优先级高的抢占CPU资源;进程从一个存储区转移到另一个,或者从内存调入外存,抢占进程在内存的空间 二、 不可抢占性资源 不可抢占性资源:一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。 常见不可抢占性资源:刻录机、光盘、磁带机、打印机 举例:当一个进程已经开始刻录光盘,刻录机就不能分配给其他进程,否则会损害正在刻录的光盘。 三、临界资

ZZC14790409310的博客 4842

安卓端目标检测模型部署血泪史:从NCNN/TFLite/MNN全军覆没到Torchscipts终见光明

公司需在Android设备部署目标检测模型,要求: ✅ 实时检测速度≥15FPS ✅ 模型精度损失<5% ✅ 兼容中低端安卓设备👉 GitHub项目地址:pytorch/android-demo-app/ObjectDetection我已上传这份源码到csdn下载准备模型(必须走这步才能跑通安卓端源码)如果您没有设置PyTorch环境来运行该脚本,可以下载模型文件此处转到“android演示app/ObjectDetection/app/src/main/assets”文件夹,然后跳过此步骤的其余部分,直

机器学习、深度学习、强化学习、迁移学习 1567

操作系统之死锁

本文介绍了什么是死锁、产生死锁的原因、死锁预防、死锁检测、死锁避免以及死锁恢复。

m0_51050554的博客 1564

【Reality Capture 】01:Reality Capture1.5中文版安装教程(附安装包下载)

本文详细介绍了Reality Capture 1.5中文版的安装步骤。首先,下载并解压Reality Capture v1.4.0汉化版安装包,运行EpicInstaller并更改安装路径。接着,启动Epic Games Launcher,登录或注册账号后下载并安装软件。安装完成后,进入主界面并设置中文语言。此外,还提供了中文补丁的拷贝方法,将ui.xml和RealityCapture_CHS.exe文件分别放置到指定目录,并运行RealityCapture_CHS.exe以完成汉化。最后,文章提供了Rea

智慧空间实验室 1748

操作系统复习:死锁

操作系统复习:死锁

weixin_45745854的博客 850

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

平头哥面试——芯片工程师面经

有5个成递增关系的32bit地址值,彼此之间的间隔大小不确定,可以把他们当成parameter来输入模块,现有一个32bit输入数据,要求用尽量少资源去的判断这个数处于哪2个地址之间(地址区间),并且输出区间号。a)后续大概会在9月下旬谈具体的薪资,他们现在也没想好今年应届生的薪资该给多少,到时候如果可以签三方的话可能会跳过意向书环节直接发offer,谈薪资肯定是通过电话来。b. 这边的CPU是自己研制的(玄铁),成都这边主要做存储和网络,都有SOC。a. 成都这边的网络部门具体做的业务有哪些?

FPGA/MATLAB学习教程/源码/项目合作开发 2688

操作系统:资源(可重用,消耗,可抢夺,不可抢夺)

【可抢占资源】是指某进程在获得这来资源后,该资源可以在被其它进程或系统抢占。该类资源的竞争不会产生死锁,如内存和CPU。 【不可抢占资源】一旦系统将某资源分配给进程后,就不能将它强行收回,只能在进程用完后自行释放,如磁带,打印机等。

燕双嘤 3414

AutosarMCAL开发——基于EB Wdg驱动

Autosar标准文件中提及的API共有5个,接口名传入参数说明返回参数函数功能ConfigPtr:Wdg配置指针,参数来自于EB生成代码voidWdg初始化ConfigPtr:Wdg配置指针Wdg初始化检查Wdg切换模式,需开启对应配置timeout:设置定时触发器计数(单位ms)void喂狗并重新设定计数值Wdg版本信息本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 2425

【操作系统】死锁

在它的资源未满足前,不让它投入运行。一旦投入运行后,这些资源就一直归它所有,该进程就不会再请求别的任何资源了。首先给系统中的资源编号,规定每个进程必须按编号递增的顺序请求资源,同类资源(即编号相同的资源)一次申请完。比如:SPOOLing技术。操作系统可以采用SPOOLing技术把独占设备在逻辑上改造成共享设备。

1153

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 432

2023华为od机试C卷【推荐多样性】Java&Go 实现

推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为N份,如果不够N个,也要全部分配完,

MISAYAONE的博客 2179

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

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

Sunrise的博客 9462

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

操作系统死锁

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

hour_go的博客 1133

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

廖雪峰Python教程[完整版]

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

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

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

一路前行 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

操作系统死锁题库

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

闲狗的博客 1万+

操作系统——死锁

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

Smooth的博客 929

操作系统---死锁

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

2401_84420653的博客 1825
上一篇: [操作系统] 时钟
下一篇: [操作系统] 虚拟化
LLLZHLIU
博客等级 码龄10年 19粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值