修了試験 2020-01-26実施分 基本情報技術者試験 問28
Webページへのアクセス件数を調べる目的でアクセスカウンタを作成した。 図に示すとおり,2人の閲覧者が同時にアクセスしたところ,サーバ内の処理は①~④の順序で実行された。 2人がアクセスする前のアクセスカウンタの値が100であったとすると,処理④が終了した時点のアクセスカウンタの値は幾らになるか。 閲覧者1の処理内容:①アクセスカウンタを読み込み,1を加算する ③アクセスカウンタに処理①の結果を書き込む 閲覧者2の処理内容:②アクセスカウンタを読み込み,1を加算する ④アクセスカウンタに処理②の結果を書き込む

正答2
解説
正解は2です。 複数の処理が同じデータを同時に更新したときに起こる、更新の消失(ロストアップデート)の問題です。 図では、閲覧者1の処理①・③と閲覧者2の処理②・④が、①②③④の順にサーバで実行されています。 【計算】 ①で閲覧者1がカウンタの値100を読み込み、1を加えて101を得ます。 ②で閲覧者2も、まだ書き換えられていない値100を読み込み、1を加えて101を得ます。 ③で閲覧者1が101を書き込み、カウンタは101になります。 ④で閲覧者2も101を書き込み、カウンタは101のままです。 したがって処理④の終了時点の値は101です。 【選択肢別解説】 1:× 100は2人がアクセスする前の値です。 ③と④で101が書き込まれるので100のままではありません。 2:○ 2人とも100を読み込んで101を書き込むため、一方の加算が失われ101になります。 3:× 102になるのは、①③の後に②④を実行するなど、排他制御が正しく働いた場合です。 4:× 104になる処理は存在しません。 各閲覧者は1ずつしか加算しません。 【ポイント】 読込みから書込みまでの間に他の処理が割り込むと、更新が失われます。 防ぐには、読込みから書込みまでをロックで排他制御します。まとめて解く
修了試験 2020-01-26実施分を通しで解く(80問)→