過去問解きまくり研究所 ホーム

データベース|平成21年度 春期 ITパスポート試験 問82

データ D を更新する二つの処理 A,B が,① → ③ → ② → ④ のタイミングで実行された場合,D の値は幾らになるか。ここで,D の初期値は 2 とする。

```
〔処理A の処理内容〕
 ① D を読み込み,3 倍する。
 ② ①の結果を,D に書き込む。

〔処理B の処理内容〕
 ③ D を読み込み,5 を加える。
 ④ ③の結果を,D に書き込む。

実行タイミング(時間の流れ)… ① → ③ → ② → ④
```

解説

読んだ時点の値を、それぞれが手元に持ったまま進みます。

排他制御が働いていない場では、二つの処理が同じ場所を代わる代わる読み書きします。はじめの値は二で、片方は三倍し、もう片方は五を足す決まりでした。最初に前の処理が二を読み、手元で六を作ります。このとき書き戻していないので、元の場所はまだ二のままでした。次に後ろの処理も二を読み、七という値を作ります。それから前の処理が六を書き込み、その後に後ろが七を書き込みます。だから最後に残るのは七で、その値を挙げた肢が当たります。六を挙げた肢は、前の処理が書いた値で止まっていました。十一を挙げた肢は、二つが順に走ったと考えた値です。二十一のほうは、順序を逆にして走らせた値になります。先に書いた六が消える形を、更新の喪失と呼びます。読んでから書くまでの間に、割り込まれたのが原因でした。

ほかの選択肢はなぜ違うのか

この問題に関係する言葉

出典:平成21年度 春期 ITパスポート試験 問82(改変:原典の図表をテキストに書き起こした)

この問題を演習で解く

同じ単元をまとめて解くならデータベースへ。

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)