Process Synchronization Tanenbaum Ch 2.3, 2.5 Silberschatz Ch 6.
-
Upload
shona-barker -
Category
Documents
-
view
229 -
download
4
Transcript of Process Synchronization Tanenbaum Ch 2.3, 2.5 Silberschatz Ch 6.
cs431-cottercs431-cotter 22
Interprocess Interprocess CommunicationsCommunications
Passing information between processes Used to coordinate process activity May result in data inconsistency if
mechanisms are not in place to ensure orderly execution of the processes.
The problem can be identified as a race condition
cs431-cottercs431-cotter 33
Producer / Consumer Producer / Consumer ProblemProblem
Buffer
Producer
Consumer
cs431-cottercs431-cotter 44
Producer / Consumer Producer / Consumer ProblemProblem
Buffer
Producer
Consumer
cs431-cottercs431-cotter 55
Producer / Consumer Producer / Consumer ProblemProblem
Shared data:int counter, in , out
item buffer[n];
cs431-cottercs431-cotter 66
Producer / Consumer Producer / Consumer ProblemProblem
Shared data:int counter, in , out
item buffer[n];
Producer:repeat
...
produce an item in nextp
...
while counter = n do noop;
buffer[in] := nextp;
in := (in + 1) mod n;
counter := counter + 1;
until false;
cs431-cottercs431-cotter 77
Producer / Consumer Producer / Consumer ProblemProblem
Shared data:int counter, in , out
item buffer[n];
Producer:repeat
...
produce an item in nextp
...
while counter = n do noop;
buffer[in] := nextp;
in := (in + 1) mod n;
counter := counter + 1;
until false;
Consumer:repeat
...
while counter = 0 do noop;
nextc := buffer[out];
out := (out + 1) mod n;
counter := counter -1;
...
consume the item in nextc
...
until false;
cs431-cottercs431-cotter 88
Producer / Consumer Producer / Consumer ProblemProblem
Shared data:int counter, in , out
item buffer[n];
Producer:repeat
...
produce an item in nextp
...
while counter = n do noop;
buffer[in] := nextp;
in := (in + 1) mod n;
counter := counter + 1;
until false;
Consumer:repeat
...
while counter = 0 do noop;
nextc := buffer[out];
out := (out + 1) mod n;
counter := counter -1;
...
consume the item in nextc
...
until false;
The Problem: atomic execution of
counter changes
cs431-cottercs431-cotter 99
Figure 2-21. Two processes want to access shared memory at the same time.
Race Conditions
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1010
The Critical Section / Region The Critical Section / Region ProblemProblem
Occurs in systems where multiple processes all compete for the use of shared data.
Each process includes a section of code (the critical section) where it accesses this shared data.
The problem is to ensure that only one process at a time is allowed to be operating in its critical section.
cs431-cottercs431-cotter 1111
The Critical Section / Region The Critical Section / Region ProblemProblem
Occurs in systems where multiple processes all compete for the use of shared data.
Each process includes a section of code (critical section) where it accesses this shared data.
The problem is to ensure that only one process at a time is allowed to be operating in its critical section.
repeat
entry_to_section
critical section
exit_section
remainder of program
until false;
cs431-cottercs431-cotter 1212
Criteria for Critical RegionCriteria for Critical Region
1.Mutual Exclusion If one process is in its critical section, no
other process may be in its respective section
2.Progress If no process is executing in its critical section
and there exists some process that needs to enter its critical section, then the selection of that process cannot be delayed indefinitely
3.Bounded Waiting There is a bound on the number of times that
a waiting process can be superceded
cs431-cottercs431-cotter 1313
Conditions required to avoid race condition:
• No two processes may be simultaneously inside their critical regions.
• No assumptions may be made about speeds or the number of CPUs.
• No process running outside its critical region may block other processes.
• No process should have to wait forever to enter its critical region.
Critical Regions (1)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1414
Figure 2-22. Mutual exclusion using critical regions.
Critical Regions (2)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1515
Proposals for achieving mutual exclusion:
• Disabling interrupts• Lock variables• Strict alternation• Peterson's solution• The TSL instruction
Mutual Exclusion with Busy Waiting
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1616
Figure 2-23. A proposed solution to the critical region problem. (a) Process 0. (b) Process 1. In both cases, be sure to note
the semicolons terminating the while statements.
Strict Alternation
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1717
Second ApproachSecond Approach
Shared variables: int flag[2]; // if (flag[i]==true), Pi ready to
enter its CS initially flag[0] := flag[1] := false;
Process Pirepeat
flag[i] := true;while (flag[j] = true), do noop;
critical sectionflag[i] := false;
remainder of programuntil false;
cs431-cottercs431-cotter 1818
Figure 2-24. Peterson’s solution for achieving mutual exclusion.
Peterson's Solution
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 1919
Multiple Process SolutionMultiple Process SolutionThe Bakery AlgorithmThe Bakery Algorithm
Shared variables: int choosing[n], number [n];
Process Pi
repeatchoosing[i] := true;number[i] := max (number[...]) +1;choosing[i] := false;for (j := 0..n-1) while (choosing[j]:=true:) noop; while (number[j] &&
number[j],j < number[i],i) noop;
critical sectionnumber[i] := 0;
remainder of programuntil false;
cs431-cottercs431-cotter 2020
Figure 2-25. Entering and leaving a critical region using the TSL instruction.
The TSL Instruction (1)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 2121
Figure 2-26. Entering and leaving a critical region using the XCHG instruction.
The TSL Instruction (2)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 2222
Figure 2-27. The producer-consumer problem with a fatal race condition.
The Producer-Consumer Problem
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 2323
SemaphoresSemaphores
Need to generalize critical section problems
Need to ensure ATOMIC access to shared variables.
Semaphore provides an integer variable that is only accessible through semaphore operations:
cs431-cottercs431-cotter 2424
SemaphoresSemaphores
Need to generalize critical section problems Need to ensure ATOMIC access to shared
variables. Semaphore provides an integer variable that is
only accessable through semaphore operations:Wait P
while (s < 0) ; // empty while loop s--;
Signal Vs++;
cs431-cottercs431-cotter 2525
Figure 2-28. The producer-consumer problem using semaphores.
Semaphores
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 2626
Sync with SemaphoreSync with Semaphore
Process 1
:::Asignal (sync);:
Process 2
wait (sync);B:::
cs431-cottercs431-cotter 2727
Counting Semaphore Counting Semaphore ImplementationImplementation
struct semaphore
{
int value;
int L[size];
} s ; Assumes 2 internal operations:
block;wakeup(p);
cs431-cottercs431-cotter 2828
Counting Semaphore Counting Semaphore ImplementationImplementation
wait(s)
s.value--;
if (s.value <0)
add to s.L
block;
signal(s)
s.value++;
if (s.value <= 0)
remove P from s.L;
wakeup(P)
cs431-cottercs431-cotter 2929
Semaphore DeadlockSemaphore Deadlock
P
wait(B);wait(A);:::signal(B);signal(A);
Q
wait(A);wait(B);:::signal(A);signal(B);
cs431-cottercs431-cotter 3030
Figure 2-29. Implementation of mutex lock and mutex unlock.
Mutexes
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 3131
““Critical Regions”Critical Regions”
Objective of semaphores (etc.) is to ensure that a critical region of code is used exclusively.
Misuse can defeat the objective. One solution is to define a higher level
object that specifically creates the critical region
cs431-cottercs431-cotter 3232
““Critical Regions”Critical Regions”
Objective of semaphores (etc.) is to ensure that a critical region of code is used exclusively.
Misuse can defeat the objective. One solution is to define a higher level object that
specifically creates the critical region region V when B do S;
The region V is a critical region. When a given boolean expression B is true, allow an operation S that operates on the region to take place. However, ensure that only one process is in V at a time.
cs431-cottercs431-cotter 3333
““Critical Region”Critical Region”
var buffer: shared record
pool: array [0..n-1] of item;
count, in, out: integer;
end;
cs431-cottercs431-cotter 3434
““Critical Region”Critical Region”
var buffer: shared record
pool: array [0..n-1]of item;
count, in, out: integer;
end;
Producer:
region buffer when count < n
do begin
pool[in]:= nextp;
in :=( in + 1) mod n;
count := count + 1;
end;
Consumer:
region buffer when count > 0
do begin
pool[out]:= nextp;
out :=( out + 1) mod n;
count := count - 1;
end;
cs431-cottercs431-cotter 3535
MonitorsMonitors
Another high level sync construct
Programmer defined operators.
Local data accessible only through monitor procedures.
Only 1 process can be executing in the monitor at a time. (Many may be queued up at procedures)
cs431-cottercs431-cotter 3636
MonitorsMonitors
Another high level sync construct
Programmer defined operators.
Local data accessible only through monitor procedures.
Only 1 process can be executing in the monitor at a time.
C1 ...
C2 ...
C3 ...
C4 ...
Input ...
local data
Procedure 1
Procedure n
:
:
cs431-cottercs431-cotter 3737
Figure 2-34. An outline of the producer-consumer problem with monitors.
Monitors
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 3838
Classical IPC ProblemsClassical IPC Problems
Dining Philosophers Readers and Writers Bakery Problem
cs431-cottercs431-cotter 3939
Figure 2-44. Lunch time in the Philosophy Department.
Dining Philosophers Problem (1)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 4040
Figure 2-45. A nonsolution to the dining philosophers problem.
Dining Philosophers Problem (2)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
cs431-cottercs431-cotter 4141
Figure 2-46. A solution to the dining philosophers problem.
Dining Philosophers Problem (3)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 4242
Figure 2-46. A solution to the dining philosophers problem.
Dining Philosophers Problem (4)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
. . .
cs431-cottercs431-cotter 4343
Figure 2-46. A solution to the dining philosophers problem.
Dining Philosophers Problem (5)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 4444
Figure 2-47. A solution to the readers and writers problem.
The Readers and Writers Problem (1)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 4545
Figure 2-47. A solution to the readers and writers problem.
The Readers and Writers Problem (2)
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
. . .
cs431-cottercs431-cotter 4646
Atomic TransactionsAtomic Transactions
Database origins Transaction: A collection of instructions
that performs a single logical function. Many operations need to be atomic.
Either fully committed, or fully removed. Examples:
Bank account transactions database updates.
cs431-cottercs431-cotter 4747
TransactionsTransactions
Begin transactiondo reads and writes
if (transaction successful)commit transaction;
elseabort transaction;
How do we determine when we need to commit or abort transaction??
cs431-cottercs431-cotter 4848
Computer Storage MediaComputer Storage Media
Volatile Storage Subject to data loss in the event of power failure. (main memory)
Non-volatile Storage Resistant to power failure, system failures. (hard disk, tape)
Stable Storage - Data "never" lost (combination of non-volatile elements)
cs431-cottercs431-cotter 4949
Transaction Log based Transaction Log based recoveryrecovery
Log entry to record each event transaction name (number?) data item name old value new value
< Ti start> < Ti entry> (when write) < Ti commit>
cs431-cottercs431-cotter 5050
Transaction Log based Transaction Log based recoveryrecovery
Log entry to record each event transaction name (number?) data item name old value new value
< Ti start> < Ti entry> (when write) < Ti commit> Entries are idempotent
cs431-cottercs431-cotter 5151
Transaction Log based Transaction Log based recoveryrecovery
undo command start, but no commit
redo command start and commit
Checkpoints save log records save data items <checkpoint>
cs431-cottercs431-cotter 5252
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Need to ensure that any interactions between transaction elements do not affect end results.
Serializability
cs431-cottercs431-cotter 5353
T0 T1
R(A)W(A)R(B)W(B)
R(A)W(A)R(B)W(B)
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Need to ensure that any interactions between transaction elements do not affect end results.
Serializability
cs431-cottercs431-cotter 5454
T0 T1
R(A)W(A)R(B)W(B)
R(A)W(A)R(B)W(B)
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Need to ensure that any interactions between transaction elements do not affect end results.
Serializability T0 T1
R(A)W(A)
R(A)W(A)
R(B)W(B)
R(B)W(B)
cs431-cottercs431-cotter 5555
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Serializability
T0 T1
R(A)W(A)
R(A)R(B)
W(A)W(B)
R(B)W(B)
Step 1
cs431-cottercs431-cotter 5656
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Serializability
T0 T1
R(A)W(A)
R(A)R(B)
W(A)W(B)
R(B)W(B)
T0 T1
R(A)W(A)R(B)
R(A)W(A)
W(B)R(B)W(B)
Step 1 Step 2
cs431-cottercs431-cotter 5757
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Serializability
T0 T1
R(A)W(A)
R(A)R(B)
W(A)W(B)
R(B)W(B)
T0 T1
R(A)W(A)R(B)
R(A)W(A)
W(B)R(B)W(B)
T0 T1
R(A)W(A)R(B)
R(A)W(B)
W(A)R(B)W(B)
Step 1 Step 2 Step 3
cs431-cottercs431-cotter 5858
T0 T1
R(A)W(A)
R(B)W(B)
R(B)W(B)
R(A)W(A)
Concurrent Atomic Concurrent Atomic TransactionsTransactions
Need to ensure that any interactions between transaction elements do not affect end results.
Not Serializable!
T0 T1
R(A)W(A)
R(B)W(B)
R(B)W(B)
R(A)W(A)
cs431-cottercs431-cotter 5959
Concurrent TransactionsConcurrent TransactionsLocking ProtocolLocking Protocol
Shared Locks (read but not write) Exclusive Locks (read or write)
A transaction may require a number of locks that must be applied consistently (same sequence..)
cs431-cottercs431-cotter 6060
Concurrent TransactionsConcurrent TransactionsLocking ProtocolLocking Protocol
Shared Locks (read but not write) Exclusive Locks (read or write)
A transaction may require a number of locks that must be applied consistently (same sequence..)
2 Phase locking protocol Growing Phase (obtain but not release locks) Shrinking Phase (release but not obtain locks)
cs431-cottercs431-cotter 6161
SummarySummary
Main issue with interprocess communications is the need to synchronize access to shared data
Many techniques available: Critical Section, locking techniques, Bakery
Algorithm Semaphore, Mutex, Monitor Message passing
Classical IPC Problems Transactions
cs431-cottercs431-cotter 6262
QuestionsQuestions
Why is it necessary to synchronize processes? Give an example that demonstrates the need for process synchronization.
What is a "critical section"? How is it used in synchronizing the operations of more than 1 process?
How does the Bakery Algorithm solve the problem of synchronizing multiple processes?
What is the difference between a semaphore and a mutex?
What is an atomic transaction? What is a serial schedule? How does it differ from
a serializable schedule?