Process Synchronization

Only available on StudyMode
  • Topic: Lock, Concurrency control, Mutual exclusion
  • Pages : 7 (778 words )
  • Download(s) : 110
  • Published : February 25, 2013
Open Document
Text Preview
Chapter 6: Process Synchronization

Module 6: Process Synchronization
 Background  The Critical-Section Problem  Peterson’s Solution  Synchronization Hardware  Semaphores  Classic Problems of Synchronization  Monitors  Synchronization Examples  Atomic Transactions

Operating System Concepts

6.2

Silberschatz, Galvin and Gagne ©2005

Background
 Concurrent access to shared data may result in data

inconsistency
 Maintaining data consistency requires mechanisms to

ensure the orderly execution of cooperating processes
 Suppose that we wanted to provide a solution to the

consumer-producer problem that fills all the buffers. We can do so by having an integer count that keeps track of the number of full buffers. Initially, count is set to 0. It is incremented by the producer after it produces a new buffer and is decremented by the consumer after it consumes a buffer.

Operating System Concepts

6.3

Silberschatz, Galvin and Gagne ©2005

Producer
while (true) /* produce an item and put in nextProduced while (count == BUFFER_SIZE) ; // do nothing buffer [in] = nextProduced; in = (in + 1) % BUFFER_SIZE; count++; }

Operating System Concepts

6.4

Silberschatz, Galvin and Gagne ©2005

Consumer
while (1) { while (count == 0) ; // do nothing nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; /* consume the item in nextConsumed }

Operating System Concepts

6.5

Silberschatz, Galvin and Gagne ©2005

Race Condition


count++ could be implemented as register1 = count register1 = register1 + 1 count = register1 count-- could be implemented as register2 = count register2 = register2 - 1 count = register2 Consider this execution interleaving with “count = 5” initially:





S0: producer execute register1 = count {register1 = 5} S1: producer execute register1 = register1 + 1 {register1 = 6} S2: consumer execute register2 = count {register2 = 5} S3: consumer execute register2 = register2 - 1 {register2 = 4} S4: producer execute count = register1 {count = 6 } S5: consumer execute count = register2 {count = 4}

Operating System Concepts

6.6

Silberschatz, Galvin and Gagne ©2005

Solution to Critical-Section Problem Critical1. 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 processes 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

6.7

Silberschatz, Galvin and Gagne ©2005

Peterson’s Solution
 Two process solution  Assume that the LOAD and STORE instructions are atomic;

that is, cannot be interrupted.
 

 The two processes share two variables:

int turn;

Boolean flag[2]  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

6.8

Silberschatz, Galvin and Gagne ©2005

Algorithm for Process Pi
do { flag[i] = TRUE; turn = j; while ( flag[j] && turn == j); CRITICAL SECTION flag[i] = FALSE; REMAINDER SECTION } while (TRUE);

Operating System Concepts

6.9

Silberschatz, Galvin and Gagne ©2005

Synchronization Hardware
 Many systems provide hardware support for critical section

code  Uniprocessors – could disable interrupts
 

Currently running code would execute...
tracking img