平成24年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−16
2つのオブジェクト a と b、2つのトランザクション T1 と T2 を考える。
T1: l[a]; r[a,x]; x=x-8; w[a,x]; u[a]; l[b]; y=x+2; w[b,y]; u[b]
T2: l[a]; r[a,s]; s=s+3; w[a,s]; l[b]; t=s+3; w[b,t]; u[a]; u[b]
トランザクション開始時点の a と b の値はいずれも0とし、T1 と T2 を
並列処理した場合に考えられる最終結果として、正しいものはどれか。
ここで、各トランザクションのセミコロンで区切られた各操作は、左から順に
実行される。 l[x] は x の排他ロック、u[x] は x のロック解除、r[c,v] は
c の値を変数 v に代入、w[c,v] は v の値を c に格納する操作とする。
各操作は一定時間内に開始されて、一定時間内に処理が終了する
ものとする。

 @ (a=-5, b=-3) または (a=-5, b=-2)
 A (a=-5, b=-2) または (a=-8, b=-2)
 B (a=-5, b=-3) または (a=-8, b=-6)
 C (a=-5, b=-3) または (a=-5, b=-2) または (a=-5, b=-6)
 D (a=-5, b=-3) または (a=-8, b=-2) または (a=-8, b=-3)



【正解】 C

オブジェクト a と bがそれぞれ排他ロックされた後、解放されるまでの
処理単位で考える。
便宜上、以下の通り番号をつける。
l[a]; r[a,x]; x=x-8; w[a,x]; u[a]; ・・・(1)
l[b]; y=x+2; w[b,y]; u[b] ・・・(2)
l[a]; r[a,s]; s=s+3; w[a,s]; ・・・(3)
l[b]; 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)により (-5,0),
(-8,0), (-5,0) となり
(2)により (-5,-6),
(-8,-6), (-5,0) となり
(4)により
(-5,-2), (-8,-6), (-5,-2) となる。

(1) → (3) → (4) → (2)の場合
(a,b),
(x,y), (s,t) がそれぞれ
(1)により (-8,0),
(-8,0), (0,0) となり
(3)により (-5,0),
(-8,0), (-5,0) となり
(4)により (-5,-2),
(-8,0), (-5,-2) となり
(2)により
(-5,-6), (-8,-6), (-5,-2) となる。

(3) → (4) → (1) → (2)の場合
(a,b),
(x,y), (s,t) がそれぞれ
(3)により (3,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 がロックされているため処理できない。

【類題】
H18 W-19

EXCELのマクロのご相談なら ファーストマクロ 



W−15 目次 W−17
ファーストマクロ TOPページ