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操作无关紧要

 

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