平成21年度 春期 問82
データベース
排他制御に関する問題
データ D を更新する二つの処理 A,B が,① → ③ → ② → ④ のタイミングで実行された場合,D の値は幾らになるか。ここで,D の初期値は 2 とする。
〔処理A の処理内容〕 ① D を読み込み,3 倍する。 ② ①の結果を,D に書き込む。 〔処理B の処理内容〕 ③ D を読み込み,5 を加える。 ④ ③の結果を,D に書き込む。 実行タイミング(時間の流れ)… ① → ③ → ② → ④
- ア6
- イ7
- ウ11
- エ21
答えと解説を見る
✓ これが正解イ7
解説
読んだ時点の値を、それぞれが手元に持ったまま進みます。
排他制御が働いていない場では、二つの処理が同じ場所を代わる代わる読み書きします。はじめの値は二で、片方は三倍し、もう片方は五を足す決まりでした。最初に前の処理が二を読み、手元で六を作ります。このとき書き戻していないので、元の場所はまだ二のままでした。次に後ろの処理も二を読み、七という値を作ります。それから前の処理が六を書き込み、その後に後ろが七を書き込みます。だから最後に残るのは七で、その値を挙げた肢が当たります。六を挙げた肢は、前の処理が書いた値で止まっていました。十一を挙げた肢は、二つが順に走ったと考えた値です。二十一のほうは、順序を逆にして走らせた値になります。先に書いた六が消える形を、更新の喪失と呼びます。読んでから書くまでの間に、割り込まれたのが原因でした。
ほかの選択肢はなぜ違うのか
- ア6:六を挙げています。前の処理が書いた値でした。確かに一度は、その値が場所に入ります。ところが後ろの処理が、その上へ七を書きます。最後に残るのは、あとから書いたほうです。途中の値を問われたなら、これが答えです。
- ウ11:十一を挙げています。二を三倍して五を足した値です。二つが順に走ったと考えれば、この数になります。ところが後ろの処理は、六ではなく二を読みました。読んだ時点で、まだ書き戻されていないからです。順に走らせたなら、これが答えにあたります。
- エ21:二十一を挙げています。二に五を足して三倍した値です。順序を入れ替えて走らせれば、この数になります。ところが実際には、前の処理が先に読んでいました。読む順も書く順も、示された並びのとおりです。逆順に走らせたなら、これが答えです。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
出典:平成21年度 春期 ITパスポート試験 問82(改変:原典の図表をテキストに書き起こした)
同じ用語が出る問題
- 令和6年度 問74:トランザクション処理に関する記述(排他制御)
- 令和5年度 問66:コミットの説明(排他制御)
- 令和2年度 10月 (特別措置試験) 問64:DBMSに関する問題(排他制御)
- 令和元年度 秋期 (特別措置試験) 問87:関係データベースに関する問題(排他制御)
- 令和元年度 秋期 (特別措置試験) 問64:排他制御の目的(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)