2台のPCから一つのファイルを並行して更新した。ファイル中のデータnに対する処理が1~4の順に行われたとき、データnは最後にどの値になるか。ここで,データnの初期値は10であった。
ア 5
イ 10
ウ 12
エ 17
解説を読む
正解:エ
解説:
排他制御を行わない状態での同時処理による値の矛盾が生じる例の問題です。
問題文よりn=10を初期値として順番にnの状態を追ってみます。
① ファイルからn(=10)を読出し5を引く(n=5)
② ファイルからn(=10)を読出し7を足す(n=17)
③ ファイルにnを書き込む:n=5
④ ファイルにnを書き込む:n=17
上記のとおりとなり①~④の処理を終えた後のファイル内のnは17となりエが正解です。
ポイントは①の読出しと③の書き戻しの間にPC-Bがファイルにアクセスしていることです。②の段階ではまだ書き戻しが行われていないので初期値の10が参照されます。そして、③で書き戻されたnは④で上書きされてしまうので最終的に17が残ります。
解説を閉じる
コメント