若系统中存在5个等待事务T0,T1,T2,T3,T4,其中:T0正等待被T1锁住的数据项A1, T1正等待被T2锁住的数据项A2,T2正等待被T3锁住的数据项A3,T3正等待被T4锁住的数据项A4,T4正等待被T0锁住的数据项A0,则系统处于(46)的工作

admin2009-01-10  32

问题 若系统中存在5个等待事务T0,T1,T2,T3,T4,其中:T0正等待被T1锁住的数据项A1, T1正等待被T2锁住的数据项A2,T2正等待被T3锁住的数据项A3,T3正等待被T4锁住的数据项A4,T4正等待被T0锁住的数据项A0,则系统处于(46)的工作状态。

选项 A、并发处理
B、封锁
C、循环
D、死锁

答案D

解析 本题考查关系数据库事务处理方面的基础知识。和操作系统一样,封锁的方法可能引起活锁和死锁。例如事务T1封锁了数据R,事务T2请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T2释放R上的封锁后系统又批准了T4的请求…T2有可能长期等待、这就是活锁。避免活锁的简单方法是采用先来先服务的策略。即让封锁子系统按请求封锁的先后次序对事务排队。数据R上的锁一且释放就批准申请队列中的第一个事务获得锁。又如事务T1封锁了数据R1,T2封锁了数据R2。然后T1又请求封锁R2,T2请求封锁R1。于是T1等待T2,释放R2上的封锁而同时T2等待T1释放R1上的封锁。这就使得两个事务永远不能结束。出现了死锁。
转载请注明原文地址:https://kaotiyun.com/show/1SUZ777K
0

最新回复(0)