用信号量及其PV操作处理实际问题
1.书上课后练习P187-43
semaphore empty=1;橘子精=0;糖=0;水=0;
Process product(){
While(true){
P(empty);
产生一个随机数s;代表这生产商供应哪种原料
If(s==0)V(橘子精);
If(s==1) V(水);
If(s==2) V(糖);
}
}
Process P1(){
While(true){
P(橘子精);
取走橘子精;
V(empty);
}
}
Process P2(){
while(true){
P(糖);
取走糖;
V(empty);
}
}
Process P3(){
while(true){
P(水);
取走水;
V(empty);
}
}
Coend
2.IPO问题:有多个输入进程、多个处理进程和多个输出进程。输入进程把数据逐步输入到一个有M个单位缓冲区B1上,经处理进程处理之后放到有N个单位的缓冲区B2上,由输出进程进行输出。
- 这个问题有哪些进程?进程之间有什么样的制约关系?
- 用信号量及PV操作写出这些进程之间的同步算法。