文章目录

  • 一、相关知识
    • 1.可重用性资源和消耗性资源
    • 2.可抢占性资源和不可抢占性资源
    • 3.死锁定义
  • 二、死锁产生的原因和必要条件
    • 1.死锁产生的原因
    • 2.死锁产生的必要条件
  • 三、预防死锁的方法
    • 1.破坏“请求和保持”条件
    • 2.破环“不可抢占”条件
    • 3.破坏“循环等待”条件

一、相关知识

1.可重用性资源和消耗性资源

1)可重用性资源
可重用性资源是一种可供用户重复使用多次的资源。具有如下性质:
(1)每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。
(2)进程使用可重性资源的顺序:①请求资源。如果请求失败,请求进程将会被阻塞或者循环等待。②使用资源③释放资源
(3)系统中每一类可重用性资源中的单元数目都是相对固定的,进程在运行期间既不能创建也不能删除它。
对资源的请求和释放通常都是利用系统调用完成的。
2)可消耗性资源
可消耗性资源又被称为临时资源。是在进程运行期间由进程动态的创建和消耗的。具有如下性质:
(1)每一类可消耗性资源的单元数目在进程运行期间是可以不断变化的,有时可以有许多,有时可以为0。
(2)进程在运行过程中,可以不断的创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目。
(3)进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中。

2.可抢占性资源和不可抢占性资源

1)可抢占性资源
对于可抢占性资源,进程在获得这类资源后,该资源可以再被其它进程或者系统抢占。CPU和主存都属于可抢占性资源,对于这类资源是不会引起死锁的。
2)不可抢占性资源
对于不可抢占性资源,一旦系统把资源分配给该进程后,就不能将它强行进行回收,只能在进程用完后自行释放。

3.死锁定义

如果一组进程中的每一个进程都在等待仅由改组进程中的其他进程才能引发的事件,那么改组进程是死锁的。

二、死锁产生的原因和必要条件

1.死锁产生的原因

死锁的起因主要是因为多个进程对资源的抢占,对不可抢占资源进行争夺会引起死锁,对可消耗性资源进行争夺时,也会引起死锁。
(1)竞争不可抢占性资源引起死锁
如果有两个进程P1和P2,和两个不可抢占性资源val1和val2,如果此时P1和P2分别拥有val1和val2而此时P1和P2在拥有现有资源情况下,又要去获取对方拥有的资源,那么就会产生死锁。
(2)竞争可消耗资源引起死锁
信号量本身就可以当作一个可消耗资源。对于可消耗资源的竞争一般来说都会伴随着生产者和消费者,如果可消耗资源没有办法生产了,而进程去抢占这个可消耗资源就会引起死锁。
此外进程推进顺序不当也引起死锁。而顺序推进不当会造成以上所说的两种结果。

2.死锁产生的必要条件

(1)互斥条件。即一个资源在某一段时间内只能被一个进程占用,如果此时有其他进程请求该资源,则请求只能进程只能等待,直至占有该资源的进程用完释放。
(2)请求和保持。进程已经拥有了至少一个资源,但是又提出新的资源请求,而该资源已经被其他资源占用,此时请求被阻塞,但是对自己已经获得的资源保持不放。
(3)不可抢占条件。进程已经获得的资源在未使用完之前不能被抢占,只能在进程使用完时由自己释放。
(4)循环和等待条件。发生死锁时,一定存在着一个进程——资源的循环链。

三、预防死锁的方法

互斥条件是非共享设备所必须的,不仅不能改变,还应该加以保证。因此预防死锁的三种方法就是破坏产生死锁的必要条件中的后三个,即请求与保持、不可抢占、循环等待。

1.破坏“请求和保持”条件

破坏该条件必须要满足:当一个进程在请求资源时,它不能持有不可抢占资源。达到该行为可以采用以下两种方法中的任意一个:
(1)所有进程在开始之前,一次性申请其在整个运行过程中所需要的全部资源。也就是进程运行期间,不会再申请资源,破坏了请求条件。只要有一种资源不满足进程的要求,即使其他所需要的各资源都空闲也不分配给该进程,而是让该进程等待。也就是说该进程在等待期间未占有任何资源,破坏了保持条件。
优点: 简单、安全。
缺点:
资源被严重浪费。进程在一开始时就一次性占用整个运行过程中所需要的资源,其中有些资源可能仅在运行快结束时才使用,而这个进程却在整个运行期间都在占用。
进程经常会发生饥饿现象。因为仅当进程在获得了其所需的全部资源后才能开始运行,这样就可能由于个别资源长期被其他进程占用,而导致等待该资源的进程迟迟不能开始运行。
(2)允许一个进程只获得运行初期所需要的资源后便开始运行,进程运行过程中再逐步释放已分配给自己的、且已用完的全部资源,然后再请求新的所需资源。
这个方法比第一种方法好。因为这个主要点在于申请其他资源时,首先将自己已经用完的资源给释放掉。但是这个还有一点就是,没有提及自己占用但是没有使用完的资源。自己占用但是还没用完的资源不释放的话,仍然有可能造成死锁。这个可以用下面的“破坏不可抢占条件”解决。

2.破环“不可抢占”条件

当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源。等以后需要时再重新申请。这意味着进程所占有的资源会被暂时的释放或者被抢占。从而破坏不可抢占条件。
缺点:方法实现复杂,代价大。因为一个资源的释放可能意味着之前利用该资源做的事情可能会失效,后面需要重新做。

3.破坏“循环等待”条件

对系统所有资源类型进行线性排序,并且赋予不同的序号。即规定程序必须按照一定的顺序来请求资源。假设给每个资源设定一个序号,规定每个进程必须按照序号递增的顺序来请求资源,假设进程a现在拥有序号3的资源,那么该进程可以请求序号在3以后的资源,如果需要多个同类资源单元,则必须一起请求。如果该进程想请求一个低序号的资源,必须先释放所有具有相同或者更高序号的资源后,才能申请低序号的资源。
所以重点都在如何确定资源的序号。一般都是根据进程需要的资源的先后顺序来确定资源的序号。

计算机操作系统——死锁相关推荐

  1. 计算机操作系统——死锁(产生的必要条件与处理死锁的四个关卡)

    计算机操作系统--死锁 前言:死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进.如果死锁发生,会浪费大量的系统资源,甚至会导致系统崩溃. 关于死锁的结论: ...

  2. 计算机操作系统 死锁问题

    概念 条件是基础,在一定的原因下,产生结果 死锁三胞胎 死锁 僵持,消耗时间,双方都占用了部分资源,不释放 活锁 双方互相谦让,都不占用资源 饥饿 谦让的一方一直等待,无法占有资源,导致饥饿问题 死锁 ...

  3. 华南理工大学计算机操作系统课程设计大作业银行家死锁避免算法模拟,2016春操作系统大作业银行家死锁避免算法模拟.doc...

    文档介绍: 2016春操作系统大作业银行家死锁避免算法模拟20160501华南理工大学"计算机操作系统"课程设计大作业计算机科学与技术专业:春2015班级:号:2015047420 ...

  4. 国防科大计算机考研大纲,2022年国防科技大学F1003计算机操作系统考研大纲及参考书目...

    2022年研究生入学考试自命题科目考试大纲 科目代码:F1003 科目名称:计算机操作系统 一.参考书目 1.<操作系统教程>(第5版),费祥林,高等教育出版社,2014年. 2.< ...

  5. 计算机操作系统32,计算机操作系统实验指导书32138

    计算机操作系统实验指导书32138 (22页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 <计算机操作系统>实验指导书程科白素 ...

  6. 计算机操作系统课设总结,计算机操作系统课程设计

    <计算机操作系统课程设计>由会员分享,可在线阅读,更多相关<计算机操作系统课程设计(36页珍藏版)>请在人人文库网上搜索. 1.操作系统课程设计实验报告姓 名: 李文孝 班 级 ...

  7. 面试「计算机操作系统」知识点大集合!

    作者:CyC2018 链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机操作系统.md 一.概述 基本特征 1. 并发 ...

  8. 计算机操作系统专题一:多道环境下进程同步与互斥制约关系的学习

    1. 问题描述 设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮,又设有三名工人,其活动分别为: 2. 问题分析(包括涉及的知识点.制约关系分析.问题的解决思路等 ...

  9. 计算机操作系统还能这样玩?这一篇计算机操作系统的总结为你保驾护航(零风险、高质量、万字长文、建议收藏)

    操作系统目录 1.什么是操作系统 2.计算机操作系统的基本特征 2.1.并发 2.2.共享 2.3.虚拟 2.4.异步 3.操作系统的发展 4.OS的运行机制和体系结构 4.1.运行机制 4.1.1. ...

最新文章

  1. WWDC2014:留给微软的时间不多了!
  2. android 扫描音乐,native.js扫描android手机本地音乐
  3. python第三方库文件传输_python3 post方式上传文件。
  4. python 读取 word 表格_python读取word表格
  5. Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
  6. javascript 学习笔记(一)
  7. codeigniter 辅助函数 - 敏感词过滤
  8. 3蛋白wb_WB常见问题原因分析及解决办法
  9. [Linux] - xxx 不在 sudoers 文件中。此事将被报告。
  10. 关于atollic truestudio for stm32
  11. 熟悉相关电路,控制I/O口,且配置相关参数,LED,光敏,74LS164数码管
  12. Excel导入Sql Server出现Null的解决方法
  13. RestClientException: Could not extract response: no suitable HttpMessageConverter found for response
  14. 简述神经元网络控制的作用和特点
  15. jsp mysql 鲜花_jsp+servlet+mysql实现的在线鲜花商城源码附带视频指导运行教程
  16. 数据导入与预处理-第8章-实战演练-数据分析师岗位分析
  17. centos6如何配置ip
  18. 【FinE】单利与复利
  19. nginx cdn加速和反向代理
  20. 在windows 10下编译可在windows xp下使用的 opencv 3.2

热门文章

  1. SmtpClient 身份验证失败(authentication failed) 的原因分析
  2. ABAP:向自建表写入数据时,需要注意的问题
  3. 关于引进制转换(凌乱)
  4. 操作系统实验报告2:Linux 下 x86 汇编语言1
  5. windows下直接输入nvidia-smi显示不是内部或外部命令也不是可运行的程序
  6. 百练2757:最长上升子序列
  7. python 出现 AttributeError: matplotlib‘ object has no attribute ‘to_rgba‘
  8. 【Tools】XMind8安装教程详解
  9. 【Linux】一步一步学Linux——dpkg命令(269)
  10. 【Linux】一步一步学Linux——groupadd命令(87)