Process Synchronization and Deadlock

Embed Size (px)

Citation preview

  • 7/30/2019 Process Synchronization and Deadlock

    1/41

    Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Chapter 6: ProcessSynchronization

  • 7/30/2019 Process Synchronization and Deadlock

    2/41

    6.2 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Module 6: Process Synchronization

    Background

    The Critical-Section Problem Semaphores

    Classic Problems of Synchronization

  • 7/30/2019 Process Synchronization and Deadlock

    3/41

    6.3 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Objectives

    To introduce the critical-section problem, whose solutions can be used to ensure the consistency ofshared data

    To present both software and hardware solutions of the critical-section problem

  • 7/30/2019 Process Synchronization and Deadlock

    4/41

    6.4 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Background

    Concurrent access to shared data may result in data inconsistency

    Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperatingprocesses

    Suppose that we wanted to provide a solution to the consumer-producer problem that fills allthe buffers.We can do so by having an integer countthat keeps track of the number of full buffers. Initially, count isset to 0. It is incremented by the producer after it produces a new buffer and is decremented by theconsumer after it consumes a buffer.

  • 7/30/2019 Process Synchronization and Deadlock

    5/416.5 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Producer

    while (true) {

    /* produce an item and put in nextProduced */

    while (counter == BUFFER_SIZE)

    ; // do nothing

    buffer [in] = nextProduced;

    in = (in + 1) % BUFFER_SIZE;

    counter++;

    }

  • 7/30/2019 Process Synchronization and Deadlock

    6/416.6 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Consumer

    while (true) {while (counter == 0)

    ; // do nothing

    nextConsumed = buffer[out];

    out = (out + 1) % BUFFER_SIZE;

    counter--;

    /* consume the item in nextConsumed

    }

  • 7/30/2019 Process Synchronization and Deadlock

    7/416.7 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Race Condition

    counter++ could be implemented as

    register1 = counterregister1 = register1 + 1counter = register1

    counter-- could be implemented as

    register2 = counter

    register2 = register2 - 1count = register2

    Consider this execution interleaving with count = 5 initially:

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

    S4: producer execute counter = register1 {count = 6 }S5: consumer execute counter = register2 {count = 4}

  • 7/30/2019 Process Synchronization and Deadlock

    8/416.8 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    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 exisection, then remainder section

    Especially challenging with preemptive kernels

  • 7/30/2019 Process Synchronization and Deadlock

    9/416.9 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Critical Section

    General structure of process pi is

  • 7/30/2019 Process Synchronization and Deadlock

    10/416.10 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Solution to Critical-Section Problem

    1. Mutual Exclusion - If process Pi is executing in its critical section, then no other processes can beexecuting in their critical sections

    2. Progress - If no process is executing in its critical section and there exist some processes that wish to entertheir critical section, then the selection of the processes that will enter the critical section next cannot bepostponed indefinitely

    3. Bounded Waiting - A bound must exist on the number of times that other processes are allowed to entertheir critical sections after a process has made a request to enter its critical section and before thatrequest is granted

  • 7/30/2019 Process Synchronization and Deadlock

    11/416.11 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Semaphore

    Synchronization tool

    Semaphore S integer variable Two standard operations modify S: wait() and signal()

    Originally called P() andV()

    Less complicated

    Can only be accessed via two indivisible (atomic) operations

    wait (S) {

    while S

  • 7/30/2019 Process Synchronization and Deadlock

    12/416.12 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Semaphore asGeneral Synchronization Tool

    Countingsemaphore integer value can range over an unrestricted domain

    Binary semaphore integer value can range only between 0and 1; can be simpler to implement

    Also known as mutex locks

    Can implement a counting semaphore S as a binary semaphore

    Provides mutual exclusion

    Semaphore mutex; // initialized to 1

    do {

    wait (mutex);

    // Critical Section

    signal (mutex);

    // remainder section

    } while (TRUE);

  • 7/30/2019 Process Synchronization and Deadlock

    13/41

    6.13 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Semaphore Implementation

    Must guarantee that no two processes can execute wait () and signal () on the same semaphore at thesame time

    Thus, implementation becomes the critical section problem where the wait and signal code are placed inthe crtical section

    Could now have busy waitingin critical section implementation

    But implementation code is short

    Little busy waiting if critical section rarely occupied

    Note that applications may spend lots of time in critical sections and therefore this is not a good solution

    Semaphore Implementation

  • 7/30/2019 Process Synchronization and Deadlock

    14/41

    6.14 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Semaphore Implementationwith no Busy waiting

    With each semaphore there is an associated waiting queue

    Each entry in a waiting queue has two data items: value (of type integer)

    pointer to next record in the list

    Two operations:

    block place the process invoking the operation on the appropriate waiting queue

    wakeup remove one of processes in the waiting queue and place it in the ready queue

    Semaphore Implementation with

  • 7/30/2019 Process Synchronization and Deadlock

    15/41

    6.15 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Semaphore Implementation withno Busy waiting (Cont.)

    Implementation of wait:

    wait(semaphore *S) {

    S->value--;

    if (S->value < 0) {

    add this process to S->list;

    block();

    }

    }

    Implementation of signal:

    signal(semaphore *S) {

    S->value++;

    if (S->value list;

    wakeup(P);

    }

    }

  • 7/30/2019 Process Synchronization and Deadlock

    16/41

    6.16 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Deadlock and Starvation

    Deadlock two or more processes are waiting indefinitely for an event that can be caused by only one ofthe waiting processes

    Let S and Q be two semaphores initialized to 1P0 P1

    wait (S); wait (Q);

    wait (Q); wait (S);

    . .

    . .

    . .

    signal (S); signal (Q);

    signal (Q); signal (S);

    Starvation indefinite blocking

    A process may never be removed from the semaphore queue in which it is suspended

    Priority Inversion Scheduling problem when lower-priority process holds a lock needed by higher-

    priority process Solved via priority-inheritance protocol

  • 7/30/2019 Process Synchronization and Deadlock

    17/41

    6.17 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Classical Problems of Synchronization

    Classical problems used to test newly-proposed synchronization schemes

    Bounded-Buffer Problem

    Readers and Writers Problem

    Dining-Philosophers Problem

  • 7/30/2019 Process Synchronization and Deadlock

    18/41

    6.18 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Bounded-Buffer Problem

    Nbuffers, each can hold one item

    Semaphore mutex initialized to the value 1

    Semaphore full initialized to the value 0

    Semaphore empty initialized to the value N

  • 7/30/2019 Process Synchronization and Deadlock

    19/41

    6.19 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Bounded Buffer Problem (Cont.)

    The structure of the producer process

    do {

    // produce an item in nextp

    wait (empty);

    wait (mutex);

    // add the item to the buffer

    signal (mutex);

    signal (full);

    } while (TRUE);

  • 7/30/2019 Process Synchronization and Deadlock

    20/41

    6.20 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Bounded Buffer Problem (Cont.)

    The structure of the consumer process

    do {

    wait (full);

    wait (mutex);

    // remove an item from buffer to nextc

    signal (mutex);

    signal (empty);

    // consume the item in nextc

    } while (TRUE);

  • 7/30/2019 Process Synchronization and Deadlock

    21/41

    6.21 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Readers-Writers Problem

    A data set is shared among a number of concurrent processes

    Readers only read the data set; they do not perform any updates

    Writers can both read and write

    Problem allow multiple readers to read at the same time

    Only one single writer can access the shared data at the same time

    Several variations of how readers and writers are treated all involve priorities

    Shared Data

    Data set

    Semaphore mutex initialized to 1

    Semaphore wrt initialized to 1

    Integer readcount initialized to 0

  • 7/30/2019 Process Synchronization and Deadlock

    22/41

    6.22 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Readers-Writers Problem (Cont.)

    The structure of a writer process

    do {

    wait (wrt) ;

    // writing is performed

    signal (wrt) ;

    } while (TRUE);

  • 7/30/2019 Process Synchronization and Deadlock

    23/41

    6.23 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Readers-Writers Problem (Cont.)

    The structure of a reader process

    do {

    wait (mutex) ;

    readcount ++ ;

    if (readcount == 1)

    wait (wrt) ;

    signal (mutex)

    // reading is performed

    wait (mutex) ;

    readcount - - ;

    if (readcount == 0)

    signal (wrt) ;

    signal (mutex) ;

    } while (TRUE);

  • 7/30/2019 Process Synchronization and Deadlock

    24/41

    6.24 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Readers-Writers Problem Variations

    Firstvariation no reader kept waiting unless writer has permission to use shared object

    Secondvariation once writer is ready, it performs write asap

    Both may have starvation leading to even more variations

    Problem is solved on some systems by kernel providing reader-writer locks

    Di i Phil h P bl

  • 7/30/2019 Process Synchronization and Deadlock

    25/41

    6.25 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Dining-Philosophers Problem

    Philosophers spend their lives thinking and eating

    Dont interact with their neighbors, occasionally try to pick up 2 chopsticks (one at a time) to eat

    from bowl

    Need both to eat, then release both when done

    In the case of 5 philosophers

    Shared data

    Bowl of rice (data set)

    Semaphore chopstick [5] initialized to 1

    Di i Phil h P bl Al ith

  • 7/30/2019 Process Synchronization and Deadlock

    26/41

    6.26 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Dining-Philosophers Problem Algorithm

    The structure of Philosopher i:

    do {wait ( chopstick[i] );

    wait ( chopStick[ (i + 1) % 5] );

    // eat

    signal ( chopstick[i] );

    signal (chopstick[ (i + 1) % 5] );

    // think

    } while (TRUE);

    What is the problem with this algorithm?

    Th D dl k P bl

  • 7/30/2019 Process Synchronization and Deadlock

    27/41

    6.27 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    The Deadlock Problem

    A set of blocked processes each holding a resource and

    waiting to acquire a resource held by another process in theset

    Example

    System has 2 disk drives

    P1 and P2 each hold one disk drive and each needs another one Example

    semaphores A and B, initialized to 1

    P0 P1

    wait (A); wait(B)

    wait (B); wait(A)

    B id C i E l

  • 7/30/2019 Process Synchronization and Deadlock

    28/41

    6.28 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Bridge Crossing Example

    Traffic only in one direction

    Each section of a bridge can be viewed as a resource

    If a deadlock occurs, it can be resolved if one car backs up (preemptresources and rollback)

    Several cars may have to be backed up if a deadlock occurs

    Starvation is possible

    Note Most OSes do not prevent or deal with deadlocks

    System Model

  • 7/30/2019 Process Synchronization and Deadlock

    29/41

    6.29 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    System Model

    Resource types R1, R2, . . ., RmCPU cycles, memory space, I/O devices

    Each resource type Ri has Wi instances.

    Each process utilizes a resource as follows:

    request

    use

    release

    Deadlock Characterization

  • 7/30/2019 Process Synchronization and Deadlock

    30/41

    6.30 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Deadlock Characterization

    Mutual exclusion: only one process at a time can use a resource

    Hold and wait: a process holding at least one resource is waiting toacquire additional resources held by other processes

    No preemption: a resource can be released only voluntarily by theprocess holding it, after that process has completed its task

    Circular wait: there exists a set {P0, P1, , Pn} of waiting processes suchthat P0 is waiting for a resource that is held by P1, P1 is waiting for aresource that is held by

    P2, , Pn1 is waiting for a resource that is held by Pn, and Pn is waiting fora resource that is held by P0.

    Deadlock can arise if four conditions hold simultaneously

    Resource Allocation Graph

  • 7/30/2019 Process Synchronization and Deadlock

    31/41

    6.31 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Resource-Allocation Graph

    V is partitioned into two types:

    P= {P1, P2, , Pn}, the set consisting of all the processes inthe system

    R= {R1, R

    2, , R

    m}, the set consisting of all resource types

    in the system

    request edge directed edge PiRj

    assignment edge directed edge RjPi

    A set of vertices Vand a set of edges E

    Resource Allocation Graph (Cont )

  • 7/30/2019 Process Synchronization and Deadlock

    32/41

    6.32 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Resource-Allocation Graph (Cont.)

    Process

    Resource Type with 4 instances

    Pirequests instance of Rj

    Pi is holding an instance of Rj Pi

    Pi

    Rj

    Rj

    Example of a Resource Allocation Graph

  • 7/30/2019 Process Synchronization and Deadlock

    33/41

    6.33 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Example of a Resource Allocation Graph

    Resource Allocation Graph With A Deadlock

  • 7/30/2019 Process Synchronization and Deadlock

    34/41

    6.34 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Resource Allocation Graph With A Deadlock

    Graph With A Cycle But No Deadlock

  • 7/30/2019 Process Synchronization and Deadlock

    35/41

    6.35 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Graph With A Cycle But No Deadlock

    Basic Facts

  • 7/30/2019 Process Synchronization and Deadlock

    36/41

    6.36 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Basic Facts

    If graph contains no cycles no deadlock

    If graph contains a cycle

    if only one instance per resource type, then deadlock

    if several instances per resource type, possibility of deadlock

    Methods for Handling Deadlocks

  • 7/30/2019 Process Synchronization and Deadlock

    37/41

    6.37 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Methods for Handling Deadlocks

    Ensure that the system will never enter a deadlock state

    Allow the system to enter a deadlock state and then recover

    Ignore the problem and pretend that deadlocks never occur

    in the system; used by most operating systems, includingUNIX

    Deadlock Prevention

  • 7/30/2019 Process Synchronization and Deadlock

    38/41

    6.38 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Deadlock Prevention

    Mutual Exclusion not required for sharableresources; must hold for nonsharable resources

    Hold and Wait must guarantee that whenever a

    process requests a resource, it does not hold any otherresources

    Require process to request and be allocated all itsresources before it begins execution, or allow process torequest resources only when the process has none

    Low resource utilization; starvation possible

    Restrain the ways request can be made

    Deadlock Prevention (Cont.)

  • 7/30/2019 Process Synchronization and Deadlock

    39/41

    6.39 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Deadlock Prevention (Cont.)

    No Preemption

    If a process that is holding some resources requests anotherresource that cannot be immediately allocated to it, then allresources currently being held are released

    Preempted resources are added to the list of resources forwhich the process is waiting

    Process will be restarted only when it can regain its oldresources, as well as the new ones that it is requesting

    Circular Wait impose a total ordering of all resourcetypes, and require that each process requests resources in

    an increasing order of enumeration

    Deadlock Avoidance

  • 7/30/2019 Process Synchronization and Deadlock

    40/41

    6.40 Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    Deadlock Avoidance

    Simplest and most useful model requires that eachprocess declare the maximum numberof resources ofeach type that it may need

    The deadlock-avoidance algorithm dynamically examinesthe resource-allocation state to ensure that there cannever be a circular-wait condition

    Resource-allocation stateis defined by the number ofavailable and allocated resources, and the maximumdemands of the processes

    Requires that the system has some additional a prioriinformationavailable

  • 7/30/2019 Process Synchronization and Deadlock

    41/41

    Silberschatz, Galvin and Gagne Operating System Concepts Essentials 8th Edition

    End of Chapter 6