主观题:h399.今有3个并发进程R、M、P,它们共享一个缓冲器B。进程R负责从输入设备读入信息,每读一个记录后把它存放在缓冲器B中。进程M在缓冲器B......
今有3个并发进程R、M、P,它们共享一个缓冲器B。进程R负责从输入设备读入信息,每读一个记录后把它存放在缓冲器B中。进程M在缓冲器B中加工进程R存入的记录。进程P把加工后的记录打印出来。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可以存放一个新的记录。为协调它们的工作,采用PV操作进行管理。
答案:解:
semaphore SR,SM,SP;
SR=1; SM=0; SP=0;
parbegin
Process R
{
while (1) {
从输入设备读入信息X;
P(SR); //看看缓冲区B是否是空的
B=X; //信息存入缓冲区B
V(SM); //通知M,缓冲区B中已有记录
}
}
Process M(5分)
{
while (1) {
P(SM); //测试R是否已在B中存放信息
在缓冲器B中加工进程R存入的记录;
V(SP); //通知P缓冲区B中的信息已可打印
}
}
Process P
{
while (1) {
P(SP); //测试M是否已将信息加工好
从B中取M加工后的信息Y;
V(SR); //通知R,缓冲区B已可房信息
Print(Y); //打印信息Y
}
}
parend(5分)
答案:解:
semaphore SR,SM,SP;
SR=1; SM=0; SP=0;
parbegin
Process R
{
while (1) {
从输入设备读入信息X;
P(SR); //看看缓冲区B是否是空的
B=X; //信息存入缓冲区B
V(SM); //通知M,缓冲区B中已有记录
}
}
Process M(5分)
{
while (1) {
P(SM); //测试R是否已在B中存放信息
在缓冲器B中加工进程R存入的记录;
V(SP); //通知P缓冲区B中的信息已可打印
}
}
Process P
{
while (1) {
P(SP); //测试M是否已将信息加工好
从B中取M加工后的信息Y;
V(SR); //通知R,缓冲区B已可房信息
Print(Y); //打印信息Y
}
}
parend(5分)