精选优质文档-倾情为你奉上2进程A1,A2,Anl通过m个缓冲区向进程B1,B2,Bn2不断地发送消息,发送和接收工作遵循如下规则: (1)每个发送进程一次发送一个信息,写入一个缓冲区,缓冲区大小与消息长度一样;(2)对每一个消息,B1,B2,Bn2都需各接收一次,读入各自的数据区内;(3)m个缓冲区都满时,发送进程等待,没有可读的消息时,接收进程等待。试用P、V操作组织正确的发送和接收操作。解答:这是一个变形的生产和消费问题。每个缓冲区只需写一次,但需读n2次。可以把一组缓冲区看做n2组缓冲区,这样,每个生产者需要同时写n2个缓冲区组中相应的n2个缓冲区,而每一个消费者只需读它自己对应的那组缓冲区中的单元。生产者须在n2个缓冲区都为空闲是方可写入,这时,就可以用n2组信息量(avail,free )来实现这一流程,具体流程如下:BEGIN integer mutex,availn2,fulln2; integer I; mutex : =1; for