主观题:h406.在一个实时系统中,有两个进程P和Q,它们循环工作。P每隔1秒由脉冲寄存器获得输入,并把它累加到整型变量W上,同时清除脉冲寄......
在一个实时系统中,有两个进程P和Q,它们循环工作。P每隔1秒由脉冲寄存器获得输入,并把它累加到整型变量W上,同时清除脉冲寄存器。Q每隔1小时输出整型变量W的值并把它复位。系统提供了标准例程INPUT和OUTPUT供I/O,提供了延时系统调用Delay(seconds)。试采用信号量和P、V操作写出两个并发进程循环工作的算法。
答案:解:
semaphore mutex = 1;
int W = 0;
parbegin
process P
{
while (1) {
Delay(1);
x = INPUT( );
P(mutex);
W = W+x;
V(mutex);
清除脉冲寄存器;(5分)
}
}
process Q
{
while (1) {
Delay(3600);
P(mutex);
OUTPUT(W);
W = 0;
V(mutex);(5分)
}
}
parend
答案:解:
semaphore mutex = 1;
int W = 0;
parbegin
process P
{
while (1) {
Delay(1);
x = INPUT( );
P(mutex);
W = W+x;
V(mutex);
清除脉冲寄存器;(5分)
}
}
process Q
{
while (1) {
Delay(3600);
P(mutex);
OUTPUT(W);
W = 0;
V(mutex);(5分)
}
}
parend