基本情報技術者試験 - 令和7年1月修了 - 問22

Webページへのアクセス件数を調べる目的でアクセスカウンタを作成した。図に示すとおり,2人の閲覧者が同時にアクセスしたところ,サーバ内の処理は①~④の順序で実行された。2人がアクセスする前のアクセスカウンタの値が100であったとすると,処理④が終了した時点のアクセスカウンタの値は幾らになるか。

ア100
イ101
ウ102
エ104
答え : イ
分野 : テクノロジ系 › 技術要素 › データベース › トランザクション処理
同一問題 : 〔令2修1問28〕〔平25修1問34〕〔平23修6問34〕〔平21修12問34〕
解説 :
複数の利用者が同時にデータを更新しようとしたときに起こる「排他制御」に関する問題です。図のように,閲覧者1と閲覧者2がほぼ同時にWebページへアクセスし,サーバ内ではアクセスカウンタの値を読み込んで1を加算し,それを書き込むという処理が①から④の順に実行されます。もともとアクセスカウンタの値は100でした。

まず①で閲覧者1向けの処理がアクセスカウンタを読み込みます。このとき値はまだ100なので,読み込んだ値は100です。次に②で閲覧者2向けの処理も,まだ誰も書き込みをしていない状態でアクセスカウンタを読み込むため,こちらも100を読み込みます。

次に③で,①で読み込んだ100に1を加えた101を書き込み,アクセスカウンタは101になります。最後に④で,②で読み込んだ100に1を加えた101を書き込みます。②の処理は③で更新された後の値ではなく,更新前の古い値100を読み込んでいたため,④の書き込みでもやはり101になってしまいます。

本来は2人がアクセスしたので102になってほしいところですが,同時に読み込んでしまったために,片方の更新が失われてしまう「更新の紛失」という問題が起きています。従って,処理④が終了した時点の値は101で,正解は「イ」です。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる