系统中有多个生产者进程和多个消费者进程,共享一个能存放1000件产品的环形 缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待; 当緩冲区未空时,消费者进程可以从緩冲区取走一件产品,否则等待。要求一个消费者进程 从缓冲区连续取出10件产品后,其他消费者进程才可以取产品。请使用信号量P,V(wait(), signal())操作实现进程间的互斥与同步,要求写出完整的过程,并说明所用信号量的含义和 初值。
举一反三
- 应设信号量S1的初值为() A: -2B.-1C.0D.1 B: 某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区中取产品消费。假设该缓存区只能容纳一个产品。进程P1与P2的同步模型如下图所示: C: 为此,应设信号量S1的初值为(),信号量S2的初值为()。
- 设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。
- 在多进程共享n个缓冲区的缓冲池这个经典生产者-消费者问题中,mutex为互斥信号量,所控制的临界资源为____________,初值为____________。Empty为____________信号量,表示“空”缓冲区的数量,初值为____________。Full为____________信号量,表示“满”缓冲区的数量,初值为____________
- 中国大学MOOC: 采用信号量和P、V原语解决生产者—消费者问题时,设:信号量Empty对应空缓冲区资源,Full对应满缓冲区资源,Mutex用于访问共享缓冲池时的互斥,则下列进程描述( )是正确的。
- 有n个生产者进程向1个有限的缓冲区不断地发送消息,这些消息通过缓冲区分发到m个消费者,缓冲区的大小只可以存放1条消息。生产者和消费者的工作遵循如下规则:(1)生产者和消费者对缓冲区的访问互斥;(2)对每1条放入缓冲区的消息,所有消费者都必须接收1次;(3)缓冲区满时,生产者必须阻塞,缓冲区空时,消费者阻塞。请用信号量和P、V操作组织正确的发送和接收。用类c语言进行描述。