進程互斥

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

定義

訪問臨界資源的循環進程可以這樣來描述:

Repeat

entry section

Critical sections;

exit section

Remainder sectioni;

Until false

實現進程互斥

為實現進程互斥,可以利用軟體的方法,也可以在系統中設定專門的同步機制來協調多個進程,但是所有的同步機制應該遵循四大準則:

1.空閒讓進 當臨界資源處於空閒狀態,允許一個請求進入臨界區的進程立即進入臨界區,從 而有效的利用資源。

2.忙則等待 已經有進程進入臨界區時,意味著相應的臨界資源正在被訪問,所以其他準備進 入臨界區的進程必須等待,來保證多進程互斥。

3.有限等待 對要求訪問臨界資源的進程,應該保證該進程能在有效的時間內進入臨界區,防 止死等狀態。

4.讓權等待 當進程不能進入臨界區,應該立即釋放處理機,防止進程忙等待。

早期解決進程互斥問題有軟體的方法和硬體的方法,如:嚴格輪換法,Peterson的解決方案,TSL指令,Swap指令都可以實現進程的互斥,不過它們都有一定的缺陷,這裡就不一一詳細說明,而後來Dijkstra提出的信號量機制則更好的解決了互斥問題。

解決進程互斥還有管程,進程訊息通信等方式。

相關詞條

相關搜尋

熱門詞條

聯絡我們