Question: 1. Why is the following not ideal? /* implementation of a lock */ void lock () { DisableInterrupts (); } void unlock () {

1. Why is the following not ideal? /* implementation of a lock */ void lock () { DisableInterrupts (); } void unlock () { EnableInterrupts (); } /* a process that accesses some shared data */ Process { lock_t mutex; lock (&mutex); /* begin accessing shared data */ /* end accessing shared data */ unlock (&mutex); 2. Why is the following not ideal? boolean test_and_set (boolean *target) { boolean rv = *target; *target TRUE; return rv: do { while (test_and_set (&lock)) ; /* do nothing */ /* critical section */ lock = false; /* remainder section */ } while (true);
Step by Step Solution
3.45 Rating (161 Votes )
There are 3 Steps involved in it
Any solution to the critical section problem must satisfy three requirements mutual exclusion progre... View full answer
Get step-by-step solutions from verified subject matter experts
