平成21年度 春期 ITパスポート試験 問82
テクノロジ/データベースデータ D を更新する二つの処理 A,B が,①→③→②→④のタイミングで実行された場合,D の値は幾らになるか。ここで,D の初期値は 2 とする。 処理 A:①D を読み込み,3 倍する。②①の結果を,D に書き込む。 処理 B:③D を読み込み,5 を加える。④③の結果を,D に書き込む。 (実行タイミングは①→③→②→④の順に,時間とともに進む。) (注:本サイトでは原問題の図を文字表記に変換しています)
出典:平成21年度 春期 ITパスポート試験 問82
- ア6
- イ7
- ウ11
- エ21
正解:イ
解説
処理の順番どおりに追いかけます。①で A が D(=2)を読み込んで 3 倍し,6 を得ます。③で B が,まだ書き換えられていない D(=2)を読み込んで 5 を加え,7 を得ます。②で A が 6 を D に書き込み,④で B が 7 を D に書き込むので,最後の D は 7 になります。A の更新が B によって上書きされて失われており,このような問題を防ぐために排他制御が必要になります。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- ア誤り。6 は②で A が書き込んだ値ですが,その後④で B が 7 を書き込むので,最終的な D の値にはなりません。
- イ正しい。④の B の書き込み(7)が最後に行われるため,D は 7 になります。A が書き込んだ 6 は上書きされます。
- ウ誤り。11 は D=6 に 5 を加えた値ですが,B は③の時点で更新前の D(=2)を読み込んでいるため,この値にはなりません。
- エ誤り。21 は D=7 を 3 倍した値などで,このタイミングの実行では得られません。