设由N个缓冲区组成缓冲池,每个缓冲区可以存放一个消息,有两个进程:生产者(producer)和消费者(consumer),且只要缓冲池未满,生产者便可以将消息送人缓冲池,而只要缓冲池未空,消费者就可以取走一个消息。各个进程对缓冲池进行互斥访问,用信号量实现

admin2012-10-31  27

问题 设由N个缓冲区组成缓冲池,每个缓冲区可以存放一个消息,有两个进程:生产者(producer)和消费者(consumer),且只要缓冲池未满,生产者便可以将消息送人缓冲池,而只要缓冲池未空,消费者就可以取走一个消息。各个进程对缓冲池进行互斥访问,用信号量实现协调过程。两个进程的处理过程如下:
Begin
  S,S1,S2:SEMAPHORE;
  S=1;S1=N;S2=0;
  BUFFER[N]为缓冲区;I=J=0;
CoBegin
Process Producer:/*生产者进程*/
L1:生产一个消息M;
    P(S1);
    P(S);
    BUFFER[I]=M;
    I=(I+1)MOD N;
    V(S2);
    V(S);
    GOTO L1;
Process Consumer:/*消费者进程*/
L2:
    P(S2);
    P(S);
    M=BUFFER[J];
    J=(J+1)MOD N;
    V(S1);
    V(S);
    消费一个消息M;
    GOTO L1;
COEND
请问信号量S、S1、S2的作用分别是什么?

选项

答案(1)信号量S用于对缓冲区的互斥访问。 (2)信号量S1用于生产者进程对缓冲区的访问。 (3)信号量S2用于消费者进程对缓冲区的访问。

解析 该题目中同时存在进程的同步和互斥,其中信息量S用于对缓冲区的互斥访问,主要问题是为了防止一个进程在使用缓冲区时另外进程也进入缓冲区使用。关丁缓冲区中能否在放人消息或缓冲区中是否有消息属于进程之间的同步问题。
转载请注明原文地址:https://jikaoti.com/ti/F2EaFFFM
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)