P(S)和V(S)操作原语的描述?

如题所述

P(S)和V(S)操作原语描述如下:
  void p(S)
  struct semaphore S;
  {
  S.value=S.value -1;
  if (S.value<0 ) block(S.P);
  }

  void v(S)
  struct semaphore S;
  {
  S.value=S.value+1;
  if (S.value<=0) wakeup(S.P);
  }
(PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S):①将信号量S的值减1,即S=S�8�21;
②如果S�8�60,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。)
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答