早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

为保证入口处伪代码正确地并发执行,引入共享锁指令SLock(T)和独占锁指令XLock(T)对表T进行加锁;U

题目

为保证入口处伪代码正确地并发执行,引入共享锁指令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(x1); Unlock(T); (2)会产生死锁调度如下: 注:调度次序不局限于本参考答案但执行语句不能写在一行必须是并发而不能是串行且在Upgrade后等待。
(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进行检测和解除的。