操作系统(二十八)死锁的概念
2.4.1 死锁的概念
在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。通俗一点就是我有一个资源你也有一个资源,但我们还想要对方手里的资源,可对方还不放手,于是我们就都等对方放手,导致进程没办法推进,这就造成了死锁。
目录
2.4.1 死锁的概念
2.4.1.1 死锁、饥饿、死循环
2.4.1.2 死锁产生的必要条件
2.4.1.3 死锁发生的时机
2.4.1.4 处理死锁的策略
2.4.1.1 死锁、饥饿、死循环
之前我们接触过饥饿,还有在程序中出现的死循环,他们都会使进程没有办法继续推进下去,下面来说明一下三者的区别。
区别 | |
死锁 |
死锁一定是“循环等待对方手里的资源”导致的,因此如果有死锁现象,那至少有两个或两个以上的进程同时发生死锁。另外,发生死锁的进程一定处于阻塞态。
|
饥饿 |
可能只有一个进程发生饥饿。发生饥饿的进程既可能是阻塞态(如长期得不到需要的I/O设备),也可能是就绪态(长期得不到处理机)
|
死循环 |
可能只有一个进程发生死循环。死循环的进程可以上处理机运行(可以是运行态),只不过无法像期待的那样顺利推进。死锁和饥饿问题是由于操作系统分配资源的策略不合理导致的,而死循环是由代码逻辑的错误导致的。死锁和饥饿是管理者(操作系统)的问题,死循环是被管理者的问题。
|
2.4.1.2 死锁产生的必要条件
互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁(如哲学家的筷子、打印机设备)。像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)。
不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。
2.4.1.3 死锁发生的时机
- 对系统资源的竞争。各进程对不可剥夺的资源(如打印机)的竞争可能引起死锁,对可剥夺的资源(CPU)的竞争是不会引起死锁的。
- 进程推进顺序非法。请求和释放资源的顺序不当,也同样会导致死锁。例如,并发执行的进程P1、P2 分别申请并占有了资源 R1、R2,之后进程P1又紧接着申请资源R2,而进程P2又申请资源R1,两者会因为申请的资源被对方占有而阻塞,从而发生死锁。
- 信号量的使用不当也会造成死锁。如生产者-消费者问题中,如果实现互斥的P操作在实现同步的P操作之前,就有可能导致死锁。(可以把互斥信号量、同步信号量也看做是一种抽象的系统资源)
2.4.1.4 处理死锁的策略
- 预防死锁。破坏死锁产生的四个必要条件中的一个或几个。
- 避免死锁。用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)
- 死锁的检测和解除。允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取某种措施解除死锁。
其中前两条不允许死锁的发生,而最后一条可以允许死锁的发生。
操作系统(二十八)死锁的概念相关推荐
- SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- FreeSql (二十八)事务
FreeSql实现了四种数据库事务的使用方法,脏读等事务相关方法暂时未提供.主要原因系这些方法各大数据库.甚至引擎的事务级别五花八门较难统一. 事务用于处理数据的一致性,处于同一个事务中的操作是一个U ...
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤...
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- mysql revoke 用法_mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执行查 ...
- 教你一百二十八个说话的技巧(气质很内涵)(有霸气不霸道)
教你一百二十八个说话的技巧(气质很内涵)(有霸气不霸道) 1.说话不要有攻击性,不要有杀伤力,不夸已能,不扬人恶,自然能化敌为友. 2.一个常常看别人缺点的人,自己本身就不够好,因为他没有时间检讨他 ...
- 2008R2Win7管理二十八Mail之基本使用
2008R2Win7管理二十八Mail之基本使用 上篇我们已经安装好了exchange2010,呵呵本片简单介绍和看下ex2010的基本界面和使用 安装完成打开exchange控制台如图所示 汗,有试 ...
- 微信小程序把玩(二十八)image组件
原文:微信小程序把玩(二十八)image组件 image组件也是一个程序不可缺少的,可以这样说一个app中image组件随处可以看到,一般 image有两种加载方式第一种是网络图片第二种是本地图片资源 ...
- Citrix 服务器虚拟化之二十八 XenApp6.5发布文档内容
Citrix 服务器虚拟化之二十八 XenApp 6.5发布文档内容 XenApp可发布以下类型的资源向用户提供信息访问,这些资源可在服务器或桌面上虚拟化: 1) 服务器桌面:发布场中服务器的整个 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
最新文章
- 社会生活中常用的14条著名法则
- 五子棋c语言代码ppt答辩,C语言案例:控制台版本的五子棋游戏【代码】
- 上海东华计算机专业学硕复试,17届东华计算机初试+复试经验分享~
- Oracle日志分类
- 利用Kubernetes名称空间来管理内存和CPU资源(一)
- imregionalmax imregionalmin imextendedmax imextendedmin imhmax imhmin 函数的详解 matlab中函数
- UBUNTU16.04下Teamviewer的安装
- 安卓linux开机画面,Android开机logo简单修改方法
- MySQL练习题(经典50题)
- 面经 | 靠一份PPT做自我介绍,成功拿下了互联网名企offer
- 关于PHP微信h5棋牌程序开发数据库的备份
- 框架设计--第二章 Spring中的Bean--习题答案
- 大数据时代的数据挖掘是怎么做的?
- 国际网页短信平台搭建|后台定制-移讯云短信系统
- 组合(Combination)
- 机器学习:self-paced 和 fine-tuning
- index.tsx:19 Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, nev
- 代码实现判断主机字节序(大端 or小端 )-- 面试题
- linux rz位置,Linux下rz命令使用的实例详解
- 1060显卡支持dx12吗_GTX1660和GTX1060哪个性价比高?GTX1060和GTX1660显卡区别对比