linux死锁的例子,操作系统教程—Linux实例分析 孟庆昌 第8章 死锁new.ppt

操作系统教程—Linux实例分析 孟庆昌 第8章 死锁new.ppt

第8章 死锁 8.1 概述 8.2 产生死锁的条件 8.3 死锁的预防 8.4 死锁的避免 8.5 死锁的检测与恢复 8.6 处理死锁的综合方式 习题 8.1 概 述 8.1.1 死锁的概念 死锁 Deadlock 是若干进程因系统资源有限且操作不当而造成的带有全局危害性的现象。 我们考虑下面这个例子: 设系统中只有一台打印机和一台读卡机, 它们被进程A和进程B共用。这两台物理设备的特性决定了对它们的使用方式必须是顺序的, 即一个进程用完了, 另一个进程才能用。 进程A和B各自对资源的申请使用情况如下: A:申请读卡机 B:申请打印机 申请打印机 申请读卡机 使用读卡机 使用打印机 使用打印机 使用读卡机 释放读卡机 释放打印机 释放打印机 释放读卡机 由于进程并行工作, 就可能出现这样的执行序列: A: 申请读卡机 B: 申请打印机 A: 申请打印机 B: 申请读卡机 所谓死锁就是指在一个进程集合中的每个进程, 都在等待仅由该集合中的另一进程才能引发的事件, 而无限期地僵持下去的局面。 8.1.2 资源概念 当若干进程取得对设备、 文件等资源的独占性访问权时, 就可能出现死锁。 资源可以是硬件设备(如打印机、 磁带驱动器、 扫描仪等), 也可以是一组信息(如数据库中一个加锁的记录、 一个信号量、 系统表格中的一个表项等)。 1. 进程对资源的操作 系统中包括有限的资源, 要分给大量的计算进程。 资源可分为若干类型, 每类都有若干个实体。 CPU周期、 内存空间、 文件和I/O设备 如打印机、 磁带驱动器、 读卡机等 都是资源类型的例子。 一个进程在使用资源之前要申请资源, 在用完之后必须释放该资源。 在通常的操作方式下, 进程只能按下述序列使用资源: 1) 申请 如果所申请的资源因被其他进程占用而不能立即得到, 那么申请资源的进程必须等待, 直至其他进程释放资源为止。 2) 使用 进程对该资源进行操作 如在行式打印机上打印结果 。 3 释放 进程释放它以前申请并分配到的资源。 2. 可剥夺资源与不可剥夺资源 系统中一般都有多种资源。 按照占用方式来分, 可以分为两类: 可剥夺资源与不可剥夺资源。 可剥夺资源是另外进程可以从拥有它的进程那里把它剥夺过去为己所用, 并且不会产生任何不良影响。 在2.4.7节的同步计数例子中, 如果将供者和用者代码中的前两个P操作的位置颠倒, 成为: 供者 用者: L1:P mutex L2:P mutex P empty P full   8.1.3 进程推进顺序与死锁 图8-1示出了进程推进顺序对引发死锁的影响。 设有两个进程A和B, 竞争两个资源R和S, 这两个资源都是不可剥夺资源, 因此必须在一段时间内独占使用。 进程A和B的一般形式是: 进程A 进程B   申请R 申请S 申请S 申请R   释放R 释放S 释放S 释放R 图8-1中, X轴和Y轴分别表示进程A和B的执行过程, 从原点出发的不同的折线分别表示两个进程以不同速度推进时所合成的路径。 在单CPU系统中, 任何时候只能有一个进程处于执行状态。 路径中的水平线段表示进程A在执行, 进程B等待; 而垂直线段表示进程B在执行, 进程A等待。 (1) 进程B获得资源S, 然后又获得R, 后来释放S和R。 当进程A恢复执行时, 它能够获得这两个资源。 A和B都可进行下去。 (2) 进程B获得资源S, 然后又获得R; 接着进程A执行, 因未申请到资源R而阻塞, B释放S和R。 当A恢复执行时, 能够获得这两个资源。 (3) 进程B获得资源S, 而进程A申请到R。 此时, 死锁不可避免, 因为B向下执行会阻塞在R上, 而A会阻塞在S上。 (4) 进程A获得资源R, 接着进程B获得资源S。 此时, 死锁不可避免。 因为向下执行, B将在R上阻塞, A将在S上阻塞。 (5) 进程A获得资源R, 接着获得S。 进程B执行, 由于未申请到S而阻塞。 之后, A释放资源R和S, 当B恢复执行时, 它能获得这两个资源。 (6) 进程A获得资源R和S, 然后释放R和S。 当进程B恢复执行时, 它能获得这两个资源。 可见, 是否产生死锁既取决于动态执行过程, 也取决于应用程序的设计。 例如, 若进程A不必同时申请两个资源, 代码改为: 进程A  申请R  释放R 申请S  释放S 8.2 产生死锁的条件 8.2.1 产生死锁的必要条件 1. 互斥条件 即某个资源在一段时间内只能由一个进程占有, 而不能同时被两个或两个以上的进程占有。 这种独占资源如平板式绘图仪、 CD-ROM驱动器、 打印机等等, 必须在占有该资源的进程主动释放它之后, 其他进程才能占有该资源, 这是

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mfc 消息消息队列概念_消息队列面试连环问

最近我一直扎在消息队列实现细节之中无法自拔,已经写了 3 篇Kafka源码分析,还剩很多没肝完。之前还存着RocketMQ源码分析还没整理。今儿暂时先跳出来盘一盘大方向上的消息队列有哪些核心注意点。核心点有很多,为了更贴合实际场景,…

如何用增长的思维做提效?

简介: 埋点作为记录用户行为的常规手段,伴随着前端技术的发展早已历经春秋,不过直到“增长黑客”系列理论出现,才真正让埋点分析变得内涵丰富且有章可循。 作者 | 金戟 来源 | 阿里技术公众号 埋点作为记录用户行为的常规手段&am…

ajax返回list前台遍历_List、set集合接口分析

一、List接口详解1、List接口有三个实现类,ArrayList、LinkedList、Vector2、三个实现类的异同点:(1)ArrayList: 作为list接口的主要实现类;线程不安全,效率高;底层使用Object[]存储&#xff08…

聚焦 | 数据湖分析如何面向对象存储OSS进行优化?

简介: 最佳实践,以DLA为例子。DLA致力于帮助客户构建低成本、简单易用、弹性的数据平台,比传统Hadoop至少节约50%的成本。其中DLA Meta支持云上15种数据数据源(OSS、HDFS、DB、DW)的统一视图,引入多租户、元…

如何把极坐标化为直角坐标_2019高考100题之063(极坐标)

分析&#xff1a;如果你对过原点的直线的参数方程(xtcosθ&#xff0c;ytsinθ(参数t∈R))理解透彻了&#xff0c;那么极坐标也就没有任何问题了&#xff0c;特别是对于ρ<0的理解&#xff0c;就和t<0类似.教材上说了不作特殊说明&#xff0c;ρ都是大于零的&#xff0c;…

c语言队列作用,队列(C语言)

一、定义一种可以实现“先进先出”的存储结构。二、分类1、链式队列&#xff1a;用链表实现。2、静态队列&#xff1a;用数组实现。静态队列通常都必须是循环队列。3、循环队列(1)循环队列需要几个参数来确定&#xff1f;需要2个参数来确定&#xff1a;front、rear(2)循环队列各…

2021银行共探转型新动能:大行酝酿质变 小行跨越数字鸿沟

2021年&#xff0c;我国“十四五”规划开篇启程&#xff0c;数字经济蓬勃发展&#xff0c;银行业紧跟国家发展大局&#xff0c;全力推进数字化转型向纵深发展&#xff0c;探寻行业新动能&#xff0c;积极参与全社会数字生态建设&#xff0c;为数字中国高质量发展贡献金融力量。…

如何构建一个拖垮整个公司的运维系统

简介&#xff1a; 人肉运维&#xff0c;不在 DevOps 中转型&#xff0c;就在自动化中消亡。云化时代的运维&#xff0c;需要的是高铁&#xff0c;而不是“跑的更快的马车”。6月25日&#xff0c;数智创新行上海站智能运维专场&#xff0c;期待您的参与。 原文链接 本文为阿里云…

idea 安装php插件_免费版的 IDEA 为啥不能使用 Tomcat ?

程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 2 分钟。来自&#xff1a;https://urlify.cn/2Ifiiiidea有两大版本&#xff0c;一个是Ultimate版本&#xff0c;一个是Community版&#xff0c;ultimate是需要收费的&#xff0c;Community版是开源免费的。然…

可控硅失效现象_可控硅坏的原因有哪些

可控硅坏的原因有哪些1、电压击穿可控硅因不能承受电压而损坏&#xff0c;其芯片中有一个光洁的小孔&#xff0c;有时需用扩大镜才能看见。其原因可能是管子本身耐压下降或被电路断开时产生的高电压击穿。2、电流损坏电流损坏的痕迹特征是芯片被烧成一个凹坑&#xff0c;且粗糙…

c语言程序停止正常工作,C语言 由于出现问题,程序停止正常工作。如果帮我解决这个问题即可获得悬赏...

#include#include#include/*****航班信息的结构体构建 *****/struct HBXX{char HBH[20]; /****航班号*****/char JX[20]; /****机型*******/char CFD[20]; /****出发地*****/char MDD[20]; /****目的地*****/int ZWS; /****…

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

简介&#xff1a; 随着公司业务的不断发展&#xff0c;流量也在不断增长。我们发现生产中的一些重大事故&#xff0c;往往是被突发的流量冲跨的&#xff0c;对流量的治理和防护&#xff0c;保障系统高可用就尤为重要。 作者&#xff5c;梁勇 ​ 背景 ​ 哈啰已进化为包括两轮…

休闲食品行业如何数字化升级,腾讯云和卫龙辣条一起打了个样

11月26日&#xff0c;腾讯云与卫龙集团达成战略合作&#xff0c;双方将整合各自优势资源&#xff0c;助力卫龙集团建设专有云平台&#xff0c;围绕生产、运营、管理层面进行全链路数字化&#xff0c;加速卫龙集团转型升级&#xff0c;打造休闲食品行业标杆。 作为一家年销售超过…

Vite + React 组件开发实践

简介&#xff1a; 毫不夸张的说&#xff0c;Vite 给前端带来的绝对是一次革命性的变化。或者也可以说是 Vite 背后整合的 esbuild 、 Browser es modules、HMR、Pre-Bundling 等这些社区中关于 JS 编译发展的先进工具和思路&#xff0c;在 Vite 这样的整合推动下&#xff0c;给…

canvas全局合成画月牙_GIF动态图,视频?都能用Python转换成字符画图像

字符画是一种由字母、标点或其他字符组成的图画&#xff0c;它产生于互联网时代&#xff0c;在聊天软件中使用较多&#xff0c;本文我们看一下如何将自己喜欢的图片转成字符画。静态图片首先&#xff0c;我们来演示将静态图片转为字符画&#xff0c;功能实现主要用到的 Python …

列举python的五个数据类型_python笔记--数据类型--列表

本文为我学习python的笔记&#xff0c;因本人的编程技术才刚刚入门&#xff0c;所以笔记中可能会有一些错误&#xff0c;希望大家能友好的帮我指正出来本文文字内容均为原创&#xff0c;请勿私自转载图片来自互联网&#xff0c;侵删列表(list)定义&#xff0c;用[]来定义eg:lis…

开发者看过来,5 行代码实现身份认证,Authing 如何做到的?

在没有学编程前&#xff0c;可能我们不会想到看起来简单的注册登录功能&#xff0c;其实并不简单&#xff0c;背后可能需要考虑&#xff1a; 1、支持用户用手机验证码、邮箱验证码登录&#xff1b; 2、用户连续登录失败&#xff0c;为了防止暴力破解&#xff0c;需考虑 24 小…

用c语言绘制自定义图形,Android使用自定义View绘图

使用自定义 View 绘图实例 MyViewCanvasDemo 自定义一个名为 MyView 的 View 类&#xff0c;并在其 onDraw() 方法中绘制简单的图像&#xff0c;运行效果如图 1 所示。图 1 简单的 View 绘图实例 MyViewCanvasDemo 没有使用布局文件&#xff0c;而是将自定义的 MyView 对象显示…

如何构建企业出海的“免疫力“?深入解读阿里云CDN安全能力

简介&#xff1a; 随着信息技术快速发展与应用&#xff0c;产业数字化和智能化趋势正日益加深&#xff0c;企业信息安全与防护被提升到前所有未有的高度。阿里云CDN经过10多年的技术发展时间&#xff0c;已逐步构筑一个边缘云的安全网络立体防护体系&#xff0c;包含了全链路安…

使用率激增 250%,这份报告再次将 Serverless 推向幕前

简介&#xff1a; 本文是对 Datadog 最新的一份 Serverless 报告的解读&#xff0c;欢迎大家留言讨论。 每项新技术的产生和演进过程中&#xff0c;都会有他自己的拥趸&#xff0c;也会有持怀疑论者。Serverless 的美在于他可以尽可能的解放客户在基础设施上的投入&#xff0c;…