作業原地址:作業
目錄
9.
設T1、T2、T3是如下的三個事務,設A的初值爲0。
T1:A:=A+2;
T2:A:=A*2;
T3:A:=A**2; (即 A←A²)
(1)
若這三個事務允許併發執行,則有多少種可能的正確結果?請一一列舉出來。
①T1 T2 T3 —— 16
②T1 T3 T2 —— 8
③T2 T1 T3 —— 4
④T3 T1 T2 —— 4
⑤T2 T3 T1 —— 2
⑥T3 T2 T1 —— 2
共有4種。
(2)
請給出一個可串行化的調度,並給出執行結果。
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y = R(A) | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A = Y+2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y = R(A) | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A = Y+2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y = R(A) | ||
Unlock A | ||
Xlock A | ||
A = Y**2 | ||
W(A) | ||
Unlock A |
結果,A = 16。
(3)
請給出一個非串行化的調度,並給出執行結果。
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y = R(A) = 0 | ||
Slock A | ||
等待 | ||
Y = R(A) = 0 | ||
Unlock A | ||
Xlock A | ||
A = Y+2 | ||
Slock A | ||
W(A) | 等待 | |
Unlock A | 等待 | |
Y = R(A) = 2 | ||
Unlock A | ||
Xlock A | ||
A = Y*2 | ||
Xlock A | ||
W(A) | 等待 | |
Unlock A | 等待 | |
A = Y**2 | ||
W(A) | ||
Unlock A |
結果,A = 0。
(4)
若這三個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度。
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y = R(A) = 0 | ||
Xlock A | ||
A = Y+2 |
||
Slock A | ||
W(A) = 2 | 等待 | |
Unlock A | 等待 | |
Y = R(A) = 2 | ||
Xlock A | ||
Slock A | ||
A = Y*2 | 等待 | |
W(A) = 4 | 等待 | |
Unlock A | 等待 | |
Y = R(A) = 4 | ||
XLock A | ||
A = Y**2 | ||
W(A) = 16 | ||
Unlock A |
(5)
若這三個事務都遵守兩段鎖協議,請給出一個產生死鎖的調度。
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y = R(A) = 0 | ||
Slock A | ||
Y = R(A) = 0 | ||
Xlock A | ||
等待 | ||
等待 | Xlock A | |
等待 | 等待 | |
等待 | 等待 | Slock A |
等待 | 等待 | Y = R(A) = 0 |
等待 | 等待 | Xlock A |
等待 | 等待 | 等待 |
10.
今有三個事務的一個調度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),該調度是衝突可串行化的調度嗎?爲什麼?
交換後:r3(B)w3(B)r2(B)w2(B)r1(B)r2(A)r1(A)w1(A),
調度:T3——T2——T1
所以是衝突可串行化調度。
14.
考慮T1和T2兩個事務。
T1: R(A); R(B);B=A+B; W(B)
T2:R(B); R(A);A=A+B; W(A)
(1)
改寫T1和T2,增加加鎖操作和解鎖操作, 並要求遵循兩階段封鎖協議。
T1 | T2 |
---|---|
Slock A | Slock B |
R(A) | R(B) |
Slock B | Slock A |
R(B) | R(A) |
B = A+B | A = A+B |
Xlock B | Xlock A |
W(B) | W(A) |
Unlock A | Unlock B |
Unlock B | Unlock A |
(2)
說明T1和T2的執行是否會引起死鎖,給出T1和T2的一個調度並說明之。
T1 | T2 |
---|---|
Slock A | |
R(A) | |
Slock B | |
R(B) | |
B = A+B | |
Slock B | |
R(B) | |
Slock A | |
R(A) | |
A = A+B | |
R(A) | |
Xlock B | |
等待 | Xlock A |
等待 | 等待 |
總結
最後一次理論課作業。
完成時間:58min
以上
————(2020.5.17)