マナビングITパスポート

並行更新でファイルの最終値はどう決まる?

ITパスポート試験 令和2年度10月 問72 / データベース › トランザクション処理

過去問にチャレンジ

令和2年度10月 問72

2台のPCから一つのファイルを並行して更新した。ファイル中のデータnに対する処理が①~④の順に行われたとき,データnは最後にどの値になるか。ここで,データnの初期値は10であった。

令和2年度10月 問72の図
  1. ア

    5

  2. イ

    10

  3. ウ

    12

  4. エ

    17

会話形式の解説

講師講師
この問題は、各PCが値を読んだ時点と、計算結果を書き込んだ時点を分けて追うのがポイントです。
受験者受験者
初期値の10から5を引いて7を足すなら、12になると思いました。
講師講師
まずPC-Aは10を読み、5を引いた結果の5を保持します。この段階では、ファイルの値はまだ10です。
受験者受験者
では、次にPC-Bが読むのも10ですか。
講師講師
そうです。PC-Aが書き込む前なので、PC-Bは10を読み、7を足した17を保持します。
受験者受験者
その後、PC-Aが5を書き込むので、一度はファイルの値が5になりますね。
講師講師
はい。ただし最後にPC-Bが保持していた17を書き込みます。したがって最終値は17です。
受験者受験者
5は途中の値で、10は書き込み前の値なのですね。
講師講師
そのとおりです。12になるのは、PC-BがPC-Aの書き込んだ5を読んでから7を足した場合です。実際にはPC-Bの読み込みが先です。
受験者受験者
読み込み時には両方のPCが10を使い、最後の書き込みで17になると分かりました。
講師講師
並行して更新する問題では、計算順だけでなく、読み込みと書き込みを時系列で並べて確認しましょう。

まとめ

PC-AとPC-Bは、どちらもファイルの値が10のときに読み込みます。PC-Aは5、PC-Bは17をそれぞれ計算して保持します。PC-Aが5を書き込んだ後、PC-Bが17を書き込むため、最終値は17です。

解答・解説

正解はエです

この問題のテーマ

並行して更新するとき、各PCがいつ値を読み、どの順番で書き込むかを問う問題です。

解き方の考え方

読み込んで計算した結果は、書き込むまでファイルの値に反映されません。①でPC-Aは10−5=5を保持します。②ではファイルがまだ10なので、PC-Bは10+7=17を保持します。③で5、最後の④で17が書き込まれるため、正解はエです。

選択肢ごとの解説

  1. ×ア  5
    5はPC-Aが①で計算し、③で書き込む値です。しかし④でPC-Bが17を書き込むため、最後の値にはなりません。
  2. ×イ  10
    10はファイル中のデータの初期値です。③と④で書き換えられるので、最後まで10のままではありません。
  3. ×ウ  12
    12は、PC-Bが5を読んで7を足した場合の値です。実際の②は③より前なので、PC-Bが読む値は10です。
  4. ○エ  17
    PC-Bは②で読み込んだ10に7を足し、17を保持します。④でその17を最後に書き込むので、最終値は17です。

補足

10−5+7=12と続けて計算すると、PC-BがPC-Aの更新後の値を読んだことになってしまいます。この問題では両PCが10を読み、PC-Aの書き込みは後からPC-Bの書き込みで上書きされます。

POINT

  • 読み込みと書き込みを別の処理として時系列に並べます。
  • ②の時点では③の書き込みがまだなので、ファイルの値は10です。
  • 最後に書き込まれた17が、ファイルの最終値になります。

※出典:令和2年度10月 ITパスポート試験 問72(一部改変)