Question
Consider the message exchange solution to the readers / writers problem seen in class. void reader(int i) { while (true) { nbsend (readrequest, null); receive
Consider the message exchange solution to the readers / writers problem seen in class.
void reader(int i) { while (true) { nbsend (readrequest, null); receive (controller_pid, null); READUNIT (); nbsend (finished, null); } } void writer(int j) { while (true) { nbsend (writerequest, null); receive (controller_pid, null); WRITEUNIT (); nbsend (finished, null); } } void controller() { count = MAX_READERS; while (true) { if (count > 0) { if (!empty (finished)) { /* da reader! */ receive (finished, msg); count++; } else if (!empty (writerequest)) { receive (writerequest, msg); writer_id = msg.sender; count = count - MAX_READERS; } else if (!empty (readrequest)) { receive (readrequest, msg); count--; nbsend (msg.sender, "OK"); } } if (count == 0) { nbsend (writer_id, "OK"); receive (finished, msg); /* da writer! */ count = MAX_READERS; } while (count < 0) { receive (finished, msg); /* da reader! */ count++; } /* while (count < 0) */ } /* while (true) */ } /* controller */
Suppose that mailboxes are not managed with a FIFO, but in an unspecified way, as is the case with weak semaphores. So, can there be starvation? If yes, please provide an example; if not, explain why
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started