利用訊號量和PV操作實現進程互斥和同步問題

來源:互聯網
上載者:User

在電腦作業系統中,PV操作是進程管理中的痛點。

首先應弄清PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對訊號量進行操作,具體定義如下:

    P(S):①將訊號量S的值減1,即S=S-1;

           ②如果S>=0,則該進程繼續執行;否則該進程置為等待狀態,排入等待隊列。

    V(S):①將訊號量S的值加1,即S=S+1;

           ②如果S>0,則該進程繼續執行;否則釋放隊列中第一個等待訊號量的進程。

PV操作的意義:我們用訊號量及PV操作來實現進程的同步和互斥。PV操作屬於進程的低級通訊。

什麼是訊號量?訊號量(semaphore)的資料結構為一個值和一個指標,指標指向等待該訊號量的下一個進程。訊號量的值與相應資源的使用方式有關。當它的值大於0時,表示當前可用資源的數量;當它的值小於0時,其絕對值表示等待使用該資源的進程個數。注意,訊號量的值僅能由PV操作來改變。

    一般來說,訊號量S>=0時,S表示可用資源的數量。執行一次P操作意味著請求分配一個單位資源,因此S的值減1;當S<0時,表示已經沒有可用資源,要求者必須等待別的進程釋放該類資源,它才能運行下去。而執行一個V操作意味著釋放一個單位資源,因此S的值加1;若S=<0,表示有某些進程正在等待該資源,因此要喚醒一個等待狀態的進程,使之運行下去。

    利用訊號量和PV操作實現進程互斥的一般模型是:

進程P1              進程P2           ……          進程Pn

……                  ……                           ……

P(S);              P(S);                          P(S);

臨界區;             臨界區;                        臨界區;

V(S);              V(S);                        V(S);

……                  ……            ……           ……

    其中訊號量S用於互斥,初值為1。

    使用PV操作實現進程互斥時應該注意的是:

    (1)每個程式中使用者實現互斥的P、V操作必須成對出現,先做P操作,進臨界區,後做V操作,出臨界區。若有多個分支,要認真檢查其成對性。

    (2)P、V操作應分別緊靠臨界區的頭尾部,臨界區的代碼應儘可能短,不能有死迴圈。

(3)互斥訊號量的初值一般為1。

    利用訊號量和PV操作實現進程同步

PV操作是典型的同步機制之一。用一個訊號量與一個訊息聯絡起來,當訊號量的值為0時,表示期望的訊息尚未產生;當訊號量的值非0時,表示期望的訊息已經存在。用PV操作實現進程同步時,調用P操作測試訊息是否到達,調用V操作發送訊息。

    使用PV操作實現進程同步時應該注意的是:

   (1)分析進程間的制約關係,確定訊號量種類。在保持進程間有正確的同步關係情況下,哪個進程先執行,哪些進程後執行,彼此間通過什麼資源(訊號量)進行協調,從而明確要設定哪些訊號量。

    (2)訊號量的初值與相應資源的數量有關,也與P、V操作在程式碼中出現的位置有關。

    (3)同一訊號量的P、V操作要成對出現,但它們分別在不同的進程代碼中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.