同時に複数の処理が動くシステムでは、
「排他制御」という言葉が必ず出てきます。
応用情報技術者試験でも、
排他制御は頻出テーマですが、
どこで必要になるのかを誤解しやすい分野でもあります。
この回では、
排他制御が必要になるポイントを、
応用情報視点で整理します。
排他制御が必要になる理由
排他制御の目的は、
同時処理による矛盾を防ぐことです。
- 同じデータを同時に更新する
- 状態を前提にした処理が重なる
こうした状況では、
順番が保証されないと、
結果が不定になります。
すべてに排他をかければ安全なのか
直感的には、
「全部ロックすれば安全」と考えがちです。
しかし、排他制御には代償があります。
- 同時処理性能が落ちる
- 待ち時間が増える
- デッドロックのリスクが高まる
応用情報では、
必要な場所に、必要な範囲でかける
という考え方が重要になります。
応用情報で問われるポイント
午後問題では、
- 排他が足りずに整合性が崩れる
- 排他をかけすぎて性能が落ちる
という両極端なケースが描かれます。
どこが共有資源で、
どこが独立しているのかを
見抜けるかが問われます。
排他制御とトランザクションの関係
排他制御は、
トランザクションと密接に関係しています。
- トランザクションの範囲が広いほど
排他の影響も広がる - 範囲が狭すぎると
整合性を守れない
応用情報では、
この関係性を
構造として理解しているかが重要です。
実務でよくある失敗
実務では、
- 排他を意識せずに同時更新を許してしまう
- 怖くて広範囲にロックをかけてしまう
といった失敗が起きがちです。
応用情報は、
その失敗を避けるための
判断軸を示しています。
まとめ
- 排他制御は同時処理の矛盾を防ぐ
- かけすぎても、足りなくても問題
- 応用情報は範囲と影響を問う
排他制御を見るときは、
「何を守るための排他か」
を意識することが重要です。
次回予告
次回は、
「論理設計と物理設計を分ける意味」
を扱います。
設計レイヤの話に進みます。


コメント