Question: I have no idea where to begin with solving this. I hope you can read the picture alright. The following pseudocode is a correct implementation
I have no idea where to begin with solving this. I hope you can read the picture alright.


The following pseudocode is a correct implementation of the producer/consul lem with a bounded buffer 25 item[3] buffer: // initially empty semaphore empty: 1/ initialized to +3 semaphore full: // initialized to d binary semaphore mutex: // initialized to 1 void producer () void consumer ) while (true) while (true) item produce(); wait (empty) : wait (mutex); append (item) : signal (mutex) signal (full); el: c2: c3: wait (full); wait (mutex); itemtake() signal (mutex) signal (empty); consume (item); pl: p2: p3: Labels pl, code shown above (p2 and c2 each cover three lines of code). Semaphores empty and full are linear semaphores that take unbounded negative and positive values. There are multiple producer processe referred to as Pa, Pb, Pc, etc., and multiple consumer processes, referred to as Ca,Ch Cc, etc. Each semaphore maintains a FIFO (first-in-first-out) queue of blocked cesses. In the scheduling chart below, each line represents the state of the buffer semaphores after the scheduled execution has occurred. To simplify, we assume t scheduling is such that processes are never interrupted while executing a given porti of code pl, or p2,...,or c3. Your task is to complete the following chart. p2, p3 and c1, c2, c3 refer to the lines of hat Scheduled Step of full's State and empty's State Buffer and Queue Queue full 0 full=-1 (Ca) Execution Initialization Ca executes ci Cb executes cl full -2 (Ca, Cb) 000 Pa executes pl full2 (Ca, Cb) 00 Pa executes p2 | full=-2 (Ca, Cb) | XO Pa executes p3 full1 (Cb) Ca X 00 Ca executes c2 Ca executes c3 empty +3 empty +3 empty +2 empty full=-1 (cb) full=-1 (Cb)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
