Question: 2. (12,5 points) We now know that the basic operations on semaphores, just like mutexes, must also be atomic (indivisible). This means: i. If at
2. (12,5 points) We now know that the basic operations on semaphores, just like mutexes, must also be atomic (indivisible). This means: i. If at any time a process calls a wait() operation on a semaphore, this operation must be atomic in itself (both increment/decrement operations within itself, and between decrement and if/while operations within the wait() function itself), ii. Also, if a process is running a wait() on a semaphore, a signal() cannot be run by another process on the same semaphore (or vice versa). In order to provide the above-mentioned atomicity properties, what kind of changes should be implemented in the codes given below? Update the codes with necessary changes. typedef struct \{ int value; struct process *list; \} semaphore; // initialization semaphore *sema; sema->value =N;// N is some positive integer, representing the resource sema->list = null; // count the semaphore represents. wait (semaphore *S) S->value-;; if (S->value { add this process to S->list
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
