Page 107 - DCAP403_Operating System
P. 107

Operating System




                    Notes          Problem: When one process is updating shared modifiable data in its critical section, no other

                                   process should allowed to enter in its critical section.

                                   Proposal 1: Disabling Interrupts (Hardware Solution)

                                   Each process disables all interrupts just after entering in its critical section and re-enable all
                                   interrupts just before leaving critical section. With interrupts turned off the CPU could not be
                                   switched to other process. Hence, no other process will enter its critical and mutual exclusion
                                   achieved.

                                   Conclusion

                                   Disabling interrupts is sometimes a useful interrupts is sometimes a useful technique within the
                                   kernel of an operating system, but it is not appropriate as a general mutual exclusion mechanism
                                   for users process. The reason is that it is unwise to give user process the power to turn off
                                   interrupts.

                                   Proposal 2: Lock Variable (Software Solution)

                                   In this solution, you consider a single, shared, (lock) variable, initially 0. When a process wants


                                   to enter in its critical section, it first test the lock. If lock is 0, the process first sets it to 1 and
                                   then enters the critical section. If the lock is already 1, the process just waits until (lock) variable
                                   becomes 0. Thus, a 0 means that no process in its critical section, and 1 means hold your horses -
                                   some process is in its critical section.
                                   Conclusion


                                   The flaw in this proposal can be best explained by example. Suppose process A sees that the
                                   lock is 0. Before it can set the lock to 1 another process B is scheduled, runs, and sets the lock to
                                   1. When the process A runs again, it will also set the lock to 1, and two processes will be in their
                                   critical section simultaneously.
                                   Proposal 3: Strict Alteration


                                   In this proposed solution, the integer variable ‘turn’ keeps track of whose turn is to enter the
                                   critical section. Initially, process A inspect turn, finds it to be 0, and enters in its critical section.

                                   Process B also finds it to be 0 and sits in a loop continually testing ‘turn’ to see when it becomes

                                   1.Continuously testing a variable waiting for some value to appear is called the Busy-Waiting.
                                   Conclusion

                                   Taking turns is not a good idea when one of the processes is much slower than the other. Suppose

                                   process 0 finishes its critical section quickly, so both processes are now in their noncritical section.
                                   This situation violates above mentioned condition 3.

                                   Using Systems calls ‘sleep’ and ‘wakeup’

                                   Basically, what above mentioned solution do is this: when a processes wants to enter in its critical
                                   section , it checks to see if then entry is allowed. If it is not, the process goes into tight loop and
                                   waits (i.e., start busy waiting) until it is allowed to enter. This approach waste CPU-time.
                                   Now look at some interprocess communication primitives is the pair of steep-wakeup.






          100                              LOVELY PROFESSIONAL UNIVERSITY
   102   103   104   105   106   107   108   109   110   111   112