2.4_1 死锁的概念

文章目录

  • 2.4_1 死锁的概念
    • (一)什么是死锁
    • (二)死锁、饥饿、死循环的区别
    • (三)死锁产生的必要条件
    • (四)什么时候会发生死锁
    • (五)死锁的处理策略
  • 总结

2.4_1 死锁的概念

image-20240308120513257

(一)什么是死锁

  在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。发生死锁后若无外力干涉,这些进程都将无法向前推进。

(二)死锁、饥饿、死循环的区别

死锁

  各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。

饥饿

  由于长期得不到想要的资源,某进程无法向前推进的现象。

  比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”。

死循环

  某进程执行过程中一直跳不出某个循环的现象。有时是因为程序bug导致的,有时是程序员故意设计的。

image-20240308121624655

  对于操作系统这门课而言,我们会讨论:如何解决死锁问题?如何解决饥饿问题?

  但我们不会说,如何解决死循环问题?——死循环不是操作系统这门课要考虑的。

(三)死锁产生的必要条件

  产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。

1.互斥条件

  只有对必须互斥使用的资源的争抢才会导致死锁(如哲学家的筷子、打印机设备)。

  而像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)。

2.不可剥夺条件

  进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。

3.请求和保持条件

  进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放。

4.循环等待条件

  存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求。

注意

  发生死锁时一定有循环等待,但是发生循环等待时未必死锁。(循环等待是死锁的必要不充分条件)

  说明:这是因为,“循环等待”可以是此时场景的一部分,而非全部。

  例如,还是哲学家进餐问题,A、B、C每个人分别只有一支筷子,且A等待B、B等待C、C等待A,这是一个循环等待。但此时,如果还有一个D手上拿着两支筷子正在吃饭,那么等待D吃完饭,将筷子释放出来,即可打破A、B、C的循环等待。那么,此时的情况也并非死锁,但的确包含了循环等待。

  如果同类资源数大于1,则即使有循环等待,也未必发生死锁。但如果系统中每类资源都只有一个,那循环等待就是死锁的充分必要条件了。

(四)什么时候会发生死锁

1.对系统资源的竞争

  各进程对不可剥夺的资源(如打印机)的竞争可能引起死锁,对可剥夺的资源(如CPU)的竞争是不会引起死锁的。

2.进程推进顺序非法

  请求和释放资源的顺序不当,也同样会导致死锁。

  例如,并发执行的进程P1、P2分别申请并占有了资源R1、R2,之后进程P1又紧接着申请资源R2,而进程R2又申请了资源R1,两者会因为申请的资源被对方占有而阻塞,从而发生死锁。但是,如果我们调整资源的请求释放顺序,就可以避免死锁,比如让进程P1先上处理机运行,一气呵成地使用完资源R1、R2;之后再换进程P2运行,一气呵成地使用完资源R1、R2,就不会发生死锁问题。

3.信号量的使用不当

  如生产者-消费者问题中,如果实现互斥的P操作在实现同步的P操作之前,就有可能导致死锁。(也可以把互斥信号量、同步信号量看做是一种抽象的系统资源,从而理解为“进程推进顺序非法”,即请求、释放资源的顺序不当)


  总之,对不可剥夺的资源的不合理分配,可能导致死锁。

(五)死锁的处理策略

1.预防死锁

  破坏死锁产生的四个必要条件中的一个或几个。

2.避免死锁

  用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)。

3.死锁的检测和解除

  允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取某种措施解除死锁。

总结

image-20240308224722748

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/440913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 存储过程(超详细)

一、什么是存储过程? 存储过程可称为过程化SQL语言,是在普通SQL语句的基础上增加了编程语言的特点,把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中,通过逻辑判断、循环等操作实现复杂计算的程序语言。换句话说&#xff0c…

JVM-虚拟机栈概述

背景:由于跨平台的设计,java指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器。 栈是运行时单位,而堆是存储的单位。即:栈解决程序运行的问题,即程序如何执行,或者说如何…

瑞芯微 | I2S-音频基础 -1

最近调试音频驱动,顺便整理学习了一下i2s、alsa相关知识,整理成了几篇文章,后续会陆续更新。 喜欢嵌入式、Li怒晓得老铁可以关注一口君账号。 1. 音频常用术语 名称含义ADC(Analog to Digit Conversion)模拟信号转换…

TCP重传机制、滑动窗口、拥塞控制

一、总述 TCP,Transmission Control Protocol,是一个面向连接、基于流式传输的可靠传输协议,考虑到的内容很多,比如数据包的丢失、损坏、分片和乱序等,TCP协议通过多种不同的机制来实现可靠传输。今天,重点…

代码随想录算法训练营第三十九天|62.不同路径、63. 不同路径 II

62.不同路径 刷题https://leetcode.cn/problems/unique-paths/description/文章讲解https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html视频讲解https://www.bilibili.com/video/BV1ve4y1x7Eu/?vd_sourceaf4853e80f89e28094a5fe1e220d9062 题解&…

基于YOLOv5的无人机视角水稻杂草识别检测

💡💡💡本文主要内容:详细介绍了无人机视角水稻杂草识别检测整个过程,从数据集到训练模型到结果可视化分析。 博主简介 AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点…

探讨2024年AI辅助研发的趋势

一、引言 随着科技的飞速发展,人工智能(AI)已经成为当今时代最具变革性的技术之一。AI的广泛应用正在重塑各行各业,其中,AI辅助研发作为科技和工业领域的一大创新热点,正引领着研发模式的深刻变革。从医药…

用WSGI发布flask到centos7.9

起因 想把自己的Flask或者Django网站,发布到服务器上,让大家都可以访问。网上搜的结果,要么是用NginxuWSGI,要么是用NginxGunicorn。大名鼎鼎的Nginx我早有耳闻,那么两位俩玩意是啥呢。 WSGI是什么 uwsgi是Nginx和w…

用pyqt5实现的滑动开关(有动画效果)

1、效果展示 2、控件源码 import sys from PyQt5.QtCore import Qt, QRect, QPoint, QVariantAnimation from PyQt5.QtGui import QPainter, QColor from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayoutclass SwitchButton(QWidget):def __init__(self, parent=N…

华为设备小型园区网方案(有线+无线+防火墙)

(一)配置有线部分 1.配置LSW2 (1)创建相关vlan [LSW2]vlan batch 10 3000 (2)配置连接LSW1的Eth-Trunk1,透传VLAN 10 3000 [LSW2]int Eth-Trunk 1 [LSW2-Eth-Trunk1]port link-type trunk [LSW2…

关于Linux上的$ORIGIN解说

1、Linux RPATH & $ORIGIN 许多现代C / C 项目都利用Autotools创建GNU构建系统,例如 根据平台生成make文件。 可执行文件(二进制文件)在生成/编译过程中生成,并且可以在执行编译的计算机上本地执行。 但是,如果将…

centos 系统 yum 无法安装(换国内镜像地下)

centos 系统 yum 因为无法连接到国外的官网而无法安装,问题如下图: 更换阿里镜像,配置文件路径:/etc/yum.repos.d/CentOS-Base.repo(如果目录有多余的文件可以移动到子目录,以免造成影响) bas…

【PyTorch][chapter 22][李宏毅深度学习]【无监督学习][ WGAN]【理论一】

简介: 2014年Ian Goodfellow提出以来,GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起,很多论文都在尝试解决,但是效果不尽人意,比如最有名的一个改进DCGAN依靠的是对…

B端系统优化,可不是换个颜色和图标,看看与大厂系统的差距。

Hi,我是贝格前端工场,优化升级各类管理系统的界面和体验,是我们核心业务之一,欢迎老铁们评论点赞互动,有需求可以私信我们 一、不要被流于表面的需求描述迷惑。 很多人找我们优化系统界面,对需求总是轻描淡…

开源模型应用落地-工具使用篇-Ollama(六)

一、前言 在AI大模型百花齐放的时代,很多人都对新兴技术充满了热情,都想尝试一下。但是,实际上要入门AI技术的门槛非常高。除了需要高端设备,还需要面临复杂的部署和安装过程,这让很多人望而却步。不过,随着…

设计模式大题做题记录

设计模式大题 09年 上半年: 09年下半年 10年上半年 10年下半年 11年上半年 11年下半年 12年上半年 12年下半年 13年上半年 13年下半年

数据结构——lesson7二叉树 堆的介绍与实现

前言💞💞 啦啦啦~这里是土土数据结构学习笔记🥳🥳 💥个人主页:大耳朵土土垚的博客 💥 所属专栏:数据结构学习笔记 💥对于数据结构顺序表链表有疑问的都可以在上面数据结…

计算机中丢失缺少mfc100.dll文件该如何解决?

当你打开某个应用程序时,有时候会遇到一个“mfc100.dll丢失”或找不到mfc100.dll的错误信息提示。这种情况表明你的计算机缺少一个名为mfc100.dll的动态链接库文件。这个文件是由Microsoft VC 2010 Redistributable Package提供的,它是一组可重用的组件&…

普通专线维护成本太高?不如试试SD-WAN专线

企业数字化转型的加速,对于网络连接的需求变得越来越迫切。然而,传统的普通专线维护成本高、部署周期长等问题逐渐凸显,而SD-WAN(软件定义广域网)专线却因其灵活性和成本效益而备受关注。本文将探讨普通专线和SD-WAN专…

idea2023和历史版本的下载

1.idea中文官网 idea官网历史版本下载(https://www.jetbrains.com.cn/idea/download/other.html)
最新文章