什么是死锁?产生死锁的原因?产生死锁的四个必要条件?死锁的避免与预防?

简介: 什么是死锁?产生死锁的原因?产生死锁的四个必要条件?死锁的避免与预防?

一、什么是死锁?

当两个或两个以上的进程同时执行时,因为竞争一个资源或彼此通信时产生的一种阻塞现象,如果没有外力的情况下,他们将一直处于互相等待的状态,不能继续推进下去,这种情况称为死锁。

二、产生死锁的原因:(两个)

1. 对共享资源的竞争          2. 进程推进顺序不当

三、产生死锁的四个必要条件:(四个条件中任意一个条件不满足都不会产生死锁)

1. 互斥条件   2. 请求与保持条件    3. 不可剥夺条件    4. 循环等待条件

四、死锁的避免与预防:

死锁避免的基本思想:系统会将进程发出的每一个满足资源申请的系统进行检查,根据检查的结果判断是否会产生死锁,会的话就不分配资源,不会产生死锁就分配资源。

我们可以通过产生死锁的四个原因进行避免、预防和解决死锁。只要打破四个条件中的任意一个条件就可以。

1. 打破互斥条件    2. 打破请求与保持条件    3. 打破不可剥夺条件   4. 打破循环等待条件

相关文章
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
51975 16
|
Windows
mathtype7产品激活密钥最新
MathType是强大的数学公式编辑器,MathType公式编辑器可以说是专门为理科生准备的软件,它可以帮助用户快速的在各种文档中插入符号和公式,不论是简单的公式和符号,还是复杂的都可以非常轻松的输入,并且在与office文档结合使用时,表现的非常完美,是非常好的一款软件,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面,是编辑数学资料的得力工具。
62151 0
|
JavaScript 前端开发 jenkins
【前端】vue项目打包Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-db@latest解决方案
【前端】vue项目打包Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-db@latest解决方案
4463 0
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
MySQL高级篇——MVCC多版本并发控制
|
消息中间件 存储 Java
MQ核心作用、解耦、削峰使用场景详解
【11月更文挑战第21天】在如今的高并发互联网应用中,如何确保系统在巨大的流量冲击下还能稳定运行,是每个技术团队都会遇到的挑战。说到这,消息队列(MQ)就是背后的“大功臣”了。无论是异步处理请求、平滑应对流量高峰,还是让各个系统模块相互独立不“拖后腿”,MQ都是不可或缺的帮手。那么,MQ是如何削峰的?或者它是如何让复杂系统解耦的?今天,我们就来聊聊MQ的三大核心功能,看它是如何助力系统高效、稳定运转的。
1291 1
【多线程面试题十三】、说一说synchronized与Lock的区别
这篇文章讨论了Java中`synchronized`和`Lock`接口在多线程编程中的区别,包括它们在实现、使用、锁的释放、超时设置、锁状态查询以及锁的属性等方面的不同点。
|
SQL 缓存 监控
MySQL慢查询:慢SQL定位、日志分析与优化方案,真心不错!
MySQL慢查询:慢SQL定位、日志分析与优化方案,真心不错!
MySQL慢查询:慢SQL定位、日志分析与优化方案,真心不错!
|
网络协议 算法 网络性能优化
|
Java
探秘死锁:原理、发生条件及解决方案
探秘死锁:原理、发生条件及解决方案
1069 1
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
18095 7