天天看点

信号量和PV操作

信号量s:就是对于进程来说,就是一个资源的数量的,信号量是一个整数,信号量为正数,表示该类的资源可以使用的个数,信号量为0 的时候,表示该资源没有了!但是如果信号量为负的时候,表示该资源的没有,但是还有信号量的绝对值那么多的进程在等待这个资源。

  关于信号量的操作:有PV操作。

   P操作:P操作是原语操作,P操作在执行的时候,不能被打断的,

  P操作的内部过程

   void P(Semaphore s)

  {

     s--;

     if(s< 0)

    {

         wait(s); //进程调用wait进行自我封锁,进入等待状态;

   }

  }

P操作的含义是将信号量s减少1,如果这时s< 0,表示原先s最多是0,已经没有医院可以用了,因此这使得进程在信号量上等待,自己进入等待的状态。

V操作的内部的表示的过程

 void  V (Semphore s)

{

    s++;

  if(s <0)

  revoke(s);// 该进程担负唤醒在信号量s上的等待的进程;

   

}

继续阅读