競爭危害
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() |
競爭危害(race hazard)又名競態條件、竞争条件(race condition),它旨在描述一個系統或者進程的輸出依赖于不受控制的事件出现顺序或者出现时机。此词源自於兩個訊號試著彼此競爭,來影響誰先輸出。
举例来说,如果计算机中的两个进程同时试图修改一个共享内存的内容,在没有并发控制的情况下,最后的结果依赖于两个进程的执行顺序与时机。而且如果发生了并发访问冲突,则最后的结果是不正确的。
競爭危害常見於不良設計的電子系統,尤其是邏輯電路。但它們在軟體中也比较常見,尤其是有采用多线程技术的软件。
實例
- 計算機記憶體或者磁碟裝置裡,如果同時發出大量數據指令的時候,競爭危害可能發生。計算機嘗試覆蓋相同或者舊的數據,而此時旧的數據仍在被讀取。結果可能是下面的一個或者多個情況:機器當機、出現非法操作並結束程式、錯誤的讀取舊數據、或者錯誤的寫入新數據。
- 網路上,競爭危害會在:多用戶同時試圖訪問同一個可用訊息通道時,產生。在系統同意訪問前沒有計算機能得到訊息通道被佔用的提醒。統計上說這種情況通常發生在極端長延遲時間的網路裡,譬如地球同步衛星。解決之道是用戶預先產生優先級列表。然而駭客可以利用這種競爭危害取得非法訪問網路的權利。
- 数字电路,由于逻辑部件输出对输入有一个响应延迟,因此可能在输出上出现一个不希望有的脉冲信号。被称为Electronics glitch。使用卡诺图以发现并消除这类问题。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Race_condition.svg/262px-Race_condition.svg.png)
参见
外部链接
- 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)