两段锁协议不会导致死锁

题目

两段锁协议不会导致死锁

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

能保证不产生死锁。

A.两段锁协议

B.一次封锁法

C.2级封锁协议

D.3级封锁协议


正确答案:B
解析:本题考查应试者对事务处理程序加锁协议的掌握。两段锁协议是指事务处理程序对数据进行读写操作前加锁,释放一个锁之后就不能再加锁,两段锁协议用来保证事务的可串行化(执行结果的正确性),但并不能保证产生死锁;一次封锁法是指事务处理程序在所有要进行读写操作的数据全部先加锁后再进行访问,在两段锁协议的基础上要求更严格,能保证不产生死锁;2级封锁协议是指事务处理程序在进行修改数据操作之前先对其加独占锁,直到事务处理程序结束前释放,在进行读取数据操作之前先对其加共享锁,读完后就释放,2级封锁协议可以防止丢失修改和读“脏”数据;3级封锁协议比是指事务处理程序在进行修改数据操作之前先对其加独占锁,直到事务处理程序结束前释放,在进行读取数据操作之前先对其加共享锁,直到事务处理程序结束前释放,比2级封锁协议更严格,可以防止丢失修改、读“脏”数据和不可重复读三种错误。除一次封锁法外,其他3个协议都是保证程序执行的正确性的,都可能产生死锁,但死锁问题可以由DBMS进行处理,而一次封锁法在实现上也困难,通常不采用。此题答案为B。

第2题:

______能保证不产生死锁。

A.两段锁协议

B.一次封锁法

C.2级封锁法协议

D.3级封锁协议


正确答案:B

第3题:

试述两段锁协议的概念。


答案:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。
"两段"的含义是,事务分为两个阶段:
第一阶段是获得封锁,也称为扩展阶段,在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;
第二阶段是释放封锁,也称为收缩阶段,在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。

第4题:

如右图所示的调度,其中事务T1、T2仅对数据项A、B进行操作,则该调度( );

A.满足两段锁协议、不发生死锁
B.满足两段锁协议、会发生死锁
C.不满足两段锁协议、不发生死锁
D.不满足两段锁协议、会产生死锁

答案:B
解析:
本题考查事务调度的知识。事务的执行由DBMS进行调度,在执行事务的过程中加入相关锁指令以控制事务满足ACID属性。常用的方式是两段锁协议(2PL),即事务的加锁和解锁分为两个阶段,第一阶段为锁增长阶段,只能加锁不能解锁,第二阶段为锁减少阶段,只能解锁不能加锁。图中的调度,事务T1对8、A两个数据项加锁中间无解锁指令,满足2PL协议;事务T2对A、B两个数据项加锁中间无解锁指令,也满足2PL协议。2PL协议不能避免死锁。图中事务T1先对数据项B加了独占锁,事务T2先对数据A加了共享锁;随后事务T2申请数据项B上的共享锁,只能等待事务T1释放B上的独占锁;事务T1申请数据项A上的独占锁,只能等待事务T2释放A上的共享锁。两个事务相互等待造成死锁。死锁的解除由DBMS来完成。需要在造成死锁的多个事务中选择一个回滚代价最小的事务进行强制回滚,并将该事务置于事务队列中稍后执行。图中事务T1对数据B己经做了修改,事务T2只是读取了数据A,相对而言,回滚事务T2代价最小。

第5题:

下列叙述中,正确的是( )。A.不遵循两段封锁协议的并发调度一定是不可串行的B.两级封锁协议可以保证数据的可重读性C.对某个数据对象加了X封锁,则还可以在该数据对象上加S封锁D.遵循两段封锁协议的并发事务一定不会发生死锁


正确答案:B
A,D的说法太过于绝对,不准确,C项对数据对象加了X封锁之后,则不能再加S封锁。

第6题:

在并发控制中引入两段锁协议的目的是( )。

A)为了解决并行执行时可能引起的死锁问题

B)为了解决并行执行时可能引起的活锁问题

C)为了解决不同的调度导致不同的运行结果

D)为了解决交叉调度的不可串行化问题


正确答案:D
两段锁协议是指所有事务必须分两个阶段:
第一阶段是获得封锁,也称为扩展阶段;
第二阶段是释放封锁,也称为收缩阶段。
若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。

第7题:

在并行控制中引入两段封锁协议的目的是

A.为了解决并行执行时可能引起的死锁问题

B.为了解决并行执行时可能引起的活锁问题

C.为了解决交叉调度的不可串行化问题

D.为了解决不同的调度导致不同的运行结果


正确答案:C
解析:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。所谓两段锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度都是可串行化的。

第8题:

在并发控制中引入两段锁协议的目的是( )。

A.为了解决并行执行时可能引起的死锁问题

B.为了解决并行执行时可能引起的活锁问题

C.为了解决交叉调度的不可串行化问题

D.为了解决不同的调度导致不同的运行结果


正确答案:C
解析:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。所谓两段锁的含义是,事务分为两个阶段;第一阶段是获得封锁,也称为扩展阶段:第二阶段是释放封锁,也称为收缩阶段。若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。但需要注意:事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。即若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的:若对并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议。同时还需注意,两段锁协议不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。

第9题:

下列叙述中,正确的是

A.不遵循两段锁协议的并发调度一定是不可串行的

B.两级封锁协议可能保证数据的可重读性

C.对某处数据对象加了X封锁,则还可以在该数据对象上加S封锁

D.遵循两段封锁协议的并发事务一定不会发生死锁


正确答案:B
解析:两段锁协议是保证并发调度可串行化的充分条件:对某个数据对象加了X锁,则其他任何事务不能再对该数据对象加任何类型的锁;遵循两段锁协议的并发事务可能发生死锁。

第10题:

下面说法中错误的是( ).

A.并发事务如果不加控制,可能会破坏事务的隔离性
B.可串行化调度是正确的调度
C.两段锁协议能够保证可串行化调度
D.两段锁协议能够确保不会产生死锁

答案:D
解析:

更多相关问题