1、死锁概念知识

计算机中存在许多互斥资源(打印机)、软件资源(进程表、临界区)如果两个进程同时调用打印机,或同时进入临界区必然会出现问题。

死锁:指两个以上的进程互相要求对方已经占有的资源导致无法继续进行下去的现象。

2、死锁案例

2.1 进程推进顺序不当引起的死锁

假设系统中有一台打印机A、一台扫描仪B,它们被进程P1、P2共享,两个进程并发执行,按照下面的顺序请求和释放资源

如果按照P1<a>P2<a>P1<b>P2<b>的顺序执行,会发生死锁。首先P1<a>打印机A未被占用,可以正常执行;P2<a>扫描仪没有被占用所以可以正常执行。

P1<b>时扫描仪被占用,所以需要等待。P1<b>时打印机被占用所以也需要等待。这样导致双方互相请求对方已经占用的资源,系统就会发生死锁。

2.2 同类资源分配不当引起死锁

如果系统中有m个资源被n个进程共享,当每个进程都需要k个资源,并且m<nk时,即资源数小于进程所要求的的总数时,可能会引起死锁。

2.3 PV操作使用不当引起死锁

P2进程从缓冲区取产品前,先执行P(S2),因为S2=-1,故P2等待;P1进程将产品送到缓冲区后。执行P(S1),因为S1=-1,故P1等待。这样P1、P2都无法继续执行下午,导致系统死锁。

3、产生死锁的原因和条件

原因:竞争资源及进程推进顺序非

必要条件:互斥条件、请求保持条件、不可剥夺条件、环路条件。

进程资源有向图:由方框(资源)、圆圈(请求资源)、有向边组成。

4、死锁的处理

鸵鸟策略(不理睬策略)、预防策略、避免策略、检测与解除死锁。

4.1 死锁预防

采用某种策略显示并发进程对资源的请求,破坏死锁产生的某个必要条件,是系统在任何时刻都不能满足死锁的必要条件。预防死锁的两种策略如下:

1、预先静态分配法

破坏不可剥夺条件、预先分配所需资源,保证不出现资源等待的情况。缺点:会降低资源利用率、并发程度。

2、资源有序分配法

破坏环路条件。把资源分类按顺序排列,保证不形成环路。缺点:限制了进程对资源的请求、资源的排序会占用系统开销。

4.2 死锁避免

死锁预防是设法破坏产生死锁的必要条件之一,严格防止死锁产生。死锁避免并不是严格地限制死锁产生的必要条件。最经典的死锁避免算法是Dijkstra提出的银行家算法。缺点:死锁算法会占用系统的很大开销。

4.3 死锁检测

该方法对资源分配不加限制,即允许死锁产生,当系统要定时运行死锁检测程序,判断系统是否发生死锁,如果检测到则设法解除。

4.4 死锁解除

1、资源剥夺法:从一些进程那里强行剥夺足够数量的资源分配给死锁进程。

2、撤销进程法:按照某种策略撤销死锁进程,直到解除死锁。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

操作系统基础:进程知识笔记(三)相关推荐

  1. 进程管理笔记三、完全公平调度算法CFS

    进程管理笔记三.CFS调度算法 引言:CFS是英文Completely Fair Scheduler的缩写,即完全公平调度器,负责进程调度.在Linux Kernel 2.6.23之后采用,它负责将C ...

  2. php基础语法知识笔记(一)

    共享一份我自己学习php基础语法知识的笔记,这是第一弹,明天共享第二弹. 1.判断php短标记<??>是否适用,查看php配置文件php.ini中的"short_open_tag ...

  3. 《计算机操作系统》重点知识笔记整理(一)

    <计算机操作系统>重点知识总结1(1-4章)

  4. GEE (Google Earth Engine)最基础代码学习笔记三

    GEE (Google Earth Engine)代码学习笔记三 本次学习核心为:将JavaScript objects and primitives放入Earth Engine 容器传到服务器,并处 ...

  5. [操作系统] 操作系统真相还原读书笔记三:MBR加载loader到内存并跳转到loader执行

    为什么要有loader程序? 通过操作系统真相还原读书笔记二:编写MBR主引导记录我们已经能够正常运行MBR主引导记录(有些书籍也叫做boot)程序了,但该程序什么也没做.我们的MBR 受限于 512 ...

  6. 操作系统基础:进程知识笔记(二)

    一.管程 1.管道概念概念 管道是用于连接一个读进程和一个写进程.用来实现它们之间通信的共享文件. 2.管程的概念 管程是由一些共享数据.一组能为并发进程所执行的作用在共享数据上的操作集合.初始代码. ...

  7. 操作系统基础:进程知识笔记(一)

    进程介绍 进程管理也称为处理机管理.进程主要是为了解决多道程序批处理系统和分时系统中针对多个并发执行的程序,用来描述系统中执行时动态变化过程.进程属于自愿分配和独立运行的基本单位. 1.进程的概念知识 ...

  8. 【学习笔记】Python基础入门知识笔记,万字攻略带你走进Python编程

    ​ Python笔记,由此开始吧 本文是笔者在学习Python过程做的笔记总结,将简要讲述Python的基础知识,内容清晰易理解,相信你也能轻松的学会Python的入门基础知识内容.同时也希望这篇文章 ...

  9. 计算机网络基础概念知识笔记

    1.计算机网络的发展阶段 1.1.具有通信功能的单机系统 该阶段的模式为终端-计算机网络,属于早期计算机网络的主要形式.它将一台计算机经过通信线路和若干个终端直接相连 1.2 具有通信功能的多机系统 ...

最新文章

  1. 计算机等级保护2.0标准,网络安全等级保护2.0标准情况-马力.pdf
  2. 浅谈构造函数与构析函数的调用顺序(转载)
  3. java ssm 项目_ssm开源java博客项目,基于maven搭建
  4. 深度学习 tensorflow 计算图,会话,张量
  5. Qt4_实现其他菜单
  6. 人脑、思维与认知的研究
  7. linux中和salt中的fqdn测试小节
  8. 胡因梦-生命的不可思议
  9. css各种角度的三角形
  10. 怎么把wav文件改成mp3?
  11. C语言编程练习题_02兰州烧饼
  12. Linux、git和github的故事
  13. 分布式事务讲解 -消息队列+定时任务+本地事件表
  14. 马斯克推荐的「50种认知偏差」,这是我见过的最爆笑的解读!
  15. 字节还能如何“跳动”
  16. 降暑小程序:40°高温,Python带你“清凉一夏”!!!!
  17. Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)
  18. echarts 折线图,无数据时不显示灰色线条
  19. ARM V8 base instruction -- lse
  20. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Could not

热门文章

  1. 《WCF技术内幕》翻译25:第2部分_第5章_消息:创建一个消息(下)之MessageFault
  2. 单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴
  3. Val编程-特殊函数使用
  4. 【Python生成器与迭代器的区别】
  5. des vue 加密解密_vue DES 加密
  6. oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)
  7. fwrite,fread and fprintf,fscanf的一些使用体会
  8. python git是什么_python爬虫之git的使用
  9. android 串口调试工具_树莓派通用串口通信实验
  10. Invalid argument: Key: label. Data types don't match. Data type: int64 but expected type: float