本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成24年度 技術士第一次試験問題【専門科目】

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)


類題

H18 W-19


正解

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 がロックされているため処理できない。

W−15 目次 W−17