sincro-1
-
Upload
cualquiera -
Category
Documents
-
view
213 -
download
0
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)