データベース

基本情報技術者試験 科目A免除 修了試験 20130127 実施分 問34

Web ページへのアクセス件数を調べる目的でアクセスカウンタを作成した。図に示すとおり,2 人の閲覧者が同時にアクセスしたところ,サーバ内の処理は①~④の順序で実行された。2 人がアクセスする前のアクセスカウンタの値が 100 であったとすると,処理④が終了した時点のアクセスカウンタの値は幾らになるか。
構成図: 閲覧者 1・閲覧者 2 がインターネット経由でサーバにアクセス。サーバ内に処理内容 2 ブロックとデータベース(アクセスカウンタ)がある。 〔処理内容〕(閲覧者 1 側)① アクセスカウンタを読み込み,1 を加算する ③ アクセスカウンタに処理①の結果を書き込む 〔処理内容〕(閲覧者 2 側)② アクセスカウンタを読み込み,1 を加算する ④ アクセスカウンタに処理②の結果を書き込む 各処理とアクセスカウンタの間は読込み・書込みの矢印で結ばれている。
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20130127 実施分 問34(問題文は IPA の公開問題。解説は当サイト作成)

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:イ

覚える知識

排他制御なし共有変数更新の実行順序トレース

排他制御がないと、同時更新で一方の更新結果が失われる(ロストアップデート)。

この問題で必要なこと

①②で2人とも100を読んで101を計算し、③④で101を書き込むため、最終値は101になる(更新の喪失)。

ひっかけ

直感的な 102 は、排他制御が正しく行われた場合の結果である。

この知識の出題:本試験系 0 回・免除試験 10 回(公開問題での観測値)。頻出知識ランキング825位(全1,254件中)。

この知識をアプリで解いて覚える レッスン「トランザクションと排他制御(ロック・デッドロック)」で学ぶ

同じ知識の過去問