2つのオブジェクト a と b、2つのトランザクション T1とT2を考える。トランザクション開始前の a と b の値はいずれも0とする。
T1: l[a]; r[a,x]; x=x-8; w[a,x]; u[a]; l[b]; l[a];
r[a,x]; y=x+2; w[b,y]; u[b]; u[a]
T2: l[a]; r[a,s]; s=s+3; l[b]; w[a,s]; t=s+3;
w[b,t]; u[a]; u[b]
T1 と T2 を並列処理した場合に考えられる最終結果の中で、正しいものを次の中から選べ。ここで、各トランザクションのセミコロンで区切られた各命令は、左から順に実行が開始される。l[x]は x の排他ロック、u[x]は x のロック解除、r[c, v]は c の値を変数 v に代入、w[c,v]は v の値を c に格納とする。各命令は一定時間内に開始されて、一定時間内に処理が終了する。一定時間内に開始または終了できないトランザクションが1つ以上あれば、どれか1つをアボートして、そのトランザクションのすべてのロック済みのオブジェクトのロックを解除して終了し、他のトランザクションを続行させる。
@ (a=-5, b=-3) または (a=-5, b=-2)
A (a=-5, b=-2) または (a=-8, b=-2)
B (a=-5, b=-3) または (a=-5, b=-2) または (a=-8, b=-6)
C (a=-5, b=-3) または (a=-8, b=-2) または (a=-8, b=-3)
D (a=-5, b=-3) または (a=-5, b=-2) または (a=-8, b=-2)
B
オブジェクト a と bがそれぞれ排他ロックされた後、解放されるまでの処理単位で考える。
便宜上、以下の通り番号をつける。
l[a]; r[a,x]; x=x-8; w[a,x]; u[a]; ・・・(1)
l[b]; l[a]; r[a,x]; y=x+2; w[b,y]; u[b]; u[a] ・・・(2)
l[a]; r[a,s]; s=s+3; ・・・(3)
l[b]; w[a,s]; t=s+3; w[b,t]; u[a]; u[b] ・・・(4)
トランザクション T1, T2 が並列処理されるため、どちらが先に処理されるかは判らないので、考えられる処理手順をしらみつぶしに考える。
■(1) → (2) → (3) → (4)の場合
(a,b), (x,y), (s,t) がそれぞれ
(1)により (-8,0), (-8,0), (0,0) となり
(2)により (-8,-6), (-8,-6), (0,0) となり
(3)により (-5,-6), (-8,-6), (-5,0) となり
(4)により (-5, -2), (-8,-6), (-5,-2) となる。
■(1) → (3) → (2) → (4)の場合
(a,b), (x,y), (s,t) がそれぞれ
(1)により (-8,0), (-8,0), (0,0) となり
(3)により (-8,0), (-8,0), (-5,0) となり
(2)により l[a]で処理待ちとなる。
(ア)T1をアボートした場合
(4)により (-5,-2), (-8,0), (-5,-2) となる。
(イ)T2をアボートした場合
(2)により (-8,-6), (-8,-6), (-5,0) となる。
この時点で選択肢はBに絞ることができる。
■(1) → (3) → (4) → (2)の場合
(a,b), (x,y), (s,t) がそれぞれ
(1)により (-8,0), (-8,0), (0,0) となり
(3)により (-8,0), (-8,0), (-5,0) となり
(4)により (-5,-2), (-8,0), (-5,-2) となり
(2)により (-5,-3), (-5,-3), (-5,-2) となる。
■(3) → (4) → (1) → (2)の場合
(a,b), (x,y), (s,t) がそれぞれ
(3)により (0,0), (0,0), (3,0) となり
(4)により (3,6), (0,0), (3,6) となり
(1)により (-5,6), (-5,0), (3,6) となり
(2)により (-5,-3), (-5,-3), (3,6) となる。
■(3) → (1) はオブジェクト a がロックされているため処理できない。
(ア) T1をアボートした場合
(3)により (0,0), (0,0), (3,0) となり
(4)により (3,6), (0,0), (3,6) となる。
(イ) T2をアボートした場合
(1)により (-8,0), (-8,0), (0,0) となり
(2)により (-8,-6), (-8,-6), (0,0) となる。
※選択肢には (a=3, b=6) も必要。
W−18 | 目次 | W−20 |