问题 问答题


阅读下列说明,回答问题1至问题3,将解答填入对应栏内。
【说明】
某银行的转账业务分为如下两类操作:
(1)读取账户A余额到变量x,记为x=R(A);
(2)将变量x值写入账户A中的余额,记为W(A,x)。
从账户A向账户B转账金额x元的伪代码操作序列为:a=R(A),=a=a-X,w(A,a), b=R(B),b=b+x,W(B,b)。
针对上述业务及规则,完成下列问题:

【问题2】
若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令 SLock(b)和独占锁指令XLock(A)对数据A进行加锁,解锁指令Unlock(A)对数据A进行解锁。
请补充上述转账业务的伪代码序列,使其满足2PL协议。

答案

参考答案:

解析:伪代码程序:XLock(A),a=R(A),a=a-x,W(A,a),XLock(B),b=R(B),b=b+x,W(B,b),Unlock(A),Unlock(B) 注:保证读取数据对象之前加锁,解锁指令之间没有加锁指令即可给分。

单项选择题
单项选择题