トップページ >
鉄道関連用語集 >
デッドロック
デッドロックとは、複数の使用者が、1人しか占有することのできない対象を同時に占有しようとした際に発生する処理の停止状態である。
本来は情報工学の分野で使用されることの多い用語であるが、鉄道界隈においても、単線の同一区間に複数の列車が進入しようとして発生する類似の事態をデッドロックと呼称する。
情報工学におけるデッドロック
例えば、あるプログラムAが、ファイルXとファイルYを同時に書き換える処理を行うとする。
通常、こうした処理では、書き換えの最中に他のプログラムがそのファイルにアクセスすると予期せぬ不具合が発生するため、書き換えの直前に対象ファイルへの他のプログラムがアクセスするのをブロックする処理(ファイルロック)が行われる。
したがって、実際の処理は、
プログラムAがファイルXをロック
↓
プログラムAがファイルYをロック
↓
プログラムAがファイルXとファイルYに書き込み
↓
プログラムAがファイルXとファイルYのロックを解除
という流れになる。
しかし、ここで、同じようにファイルXとファイルYを書き換えようとしているプログラムBが同時に動いており、なおかつ、プログラムBが、ファイルYをファイルXより先にロックした場合、以下のようなトラブルが発生する。
プログラムAがファイルXをロック
↓
プログラムBがファイルYをロック
↓
プログラムAはファイルYをロックしようとするが、ファイルYは既にプログラムBにロックされている
↓
プログラムBもファイルXをロックしようとするが、ファイルXはプログラムAにロックされている
↓
どちらのプログラムも処理が停止してしまう
このトラブルこそがデッドロックであり、プログラムAとプログラムBのどちらにもデッドロックの対策が行われていない場合、双方のプログラムはこのまま永久に処理が停止したままとなってしまう。
鉄道におけるデッドロック
鉄道においても、単線という同時使用不可能な対象を複数の列車が同時に占有しようとすることにより、同様のトラブルが発生する。
例えば、ある上り列車Aと下り列車Bが、2線の交換可能駅Xに停車しているとする。
この状態で下り方から駅Xに向かってくる上り列車Cが存在している場合、下り列車Bは駅Xを発車することができず、また、上り列車Cは上り列車Aが発車するまで駅Xには進入できない。
同様に、上り方から駅Xに向かってくる下り列車Dが存在する場合、上り列車Aは駅Xを発車することはできず、また、下り列車Dは下り列車Bが発車するまで、駅Xに進入できない。
ここで、もし上り列車Cと下り列車Dが同時にやってきた場合、駅Xとその前後では全ての列車が移動不能になってしまうことがおわかりだろうか。
上り列車Aは下り列車Dのせいで発車できず、その下り列車Dは下り列車Bのせいで駅に進入できず、さらに下り列車Bは上り列車Cのせいで発車できず、上り列車Cは上り列車Aのせいで駅に進入できない。
まさにデッドロックである。
もちろん、多くの鉄道会社では、こうした事態を避けるため、列車の運転状況を管理する指令員には経験豊富なベテラン社員を任命しており、実際にデッドロックが発生することはまずない。
正確な時間に列車が来ると称賛される国内の多くの鉄道網は、鉄道事業者のこうした体制作りに支えられているのである。
広告(広告の募集は現在行っていません)