ITパスポート 2009年 (平成21年 春期) 問82「データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合…」の正解と解説です。ITパスポート試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約71%です。
正解
イ. 7
正答率 71.2%(1,561人中 1,111人が正解)
問題の解説
正解はイ。並行処理での競合更新の典型問題。初期値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