目录

3.5  死锁概述

3.5.2  计算机系统中的死锁

1. 竞争资源

2. 进程推进顺序不当

3.5.3  死锁的必要条件和处理方法

1. 死锁的必要条件

2. 处理死锁的方法

3.6  预防死锁

3.6.1  摒弃 “请求和保持” 条件

3.6.2  摒弃 “不剥夺” 条件

3.6.3  摒弃 “环路等待” 条件

3.8  死锁的检测与解除

3.8.1  死锁的检测

1. 资源分配图

2. 死锁定理

3. 死锁检测中的数据结构

3.8.2  死锁的解除


3.5  死锁概述

3.5.2  计算机系统中的死锁

死锁(Deadlock)的定义

一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件。

1. 竞争资源

2. 进程推进顺序不当

3.5.3  死锁的必要条件和处理方法

1. 死锁的必要条件

若产生死锁,则一定具备上述四个条件,但具备上述四个条件不一定产生死锁。

  • 可见预防死锁的方法就是:不要同时具备上述四个条件!

1)互斥条件

规定在一段时间内,某资源只能被一个进程占用,其它请求该资源的进程必须等待,直至占有该资源的进程用毕释放。

2)请求和保持条件

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

3)不剥夺条件

进程已占有的资源在使用完前不能被剥夺,只能在进程使用完时由自己释放。

4)循环等待条件

发生死锁时,必存在以下循环链:进程集合 { P0, P1, P2, ... , Pn } 中的 P0 正在等待一个 P1 占有的资源,P1 正在等待一个 P2 占有的资源,...,Pn 正在等待一个 P0 占有的资源。

2. 处理死锁的方法

从(1)到(4)对死锁的防范程度逐渐减弱,但对应的是资源利用率的提高,以及进程因资源因素而阻塞的频度下降,即并发程度提高。

3.6  预防死锁

预防死锁的方法:使四个必要条件中的第 2、3、4 条件之一不能成立,从而避免发生死锁。

至于必要条件 1,因为它是由设备的固有属性所决定的,不仅不能改变,还应加以保证。

3.6.1  摒弃 “请求和保持” 条件

系统规定,所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。这样,该进程在整个运行期间,便不会再提出资源要求。

避免了一部分占着茅坑不拉屎现象

  • 优点:简单、易行且安全。
  • 缺点:(1)资源被严重浪费。(2)使进程经常会发生饥饿现象。

但还是有占着茅坑不拉屎现象

3.6.2  摒弃 “不剥夺” 条件

进程是逐个地提出对资源的申请的,而非一次性提出所有申请。

当一个已经保持了某些资源的进程,提出新的资源请求而不能得到满足时,必须释放它已经保持的所有资源,待以后需要时再重新申请。

这意味着进程已占有的资源会被暂时地释放,或者说是被剥夺了!

该方法缺点很多:

  • (1)实现起来复杂;代价大:前一段工作失效,或前后工作不连续
  • (2)反复的申请和释放延迟周转时间,增加系统开销,降低系统吞吐量

3.6.3  摒弃 “环路等待” 条件

该方法规定:

  1. 对系统所有资源按类型进行线性排序,并赋予不同的序号
  2. 每个进程必须严格按照序号递增的顺序请求资源

这样,在所形成的资源分配图中,不可能再出现环路。

优点:资源利用率和系统吞吐量得到改善。

缺点:(1)序号必须相对稳定,因此限制了新设备的增加

(2)作业使用各资源的顺序和系统规定的顺序不同,需要不断释放和申请

(3)按次序申请资源的方法限制了用户简单、自主地编程

3.8  死锁的检测与解除

3.8.1  死锁的检测

当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段。

1. 资源分配图

用圆圈代表一个进程,用方框代表一类资源。由于一种类型的资源可能有多个,因此用方框中的一个点代表一类资源中的一个资源。此外,请求边是进程指向方框中的点,分配边是方框中的点指向进程。

2. 死锁定理

S 为死锁状态的充分条件是:当且仅当 S 状态的资源分配图是不可完全简化的。该充分条件被称为死锁定理。

3. 死锁检测中的数据结构

3.8.2  死锁的解除

当发现有进程死锁时,常采用的两种方法是解除死锁:

1)剥夺资源。从其它进程中剥夺足够数量的资源给死锁进程,以解除死锁状态。

2)撤消进程。最简单的撤消进程的方法,是使全部死锁进程都夭折掉;或者按照某种顺序逐个地撤消进程,直至有足够的资源可用,使死锁状态消除为止。

DJ3-5 死锁概述相关推荐

  1. 【408预推免复习】操作系统之处理机调度与死锁

    [408&预推免复习]操作系统之处理机调度与死锁 文章目录 1 作业调度和进程调度 2 实时调度和死锁概述 3 预防死锁和避免死锁 1 作业调度和进程调度 什么是处理机调度? 处理机调度:如何 ...

  2. SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁

    死锁概述 对于数据库中出现的死锁,通俗地解释就是:不同Session(会话)持有一部分资源,并且同时相互排他性地申请对方持有的资源,然后双方都得不到自己想要的资源,从而造成的一种僵持的现象. 当然,在 ...

  3. java线程死锁_Java线程死锁–案例研究

    java线程死锁 本文将描述从在IBM JVM 1.6上运行的Weblogic 11g生产系统中观察到的最新Java死锁问题的完整根本原因分析. 此案例研究还将证明掌握线程转储分析技能的重要性: 包括 ...

  4. Java线程死锁–案例研究

    本文将描述从在IBM JVM 1.6上运行的Weblogic 11g生产系统中观察到的最新Java死锁问题的完整根本原因分析. 此案例研究还将证明掌握线程转储分析技能的重要性: 包括用于IBM JVM ...

  5. 《现代操作系统(原书第3版)》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux.Windows Vista和Symbian操作系统的详细介绍.书中集中讨论了操 ...

  6. 操作系统简述复习笔记

    前半段主要来自南京大学骆斌老师后半段主要来自浙江大学李善平老师的网课 图片内容来自教学课件,由于时间匆忙和作者水平有限,本文可能存在部分错误和描述含糊的地方,但均不影响读者理解.也希望各位可以提出批评 ...

  7. Transact -SQL 语句

    Transact- SQL 概述 了解 SQL 结构化查询语言 Transact-SQL 语言是 SQL 的增强版本 种类 数据 定义 操纵 控制 常用 事务管理 流程控制 附加的语言元素 常量与变量 ...

  8. Java SE - 10 - 多线程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. 线程的概述 2.多线程的创建与使用 2.1 方式一:继承的方式开启线程 2.2 方式二:实现Runnable接口方式开 ...

  9. 计算机操作系统 学习笔记(第四版 汤小丹)(上)

    第一章-操作系统概述 操作系统基本概念 操作系统(Operation System),简称OS,是管理计算机『硬件』与『软件』资源的计算机程序.它负责计算机的全部软.硬资源的分配.调度工作,控制和协调 ...

最新文章

  1. php 加权计算公式,PHP计算加权平均数的实例分享
  2. 启动mysql提1067_win7系统启动mysql服务提升错误1067进程意外终止的解决方法
  3. 亿嘉和机器人上市了吗_亿嘉和上半年收入持续增长,拟7亿元定增加码主业研发...
  4. 金秋十月丹桂飘香,送3本书更香
  5. 2047.句子中的有效单词数
  6. JS每日一题:new Vue()中发生了什么?
  7. 蒋涛:《Orange’S:一个操作系统的实现》属于真正Hacker的
  8. (日常搬砖)windows 11 安装cython_bbox时,遇到问题‘error: Microsoft Visual C++ 14.0 or greater is required. ’解决方案
  9. 装错信封输出所有结果C语言算法,装错信封问题(数学应用题)
  10. DICOM通讯(ACSE->DIMSE->Worklist)
  11. 各国语言缩写-各国语言简称,世界各国域名缩写
  12. 制造业MES系统数字化转型
  13. Vivado 添加IOB方法
  14. CSS中有哪几种方式能隐藏页面元素(8种)
  15. 七轴分拣机器人设计与MATLAB仿真
  16. python反距离权重法_使用Python进行反距离加权(IDW)插值
  17. 在手机上玩魔兽争霸2
  18. 为什么p元素内不能嵌套Div元素(随笔)
  19. DNS内网欺骗(仅供参考)
  20. 个人服务器制作教程,个人网站反代服务器架设教程

热门文章

  1. 基于51单片机的智能门禁控制系统
  2. linux遇到nul字符,服务器崩溃,系统日志中出现ascii NUL字符(^ @ ^ @ ^ @ ...)
  3. WPF深入浅出话资源
  4. 【GIS | WebGis的对比】Webgis地图框架的对比
  5. Java实现简单的数字雨
  6. 计算二分类的特异性和灵敏度
  7. 高并发编程(四)高并发解决方案从前端到数据库
  8. ajax防止表单重复提交
  9. 大规模 Web 数据采集的终极开源方案 - PulsarRPA
  10. TCP/IP网络编程——IO复用