计算机操作系统第二章习题第三题的第一题
1、假定系统有3个并发进程PA、PB、PC共享缓冲池B1和B2。进程PA负责从输入设备上读信息,每读出一次数据后把它放到缓冲池B1的缓冲区中,进程PB从缓冲池B1中取出一...
1、假定系统有3个并发进程PA、PB、PC共享缓冲池B1和B2。进程PA负责从输入设备上读信息,每读出一次数据后把它放到缓冲池B1的缓冲区中,进程PB从缓冲池B1中取出一缓冲区的内容,经加工后放入缓冲池B2中,进程PC2将PB2中的数据取出并打印。设缓冲池B1和B2中缓冲区的个数分别为m和n。要求3个进程协调完成任务,使打印出来的信息与读入记录的个数、次序完全一样。
请用P、V操作,写出这3个进程的并发程序。 展开
请用P、V操作,写出这3个进程的并发程序。 展开
3个回答
展开全部
semaphore empty1,full1,empty2,full2,mutex1,mutex2;
empty1=m;empty2=n;full1=full2=0;
mutex1=mutex2=1;
parbegin
process PA{
while(1){
从输入设备上读信息;
P(empty1);
P(mutex1);
将读入的信息放入B1;
V(mutex1);
V(full1);
}
}
process PB{
while(1){
P(full1);
P(mutex1);
从B1中取出一缓冲区内容;
V(mutex1);
V(empty1);
加工内容;
P(empty2);
P(mutex2);
将加工后的内容放入B2;
V(mutex2);
V(full2);
}
}
process PC{
while(1){
P(full2);
P(mutex2);
从B2中取出内容;
V(mutex2);
V(empty2);
打印内容;
}
}
parend
empty1=m;empty2=n;full1=full2=0;
mutex1=mutex2=1;
parbegin
process PA{
while(1){
从输入设备上读信息;
P(empty1);
P(mutex1);
将读入的信息放入B1;
V(mutex1);
V(full1);
}
}
process PB{
while(1){
P(full1);
P(mutex1);
从B1中取出一缓冲区内容;
V(mutex1);
V(empty1);
加工内容;
P(empty2);
P(mutex2);
将加工后的内容放入B2;
V(mutex2);
V(full2);
}
}
process PC{
while(1){
P(full2);
P(mutex2);
从B2中取出内容;
V(mutex2);
V(empty2);
打印内容;
}
}
parend
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询