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

データベース|平成25年度 秋期 ITパスポート試験(特別措置試験) 問67

あるトランザクション処理は,①共有領域から値を読み取り,②読み取った値に数値を加算し,③結果を共有領域に書き込む手順からなっている。複数のトランザクションを並列に矛盾なく処理するためには,トランザクション処理のどの時点で共有領域をロックし,どの時点でロックを解除するのが適切か。

〔図1 トランザクション処理の手順と時点〕(原典の図を書き起こしたものです。上から下へ時間が流れます)

内容
時点(a)
共有領域から値を読み取り
時点(b)
読み取った値に数値を加算
時点(c)
結果を共有領域に書き込む
時点(d)

〔表 ロックと解除の時点の組合せ〕

共有領域のロック共有領域のロック解除
時点(a)時点(c)
時点(a)時点(d)
時点(b)時点(c)
時点(b)時点(d)

解説

その間に他人が触ったら困るところ、で囲いを決めます。

この処理は、読み、足し、書き戻す三つの手順です。二つ目の計算は、一つ目で読んだ値をもとにしています。読んでから書くまでに他人が書き換えると、計算の元が古くなります。囲いは、読む前から書いた後までを覆う必要があります。読んだ後に囲うと、二人が同じ古い値を読んでしまいます。二人とも同じ値を足すので、片方の更新が消えてしまいます。書く前に囲いを解いても、同じことが起こります。解いた瞬間に、もう一方が古い値を読むからです。よって、最初の時点で囲い、最後の時点で解くのが正しい形です。排他制御の物差しは、読んだ値が書くまで変わらないと言えるかです。囲いの範囲は、その間に他人が触ったら困るところで決めます。ただし囲いを広げるほど、他の処理は待たされます。必要なだけ広く、それ以上は広げないのが原則です。

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

この問題に関係する言葉

出典:平成25年度 秋期 ITパスポート試験(特別措置試験) 問67(改変:原典の図表をテキストに書き起こした)

この問題を演習で解く

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

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