戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2020年 秋期 72


問題文

2台のPCから一つのファイルを並行して更新した。ファイル中のデータnに対する処理が①~④の順に行われたとき、データnは最後にどの値になるか。ここで、データnの初期値は10であった。
ITパスポート 2020年 秋期  問72の問題画像

選択肢

5
10
12
17(正解)

🔒 解説は解答すると表示されます

2台のPCによるデータの並行更新【ITパスポート 解説】

正解の理由

まず「読み込み」とはファイルから値を取り出すこと、「書き込み」とはファイルに値を保存することを意味します。処理の順序は図の通り①→②→③→④です。重要なのは、①と②はそれぞれ「読み込み+計算(ローカルでの処理)」までを行い、実際にファイルを変更するのは③と④の「書き込み」段階だという点です。
時系列で追うと次のようになります。
  • ①でPC-Aがファイルから初期値 を読み取り、 を計算します(まだファイルは変わらない)。
  • ②でPC-Bがファイルから値を読み取りますが、まだ書き込みが実行されていないため読み取る値は変わらず です。そこで を計算します(こちらもローカルで保持)。
  • ③でPC-Aが計算結果 をファイルに書き込みます。ファイルは になります。
  • ④でPC-Bが計算結果 をファイルに書き込みます。最後に上書きされてファイルは になります。
以上より、最終的な値は の 17 になります。

解法ステップ

  1. 初期値を確認:データn =
  2. ①(PC-Aの読み込み)で を読み、 を計算(結果はPC-A内に保持)。
  3. ②(PC-Bの読み込み)でまだファイルは変わっていないので を読み、 を計算(結果はPC-B内に保持)。
  4. ③(PC-Aの書き込み)でファイルを に更新。
  5. ④(PC-Bの書き込み)でファイルを に更新(最終値)。
  6. 結論:ファイルの最後の値は
式で表すと、
  • PC-A の結果:
  • PC-B の結果: 書き込みの順で最終は

選択肢別の誤答解説

  • ア: 5
    これは「PC-Aが書き込んだ が最後まで残った」と考えた場合の値です。しかしその後にPC-Bが書き込みを行っているため上書きされ、最終的には残りません。
  • イ: 10
    これは「どちらの書き込みも行われなかった」か「読み取りだけで書き込みが無効になった」と誤解した場合の値です。問題では③と④で実際に書き込みが行われていますので不正解です。
  • ウ: 12
    これは「計算が順番に適用されて合成された」場合の値です。例えばPC-Aが書き込み(5)をしてからPC-Bがその新しい値を読み取り とする順序なら12になります。しかし与えられた実行順序(①→②→③→④)ではPC-BはPC-Aの書き込み前に読み込んでいるため、この状況には当たりません。
  • : 17
    上の理由どおり、PC-Bが読み込んだ値は初期の であり、PC-Bの書き込みが最後に行われるため最終値は です。

よくある誤解

  1. 「並行(同時)にやっているから両方の処理が合算される」と考える誤り
    並行処理(複数の処理が重なって実行されること)では、読み込みと書き込みのタイミング次第で結果が変わります。単純に「足し算・引き算が合算される」とは限りません。
  2. 「①~④の番号順=各PCの内部での順序だけで、ファイル操作の順序がわからない」と混同する誤り
    問題文は①→②→③→④の順に処理が行われたと明示しています。番号の意味(読み込みか書き込みか)を正しく理解して順番に追うことが大事です。

補足コラム

今回の事例は「レースコンディション(race condition:どちらが先に書き込むかで結果が変わる事象)」にあたります。英語の "race" は「競争」の意味で、処理の順番が“競争”のように結果を左右します。実務ではこうした問題を避けるために次のような対策を使います。
  • ロック(排他制御)を使う:ファイルやデータに鍵をかけ、同時に複数が変更できないようにする。
  • トランザクション・バージョン管理:読み込み時点のバージョンと書き込み時のバージョンを検証し、競合があればやり直す(楽観的ロック)。
  • 原子操作(atomic operation:途中で別の操作に割り込まれない一まとまりの処理):データベースなどでは加算・減算を「読んで計算して書く」の一連を安全に行う仕組みがある。
業務でデータを扱うときは「最後に誰が書き込んだかで結果が変わる」ことを意識して仕組みを設計します。

FAQ

Q1: もしPC-Bの書き込みがなかったら最終値はどうなりますか?
A1: その場合はPC-Aが書き込んだ が最終値になります(選択肢アの状況)。
Q2: どうして「10→12」にならないのですか?
A2: 12になるのはPC-BがPC-Aの書き込み後に読み込む順序(読み込み②が③の後)であれば可能です。しかし問題では②が③より先に行われています。読み取りのタイミングが決め手です。
Q3: 現場ではこういう問題はどうやって防ぐのですか?
A3: ファイルロックやデータベースのトランザクション、原子的な更新操作などで競合を防ぎます。実務では「排他制御(ロック)」や「楽観的ロック(バージョン管理)」がよく使われます。

関連キーワード: 並行処理、競合(コンフリクト)、レースコンディション、読み込み・書き込み、排他制御、ファイルロック、原子操作、同期、上書き、トランザクション
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について