臨界區問題


臨界區是一段程式碼段,其中可以訪問共享變數。臨界區需要原子操作,即一次只有一個程序可以在其臨界區執行。所有其他程序都必須等待才能在其臨界區執行。

下圖展示了臨界區的示意圖:

 Critical Section.png

在上圖中,入口段處理進入臨界區。它獲取程序執行所需的資源。出口段處理退出臨界區。它釋放資源,並通知其他程序臨界區已釋放。

臨界區問題的解決方案

臨界區問題需要一個解決方案來同步不同的程序。臨界區問題的解決方案必須滿足以下條件:

  • 互斥

    互斥意味著任何時候只有一個程序可以在臨界區內。如果任何其他程序需要臨界區,則它們必須等待直到臨界區空閒。

  • 進展

    進展意味著如果一個程序沒有使用臨界區,那麼它不應該阻止任何其他程序訪問它。換句話說,任何程序如果臨界區空閒,都可以進入臨界區。

  • 有界等待

    有界等待意味著每個程序都必須有有限的等待時間。它不應該無限期地等待訪問臨界區。

更新於:2020年1月31日

82K+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告