SC情報処理安全確保支援士試験 午前Ⅱ

令和3年度春期 情報処理安全確保支援士 午前Ⅱ 問21

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

複数のバッチ処理を並行して動かすとき、 デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち、 適切なものはどれか。

選択肢

  1. ア
    参照するレコードにも、 専有ロックを掛けるように設計する。
  2. イ
    大量データに同じ処理を行うバッチ処理は、 まとめて一つのトランザクションとして処理するように設計する。
  3. ウ
    トランザクション開始直後に、 必要なレコード全てに専有ロックを掛ける。ロックに失敗したレコードには、 しばらく待って再度ロックを掛けるように設計する。
  4. エ
    複数レコードを更新するときにロックを掛ける順番を決めておき、 全てのバッチ処理がこれに従って処理するように設計する。
解き方のヒントを見る

午前II 問21:デッドロックを避けるには、ロックする順番をそろえよう

複数のバッチ処理が同じ表やレコードを更新するなら、みんなが同じ順番でロックを取るようにしよう。たとえば、狭い通路でお互いに譲らず向かい合って止まるのがデッドロックだよ。進む順番をあらかじめ決めておけば、相互待ちの輪ができにくくなるんだ。

この問題で問われていること

この問題では、デッドロックを避ける基本として「ロックを取る順番を統一する」ことを理解しているかが問われているよ。

ロック順序の統一

処理 A は 1->2、処理 B は 2->1 のように逆順でロックすると循環待ちが起きやすい。順序を統一すると避けやすい。

全処理で同じ順番にロック\n-> デッドロック回避

確認ポイント

  • 参照だけのレコードまで専有ロックすると競合を増やしやすい。
  • 大きなトランザクション一括化はロック保持時間を延ばす。
  • ロック順序を統一する設計を選ぶ。
正解と解説を見る

正解

エ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

これは不正解だよ。読むだけのレコードにまで専有ロックを掛けるのは、図書館で本を眺めるだけなのに金庫にしまって誰にも触らせないようなものだよ。必要以上に強い鍵を掛けると、ほかの処理が待たされやすくなり、かえって処理の詰まりや競合を増やしてしまうんだ。

選択肢イ

これは不正解だよ。大量データを全部まとめて一つのトランザクションにすると、長時間たくさんのレコードに鍵を掛けっぱなしになるよ。スーパーのレジを一人が大量の商品でずっと占有するようなもので、ほかの処理が待たされ、デッドロックや待ち時間の原因になりやすいんだ。

選択肢ウ

これは不正解だよ。最初に必要なレコード全部に専有ロックを掛ける考え方自体は競合を減らす方向だけど、失敗したら待って再試行するだけだと、相手も同じように待っていて、結局にらめっこになる可能性があるよ。窓口で互いに相手の手続き完了を待つだけでは、詰まりを根本的に防げないんだ。

選択肢エ(正解)

これは正解だよ。複数の人が二つの窓口を使うとき、Aさんは「1番→2番」、Bさんは「2番→1番」の順で並ぶと、お互いに相手の窓口待ちになって動けなくなることがあるよね。ロックも同じで、全員が同じ順番で鍵を掛けるように決めておくと、デッドロックを起こしにくくできるんだ。

出典:独立行政法人 情報処理推進機構(IPA)令和3年度春期 情報処理安全確保支援士試験 午前Ⅱ 問21(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針