9、設T1、T2、T3是如下三個事物,設A的初值爲0.
T1:A:=A+2;
T2:A:=A*2;
T3:A:=A**2;(即A)
(1)若這三個事物允許併發執行,則有多少種可能的正確結果?請一一列舉出來。
可能會產生的結果有:2、4、8、16
T1T2T3 16
T1T3T2 8
T2T1T3 4
T2T3T1 2
T3T1T2 4
T3T2T1 2
(2)請給出一個可串行化的調度,並給出執行結果。csdn MarkDown 繪製表格
結果爲:16
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A=Y+2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=2 | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A=Y*2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=4 | ||
Unlock A | ||
Xlock A | ||
A=Y**2 | ||
W(A) | ||
Unlock A |
(3)請給出一個非串行化的調度,並給出執行結果。
執行結果爲:0
T1 | T2 | 3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Slock A | ||
等待 | Unlock A | |
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
A=Y*2 | Slock A | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
A=Y+2 | Xlock A | |
W(A) | 等待 | |
Unlock A | 等待 | |
A=Y**2 | ||
W(A) | ||
Unlock A |
(4)若這三個事物都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度。
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Xlock A | ||
A=Y+2 | ||
Slock A | ||
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=2 | ||
Xlock A | ||
Unlock A | 等待 | Slock A |
A=Y*2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=4 | ||
Unlock A | ||
Xlock A | ||
A=Y**2 | ||
W(A) | ||
Unlock A | ||
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)r2(A)w2(B)r1(A)r1(B)w1(A),等價於一個串行調度T3T2T1,所以是衝突可串行化的調度。
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 | |
X=R(A) | |
Slock B | |
Y=R(B) | |
Xlock B | |
B=X+Y | |
W(B) | |
Unlock B | |
Slock B | |
X=R(B) | |
Unlock B | |
Unlock A | |
Slock A | |
Y=R(A) | |
XlockA | |
A=X+Y | |
W(A) | |
Unlock A | |
Unlock A | |
Unlock B |
(2)說明T1和T2的執行是否會引起死鎖,給出T1和T2的一個調度並說明之。
可能會引起死鎖。下面的調度應該會引起死鎖。
T1 | T2 |
---|---|
Slock A | |
X=R(A) | |
Slock B | |
Y=R(B) | |
Slock B | |
Y=R(B) | |
Xlock B | |
等待 | Slock A |
等待 | X=R(A) |
等待 | Xlock A |
等待 |