用信号量及其PV操作处理实际问题

书187.43


int s1=0,s2=0,s3=0;


mutex=1;


process input


 


begin


ron1(){
拿出一种原料
if(s1)
V(s1);
if(s3)
V(s3);
if(s2)
V(s2);
V(mutex);
} zhu1(){
p(s3) P(mutex);
}
zhu2(){
P(s1)
P(mutex);
   }

zhu3(){
P(s2)
P(mutex);
   }
 end

 

2.IPO问题:有多个输入进程、多个处理进程和多个输出进程。输入进程把数据逐步输入到一个有M个单位缓冲区B1上,经处理进程处理之后放到有N个单位的缓冲区B2上,由输出进程进行输出。

  1. 这个问题有哪些进程?进程之间有什么样的制约关系?
  2. 用信号量及PV操作写出这些进程之间的同步算法。

2(1)输入、处理、输出三个进程。

 约束:输入进程需要待处理进程将数据处理、输出完毕

            输出进程需要等处理进程处理完才输出

 

int s1=0,s2=0,s3=0;
mutex=1;

process input

 

begin

r(){
while(true){
  if(mutex==1){
V(s1);
 p(mutex);
}
}
}
c()
{
while(true){
P(s1);
V(s2);
V(s1);
}
}
}
s(){
P(s2);
V(s3);
V(mutex);
}

 

posted on 2019-05-09 20:26  jslefjhw  阅读(167)  评论(0)    收藏  举报