修了試験 2011-06-26実施分 基本情報技術者試験 問34
Webページへのアクセス件数を調べる目的でアクセスカウンタを作成した。 図に示すとおり,2人の閲覧者が同時にアクセスしたところ,サーバ内の処理は①〜④の順序で実行された。 2人がアクセスする前のアクセスカウンタの値が100であったとすると,処理④が終了した時点のアクセスカウンタの値は幾らになるか。

正答2
解説
正解は2です。 この問題は、排他制御をしないと更新が失われる現象(ロストアップデート)を問うています。 図では、閲覧者1の処理が①で「カウンタを読み込み、1を加算」し、③で「①の結果を書き込み」ます。 閲覧者2の処理は、②で「カウンタを読み込み、1を加算」し、④で「②の結果を書き込み」ます。 これらが①、②、③、④の順に実行されます。 【計算】 ①では、カウンタの値100を読み込み、1を加算して101とします。 ②では、まだ書き込まれていないので、カウンタの値100を読み込み、1を加算して101とします。 ③では、①の結果101をカウンタに書き込みます。 ④では、②の結果101をカウンタに書き込みます。 最終的なカウンタの値は101です。 【選択肢別解説】 1:× 2回とも加算した結果を書き込んでいるので、100のままにはなりません。 最後に書き込まれる値は101です。 2:○ ①と②がどちらも書込み前の100を読み込んだため、両方とも101を書き込みます。 1回分の加算が失われ、101になります。 3:× 102になるのは、一方の書込みが終わってから他方が読み込んだ場合です。 本問では②が③より先に読み込んでいるので、102にはなりません。 4:× 104になる処理の流れはありません。 加算は1回につき1だけです。 【ポイント】 このような更新の消失を防ぐには、読込みから書込みまでの間、カウンタをロックする排他制御が必要です。 データベースでは、トランザクションの同時実行制御として出題されます。まとめて解く
修了試験 2011-06-26実施分を通しで解く(80問)→