クリティカルセクション 【critical section】
概要
クリティカルセクション(critical section)とは、複数のプログラムが並行して実行されているとき、共有資源に同時にアクセスすることで不具合が生じる危険があるプログラム上の箇所のこと。また、そのような箇所を指定して同時に実行しないようにする制御を指すこともある。マルチタスクやマルチスレッドによりコンピュータ上で同時に複数のプログラム(の流れ)が実行されているとき、ある特定のメモリ領域やデータベース、ストレージ、周辺機器などの共有資源を対象に同時に処理を行うと、互いに相手の処理に干渉されて記録内容が破壊されたり、処理内容に矛盾が生じることがある。
プログラム上でそのような事態が生じうる箇所のことをクリティカルセクションという。クリティカルセクションは同時に実行されることがないよう、ロック機構などを用いて排他制御を行い、一度に一つのスレッドやプロセスしか資源にアクセスできないようにする必要がある。
オペレーティングシステム(OS)やプログラミング言語にはクリティカルセクションを適切に制御するための機能が組み込まれている場合がある。コード中の特定の範囲を指定して資源の占有や開放、他のコードに占有されている場合の実行待ちなどの処理を追加することができる。
(2020.4.10更新)