若两辆车在不同的入口处同时执行上述代码,会出现什么问题? (100字以内描述) 为保证入口处伪代码正确地并发执行,引入共享锁指令SLock(T)和独占锁指令XLock(T)对表T进行加锁;Upgrade(T)对表T所加的共享锁升级为独占锁;解锁指令 Un

admin2010-04-08  23

问题 若两辆车在不同的入口处同时执行上述代码,会出现什么问题? (100字以内描述)
为保证入口处伪代码正确地并发执行,引入共享锁指令SLock(T)和独占锁指令XLock(T)对表T进行加锁;Upgrade(T)对表T所加的共享锁升级为独占锁;解锁指令 Unlock(T)对表T进行解锁。
   (1)请修改上述入口处的伪代码程序,使其满足2PL协议。
   (2)满足2PL协议的入口处的伪代码程序,在并发执行时是否会产生死锁?若是,给出一个产生死锁的调度。

选项

答案(1)满足2PL协议的伪代码: SLock(T); x=Get(); IF x=NULL THEN return 0; Upgrade(T) Writ(x,1); Unlock(T); (2)会产生死锁,调度如下: [*] 注:调度次序不局限于本参考答案,但执行语句不能写在一行,必须是并发而不能是串行,且在Upgrade后等待。

解析 考查对2PL协议的掌握和实际应用的能力,考生要清楚何时回锁,加什么类型的锁,以及锁的升级等基本概念和方法,同时对2PL协议与死锁的关系要求有明确的认知。2PL规定:读数据前加S锁,事务结束时释放;写数据前加X锁,事务结束时释放;当要修改数据时,事务应对自己所加的S锁升级为X锁。2PL解决的是事务并发时的正确调度,并不能解决死锁,死锁是由DBMS进行检测和解除的。
转载请注明原文地址:https://jikaoti.com/ti/8PN7FFFM
0

相关试题推荐
最新回复(0)