`
jtjs1989
  • 浏览: 13401 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

死锁的预防和解除

阅读更多
产生死锁的原因主要是:

(1)系统资源不足。

(2) 进程运行推进的顺序不合适。

(3)资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。



产生死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。



死锁的预防和解除:

理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源,在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配 。因此,对资源的分配要给予合理的规划。

如何将死锁减至最少



虽然不能完全避免死锁,但可以使死锁的数量减至最少。将死锁减至最少可以增加事务的吞吐量并减少系统开销,因为只有很少的事务回滚,而回滚会取消事务执行的所有工作。由于死锁时回滚而由应用程序重新提交。

下列方法有助于最大限度地降低死锁:

(1)按同一顺序访问对象。

(2)避免事务中的用户交互。

(3)保持事务简短并在一个批处理中。

(4)使用低隔离级别。

(5)使用绑定连接。


按同一顺序访问对象

如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得 Supplier 表上的锁,然后获得 Part 表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在 Supplier 表上。第一个事务提交或回滚后,第二个事务继续进行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序。

避免事务中的用户交互

避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度,例如答复应用程序请求参数的提示。例如,如果事务正在等待用户输入,而用户去吃午餐了或者甚至回家过周末了,则用户将此事务挂起使之不能完成。这样将降低系统的吞吐量,因为事务持有的任何锁只有在事务提交或回滚时才会释放。即使不出现死锁的情况,访问同一资源的其它事务也会被阻塞,等待该事务完成。



保持事务简短并在一个批处理中

在同一数据库中并发执行多个需要长时间运行的事务时通常发生死锁。事务运行时间越长,其持有排它锁或更新锁的时间也就越长,从而堵塞了其它活动并可能导致死锁。

保持事务在一个批处理中,可以最小化事务的网络通信往返量,减少完成事务可能的延迟并释放锁。

使用低隔离级别

确定事务是否能在更低的隔离级别上运行。执行提交读允许事务读取另一个事务已读取(未修改)的数据,而不必等待第一个事务完成。使用较低的隔离级别(例如提交读)而不使用较高的隔离级别(例如可串行读)可以缩短持有共享锁的时间,从而降低了锁定争夺。

使用绑定连接

使用绑定连接使同一应用程序所打开的两个或多个连接可以相互合作。次级连接所获得的任何锁可以象由主连接获得的锁那样持有,反之亦然,因此不会相互阻塞。
分享到:
评论

相关推荐

    死锁的预防检车和解除 银行家算法

    死锁的预防检测和解除

    哲学家就餐问题

    哲学家就餐问题与死锁。该程序能演示哲学家死锁情况,也能演示采用死锁预防方法解除死锁的情况 (1)演示死锁现象; (2)通过资源预分配法防止死锁; (3)退出。

    死锁 操作系统 死锁的产生 资源分配图及死锁定理

    死 锁 §1 死锁的产生 §2 资源分配图及死锁定理 §3 预防死锁 §4 避免死锁 §5 检测与解除死锁

    mysql innodb死锁问题详解.docx

    处理死锁的方法: 预防,避免,检查,解除死锁 数据库也会发生死锁的现象,数据库系统实现了各种死锁检测和死锁超时机制来解除死锁,锁监视器进行死锁检测,MySQL的InnoDB处理死锁的方式是 将持有最少行级排它锁的...

    处理机调度与死锁

    3.1 处理机调度的层次 3.2 调度队列模型和调度准则 3.3 调度算法 3.4 实时调度 3.5 产生死锁的原因和必要条件 3.6 预防死锁的方法 3.7 死锁的检测与解除

    07死锁处理

    死锁的基本概念 死锁的解决方案 死锁预防 死锁避免——银行家算法 死锁的检测与解除 资源分配图

    银行家算法采用银行家算法防止死锁

    学生掌握死锁的概念和产生死锁的原因和必要条件, 预防和避免死 锁的方法,死锁的检测与解除。通过本次实验,使学生加深了对死锁 概念的理解和掌握,深刻领会银行家算法的实质及实现过程。 三、设计思想(本程序中的...

    第4章 调度与死锁修改

    调度与死锁 调度类型与准则 调度算法 死锁的基本概念 死锁的预防与避免 死锁的检测与解除

    计算机操作系统OS教程 计算机基础课程 第3章 处理机调度与死锁 共136页.ppt

    3.1 处理机调度的层次 3.2 调度队列模型和调度准则 3.3 调度算法 3.4 实时调度 3.5 产生死锁的原因和必要条件 3.6 预防死锁的方法 3.7 死锁的检测与解除

    计算机操作系统实验—银行家算法

    本实验主要对操作系统中的死锁预防部分的理论进行实验。要求实验者设计一个程序,该程序可对每一次资源申请采用银行家算法进行分配。 5.4 实验内容 1) 设计多个资源(≥3); 2) 设计多个进程(≥3); 3) 设计银行...

    网络工程师笔记-操作系统基础

    死锁预防 死锁避免 死锁检测 死锁解除 虚拟存储系统,通过将运行进程访问的地址(逻辑地址,虚拟地址)与主存的无力地址(实地址)分开,使提供大于无力地址的逻辑地址空间成为可能 虚实地址转换的公式 ((...

    9_并发控制1

    1. 并发控制概述 2. 不可重复读(Non-repeatable Read) 2. 封锁 3. 活锁和死锁 1. 预防死锁 2. 死锁的诊断与解除 4. 并发

    计算机操作系统(第三版)

    3.5 产生死锁的原因和必要条件 103 3.5.1 产生死锁的原因 103 3.5.2 产生死锁的必要条件 105 3.5.3 处理死锁的基本方法 105 3.6 预防死锁的方法 106 3.6.1 预防死锁 106 3.6.2 系统安全状态 107 3.6.3...

    操作系统各部分内容详细思维导图.zip

    死锁预防  4.死锁避免  系统安全状态,银行家算法。  5.死锁检测和解除  三、内存管理  (一)内存管理基础  1.内存管理概念  程序装入与链接,逻辑地址与物理地址空间,内存保护。  2.交换与覆盖  ...

    操作系统填空题.docx

    1、解决死锁问题的基本方法有_预防死锁_、_避免死锁_、_检测死锁_和_解除死锁_。 2、当前进程若因时间片用完而被暂停执行时,该进程应转变为_就绪_状态;若因发生某事件而不被继续运行时,该进程应转变为_阻塞_状态...

    计算机操作系统--第三章

    计算机操作系统 3.1处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度 3.5 产生死锁的原因和必要条件 3.6 预防死锁的方法 3.7 死锁的检测与解除

    计算机四级网络工程师

    2.死锁预防策略 3.死锁避免策略 4.死锁检测与解除 5.资源分配图 基本要求 1.理解计算机网络的基本概念。 2.掌握局域网的基本工作原理。 3. 掌握TCP/IP及其相关协议。 4. 掌握Internet基本服务类型。 5.掌握较为...

    操作系统考研指导(北京邮电大学)

    4.3.6死锁的检测和解除 4.4本章基础要点 4.5练习题及参考答案 第5章作业管理和用户接口 5.l用户与操作系统之间的接日 5.1.1命令接日 5.1.2程序接口 5.1.3图形用户接口 5.2作业调度 5.2.l作业的状态及转换 5.2.2作业...

    操作系统简答题.doc

    是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一 种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进 1) 预防死锁。 (2) 避免死锁。 (3) 检测死锁。 (4) 解除...

    sisuo.rar_java 实现 银行家算法_sisuo_操作系统 银行家算法_银行家算法_银行家算法 界面

    用Java实现操作系统的死锁课程设计,可实现死锁的产生,避免,预防与解除,避免由银行家算法实现,界面优美,代码可读性好。而且本程序生成了可直接运行的.exe文件和可安装的程序,非常的方便实用

Global site tag (gtag.js) - Google Analytics