活锁和死锁是什么意思啊

作者&投稿:贰滢 (若有异议请与网页底部的电邮联系)
活锁和死锁是什么意思啊~

一、活锁 如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有可能永远等待,这就是活锁的情形,如图8.4(a)所示。 避免活锁的简单方法是采用先来先服务的策略。 二、死锁 如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。 1. 死锁的预防 在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法: ① 一次封锁法 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。 一次封锁法虽然可以有效地防止死锁的发生,但也存在问题,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。 ② 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 顺序封锁法可以有效地防止死锁,但也同样存在问题。事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。 可见,在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点,因此DBMS在解决死锁的问题上普遍采用的是诊断并解除死锁的方法。 2. 死锁的诊断与解除 ① 超时法 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务因为其他原因使等待时间超过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。 ② 等待图法 事务等待图是一个有向图G=(T,U)。 T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地(比如每隔1分钟)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。 DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。 参考资料:http://ptc3.fjpt.cn.net/dxx/jpkc/db/courseware/8/8.4.0.htm

死锁发生在当一些进程请求其它进程占有的资源而被阻塞时。

另外一方面,活锁不会被阻塞,而是不停检测一个永远不可能为真的条件。除去进程本身持有的资源外,活锁状态的进程会持续耗费宝贵的CPU时间。

最后,进程会处于饥饿状态是因为持续地有其它优先级更高的进程请求相同的资源。不像死锁或者活锁,饥饿能够被解开。例如,当其它高优先级的进程都终止时并且没有更高优先级的进程到达。

1、活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。

2、死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

扩展资料:

死锁经常与正常阻塞混淆。事务请求被其他事务锁定的资源的锁时,发出请求的事务一直等到该锁被释放。默认情况下,除非设置了 LOCK_TIMEOUT,否则 SQL Server 事务不会超时。因为发出请求的事务未执行任何操作来阻塞拥有锁的事务,所以该事务是被阻塞,而不是陷入了死锁。最后,拥有锁的事务将完成并释放锁,然后发出请求底事务将获取锁并继续执行。

参考资料来源:百度百科-死锁

参考资料来源:百度百科-活锁



1.活锁:数据资源释放时间不确定,导致某些事务长时间等待,得不到封锁的机会
死锁:多个事务各自占有部分资源等待另一部分资源,资源需求出现回路,导致事务停顿得不到执行
解决活锁:先来先服务
解决死锁:预防:一次封锁法、顺序封锁法
诊断并解除:超时法、等待图法

活锁是能用匙钥打得开的,死锁是有匙钥也开不了.

活锁是可以很容易打开的。死锁是打不开的。

一、活锁

如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有可能永远等待,这就是活锁的情形,如图8.4(a)所示。

避免活锁的简单方法是采用先来先服务的策略。

二、死锁

如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。

1. 死锁的预防

在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:

① 一次封锁法

一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。

一次封锁法虽然可以有效地防止死锁的发生,但也存在问题,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。

② 顺序封锁法

顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

顺序封锁法可以有效地防止死锁,但也同样存在问题。事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。

可见,在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点,因此DBMS在解决死锁的问题上普遍采用的是诊断并解除死锁的方法。

2. 死锁的诊断与解除

① 超时法

如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务因为其他原因使等待时间超过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。

② 等待图法

事务等待图是一个有向图G=(T,U)。 T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地(比如每隔1分钟)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。

DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。


活锁和死锁的定义.
【答案】:活锁:当若干事务要对同一数据项加锁时,造成一些事务的永久等待.死锁:指两个以上事务集合中的每个事务都在等待加锁当前已被另一事务加锁的数据项,从而造成相互等待的现象.

活锁和死锁是什么意思啊
这种情况下,尽管资源R可能一直处于可用状态,但由于各种事务之间的锁请求和释放的不恰当,导致T2等事务无法继续执行,这就是活锁现象。避免活锁的一种简单方法是采用先来先服务的策略。二、死锁 死锁是指在多个进程或事务中,每个事务都占用了某些资源,但又都在等待其他事务释放它们所占用的资源,导致没...

什么是死锁?死锁产生的原因有哪些?
1、(1)一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。(2)根本原因是:资源有限且操作不当。2、自锁,不是死锁。自锁是由于摩擦力的存在让本来可以实现转动的机械出现无论加再大力也无法转动的现象。它...

什么是死锁,死锁的四个必要条件以及处理死锁的策略
什么是死锁?如果一个进程集合里面的每个进程都在等待只能由这个集合中的其他一个进程(包括他自身)才能引发的事件,这种情况就是死锁。这个定义可能有点拗口,一个最简单的例子就是有资源A和资源B,都是不可剥夺资源,现在进程C已经申请了资源A,进程D也申请了资源B,进程C接下来的操作需要用到资源B...

死锁是什么意思
死锁是的意思指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。当多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进,这种情况就是死锁。很显然,如果没有外力的作用,那么死锁涉及到的各个进程都将永远处于封锁状态。死锁产生...

死锁是啥?
死锁(Deadlock),这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。有个变种叫活锁。

请注意死锁是什么意思?
请注意死锁是什么意思?在计算机科学中,死锁是指两个或多个进程或线程持续等待其他进程或线程占有的资源,导致所有进程或线程都无法继续执行下去的情况。死锁可能会导致系统崩溃或无法响应,因此必须注意。如果在系统中不及时处理死锁,会导致系统的稳定性、安全性和可靠性受到极大影响。一般的预防和解决死锁...

什么是死锁 死锁的处理方法
• 锁A,锁C,放C,放A • 锁A,锁B,放A,放B • 锁A,锁B,放B,放A • 锁A,锁B,锁C,放A,放B,放C • 锁A,锁B,锁C,放C,放B,放A 而在上面定义的系统中,可能导致发生死锁典型上锁序列包括:• 锁B,锁A,锁...

死锁是什么意思怎么解决?
死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种僵局。每个进程都在等待其他进程释放资源,却又不释放自己手中占有的资源,导致所有进程都无法继续执行。死锁严重影响了系统的运行效率和稳定性,应该及时解决。为了解决死锁问题,可以采取以下措施:第一,避免死锁的产生。通过合理地设置资源申请...

什么是死锁?举个例子简单说明?
本人回答问题都是用心原创,从来不到网上搜一段胡乱粘贴 死锁 就是你和小明打架,互相掐住对方脖子,你们都说“你先放!”,结果谁都不放,死锁了。。。在 程序 里面,有两个锁,A 线程 锁住第一个,B线程锁住了第二个,这时如果A再试图锁第二个,失败,因为B已经锁住了,A只能等待。就在这时B...

平湖市18024818193: 活锁和死锁是怎么回事? -
许殷锋泰: 一、活锁 如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待.T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待.然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有...

平湖市18024818193: 活锁和死锁是什么意思啊
许殷锋泰: 活锁是可以很容易打开的.死锁是打不开的.

平湖市18024818193: 死锁的概念是什么? -
许殷锋泰: 简单的说就是电脑在运算过程中陷入到一种计算不出结果的状态中,也就是说进入了死循环或所需资源被占用,从而成为一种僵持局面,就是死锁.

平湖市18024818193: 操作系统当中什么是死锁?? -
许殷锋泰: 死锁就是两个或者多个程序(A、B)想去访问一块临界资源(R),A必须等到B访问完了才能访问,而B也必须等到A访问完了才能访问.这样A、B都不能访问R,这就是死锁状态!

平湖市18024818193: 名词解释 死锁 -
许殷锋泰: 所谓死锁,是指在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件而无限期地僵持下去的局面.

平湖市18024818193: 活锁是什么? -
许殷锋泰: 由于一系列交叠共享锁不断干扰而被重复拒绝的对排它锁的请求.SQL Server 检测四次拒绝后的状况,并拒绝更多的共享锁.当读事务独占某个表或页(强制写事务无限等待)时也将发生活锁.

平湖市18024818193: 数据库死锁的基本解释 -
许殷锋泰: 每个使用关系型数据库的程序都可能遇到数据死锁 的情况.理解什么是死锁之前先要了解锁定的概念:多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放.而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去.简单的说,进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待就形成死锁.

平湖市18024818193: 什么是死锁、饥饿、饿死、活锁?试分析它们的区别与联系 - 上学吧普...
许殷锋泰: 死锁属于操作系统的概念了……其实很好理解, 死锁的四个必要条件 操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进 程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源...

平湖市18024818193: Java中线程死锁是什么意思?
许殷锋泰: 两个或者多个线程之间相互等待,导致线程都无法执行,叫做线程死锁.产生死锁的条件:1.有至少一个资源不能共享2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源3.资源不能任务抢占4.必须有循环等待高淇Java300集视频教程对线程死锁有详细的讲解.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网