Operating System (2140702)

BE | Semester-4   Winter-2018 | 10-12-2018

Q4) (c)

What do you mean by mutual exclusion? Explain Peterson’s solution for mutual exclusion problem.

Mutual exclusion

A mutual exclusion (mutex) is a program object that prevents simultaneous access to a shared resource. This concept is used in concurrent programming with a critical section, a piece of code in which processes or threads access a shared resource.

Peterson’s solution for mutual exclusion problem:

Peterson’s Solution
  • By combining the idea of taking turns with the idea of lock variables and warning variables, Peterson discovered a much simpler way to achieve mutual exclusion.
  • This algorithm consists of two procedures written in ANSI C as shown below.
  • Before using the shared variables (i.e., before entering its critical region), each process calls procedure enter_region with its own process number, 0 or 1, as parameter.
  • This call will cause it to wait, if needed, until it is safe to enter critical region.
  • After it has finished with the shared variables, the process calls leave_region to indicate that it is done and to allow the other process to enter, if it so desires.
Peterson’s Solution
  • Let us see how this solution works. Initially neither process is in its critical region.
  • Now process 0 calls enter_region. It indicates its interest by setting its array element and sets turn to 0.
  • Since process 1 is not interested, enter_region returns immediately. If process 1 now calls enter_region, it will be blocked there until interested [0] goes to FALSE, an event that only happens when process 0 calls leave_region to exit the critical region.
  • Now consider the case that both processes call enter_region almost simultaneously. Both will store their process number in turn. Whichever store is done last is the one that counts; the first one is overwritten and lost.
  • Suppose that process 1 stores last, so turn is 1. When both processes come to the while statement, process 0 executes it zero times and enters its critical region.
  • Process 1 loops and does not enter its critical region until process 0 exits its critical region.