令和2年度 ITパスポート 問72(テクノロジ)
出典:令和2年度 ITパスポート試験 公開問題 問72(独立行政法人情報処理推進機構(IPA))
2台のPCから一つのファイルを並行して更新した。ファイル中のデータnに対する処理が①~④の順に行われたとき,データnは最後にどの値になるか。ここで,データnの初期値は10であった。
- ア5
- イ10
- ウ12
- エ17
正解と解説を見る
正解:エ
【図の処理の流れ】
データnの初期値は10です。2台のPCが、次の順に処理を行いました。
・①PC-A:データnを読み込み(10)、5を引く(5)
・②PC-B:データnを読み込み(まだ10のまま)、7を足す(17)
・③PC-A:処理①の結果の5を、データnに書き込む(nは5)
・④PC-B:処理②の結果の17を、データnに書き込む(nは17)
最後に書き込まれた値が残るので、データnは17になります。
【何が問題か】
本来、2つの処理を順番に行えば、10 - 5 + 7 = 12 になるはずです。しかし、PC-Bは、PC-Aが書き込む前の古い値(10)を読み込んで計算したので、PC-Aの更新(5を引いた結果)が失われてしまいました。これを、更新の消失(ロストアップデート)といいます。防ぐには、あるPCがデータを更新している間、ほかのPCが読み書きできないようにする排他制御(ロック)を行います。
【選択肢の検討】
ア:5は、③でPC-Aが書き込んだ値ですが、その後に④でPC-Bが上書きします。
イ:10は、初期値です。
ウ:12は、2つの処理を順番に正しく行った場合の値です。
よって、正解は選択肢エです。