競態條件
出自 MBA智库百科(https://wiki.mbalib.com/)
競態條件(Race Condition)
目錄 |
競態條件是指一個在設備或者系統試圖同時執行兩個操作的時候出現的不希望的狀況,但是由於設備和系統的自然特性,為了正確地執行,操作必須按照合適順序進行。
在電腦記憶體或者存儲里,如果同時發出讀寫大量數據的指令的時候競態條件可能發生,機器試圖覆蓋相同的或者舊的數據,而此時舊的數據仍然在被讀取。結果可能是下麵一個或者多個情況:電腦死機,出現非法操作提示並結束程式,錯誤地讀取舊的數據,或者錯誤的寫入新數據。在串列的記憶體和存儲訪問能防止這種情況,當讀寫命令同時發生的時候,預設是先執行讀操作的。
網路里,競態條件會在兩個用戶同時試圖訪問同一個可用通道的時候發生,在系統同意訪問之前沒有電腦能得到通道被占用的提示。統計上說這種情況通常是發生在有相當長的延遲時間的網路里,比如使用地球同步衛星。為了防止這種競態條件發生,需要一個優先順序列表。比如用戶的用戶名在字母表裡排列靠前可以得到相對較高的優先順序。黑客可以利用競態條件這一弱點來贏得非法訪問網路的權利。
當出現如數衝突的時候,邏輯門偶爾發生競態條件。由於門的輸出狀態是有限的,相應輸入變化的時間是非零值,因此會導致一些不合適的操作。
電腦存儲器或者磁碟裝置里,如果同時發出大量數據指令的時候,競爭危害可能發生。電腦嘗試覆蓋相同或者舊的數據,而此時舊的數據仍在被讀取。結果可能是下麵的一個或者多個情況:機器當機、出現非法操作並結束程式、錯誤的讀取舊數據、或者錯誤的寫入新數據。
網路上,競爭危害會在:多用戶同時試圖訪問同一個可用訊息通道時產生。在系統同意訪問前沒有電腦能得到訊息通道被占用的提醒。統計上說這種情況通常發生在極端長延遲時間的網路里,譬如地球同步衛星。解決之道是用戶產生優先順序列表。然而黑客可以利用這種競爭危害取得非法訪問網路的權利。
數字電路,由於邏輯部件輸出對輸入有一個響應延遲,因此可能在輸出上出現一個不希望有的脈衝信號。
好幾個錯別字