Lecture 9 - Synchronization - Part 1 PDF

Summary

This lecture covers synchronization tools in operating systems. It introduces the critical section problem and discusses solutions, including background information, objectives and algorithms for mutual exclusion. The lecture details various techniques for managing concurrent processes.

Full Transcript

Chapter 6: Synchronization Tools Operating System Concepts – 10 th Edition Silberschatz, Galvin and Gagne ©2018 Outline ▪ Background ▪ The Critical-Section Problem ▪ Peterson’s Solution...

Chapter 6: Synchronization Tools Operating System Concepts – 10 th Edition Silberschatz, Galvin and Gagne ©2018 Outline ▪ Background ▪ The Critical-Section Problem ▪ Peterson’s Solution ▪ Hardware Support for Synchronization ▪ Mutex Locks ▪ Semaphores ▪ Monitors ▪ Liveness ▪ Evaluation Operating System Concepts – 10 th Edition 6.2 Silberschatz, Galvin and Gagne ©2018 Objectives ▪ Describe the critical-section problem and illustrate a race condition ▪ Illustrate hardware solutions to the critical-section problem using memory barriers, compare-and-swap operations, and atomic variables ▪ Demonstrate how mutex locks, semaphores, monitors, and condition variables can be used to solve the critical section problem ▪ Evaluate tools that solve the critical-section problem in low-, Moderate-, and high-contention scenarios Operating System Concepts – 10 th Edition 6.3 Silberschatz, Galvin and Gagne ©2018 Background ▪ Processes can execute concurrently May be interrupted at any time, partially completing execution ▪ Concurrent access to shared data may result in data inconsistency ▪ Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes ▪ We illustrated in chapter 4 the problem when we considered the Bounded Buffer problem with use of a counter that is updated concurrently by the producer and consumer,. Which lead to race condition. Operating System Concepts – 10 th Edition 6.4 Silberschatz, Galvin and Gagne ©2018 Race Condition ▪ Processes P0 and P1 are creating child processes using the fork() system call ▪ Race condition on kernel variable next_available_pid which represents the next available process identifier (pid) ▪ Unless there is a mechanism to prevent P0 and P1 from accessing the variable next_available_pid the same pid could be assigned to two different processes! Operating System Concepts – 10 th Edition 6.5 Silberschatz, Galvin and Gagne ©2018 Critical Section Problem ▪ Consider system of n processes {p0, p1, … pn-1} ▪ Each process has critical section segment of code Process may be changing common variables, updating table, writing file, etc. When one process in critical section, no other may be in its critical section ▪ Critical section problem is to design protocol to solve this ▪ Each process must ask permission to enter critical section in entry section, may follow critical section with exit section, then remainder section Operating System Concepts – 10 th Edition 6.6 Silberschatz, Galvin and Gagne ©2018 Critical Section ▪ General structure of process Pi Operating System Concepts – 10 th Edition 6.7 Silberschatz, Galvin and Gagne ©2018 Critical-Section Problem (Cont.) Requirements for solution to critical-section problem 1. Mutual Exclusion - If process Pi is executing in its critical section, then no other processes can be executing in their critical sections 2. Progress - If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the process that will enter the critical section next cannot be postponed indefinitely 3. Bounded Waiting - A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted Assume that each process executes at a nonzero speed No assumption concerning relative speed of the n processes Operating System Concepts – 10 th Edition 6.8 Silberschatz, Galvin and Gagne ©2018 Interrupt-based Solution ▪ Entry section: disable interrupts ▪ Exit section: enable interrupts ▪ Will this solve the problem? What if the critical section is code that runs for an hour? Can some processes starve – never enter their critical section. What if there are two CPUs? Operating System Concepts – 10 th Edition 6.9 Silberschatz, Galvin and Gagne ©2018 Software Solution 1 ▪ Two process solution ▪ Assume that the load and store machine-language instructions are atomic; that is, cannot be interrupted ▪ The two processes share one variable: int turn; ▪ The variable turn indicates whose turn it is to enter the critical section ▪ initially, the value of turn is set to i Operating System Concepts – 10 th Edition 6.10 Silberschatz, Galvin and Gagne ©2018 Algorithm for Process Pi while (true){ while (turn = = j); turn = j; } Operating System Concepts – 10 th Edition 6.11 Silberschatz, Galvin and Gagne ©2018 Algorithm for Process Pj while (true){ while (turn = = i); turn = i; } Operating System Concepts – 10 th Edition 6.12 Silberschatz, Galvin and Gagne ©2018 Correctness of the Software Solution ▪ Mutual exclusion is preserved Pi enters critical section only if: turn = i and turn cannot be both 0 and 1 at the same time ▪ What about the Progress requirement? ▪ What about the Bounded-waiting requirement? Operating System Concepts – 10 th Edition 6.13 Silberschatz, Galvin and Gagne ©2018 Peterson’s Solution ▪ Two process solution ▪ Assume that the load and store machine-language instructions are atomic; that is, cannot be interrupted ▪ The two processes share two variables: int turn; boolean flag ▪ The variable turn indicates whose turn it is to enter the critical section ▪ The flag array is used to indicate if a process is ready to enter the critical section. flag[i] = true implies that process Pi is ready! Operating System Concepts – 10 th Edition 6.14 Silberschatz, Galvin and Gagne ©2018 Algorithm for Process Pi while (true){ flag[i] = true; turn = j; while (flag[j] && turn = = j) ; flag[i] = false; } Operating System Concepts – 10 th Edition 6.15 Silberschatz, Galvin and Gagne ©2018 Algorithm for Process Pj while (true){ flag[j] = true; turn = i; while (flag[i] && turn = = i) ; flag[j] = false; } Operating System Concepts – 10 th Edition 6.16 Silberschatz, Galvin and Gagne ©2018 Correctness of Peterson’s Solution ▪ Provable that the three CS requirement are met: 1. Mutual exclusion is preserved Pi enters CS only if: either flag[j] = false or turn = i 2. Progress requirement is satisfied 3. Bounded-waiting requirement is met Operating System Concepts – 10 th Edition 6.17 Silberschatz, Galvin and Gagne ©2018 Peterson’s Solution and Modern Architecture ▪ Although useful for demonstrating an algorithm, Peterson’s Solution is not guaranteed to work on modern architectures. To improve performance, processors and/or compilers may reorder operations that have no dependencies ▪ Understanding why it will not work is useful for better understanding race conditions. ▪ For single-threaded this is ok as the result will always be the same. ▪ For multithreaded the reordering may produce inconsistent or unexpected results! Operating System Concepts – 10 th Edition 6.18 Silberschatz, Galvin and Gagne ©2018 Modern Architecture Example ▪ Two threads share the data: boolean flag = false; int x = 0; ▪ Thread 1 performs while (!flag) ; print x ▪ Thread 2 performs x = 100; flag = true ▪ What is the expected output? 100 Operating System Concepts – 10 th Edition 6.19 Silberschatz, Galvin and Gagne ©2018 Modern Architecture Example (Cont.) ▪ However, since the variables flag and x are independent of each other, the instructions: flag = true; x = 100; for Thread 2 may be reordered ▪ If this occurs, the output may be 0! Operating System Concepts – 10 th Edition 6.20 Silberschatz, Galvin and Gagne ©2018 Peterson’s Solution Revisited ▪ The effects of instruction reordering in Peterson’s Solution ▪ This allows both processes to be in their critical section at the same time! ▪ To ensure that Peterson’s solution will work correctly on modern computer architecture we must use Memory Barrier. Operating System Concepts – 10 th Edition 6.21 Silberschatz, Galvin and Gagne ©2018

Use Quizgecko on...
Browser
Browser