sincro-1

download sincro-1

of 42

Transcript of sincro-1

  • 8/16/2019 sincro-1

    1/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Sincronización entre procesos(aka: semáforos)

    Damian Bursztyn

    DC - FCEyN - UBA

    Sistemas Operativos, 1c-2012

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    2/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Primero repasemos un poco lo que vieron en la teórica.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    3/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Primero repasemos un poco lo que vieron en la teórica.

    Qué es una  race condition?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    4/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Primero repasemos un poco lo que vieron en la teórica.

    Qué es una  race condition?Defecto en un proceso, donde el resultado del mismo dependeinesperadamente o cŕıticamente del orden en que se ejecutenciertos eventos.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    R R di i

  • 8/16/2019 sincro-1

    5/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Cuál es el output de los siguientes procesos  A  y  B  corriendosimultáneamente y con memoria compartida?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    R R diti

  • 8/16/2019 sincro-1

    6/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Cuál es el output de los siguientes procesos  A  y  B  corriendosimultáneamente y con memoria compartida?

    A x = 1 ;

    print(x);

    B x = 4 ;

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    Repaso Race condition

  • 8/16/2019 sincro-1

    7/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Cuál es el output de los siguientes procesos  A  y  B  corriendosimultáneamente y con memoria compartida?x  comienza inicializado en 0.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    Repaso Race condition

  • 8/16/2019 sincro-1

    8/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Cuál es el output de los siguientes procesos  A  y  B  corriendosimultáneamente y con memoria compartida?x  comienza inicializado en 0.

    Ax = x + 1;

    print(x);

    Bx = x + 1 ;

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    9/42

    Repaso Race condition

  • 8/16/2019 sincro-1

    10/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

    Race conditionSemáforosDeadlock

    Qué es un semáforo?Es una variable (o tipo abstracto de datos) que permitecontrolar el acceso de múltiples procesos a un recurso comúnen un ambiente de programación paralela.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    Repaso Race condition

  • 8/16/2019 sincro-1

    11/42

    pSincronización (Ej. introductorios)

    DeadlockSemáforosDeadlock

    Qué es un semáforo?Es una variable (o tipo abstracto de datos) que permitecontrolar el acceso de múltiples procesos a un recurso comúnen un ambiente de programación paralela.

    Es lo mismo que usar un entero y fijarme qué valor tiene?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    Repaso Race condition

  • 8/16/2019 sincro-1

    12/42

    pSincronización (Ej. introductorios)

    DeadlockSemáforosDeadlock

    Qué es un semáforo?Es una variable (o tipo abstracto de datos) que permitecontrolar el acceso de múltiples procesos a un recurso comúnen un ambiente de programación paralela.

    Es lo mismo que usar un entero y fijarme qué valor tiene?No, es escencial que las primitivas sobre semáforos seanatómicas.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    Repaso Race condition

  • 8/16/2019 sincro-1

    13/42

    Sincronización (Ej. introductorios)Deadlock

    SemáforosDeadlock

    Recordemos cuáles son las primitivas:

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoS ( )

    Race conditionS f

  • 8/16/2019 sincro-1

    14/42

    Sincronización (Ej. introductorios)Deadlock

    SemáforosDeadlock

    Recordemos cuáles son las primitivas:

    Primitivassem_create(int value): Devuelve un nuevo semáforoinicializado en  value. (Otras formas:   Semaphore(value),new Semaphore(value), etc.)

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSi i i´ (Ej i d i )

    Race conditionS ´f

  • 8/16/2019 sincro-1

    15/42

    Sincronización (Ej. introductorios)Deadlock

    SemáforosDeadlock

    Recordemos cuáles son las primitivas:

    Primitivassem_create(int value): Devuelve un nuevo semáforoinicializado en  value. (Otras formas:   Semaphore(value),new Semaphore(value), etc.)

    sem_wait(semaphore sem): Mientras el valor sea menor o

    igual a 0 se bloquea esperando un  signal. Luego decrementael valor de  sem. (Otras formas:  wait(sem),  P(sem),sem.wait(), etc.)

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSi i i´ (Ej i t d t i s)

    Race conditionS ´f s

  • 8/16/2019 sincro-1

    16/42

    Sincronizacion (Ej. introductorios)Deadlock

    SemaforosDeadlock

    Recordemos cuáles son las primitivas:

    Primitivassem_create(int value): Devuelve un nuevo semáforoinicializado en  value. (Otras formas:   Semaphore(value),new Semaphore(value), etc.)

    sem_wait(semaphore sem): Mientras el valor sea menor o

    igual a 0 se bloquea esperando un  signal. Luego decrementael valor de  sem. (Otras formas:  wait(sem),  P(sem),sem.wait(), etc.)

    sem_signal(semaphore sem, [int n = 1]): Incrementa

    en uno el valor del semáforo  sem  y despierta a  alguno 1

    de losprocesos que están esperando en ese semáforo. (Otras formas:signal(sem, [n]),  V(sem),   sem.signal([n]), etc.)

    1En general las bibliotecas de semáforos no garantizan en qué orden se

    despertará a los procesos que están esperando en un semáforo.Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    17/42

    Sincronizacion (Ej. introductorios)Deadlock

    SemaforosDeadlock

    Cuando esta en deadlock un conjunto de procesos?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    18/42

    Sincronizacion (Ej. introductorios)Deadlock

    SemaforosDeadlock

    Cuando esta en deadlock un conjunto de procesos?un conjunto de procesos está en deadlock si cada proceso del

    conjunto está esperando por un evento que sólo otro de losprocesos del conjunto puede causar.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    19/42

    Sincronizacion (Ej. introductorios)Deadlock

    SemaforosDeadlock

    Condiciones (Coffman y ćıa, 1971)Exclusión mutua: Cada recurso está asignado a un proceso oestá disponible.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    20/42

    Sincronizacion (Ej. introductorios)Deadlock

    SemaforosDeadlock

    Condiciones (Coffman y ćıa, 1971)Exclusión mutua: Cada recurso está asignado a un proceso oestá disponible.

    Hold and wait: Los procesos que ya tienen algún recursopueden solicitar otro.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    21/42

    ( j )Deadlock Deadlock

    Condiciones (Coffman y ćıa, 1971)Exclusión mutua: Cada recurso está asignado a un proceso oestá disponible.

    Hold and wait: Los procesos que ya tienen algún recursopueden solicitar otro.

    No preemption: No hay mecanismo compulsivo para quitarlelos recursos a un proceso que ya los tiene. El proceso debeliberarlos expĺıcitamente.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    22/42

    ( )Deadlock Deadlock

    Condiciones (Coffman y ćıa, 1971)Exclusión mutua: Cada recurso está asignado a un proceso oestá disponible.

    Hold and wait: Los procesos que ya tienen algún recursopueden solicitar otro.

    No preemption: No hay mecanismo compulsivo para quitarlelos recursos a un proceso que ya los tiene. El proceso debeliberarlos expĺıcitamente.

    Espera circular: Tiene que haber una cadena de dos o más

    procesos, cada uno de los cuales está esperando algún recursoque tiene el miembro siguiente.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Race conditionSemáforos

  • 8/16/2019 sincro-1

    23/42

    Deadlock Deadlock

    Condiciones (Coffman y ćıa, 1971)1 Exclusión mutua

    2 Hold & Wait

    3 Sin desalojo

    4 Espera circular

    Las cuatro deben estar presente para que haya deadlock. Soncondiciones necesarias.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    D dl k

    Race conditionSemáforosD dl k

  • 8/16/2019 sincro-1

    24/42

    Deadlock Deadlock

    Condiciones (Coffman y ćıa, 1971)1 Exclusión mutua

    2 Hold & Wait

    3 Sin desalojo

    4 Espera circular

    Las cuatro deben estar presente para que haya deadlock. Soncondiciones necesarias.

    Estas condiciones se pueden modelar como grafos con dos

    tipos de nodos: procesos y recursos. Hay deadlock si seencuentra un ciclo en el grafo.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    25/42

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    26/42

    Deadlock

    EjercicioSe tienen 3 procesos A, B y C. Construya el código con semáforos demanera tal que la secuencia sea ABC,ABC,ABC,. . .

    Solución:

    Uso 3 semáforos, sem A, sem B y sem C. Sus valores de inicializaciánson:sem A = 1, sem B = 0, sem C = 0

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    27/42

    Deadlock

    EjercicioSe tienen 3 procesos A, B y C. Construya el código con semáforos demanera tal que la secuencia sea ABC,ABC,ABC,. . .

    Solución:

    Uso 3 semáforos, sem A, sem B y sem C. Sus valores de inicializaciánson:sem A = 1, sem B = 0, sem C = 0

    P(sem A) P(sem B) P(sem C)

    // Algo // Algo // AlgoV(sem B) V(sem C) V(sem A)

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    28/42

    Deadlock

    Ejercicio

    ¿Y si quiero que la secuencia sea BCA,BCA,BCA,. . .?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    29/42

    Deadlock

    Ejercicio

    ¿Y si quiero que la secuencia sea BCA,BCA,BCA,. . .?

    Solución:

    Cambio los valores de inicialización de los semáforos porsem A = 0, sem B = 1, sem C = 0

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    30/42

    Ejercicio¿Y si quiero que la secuencia sea BBCA,BBCA,BBCA,. . .?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    31/42

    Ejercicio¿Y si quiero que la secuencia sea BBCA,BBCA,BBCA,. . .?

    Solución:

    Uso 3 semáforos, sem A, sem B y sem C. Sus valores de inicializaciónson:

    sem A = 0, sem B = 2, sem C = 0

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)

    Deadlock

  • 8/16/2019 sincro-1

    32/42

    Ejercicio¿Y si quiero que la secuencia sea BBCA,BBCA,BBCA,. . .?

    Solución:

    Uso 3 semáforos, sem A, sem B y sem C. Sus valores de inicializaciónson:

    sem A = 0, sem B = 2, sem C = 0

    P(sem A) P(sem B) P(sem C)// Algo // Algo P(sem C)V(sem B) V(sem C) // AlgoV(sem B) V(sem A)

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    33/42

    Deadlock

    So it begins, the great battle of our time.

    Un ejemplo t́ıpico de deadlock es

    P1

    sem1.wait();

    sem2.wait();

    // Sección crı́ticasem2.signal();

    sem1.signal();

    P2

    sem2.wait();

    sem1.wait();

    // Sección crı́ticasem1.signal();

    sem2.signal();

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    34/42

    Ejercicio

    En un sistema conviven 3 procesos y 2 recursos. Uno de los

    recursos (R2) es de uso exclusivo y el otro (R1) puede sercompartido por hasta dos procesos. ¿Puede haber deadlock?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    35/42

    Ejercicio

    En un sistema conviven 3 procesos y 2 recursos. Uno de los

    recursos (R2) es de uso exclusivo y el otro (R1) puede sercompartido por hasta dos procesos. ¿Puede haber deadlock?

    Solución:

    Śı.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    36/42

    Ejercicio

    ¿Y si ahora R1 puede ser compartido por hasta tres procesos?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    37/42

    Ejercicio

    ¿Y si ahora R1 puede ser compartido por hasta tres procesos?

    Solución:

    No.

    Ejercicio

    ¿Cuál o cuáles de las condiciones de Coffman no se cumple?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    38/42

    Ejercicio

    ¿Y si ahora R1 puede ser compartido por hasta tres procesos?

    Solución:

    No.

    Ejercicio

    ¿Cuál o cuáles de las condiciones de Coffman no se cumple?

    Recordemos las condiciones deCoffman

    1 Exclusión mutua2 Hold & Wait

    3 Sin desalojo

    4 Espera circular

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    39/42

    Ejercicio

    ¿Y si ahora R1 puede ser compartido por hasta tres procesos?

    Solución:

    No.

    Ejercicio

    ¿Cuál o cuáles de las condiciones de Coffman no se cumple?

    Recordemos las condiciones deCoffman

    1 Exclusión mutua2 Hold & Wait

    3 Sin desalojo

    4 Espera circular

    Solución:

    No hay exclusión mutua,porque a los efectos del

    problema R1 puede ser usadopor todos los procesos almismo tiempo.

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    40/42

    EjercicioEn un sistema hay tres procesos (P1, P2 y P3) y tres recursos (R1,R2, R3). Los tres recursos son de uso exclusivo. Se sabe que P1requiere los tres recursos, P2 requiere de R1 y R2 y P3 sólo requireR3.

    1 ¿El sistema está libre de deadlock?

    2 ¿P3 influye en que el sistema está o no libre de deadlock?

    3 Si me aseguro que P2 no podrá pedir ningún recurso hastaque P1 haya liberado todos sus recursos ¿El sistema está librede deadlock? ¿Por qué?

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)

  • 8/16/2019 sincro-1

    41/42

    RepasoSincronización (Ej. introductorios)Deadlock

  • 8/16/2019 sincro-1

    42/42

    El próximo Martes: Más ejercicios de sincronización dif́ıciles

    Damian Bursztyn   Sincronización entre procesos (aka: semáforos)