PV操作初學理解

題記:

最近一直在學習操作系統,學到pv操作這裏的時候想更好的理解一下

正文:

概要:

  1. pv操作只作用於併發進程,也就是說在非併發進程裏面基本不會使用。
  2. 而在併發進程使用中就會出現共享資源,在共享資源的使用中就出現了很多問題,

P操作:申請資源(pulse?)

V操作:釋放資源

簡易的pv操作實例:

題目:公路上有5輛車,有2輛向左,有3輛向右行(如圖)

進行P操作的過程就是:當A車過路時,只剩下2個車道,也就是當A進程運行的時候,資源只剩下2個,依次類推,當B車和A車同時過路的時候就只剩下一個資源了,如果加+C就是3個資源都同時被使用,如果此時有對向來往的車輛就要等待,也就出現了問題。例如D車再來的時候也就存在了一個等待資源

生產者與消費者問題:

//當生產者時
{      do
                      producer an item in nextp;
                      P(empty); //empty表示緩衝區是否爲空,初始值爲1
                       P(mutex);
                       buffer(in)=nextp;//產品送往緩衝區
                       in=(in+1) mod  n
                        V(mutex);
                       V(full);//full表示緩衝區是否爲滿,初始值爲0
                while (1);
        }
//當消費者時
 {    do
                   P(full);//同理
                   P(mutex);
                   nextp=buffer(out);//out(從緩衝區中取出一個產品)
                   out=(out+1) mod  n
                   V(mutex);
                   V(empty);//同理
                   consume the item;
           while (1);
     }

PV操作的優缺點:

3、P.V操作的優缺點
優點:
簡單,而且表達能力強(用P.V操作可解決任何同步互斥問題)
缺點:
不夠安全;P.V操作使用不當會出現死鎖;遇到複雜同步互斥問題時實現複雜

PV操作必須成對出現:

當爲互斥操作時,它們同處於同一進程;
當爲同步操作時,則不在同一進程中出現;

如果P(S1)和P(S2)兩個操作在一起,那麼P操作的順序至關重要,一個同步P操作與一個互斥P操作在一起時,同步P操作在互斥P操作前,而兩個V操作無關緊要

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章