排他制御
別名:ロック
【英】lock
排他制御とは、一般に、特定のファイルやデータに対するアクセスや更新を制御することである。特にファイルやデータベースへの書き込み処理を行なう際に、データの整合性を保つためにアクセスやデータの読み書きを一時的に制限すること。
データの参照と書き込みとを常に解放しておくとすれば、二人の管理者が交互にデータを参照し、情報が共有されない状態のままで、各々の作業を反映したデータへと更新する場合が生じうる。このとき先に参照した者と、後に参照した者が、交錯した順序でデータ更新を行えば、実情とデータとは混乱して一致しなくなる恐れもある。
このような事態が生じるのを防ぐために、データを更新する際にはデータに排他制御をかけて、他の者がデータを読み書きできないようにする。そうすれば、他の者は更新完了後のデータのみ参照できるようになるので、実情との整合性が乱されることはない。その際、データの参照と更新との両方を禁ずるか、あるいは参照は許可するかが設定できる。ひとつのプログラムがデータにアクセスして処理を行う間、他の接続口には許可・不許可を示す標識が立てられる。
なお、複数のファイルにまたがって排他制御(ロック)が行われる場合には、ユーザーの一方があるファイルをロックしながら別のあるファイルのロック解除を待ち、もう一方ではその別のファイルをロックしながら先方のロックしたファイルのロック解除を待つ、そのため互いに固めつつ固められ、いつまでたっても処理が進まない、といった事態が生じうる。この現象はデッドロックと呼ばれており、プログラムの設計に問題がある場合に発生する。
|