排他制御とは、コンピュータシステム、特にデータベース管理システム(DBMS)やマルチユーザー環境の文脈で使われる用語で、特定のリソース(ファイル、データベースレコード、メモリロケーションなど)に一度にアクセスし操作できるユーザーやプロセスが一人だけである状況を表します。排他制御の主な目的は、複数のユーザーやプロセスが同じリソースを同時に変更しようとした場合に発生する可能性のある、競合する変更やデータの破損を防ぐことで、データの一貫性と完全性を維持することです。
排他制御を実現するために、コンピュータシステムは、ロック、セマフォ、モニターなどのさまざまなロック機構を使用します。これらの機構は、ユーザーまたはプロセスが変更を行う前に、まずロックまたはリソースにアクセスする権利を取得し、変更が完了したらロックを解放しなければならないことを保証します。
排他制御の概念をよりよく理解するために、ある例を考えてみましょう。航空会社の予約システムで、複数の旅行代理店が同時にフライトの予約と変更を行える場合を想像してください。2人の旅行代理店が同じ座席を予約したり、予約に矛盾した変更を加えたりすることを防ぐため、システムは予約データに対する排他制御を実装する必要があります。
ある旅行代理店が特定の予約にアクセスすると、システムはその代理店による排他的制御のためにレコードをロックします。同じ予約にアクセスしようとする他のエージェントは、ロックが解除されるまで待つ必要があります。エージェントが予約の変更を終えると、ロックが解除され、他のエージェントがそのレコードにアクセスできるようになります。これにより、データの一貫性が確保され、競合する更新を防ぐことができます。
要約すると、排他制御とは、コンピュータシステム、特にデータベース管理およびマルチユーザー環境において、一度に特定のリソースにアクセスし操作できるユーザーまたはプロセスのみを許可することによって、データの一貫性と完全性を維持するために使用される概念です。排他制御は、様々なロック機構を使用して実装され、複数のユーザーやプロセスが同じリソースを同時に変更しようとした場合に発生し得る、競合する変更とデータの破損を防ぐのに役立ちます。