: race condition: race hazard2



[1]

電子工学

編集

使

2ANDX NOT X X AND NOT XONX NOT ANDON

 (metastable state) 

情報処理

編集

[2]

read-modify-write

2 T1  T2 i1

(一)Integer i = 0;

(二)T1 i : 0

(三)T1 i : (i) + 1 = 1

(四)T2 i : 1

(五)T2 i : (i) + 1 = 2

i2使

(一)Integer i = 0;

(二)T1 i : 0

(三)T2 i : 0

(四)T1 i : (i) + 1 = 1

(五)T2 i : (i) + 1 = 1

i21

check-then-actcheckthenact[3]Time of check to time of use[4]
global integer A = 0;

// A の値をインクリメントして "RX" を表示する
// 端末からの割り込みが発生するたびに起動されるものとする
task Received()
{
    A = A + 1;
    print "RX";
}

// A が偶数のときだけそれを表示する
// 1秒間隔で起動されるものとする
task Timeout()
{
    if (A is divisible by 2)
    {
        print A;
    }
}

:
0
0
0
RX
RX
2
RX
RX
4
4

:

(一) Timeout 

(二) Timeout  A調 "print A" 

(三) Received 

(四) Received A "RX" 

(五) Timeout 

(六)AA使5

使

: data race調使

競合状態の実例

編集

ファイルシステム

編集

ファイルシステムにおけるファイルロックは一般的解決法を提供する。もっと面倒だが根本的な解決策としては、あるファイルについてひとつのプロセスが排他的なアクセス権を持ち(デーモンのような動作をする)、他のプロセスがそのファイルにアクセスしたいときはプロセス間通信でそのプロセスに依頼するという方式が考えられる(もちろん、その際にプロセスレベルの同期が必要である)。

ネットワーク

編集

ネットワークでは、IRCのような分散チャットネットワークがあり、ユーザーは新たなチャンネルを開始させるとそのオペレータ特権を得る。異なるサーバを使用中の2人のユーザーが同じ名前のチャンネルを同時に作成しようとする場合、それぞれのサーバは対応するユーザーそれぞれにオペレータ特権を与えてしまう。これは別のサーバからの信号が届く前に特権を与えてしまうことから発生した。なお、現在では多くのIRCサーバの実装でこの問題が解決されている。

この場合の競合状態では、リソース共有のコンセプトでネットワークの状態を隠して、各サーバが自由に状態を変更した後でネットワーク上のサーバにその変化を通知している。しかし、ネットワークによる遅延(レイテンシ)があるためにこのような競合状態が発生するのである。この競合状態を解決するには、何らかの中心となるシステムを用意してチャンネルの生成と特権の付与を集中管理する必要がある。ユーザーがそのような解決策を受け入れられない場合、競合状態を検出して後からそれを訂正するなどの処理が必要となる。

人命に関わるシステム

編集

25Therac-25OS25X[5][6]65[7]

 FirstEnergy 32003

コンピュータセキュリティ

編集

使使

非同期有限状態機械

編集

常に1ビットだけ入力が変化すると仮定している非同期有限状態機械は、同時に複数の入力ビットが変化すると障害が発生する。これに対する解決策としては、マシンを設計する際に各状態が検知する入力ビットの変化を1ビットに限定することである。

種別

編集







2使



2

脚注

編集
  1. ^ 競合状態(レースコンディション)とは - 意味をわかりやすく - IT用語辞典 e-Words
  2. ^ Anomalous behavior due to unexpected critical dependence on the relative timing of events. FOLDOC. (2002) race condition.
  3. ^ In this idiom, the code first checks a condition, and then acts based on the result of the condition. Yu Lin, et al.. (2013) CHECK-THEN-ACT Misuse of Java Concurrent Collections. 10.1109/ICST.2013.41
  4. ^ Secure programs must determine if a request should be granted, and if so, act on that request. There must be no way for an untrusted user to change anything used in this determination before the program acts on it. This kind of race condition is sometimes termed a time of check - time of use (TOCTOU) race condition. Secure Programming HOWTO
  5. ^ 「史上最悪のソフトウェアバグ」ワースト10を紹介(上) | WIRED.jp
  6. ^ History's Worst Software Bugs | WIRED
  7. ^ ソフトウェアのバグによって6件の重大な放射線事故が引き起こされた「セラック25事故」とは? - GIGAZINE

関連項目

編集

外部リンク

編集

参考文献

編集