第十一章: 并发控制(课后习题)
(1)根据可串行化调度,正确结果有4种,分别为:2, 4, 8,16
(2)只要结果是正确结果就是可串行化调度————所以这两问应该是不考虑两段锁的。。吧
r1(A)r2(A)r3(A)w2(A)w3(A)w1(A)
结果是2
(3)只要结果不正确结果就是非串行化调度
r1(A)r2(A)r3(A)w2(A)w1(A)w3(A)
结果是0
(4)死锁: T1封锁了R1,T2封锁了R2,T1又请求封锁R2,T2又请求封锁R1,则处于死锁状态。
,,,刚想起来这里面能直接写表格
(5)
T1 | T2 | T3 |
---|---|---|
Slock A | ||
R( A )=0 | ||
Slock A | ||
R(A )=0 | ||
Xlock A | ||
等待 | ||
Xlock A | ||
等待 | ||
Slock A | ||
R(A) =0 | ||
Xlock A | ||
等待 |
答:是;
r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)
交换r1(A)和w3(B)得到:
r3(B)w3(B)r1(A)r2(B)r2(A)w2(B)r1(B)w1(A)
交换r1(A)和r2(B)r2(A)w2(B)r1(B)得到:
r3(B)w3(B)r2(B)r2(A)w2(B)r1(B)r1(A)w1(A)
得到串行调度:T3->T2->T1,所以原调度是冲突可串行调度。
(1)
T1 | T2 |
---|---|
Slock A | |
Xlock B | |
R(A) | |
R(B) | |
B=A+B | |
W(B) | |
(空) | Slock B |
Unlock A | 等待 |
Unlock B | Xlock A |
(空) | R(B) |
(空) | R (A) |
(空) | A=A+B |
(空) | W(A) |
(空) | Unlock A |
(空) | Unlock B |
(2)可能发生,如下:
T1 | T2 |
---|---|
Slock A | |
Xlock B | |
R(A) | |
R(B) | |
B=A+B | |
(空) | Slock B |
(空) | R(B) |
(空) | R (A) |
(空) | A=A+B |
(空) | W(A) |
Xlock B | |
等待 | Xlock A |
等待 | 等待 |