| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【数据库技术】2PL(两阶段锁)下的死锁与饥饿处理手段 -> 正文阅读 |
|
[大数据]【数据库技术】2PL(两阶段锁)下的死锁与饥饿处理手段 |
事务处理-2PL下的死锁与饥饿2PL——2阶段锁存在的问题
一、死锁与等待图1. 死锁(Deadlock)死锁是指集合中的每个事务都在等待队列中,等待其他事务释放某个项上的锁。但是因为另一个事务也在等待,所以它永远不会释放锁。简而言之就是,我在等你主动,你也在等我主动,最后的结果是我俩都陷入僵局,什么都做不了。 通常检验一个事务执行序列是否发生死锁,可以用等待图(wait-for graph)来形象地描述。还是拿上面的例子来说。 2. 等待图(Wait-for graph)等待图是一种分析死锁的有效工具。它是有向图,其中节点表示事务,带有箭头的有向边表示“等待”关系,箭头的方向就是等待的方向。例如,上图(b)中,T1’在等待T2’的X,T2’在等待T1’的Y。 示例:针对下图给出的序列,若用r表示读,w表示写,S表示读锁,X表示写锁,US表示释放读锁,UX表示释放写锁。 转化为等待图为: 二、死锁的处理手段1. 死锁预防如何来预防死锁的发生? 为了保证并发性,我们考虑在发现即将有死锁的苗头时,主动让事务中止回滚或阻塞等待。下面介绍一种基于时间戳的死锁预防协议。它分为剥夺式和非剥夺式的。
让我们来看看在这两种策略下,上面的例子中出现的死锁将如何被预防吧: 2. 死锁检测处理死锁的另一种方法是死锁检测,系统检查是否存在死锁状态。如果我们知道事务之间的干扰很小,也就是说,如果不同的事务很少同时访问相同的项目,那么这个解决方案就很有吸引力。如果事务很短且每个事务只锁定少数项目,或者事务负载很轻,就会发生这种情况。另一方面,如果事务很长并且每个事务使用许多项,或者如果事务负载很重,那么使用死锁预防方案可能会比较有利。 一种简单的检测思路便是让系统构建并维护一张等待图,当存在等待时,构建等待边【详见上文对等待图的介绍】,当等待结束,成功获取到锁时,删除这条边。当且仅当检测到图中存在至少一个环时,就检测到死锁状态。 检测到死锁之后,如何去处理死锁(解除死锁)呢? 通常有两种手段:撤销或超时 a. 撤销通常我们选择在检测到死锁发生的时候,优先去撤销当前已经执行过的更新次数最少的事务。保留那些已经运行了较长时间的事务。这里如何去制定一个更合理、更公平的撤销策略,诞生了一系列算法,它们被统称为受害者选择算法(victim selection) b. 超时另一个处理死锁的简单方案是使用超时。该方法具有开销小、简单等优点,是一种实用的方法。在此方法中,如果事务等待的时间超过系统定义的超时时间,则系统假定事务可能死锁并中止它——不管死锁是否实际存在。 三、饥饿与饿死当我们使用锁时,可能发生的另一个问题是饥饿,当系统中的其他事务正常地继续时,一个事务在一段较长时间内,一直处于等待阶段,始终不能获取到资源时,就会发生饥饿。 如果锁定项的等待方案不公平,即某些事务的优先级高于其他事务,则可能发生这种情况。如果长时间得不到资源,即使最后得到了资源,执行完毕后已经达不到预期的结果,便被称为饿死。饿死这一现象在CPU进行进程调度时更为常见。 解决饥饿问题的方法
总结以上就是今天要讲的内容,本文仅仅简单介绍了2阶段锁下存在的死锁问题,简要解释了死锁与等待图,死锁的处理手段和饥饿与饿死的概念。希望这篇文章对理解死锁能有实质性帮助。转载请注明出处。 操作系统——死锁的概念以及死锁处理策略 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:23:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |