-->
当前位置:首页 > 题库 > 正文内容

主观题:h402.设有n个缓冲区构成的循环缓冲区,每个缓冲区能容纳一个整数。写进程Writer把整数逐个存入缓冲区,读进程Reader则逐个从缓冲区中读......

Luz3年前 (2022-09-13)题库683
设有n个缓冲区构成的循环缓冲区,每个缓冲区能容纳一个整数。写进程Writer把整数逐个存入缓冲区,读进程Reader则逐个从缓冲区中读出并打印输出,要求打印的与输入的完全一样,即个数、次序、数值一样。试问:
 (1)写进程与读进程间具体的制约关系如何?
 (2)用PV操作写出这两个进程的同步算法程序。







答案:解:
(1) 写进程与读进程间具体的制约关系是同步和互斥关系。(3分)
(2) 采用PV操作的同步算法程序如下:
semaphore mutex, empty, full;
mutex=1; //互斥信号量,用于两个进程互斥访问缓冲区
empty=n; //同步信号量,表示空闲缓冲区的数量
full=0; //同步信号量,表示放有整数的缓冲区个数
parbegin
process Writer( )
{
while (1) {
produce_an_integer( );
P(empty);
P(mutex);
write_an_integer_to_buffer( );
V(mutex);
V(full);(4分)
}
}
process Reader( )
{
while (1) {
P(full);
P(mutex);
get_an_integer_from_buffer( );
V(mutex);
V(empty);
print_an_integer( );(3分)
}
}
parend

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。