
競爭危害
跳至導覽
跳至搜尋
![]() |
競爭危害(race hazard)又名競態條件、競爭條件(race condition),它旨在描述一個系統或者進程的輸出依賴於不受控制的事件出現順序或者出現時機。此詞源自於兩個訊號試著彼此競爭,來影響誰先輸出。
舉例來說,如果電腦中的兩個行程同時試圖修改一個共享記憶體的內容,在沒有並行控制的情況下,最後的結果依賴於兩個行程的執行順序與時機。而且如果發生了並行存取衝突,則最後的結果是不正確的。
競爭危害常見於不良設計的電子系統,尤其是邏輯電路。但它們在軟體中也比較常見,尤其是有採用多執行緒技術的軟體。
實例[編輯]
- 計算機記憶體或者磁碟裝置裡,如果同時發出大量數據指令的時候,競爭危害可能發生。計算機嘗試覆蓋相同或者舊的數據,而此時舊的數據仍在被讀取。結果可能是下面的一個或者多個情況:機器當機、出現非法操作並結束程式、錯誤的讀取舊數據、或者錯誤的寫入新數據。
- 網路上,競爭危害會在:多使用者同時試圖存取同一個可用訊息通道時,產生。在系統同意存取前沒有計算機能得到訊息通道被佔用的提醒。統計上說這種情況通常發生在極端長延遲時間的網路裡,譬如地球同步衛星。解決之道是使用者預先產生優先級列表。然而駭客可以利用這種競爭危害取得非法存取網路的權利。
- 數位電路,由於邏輯部件輸出對輸入有一個回應延遲,因此可能在輸出上出現一個不希望有的脈衝訊號。被稱為Electronics glitch。使用卡諾圖以發現並消除這類問題。

邏輯電路中的競態條件.這裡,∆t1與∆t2表示邏輯單元的傳播延遲.當輸入值(A)改變,電路輸出有一個很短的峰持續(∆t1+∆t2) - ∆t2 = ∆t1.
參見[編輯]
外部連結[編輯]
- Starvation and Critical Race Analyzers for Ada in IEEE Transactions on Software Engineering, August 1990 (vol. 16 no. 8) pp. 829–843 by G.M. Karam and R.J.A. Buhr
- Paper "Algorithms for the Optimal State Assignment of Asynchronous State Machines (頁面存檔備份,存於網際網路檔案館)" by Robert M. Fuhrer , Bill Lin and Steven M. Nowick
- Paper "A Novel Framework for Solving the State Assignment Problem for Event-Based Specifications (頁面存檔備份,存於網際網路檔案館)" by Luciano Lavagno , Cho W. Moon , Robert K. Brayton and Alberto Sangiovanni-Vincentelli
- Article "Secure programmer: Prevent race conditions—Resource contention can be used against you (頁面存檔備份,存於網際網路檔案館)" by David A. Wheeler
- Chapter "Avoid Race Conditions (頁面存檔備份,存於網際網路檔案館)"(Secure Programming for Linux and Unix HOWTO)
- Race conditions, security, and immutability in Java, with sample source code and comparison to C code, by Chiral Software
- Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)