競合状態 wikipedia|無料辞書
競合状態(
レースコンディション; 英:Race Condition、または
レースハザード; 英:Race Hazard とも)とは、
システムや処理過程の問題であり、処理過程の出力結果がイベントなどの順序やタイミングと予期しない(かつ危険な)依存関係にある場合をいう。本来の意味は、2つの電気信号が競合していずれかが出力に影響を与える状態である。
◆電子工学
競合状態の典型例は
論理回路システムで入力が変化するときに発生するものである。ある出力が入力の状態に依存する場合、それは定常状態の信号に関して定義されるだけかもしれない。入力の状態が変化するとき、電子システムの物理特性によって出力が変化するまである程度の遅延が生じる。その間、出力は定義された状態以外の不安定な状態となる可能性がある。このような一時的な障害を許すシステムもあるが、例えばその出力信号が他のメモリなどを含むシステムのクロックとして使用される場合、システムは設計されたものとは異なった振る舞いをするかもしれない。
例えば、2入力ANDゲートで論理信号 X とその否定 NOT X を入力にしている場合を考えてみる。理論上、その出力(X AND NOT X)はONになることはない。しかし、信号 X がそのまま入力される側と NOT ゲートを通して入力される側で遅延時間に差があった場合、短い時間ではあるが、一時的にANDゲートの出力がONになることがある。
適切な設計技法により設計者は競合状態を認識して事前にそれを排除することができる(
カルノー図)。他にも不安定状態(Metastable state)が発生することもある。
◆情報処理
競合状態はソフトウェアでも発生する。特に複数の
プロセスや
スレッドが通信しながら動作する場合に発生する。
以下に単純な例を示す。
2つのスレッド T1 と T2 がそれぞれグローバルな整数を 1 ずつインクリメントしていくとする。理想的には以下のような順序で処理したい。
# 整数 i = 0;
# T1 が i の値を読み、レジスタに格納する : 0
# T1 が i の値をインクリメントする : (i の現在値) + 1 = 1
# T2 が i の値を読み、レジスタに格納する : 1
# T2 が i の値をインクリメントする : (i の現在値) + 1 = 2
この例では、i の最終的な値として 2 を期待している。しかし、二つのスレッドは並行に動作し、ロックや同期などの機構を使用しないため、処理結果は間違ったものとなる可能性がある。以下にそのような場合のシナリオを示す。
# 整数 i = 0;
# T1 が i の値を読み、レジスタに格納する : 0
# T2 が i の値を読み、レジスタに格納する : 0
# T1 が i の値をインクリメントする : (i の現在値) + 1 = 1
# T2 が i の値をインクリメントする : (i の現在値) + 1 = 1
i の最終値は期待されている 2 ではなく 1 となる。
別の例として以下の
擬似コードでは、二つのタスクを示している。
global integer A = 0;
// A の値をインクリメントして "RX" を表示する
// 端末からの割り込みが発生するたびに起動されるものとする
task Received()
// A が偶数のときだけそれを表示する
// 1秒間隔で起動されるものとする
task Timeout()
-->
出力結果は以下のようになるだろう:
0
0
0
RX
RX
2
RX
RX
4
4
ここで、以下のような順序でイベントが発生する場合を考える:
# タイムアウトによってタスク Timeout が起動される。
# タスク Timeout が A を調べ、偶数だったので、次の "print A" を実行しようとする。
# 端末から割り込みが発生し、タスク Received に切り換えられる。
# タスク Received が最後まで動作し、A をインクリメントして "RX" を表示する。
# 制御がタスク Timeout に戻される。
# そのタスクは A を表示するが、そのときに A の現在値を使用するため、5 が表示されてしまう。
ミューテックスは、コンカレントプログラミングにおけるこのような問題に対処するために使われる。
◇競合状態の実例
ファイルシステム
ファイルシステムにおける
ファイルロックは一般的解決法を提供する。もっと面倒だが根本的な解決策としては、あるファイルについてひとつのプロセスが排他的なアクセス権を持ち(
デーモンのような動作をする)、他のプロセスがそのファイルにアクセスしたいときは
プロセス間通信でそのプロセスに依頼するという方式が考えられる(もちろん、その際にプロセスレベルの同期が必要である)。
ネットワーク
ネットワークでは、
IRCのような分散チャットネットワークがあり、ユーザーは新たなチャンネルを開始させるとそのオペレータ特権を得る。異なるサーバを使用中の2人のユーザーが同じ名前のチャンネルを同時に作成しようとする場合、それぞれのサーバは対応するユーザーそれぞれにオペレータ特権を与えてしまう。これは別のサーバからの信号が届く前に特権を与えてしまうことから発生した。なお、現在では多くのIRCサーバの実装でこの問題が解決されている。
この場合の競合状態では、
リソース共有のコンセプトでネットワークの状態を隠して、各サーバが自由に状態を変更した後でネットワーク上のサーバにその変化を通知している。しかし、ネットワークによる遅延(レイテンシ)があるためにこのような競合状態が発生するのである。この競合状態を解決するには、何らかの中心となるシステムを用意してチャンネルの生成と特権の付与を集中管理する必要がある。ユーザーがそのような解決策を受け入れられない場合、競合状態を検出して後からそれを訂正するなどの処理が必要となる。
人命に関わるシステム
競合状態の特に問題となる例として、放射線療法機器(
Therac-25)の事故がある。他の例として、オハイオ州の FirstEnergy 社の電力管理システムの事故がある。このシステムは警報装置に競合状態を発生する問題があった。3本のたるんだ送電線が同時に外されたとき、競合状態が発生して監視要員に警報が届かなかった。このソフトウェア上の問題によって
2003年北アメリカ大停電が発生した。
◇コンピュータセキュリティ
述語(例えば認証のための真理値を返す演算子か関数)のチェックと使用にかかわる競合状態というものがある。チェック時点と使用時点で状態を変更できるなら、競合状態が発生する。このような競合状態を発生させるバグが
コンピュータセキュリティに関わるコードに存在すると、
セキュリティホールになる可能性がある。例えば、ファイルのアクセス権をチェックした後で実際のファイルオープンをする場合(あくまでも
オペレーティングシステム内のこと)、チェックとオープンの間にファイルをすりかえる(例えば
シンボリックリンクにする)と通常アクセスできないファイルにアクセスできる(これは、オペレーティングシステムにバグがある場合の話であって、一般に可能という話ではない)。
◇非同期有限状態機械
常に1ビットだけ入力が変化すると仮定している非同期
有限状態機械は、同時に複数の入力ビットが変化すると障害が発生する。これに対する解決策としては、マシンを設計する際に各状態が検知する入力ビットの変化を1ビットに限定することである。
種別
;静的競合状態 : ある信号とその否定信号が入力として与えられるときに発生する可能性がある。
;動的競合状態 : 一回の遷移が期待されているときに多重遷移が発生する。これはゲート間の相互作用で発生する。2段階より多いゲートを使わないことで防ぐことができる。
;基本競合状態 : 全体のフィードバック伝播時間より短い間隔で2回入力が変化すると発生する。入力信号に何らかの遅延要素を取り入れることで解決する場合がある。
◆関連項目
・競合状態 page1
■競合状態を他のサイトで調べる
@[競合状態]暇つぶしマスター
A[競合状態]性病マスター
B[競合状態]ダイエットNAVI
C[競合状態]価格比較マスター
D[競合状態]肛門科マスター
E[競合状態]産婦人科科マスター
F[競合状態]結婚情報マスター
■バイク関連検索
■バイクWikipedia情報
おすすめサイト
■ダイエット
美容・ダイエットならオマカセ!ダイエットNAVI
■性病
性病?お悩み・病院検索は性病マスター
■暇つぶし
いま、ヒマ?暇つぶしマスターで暇つぶし★
■価格比較
気になる商品の価格を比較!価格比較マスター
■懸賞
カンタン応募で豪華商品が当たる!アタックchance!
■バイト
駅チカバイトなら楽ラクバイト.com
■求人
地域を選んでバイト、仕事を探せる!!バリバリ仕事!.com
■アルバイト
バイトをこだわり条件で探す!こだわりキャリア.com
■求人情報
自分に合ったバイト探し★Myピッタリ仕事.com
■バイト
"資格"でバイト探し!天職さがそ!.com
■バイト
いいバイト、あるある!aruアルバイト.com
■懸賞
アタックchanceで懸賞チャレンジ!
■産婦人科
病院探し!病気相談なら産婦人科マスター
■出産
妊娠!出産!育児!赤ちゃんマスターでお悩み解決!
■外為
外為・為替レートをチェック!外為マスター
■結婚
結婚マスター!結納・両親・マリッジブルーノお悩みに…
■先物
先物・取引!詳しくなる!先物マスター
■資格
資格!キャリアアップ!資格GETマスター★
■小説
小説・書籍ならオマカセ!小説マスター
■スポーツ
スポーツ!健康!デトックス!スポーツマスターにオマカセ!
■葬儀
お葬式・葬祭のことなら・・・葬儀マスター
■痩身
ダイエット・デトックス・痩身!スリムGETマスター
■脱毛
パーフェクトBODY目指せ!脱毛マスター
■着うた
最新!人気!定番!うたマスターで着うたCHECK!
■デコメ
キラ系かわいいデコメCHECK!デコメマスター
■転職
履歴書・マナー・転職テク!就職情報なら転職マスター
■バイク
ハーレー!改造!バイクマスターにオマカセ!
■派遣
派遣!転職!キャリアアップ!転職マスター
■ペット
カワイイ犬・猫を飼いたい!ペットマスター
■豊胸
薄着の季節…お悩み解決!豊胸マスター
■包茎
包茎のお悩みなら…包茎マスター
■レシピ
今晩のおかず…料理・レシピならレシピマスター
■モバグラMIXの人気キーワード
モバグラMIXの人気キーワード一覧
■外為
外為情報をいち早く!外為LINK
■求人
転職・就活なら求人LINKにオマカセ!
■金融
金融業界の勉強するなら!金融LINK
■車
TOYOTA!HONDA!BMW!車のコトなら車LINK
■モバグラMIXの人気キーワード2
モバグラmixの人気キーワード2
■モバグラMXIの人気キーワード3
モバグラMIXの人気キーワード3
■モバグラMIXの人気キーワード4
モバグラMIXの人気キーワード4
■モバグラMIXの人気キーワード5
モバグラMIXの人気キーワード5
■モバグラMIXの人気キーワード6
モバグラMIXの人気キーワード6
■モバグラMIXの人気キーワード7
モバグラMIXの人気キーワード7
■モバグラMIXの人気キーワード8
モバグラMIXの人気キーワード8
■モバグラMIXの人気キーワード9
モバグラMIXの人気キーワード9
■モバグラMIXの人気キーワード10
モバグラMIXの人気キーワード10
■モバグラMIXの人気キーワード11
モバグラMIXの人気キーワード11
■モバグラMIXの人気キーワード12
モバグラMIXの人気キーワード12
■モバグラMIXの人気キーワード13
モバグラMIXの人気キーワード13
■モバグラMIXの人気キーワード14
モバグラMIXの人気キーワード14
■モバグラMIXの人気キーワード15
モバグラMIXの人気キーワード15
■モバグラMIXの人気キーワード16
モバグラMIXの人気キーワード16
■モバグラMIXの人気キーワード17
モバグラMIXの人気キーワード17
■車査定
車査定.com
■献立レシピ1
レシピが月額99円
■献立レシピ2
レシピが月額99円
~バイク-master.com [05/27update] トップへ
(C)バイク-master.com