データベース

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

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

出典:基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問22

答えと解説を見る

正解:イ

覚える知識

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

排他制御がないと同時更新で一方の更新が失われ、結果が不整合になる。

この問題で必要なこと

①②で両者とも100を読み101を算出し、③④で101を書き込むため、最終値は101となる(更新の消失)。

ひっかけ

2回の加算で102になると考えさせる。

この知識の出題:本試験系 0 回・免除試験 10 回(公開問題での観測値)

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

同じ知識の過去問