複製鏈接
請複製以下鏈接發送給好友

競爭危害

鎖定
競爭危害 (race hazard) 又名競態條件 (race condition)。旨在描述一個系統或者進程的輸出展現無法預測的、對事件間相對時間的排列順序的致命相依性。
中文名
競爭危害
外文名
race hazard
別    名
競態條件
常見於
不良設計的電子系統

目錄

競爭危害簡介

網絡上,競爭危害會在多用户同時試圖訪問同一個可用訊息通道時產生。再系統同意訪問前沒有計算機能得到訊息通道被佔用的提醒。統計上説這種情況通常發生在極端長延遲時間的網絡裏,譬如地球同步衞星。解決之道是用户於先預產生優先級列表。然而黑客可以利用這種競爭危害取得非法訪問網絡的權利。
競爭冒險(race hazard)又名競態條件競爭條件(race condition),它旨在描述一個系統或者進程的輸出依賴於不受控制的事件出現順序或者出現時機。此詞源自於兩個信號試着彼此競爭,來影響誰先輸出。
舉例來説,如果計算機中的兩個進程同時試圖修改一個共享內存的內容,在沒有併發控制的情況下,最後的結果依賴於兩個進程的執行順序與時機。而且如果發生了併發訪問衝突,則最後的結果是不正確的。
競爭冒險常見於不良設計的電子系統,尤其是邏輯電路。但它們在軟件中也比較常見,尤其是有采用多線程技術的軟件。 [1] 

競爭危害實例

  1. 計算器存儲器或者磁盤設備裏,如果同時發出大量數據指令的時候,競爭冒險可能發生。計算器嘗試覆蓋相同或者舊的數據,而此時舊的數據仍在被讀取。結果可能是下面的一個或者多個情況:機器死機、出現非法操作並結束程序、錯誤的讀取舊數據、或者錯誤的寫入新數據。
  2. 網上上,競爭冒險會在:多用户同時試圖訪問同一個可用消息溝道時,產生。在系統同意訪問前沒有計算器能得到消息溝道被佔用的提醒。統計上説這種情況通常發生在極端長延遲時間的網上裏,譬如地球同步衞星。解決之道是用户預先產生優先級列表。然而黑客可以利用這種競爭冒險獲取非法訪問網上的權利。
  3. 數字電路,由於邏輯部件輸出對輸入有一個響應延遲,因此可能在輸出上出現一個不希望有的脈衝信號。被稱為en:glitch。使用卡諾圖以發現並消除這類問題。 [1] 

競爭危害併發控制

在計算機科學,特別是程序設計、操作系統多處理機數據庫等領域,併發控制(英語:Concurrency control)是確保及時糾正由併發操作導致的錯誤的一種機制。
數據庫管理系統(DBMS)中的併發控制的任務是確保在多個事務同時存取數據庫中同一數據時不破壞事務的隔離性和統一性以及數據庫的統一性。下面舉例説明併發操作帶來的數據不一致性問題:
  • 現有兩處火車票售票點,同時讀取某一趟列車車票數據庫中車票餘額為 X。兩處售票點同時賣出一張車票,同時修改餘額為 X -1寫回數據庫,這樣就造成了實際賣出兩張火車票而數據庫中的記錄卻只少了一張。
產生這種情況的原因是因為兩個事務讀入同一數據並同時修改,其中一個事務提交的結果破壞了另一個事務提交的結果,導致其數據的修改被丟失,破壞了事務的隔離性。併發控制要解決的就是這類問題。
封鎖時間戳、樂觀併發控制和悲觀併發控制是併發控制主要採用的技術手段。 [2] 
參考資料
  • 1.    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
  • 2.    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