题目
11:33 5G ....................................................... 雨课堂 04:55 10分 考虑T1,T2两个事务 T_(1):R(A);R(B);B=A+B;W(B) T_(2):R(B);R(A);A=A+B;W(A) (1)改写T1,T2,增加加锁操作和解锁操作,并要求遵循两 段锁协议 (2)说明T1和T2的执行是否会引起死锁[1],给出T1和T2的一个 死锁调度并说明之。 作答区域 (内容限制1000字可插入9张图片) 输入文字 上传图片/视频(最多9张图片和1个视频) 上传图片 上传视频 提交答案 主观题 第52页
11:33 5G ....................................................... 雨课堂 04:55 10分 考虑T1,T2两个事务 T_{1}:R(A);R(B);B=A+B;W(B) T_{2}:R(B);R(A);A=A+B;W(A) (1)改写T1,T2,增加加锁操作和解锁操作,并要求遵循两 段锁协议 (2)说明T1和T2的执行是否会引起死锁[1],给出T1和T2的一个 死锁调度并说明之。 作答区域 (内容限制1000字可插入9张图片) 输入文字 上传图片/视频(最多9张图片和1个视频) 上传图片 上传视频 提交答案 主观题 第52页
题目解答
答案
(1) 根据两阶段封锁协议,$ T_1 $ 和 $ T_2 $ 的改写如下:
$$
T_1: \text{SLOCK}(A) \rightarrow R(A) \rightarrow \text{SLOCK}(B) \rightarrow R(B) \rightarrow B = A + B \rightarrow \text{XLOCK}(B) \rightarrow W(B) \rightarrow \text{UNLOCK}(A) \rightarrow \text{UNLOCK}(B)
$$
$$
T_2: \text{SLOCK}(B) \rightarrow R(B) \rightarrow \text{SLOCK}(A) \rightarrow R(A) \rightarrow A = A + B \rightarrow \text{XLOCK}(A) \rightarrow W(A) \rightarrow \text{UNLOCK}(B) \rightarrow \text{UNLOCK}(A)
$$
(2) $ T_1 $ 和 $ T_2 $ 的执行可能引发死锁。例如:
1. $ T_1 $ 获取 $ A $ 的共享锁,$ T_2 $ 获取 $ B $ 的共享锁。
2. $ T_1 $ 请求 $ B $ 的共享锁,被 $ T_2 $ 阻塞。
3. $ T_2 $ 请求 $ A $ 的共享锁,被 $ T_1 $ 阻塞。
此时,$ T_1 $ 等待 $ T_2 $ 释放 $ B $,$ T_2 $ 等待 $ T_1 $ 释放 $ A $,形成死锁。
结论:$ T_1 $ 和 $ T_2 $ 的执行可能引发死锁。