pv进程同步.docVIP

  • 7
  • 0
  • 约3.58万字
  • 约 9页
  • 2016-08-22 发布于河南
  • 举报
pv进程同步

pv进程同步 PV原语 对一个信号量变量可以进行两种原语操作:P操作和V操作,它们分别定义如下: P(semaphore s) { s.value--; //将信号量值减1 if (s.value 0) //已经没有可用资源 asleep(s.queue); } V(semaphone s); { s.value++; //将信号量值加1 if(s.value = 0) //队列中有进程在等待 wakeup(s.queue) } 复制代码 其中: 1. asleep(s.queue) 复制代码 表示将该进程的PCB加入到 s.queue尾部,将该进程阻塞。 2. wakeup(s.queue) 复制代码 表示唤醒s.queue头部的一个进程。 PV操作是不可中断的程序段,称为原语,多个进程不能同时执行,一般用硬件方法保证。一个信号量只能置一次初值,以后只能对之进行P操作或V操作(特别是不能进行判断)。 信号量一般有两种用法,即资源信号量和互斥信号量。 1. 资源信号量用于表示资源数目,初始值赋值为资源总数,要是使用资源

文档评论(0)

1亿VIP精品文档

相关文档