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

平成21年度 春期 問82

データベース

排他制御に関する問題

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

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

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

実行タイミング(時間の流れ)… ① → ③ → ② → ④
答えと解説を見る

✓ これが正解イ7

解説

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

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

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

この問題の用語

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

同じ用語が出る問題

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