Q1: (35 points) Modified Producer Consumer problem: Assume one producer process and n consumer processes share a bounded buffer having b slots. The producer deposits messages in the buffer: consumers fetch them. Every message deposited by the producer is to be eventually received by all n consumers. Furthermore, each consumer is to receive the messages in the order they were deposited. However, consumers can receive messages at different times. For example, ohe consumer could receive up to bmore messages than another if the second consumer is slow. a) Develop a monitor to synchronize the two types of threads (draw the monitor picture, give the thread execution pseudo-code, give service methods' pseudo-code, initialization, condition variables). Extensively comment your implementation. Use the concept of monitors: condition variables have names, are implemented as queues with FIFO policy. You can use any of the two signal policies but specify which one you use. Don't use notifyAIL b) Is it possible for the pseudo-code of your service methods to support the other (not chosen) signal policy? If no, explain why not. Q1: (35 points) Modified Producer Consumer problem: Assume one producer process and n consumer processes share a bounded buffer having b slots. The producer deposits messages in the buffer: consumers fetch them. Every message deposited by the producer is to be eventually received by all n consumers. Furthermore, each consumer is to receive the messages in the order they were deposited. However, consumers can receive messages at different times. For example, ohe consumer could receive up to bmore messages than another if the second consumer is slow. a) Develop a monitor to synchronize the two types of threads (draw the monitor picture, give the thread execution pseudo-code, give service methods' pseudo-code, initialization, condition variables). Extensively comment your implementation. Use the concept of monitors: condition variables have names, are implemented as queues with FIFO policy. You can use any of the two signal policies but specify which one you use. Don't use notifyAIL b) Is it possible for the pseudo-code of your service methods to support the other (not chosen) signal policy? If no, explain why not