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

進程互斥

鎖定
兩個或兩個以上的進程,不能同時進入關於同一組共享變量的臨界區域,否則可能發生與時間有關的錯誤,這種現象被稱作進程互斥· 也就是説,一個進程正在訪問臨界資源,另一個要訪問該資源的進程必須等待。
多道程序環境下,存在着臨界資源,它是指多進程存在時必須互斥訪問的資源。也就是某一時刻不允許多個進程同時訪問,只能單個進程的訪問。我們把這些程序的片段稱作臨界區或臨界段,它存在的目的是有效的防止競爭條件又能保證最大化使用共享數據。而這些併發進程必須有好的解決方案,才能防止出現以下情況:多個進程同時處於臨界區,臨界區外的進程阻塞其他的進程,有些進程在臨界區外無休止的等待。除此以外,這些方案還不能對CPU的速度和數目做出任何的假設。只有滿足了這些條件,才是一個好的解決方案。
中文名
進程互斥
準則1
空閒讓進
準則2
忙則等待
準則3
有限等待
準則4
讓權等待

進程互斥定義

訪問臨界資源的循環進程可以這樣來描述:
Repeat
entry section
Critical sections;
exit section
Remainder section;
Until false

進程互斥實現進程互斥

為實現進程互斥,可以利用軟件的方法,也可以在系統中設置專門的同步機制來協調多個進程,但是所有的同步機制應該遵循四大準則:
1.空閒讓進 當臨界資源處於空閒狀態,允許一個請求進入臨界區的進程立即進入臨界區,從 而有效的利用資源。
2.忙則等待 已經有進程進入臨界區時,意味着相應的臨界資源正在被訪問,所以其他準備進 入臨界區的進程必須等待,來保證多進程互斥。
3.有限等待 對要求訪問臨界資源的進程,應該保證該進程能在有效的時間內進入臨界區,防 止死等狀態。
4.讓權等待 當進程不能進入臨界區,應該立即釋放處理機,防止進程忙等待。
早期解決進程互斥問題有軟件的方法和硬件的方法,如:嚴格輪換法,Peterson的解決方案,TSL指令,Swap指令都可以實現進程的互斥,不過它們都有一定的缺陷,這裏就不一一詳細説明,而後來Dijkstra提出的信號量機制則更好的解決了互斥問題。
解決進程互斥還有管程,進程消息通信等方式。