- 設T1、T2、T3,是如下的三個事務,設A的初值爲0。
T1:A:=A+2;
T2:A:=A2:
T3:A:=A**2; (即 A←A^2)
(1)若這三個事務允許併發執行,則有多少種可能的正確結果?請一一列舉出來。
(2)請給出一個可串行化的調度,並給出執行結果。
(3)請給出一個非串行化的調度,並給出執行結果。
(4)若這三個事務都遵守兩段鎖協議,請給出一一個不產生死鎖的可串行化調度。
(5)若這三個事務都遵守兩段鎖協議。請給出一個產生死鎖的調度.
答:
設T1、T2、T3,是如下的三個事務,設A的初值爲0。
T1:A:=A+2;
T2:A:=A2;
T3:A:=A*A;(A←A^2)
①若這三個事務允許並行執行,則有多少可能的正確結果,請一以列舉出來
答:
A的最終結果可能有2、4、8、16。
因爲串行執行次序有T1T2T3;T1T3T2;T2T1T3;T2T3T1;T3T1T2;T3T2T1。對應的執行結果是16;8:4;2;4;2。
②請給出一個可串行化的調度4井給出執行結果
答:
T1 | T2 | T3 |
Slock A | ||
Y=A=0 | ||
Unlock A Xlock A | ||
A=Y+2 | Slock A | |
寫回A(=2) | 等待 | |
Unlock A | 等待 | |
等待 | ||
Y=A=2 | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A=Y*2 | 等待 | |
寫回A(=4) | 等待 | |
Unlock A | 等待 | |
Y=A=4 | ||
Unlock A | ||
Xlock A | ||
A=Y*Y | ||
寫回A(=16) | ||
Unlock A |
最後結果A爲16,是可串行化的調度。
(3)請給出一個非串行化的調度,並給出執行結果。
答:
T1 | T2 | T3 |
Slock A | ||
Y=A=0 | ||
Unlock A | ||
Slock A | ||
Xlock A | ||
等待 | Unlock A | |
A=Y+2 | 等待 | |
寫回A(=2) | Slock A | |
Unlock A | 等待 | |
Y=A=2 | ||
Unlock A | ||
Xlock A | ||
Xlock A | ||
等待 | Y=Y**2 | |
等待 | 寫回A(=4) | |
等待 | Unlock A | |
A=Y*2 | ||
寫回A(=0) | ||
Unlock A |
最後結果A爲0,是非可串行化的調度。
4)若這三個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度。
答:
T1 | T2 | T3 |
Slock A | ||
Y=A=0 | ||
Xlock A | ||
A=Y+2 | Slock A | |
寫回A(=2) | 等待 | |
Unlock A | 等待 | |
Y=A=2 | ||
Xlock A | ||
Unlock A | 等待 | Slock A |
A=Y*2 | 等待 | |
寫回A(=4) | 等待 | |
Unlock A | 等待 | |
Y=A=4 | ||
Unlock A | ||
Xlock A | ||
A=Y**2 | ||
寫回A(=16) | ||
Unlock A | ||
Unlock A |
(5)若這三個事務都遵守兩段鎖協議,請給出一個產生死鎖的調度。
T1 | T2 | T3 |
Slock A | ||
Y=A=0 | ||
Slock A | ||
Y=A=0 | ||
Xlock A | ||
等待 | ||
Xlock A | ||
等待 | ||
Slock A | ||
Y=A=0 | ||
Xlock A | ||
等待 |
-
今有三個事務的一個調度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),該調度是衝突可串行化的調度嗎?爲什麼?
答:
是衝突可串行化的調度。
Scl=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),得到
Sc2=r3(B) w3(B) r2(B) r2(A) w2(B) r1(A) r1(B) w1(A)
由於Sc2是串行的,而且兩次交換都是基於不衝突操作的,所以
Sc1=r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A)
是衝突可串行化的調度。 -
考慮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,增加加鎖操作和解鎖操作, 並要求遵循兩階段封鎖協議。
(2)說明T1和T2的執行是否會引起死鎖,給出T1和T2的一個調度並說明之。
答:
(1)
T1 | T2 |
Slock A | Slock B |
R(A) | R(B) |
Xlock B | Xlock A |
R(B) | R(A) |
B=A+B | A=A+B |
W(B) | W(A) |
Unlock A | Unlock B |
Unlock B | Unlock A |
(2)
T1 | T2 |
Slock A | |
R(A) | |
Slock B | |
R(B) | |
Xlock A | |
Xlock B |