平成30年度 秋期 午前 問30
データベース
排他制御に関する問題
データベースシステムにおいて,二つのプログラムが同一データへのアクセス要求を行うとき,後続プログラムのアクセス要求に対する並行実行の可否の組合せのうち,適切なものはどれか。ここで,表中の ○ は二つのプログラムが並行して実行されることを表し,×は先行プログラムの実行終了まで後続プログラムは待たされることを表す。
〔図〕4 肢の表(4 枚の表)
どの肢も、縦が「後続プログラムのアクセスモード」、
横が「先行プログラムのアクセスモード」で、どちらも 共用/排他 の 2 区分。
先行 共用 先行 排他
ア 後続 共用 ○ ○
後続 排他 ○ ×
イ 後続 共用 ○ ×
後続 排他 ○ ×
ウ 後続 共用 ○ ○
後続 排他 × ×
エ 後続 共用 ○ ×
後続 排他 × ×- ア後続が排他でも,先行が共用なら並行できる(○が 3 か所)
- イ先行が共用のときだけ並行でき,後続のモードは問わない(○が 2 か所・縦に並ぶ)
- ウ後続が共用のときだけ並行でき,先行のモードは問わない(○が 2 か所・横に並ぶ)
- エ先行も後続も共用のときだけ並行できる(○が 1 か所)
答えと解説を見る
✓ これが正解エ先行も後続も共用のときだけ並行できる(○が 1 か所)
解説
並行できるのは読む側どうしの一組だけです。
二つのプログラムが同じデータへアクセスしようとしたとき、後から来たほうが待たされるかどうかを、四つのます目の表として選ぶ問いです。共用と排他という二つのアクセスモードを、何のために掛けるものかで言い換えると、表は自分で埋まります。共用のほうは読むために掛けるもので、共有ロックと呼ばれます。読むだけであれば何人が同時に読んでも値は変わらないので、互いに邪魔をしません。排他のほうは書くために掛けるもので、専有ロックと呼ばれます。書き換えている途中の値は、他のプログラムに読ませても書かせてもいけません。この見方でます目を順に埋めます。先に来たほうも後から来たほうも読むだけなら並行できます。先が読んでいるところへ後が書きに来る場合は、読んでいる最中に値が変わってしまうので待たせます。先が書いているところへ後が読みに来る場合は、確定していない値を読むことになるので待たせます。両方が書く場合は、更新の一方が失われるので待たせます。つまり並行できるのは一組だけで、表では左上のます目だけが可となります。見分けの軸は二つです。書く側が一方でも関わっていれば待たせる、という点と、両立の関係は対称でなければならない、という点です。後者は、片方の順番では並行できるのに逆の順番ではできない、という表があれば、それだけで排除できるという意味です。
ほかの選択肢はなぜ違うのか
- ア後続が排他でも,先行が共用なら並行できる…:可のます目が三つある表で、書く側が関わる組合せまで並行させています。先に読んでいるプログラムがいる最中に後から書き込みを許すことになり、読んだ値が途中で変わってしまいます。
- イ先行が共用のときだけ並行でき,後続のモー…:先に来たほうが読む側のときだけ並行を許し、後から来たほうのモードを問わない表です。読んでいるだけだから書かせてよい、という考え方になりますが、読む側は読み終えるまで値が動かないことを前提にしています。
- ウ後続が共用のときだけ並行でき,先行のモー…:後から来たほうが読む側のときだけ並行を許し、先に来たほうのモードを問わない表です。先が書いている途中の値を後が読めてしまうため、先が取り消された場合に、存在しない値をつかんだ状態が残ります。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成30年度 秋期 応用情報技術者試験 午前 問30(改変:原典の図表をテキストに書き起こした)
同じ用語が出る問題
- 令和7年度 秋期 午前 問16:排他制御に関する問題(排他制御)
- 平成30年度 春期 午前 問18:セマフォを用いる目的(排他制御)
- 平成29年度 春期 午前 問29:デッドロックに関する問題(排他制御)
- 平成26年度 秋期 午前 問16:デッドロックに関する問題(排他制御)
- 平成25年度 春期 午前 問31:排他制御に関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)