ITパスポート試験 ITパスポート 2009年 (平成21年 春期)82: データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合,Dの値は幾らになるか。ここで,Dの初期値は2とする。 [図: 実行タイミング]

ITパスポート 2009年 (平成21年 春期)
Q 8282 / 100
データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合,Dの値は幾らになるか。ここで,Dの初期値は2とする。 [図: 実行タイミング] 処理A: ① Dを読み込み,3倍する。 ② ①の結果を,Dに書き込む。 処理B: ③ Dを読み込み,5を加える。 ④ ③の結果を,Dに書き込む。
この問の正解率:71.17%(1,561件)
この問題の本文・選択肢・正解・解説(展開)

問題本文

データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合,Dの値は幾らになるか。ここで,Dの初期値は2とする。 [図: 実行タイミング] 処理A: ① Dを読み込み,3倍する。 ② ①の結果を,Dに書き込む。 処理B: ③ Dを読み込み,5を加える。 ④ ③の結果を,Dに書き込む。

選択肢

  • .6
  • .7
  • .11
  • .21

正解

. 7

解説

正解はイ。並行処理での競合更新の典型問題。初期値D=2。①処理AがDを読み込み(2)3倍して内部に保持(6)→③処理BがDを読み込み(まだ2)5加えて内部に保持(7)→②処理Aが6をDに書き込み(D=6)→④処理Bが7をDに書き込み(D=7)。最終値=7。後の書き込みが勝つ(ロストアップデート問題)。排他制御の必要性を示す問題.

選択肢ごとの解説

  • .処理Aだけが完了した場合の値(2×3=6)。実際は処理Bが処理Aの書き込み後に独自に計算した結果を書き込むため,処理Aの結果は上書きされ最終値ではない(ロストアップデートの被害側).
  • .正解。①でA読込2→6,③でB読込2(まだA未書込)→2+5=7,②でA書込6,④でB書込7。最終D=7。処理Aの結果が処理Bに上書きされる(ロストアップデート).
  • .両処理が直列に動いて累積した値(2×3+5=11または2+5を3倍などの計算ミス)。並行処理でDを読み直さず累積するとこうなるが本問は読込が独立.
  • .(2+5)×3=21の計算ミス。並行処理ではAとBが独立に元の値2を読み込んで処理するため,累積関数のような計算にはならない.

ITパスポート 2009年 (平成21年 春期)過去問一覧へ戻る・問82