Transcript
Page 1: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -1

CHAPTER 7PROCESS SYNCHRONIZATION

CGS 3763 - Operating System Concepts

UCF, Spring 2004

Page 2: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -2

COOPERATING PROCESSES

• Independent processes cannot affect or be affected by the execution of another process.

• Dependent processes can affect or be affected by the execution of another process– a.k.a., Cooperating Processes

• Processes may cooperate for:– Information sharing

– Computation speed-up (Requires 2 or more CPUs)

– Modularity

– Convenience

Page 3: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -3

REQUIREMENTS FOR COOPERATION

• In order to cooperate, processes must be able to:– Communicate with one another

• Passing information between two or more processes

– Synchronize their actions

• coordinating access to shared resources– hardware (e.g., printers, drives)

– software (e.g., shared code)

– files (e.g., data or database records)

– variables (e.g., shared memory locations)

• Concurrent access to shared data may result in data inconsistency.

• Maintaining data consistency requires synchronization mechanisms to ensure the orderly execution of cooperating processes

– Synchronization itself requires some form of communication

Page 4: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -4

PROCESS SYNCHRONIZATION

• Particularly important with concurrent execution

• Can cause two major problems:– Race Condition -

• When two or more cooperating processes access and manipulate the same data concurrently, and

• the outcome of the execution depends on the order in which the access takes place.

– Deadlock (Chapter 8) -

• When two or more waiting processes require shared resource for their continued execution

• but the required resources are held by other waiting processes

Page 5: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -5

RACE CONDITION

• Cooperating processes have within their programs “critical sections”– A code segment during which a process accesses and

changes a common variable or data item.

– When one processes is in its critical section, no other process must execute in its own critical section.

– Execution of critical sections with respect to the same shared variable or data item must be mutually exclusive

• A race condition occurs when two processes execute critical sections in a non-mutually exclusive manner.

Page 6: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -6

RACE CONDITION EXAMPLES

• File Level Access– Editing files in a word processor

• Record Level Access– Modifying a data base record

• Shared Variable LevelP1 P2

: :

LOAD X LOAD X

X = X+1 X = X+1

STORE X STORE X

: :

• Final value for X based on execution sequence

Page 7: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -7

RACE CONDITION EXAMPLES (cont.)

• Think of concurrent access as a series of sequential instructions with respect to the shared variable, data or resource.

• If no interrupts during each code section: X = 1051

• If interrupts do occur results may vary: X = 51 or 1050

Page 8: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -8

PREVENTING RACE CONDITIONS

• Two options (policies) for preventing race conditions:– we must make sure that each process executes its

critical section without interruption (PROBLEMS????)

– make other processes wait until the current process completes execution of its critical section

• Any mechanism for solving the critical section problem must meet the following:– Mutual Exclusion - Only one process at a time may

execute in its critical section

– Progress - Processes must be allowed to execute their critical sections at some time

– Bounded Waiting - Cannot prevent a process from executing its critical section indefinitely

Page 9: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -9

SOLUTIONS TO CRITICAL SECTION PROBLEM

• Text book contains various software and hardware solutions to the critical section problem:– Algorithm 1 (software/shared memory):

• Uses turn variable to alternate entry into critical sections between two processes

• Assures mutual exclusion but not progress requirement

– Algorithm 2 (software/shared memory):

• Uses flag variables to show requests by processes wishing to enter their critical sections.

• Assures mutual exclusion but not progress requirement

– Algorithm 3 (software/shared memory):

• Uses flags to show requests, then turn to break tie

• Meets all three requirements but only for two processes

Page 10: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -10

SOLUTIONS TO CRITICAL SECTION PROBLEM (cont.)

• Swap/Test-and-Set (hardware/software/shared memory)

• Executed as atomic or indivisible instructions.

• Allows process to test status of a “lock” variable and set lock at same time.

• Can execute critical section only if unlocked.

• Can be used to simplify programming of synchronization algorithms.

Page 11: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -11

SOLUTIONS (cont.)

• Previous examples require: – OS to provide shared memory locations for variables

(turn, flags, locks)

– But programmers are responsible for how that shared memory is used.

• Must write lots of code to support these types of solutions

• Must write correct code

• Algorithms 1, 2 & 3 (even with hardware support) become very complicated when more than two processes require access to critical sections referencing the same shared variable/resource.

Page 12: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -12

SOLUTIONS (cont.)

• Need more robust solution:– Should be managed by the OS or supported by HLL

– Should work with two or more processes

– Should not require application process control or masking of interrupts

– Should be workable in multi-processor environments (parallel systems)

– Should keep processes from executing in the running state (busy/waiting loops or no-ops) while waiting their turn

• Must also meet our three requirements:– Mutual exclusion, progress, bounded waiting

Page 13: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -13

ROBUST SOLUTIONS

• Critical Regions– High Level Language (HLL) construct for controlling execution

of critical sections

– Code oriented solution

– Regions referring to the same shared variable exclude each other in time.

• Monitors– High Level Language (HLL) construct for managing the shared

variable/resource referenced in critical sections

– More object- or data-oriented solution

– allows the safe sharing of an abstract data type among concurrent processes

Page 14: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -14

ROBUST SOLUTIONS (cont.)

• Semaphores– Can be managed by OS or applications programmer

– Processes execute P( ) operation before entering critical section

– Processes execute V( ) operation after leaving critical section

– P( ) and V( ) can be a type of system call

Page 15: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -15

SEMAPHORES

• Uses a shared variable s (can be owned by OS)– Initialized to “1”

• P(s) - Atomic Operation (aka wait)– Decrement value of s by 1

– If s<0, block process

• Move process from running state to wait_semaphore_s queue

• V(s) - Atomic Operation (aka signal)– Increment value of s by 1

– If s <=0, unblock a waiting process

• Move process from wait_semaphore_s queue to ready queue

• Usually use FCFS/FIFO to ensure progress

Page 16: CHAPTER 7 PROCESS SYNCHRONIZATION

Chapter 7 -16

SEMAPHORES (cont.)

• Semaphores can be used for more than just critical section solutions– Can be used to control access to resources

• for example, printers, files, records)

• The P( ) and V( ) operations described in previous slide use a “counting” semaphore.– Negative values of s tell how many processes are

waiting to access the share resource associated with the semaphore.

– Can initialize s to number other than 1 if more instances of the resource (e.g., printer) exist


Top Related