データベース
基本情報技術者試験 科目A免除 修了試験 20110626 実施分 問34
Web ページへのアクセス件数を調べる目的でアクセスカウンタを作成した。図に示すとおり,2人の閲覧者が同時にアクセスしたところ,サーバ内の処理は①~④の順序で実行された。2人がアクセスする前のアクセスカウンタの値が 100 であったとすると,処理④が終了した時点のアクセスカウンタの値は幾らになるか。
閲覧者1・閲覧者2 がインターネット経由でサーバにアクセスする。サーバ内に二つの処理ブロックとデータベース内の「アクセスカウンタ」。
[処理内容](閲覧者1側)① アクセスカウンタを読み込み,1を加算する ③ アクセスカウンタに処理①の結果を書き込む
[処理内容](閲覧者2側)② アクセスカウンタを読み込み,1を加算する ④ アクセスカウンタに処理②の結果を書き込む
矢印: アクセスカウンタ←→各処理(読込み・書込み)。
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20110626 実施分 問34(問題文は IPA の公開問題。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:イ
覚える知識
排他制御なし共有変数更新の実行順序トレース
排他制御がないと、同時更新で一方の更新結果が失われる矛盾(ロストアップデート)が発生する。
この問題で必要なこと
①②で両者とも100を読み込み101を算出し、③④で101を書き込むため、最終値は102ではなく101になる(更新の喪失)。
ひっかけ
2回加算されて102になると思い込ませる。
この知識の出題:本試験系 0 回・免除試験 10 回(公開問題での観測値)。頻出知識ランキング825位(全1,254件中)。