操作系统习题-全部
wait(full1);
wait(mutex1);
Take a data form buffer1;
Add to ch1;
signal(mutex1);
signal(empty1);
calculate ch1;
wait (empty2);
wait(mutex2);
Take a data form ch1;
Add to buffer2;
signal (mutex2);
signal (full2);
until false
end
OutP:begin (3分)
repeat
wait(full2);
wait(mutex2);
Take a data from buffer2;
Add to printer controler;
signal(mutex2);
signal(empty2);
start printer;
until false
end
假定有三个并发进程R,Wo和We共享一个缓冲器Bo和Be,而Bo和Be中每次只能存放一个数。R从输入设备上读入数据,并判断此数据,若此数是奇数,且Bo中无数时,R可以并将数据存放到Bo中。若此数是偶数,且Be中无数据,R可以并将数据存放到Be中。进程Wo与We分别只能对Bo和Be每次存入缓冲器的数据只能打印一次。Wo和We都不能从空的缓冲器中取数。试用信号量及wait和signal原语完成R、Wo、We的同步操作。(定义信号量时应说明其意义及初值)。