Está en la página 1de 42

Repaso

Sincronizaci
on (Ej. introductorios)
Deadlock

Sincronizacion entre procesos


(aka: semaforos)
Damian Bursztyn
DC - FCEyN - UBA

Sistemas Operativos, 1c-2012

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Primero repasemos un poco lo que vieron en la te


orica.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Primero repasemos un poco lo que vieron en la te


orica.

Que es una race condition?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Primero repasemos un poco lo que vieron en la te


orica.

Que es una race condition?


Defecto en un proceso, donde el resultado del mismo depende
inesperadamente o crticamente del orden en que se ejecuten
ciertos eventos.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cual es el output de los siguientes procesos A y B corriendo


simultaneamente y con memoria compartida?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cual es el output de los siguientes procesos A y B corriendo


simultaneamente y con memoria compartida?
B

x = 4;

x = 1;
print(x);

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cual es el output de los siguientes procesos A y B corriendo


simultaneamente y con memoria compartida?
x comienza inicializado en 0.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cual es el output de los siguientes procesos A y B corriendo


simultaneamente y con memoria compartida?
x comienza inicializado en 0.
A

B
x = x + 1;

x = x + 1;

print(x);

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Que es un semaforo?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Que es un semaforo?
Es una variable (o tipo abstracto de datos) que permite
controlar el acceso de m
ultiples procesos a un recurso com
un
en un ambiente de programaci
on paralela.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Que es un semaforo?
Es una variable (o tipo abstracto de datos) que permite
controlar el acceso de m
ultiples procesos a un recurso com
un
en un ambiente de programaci
on paralela.
Es lo mismo que usar un entero y fijarme que valor tiene?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Que es un semaforo?
Es una variable (o tipo abstracto de datos) que permite
controlar el acceso de m
ultiples procesos a un recurso com
un
en un ambiente de programaci
on paralela.
Es lo mismo que usar un entero y fijarme que valor tiene?
No, es escencial que las primitivas sobre semaforos sean
atomicas.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Recordemos cuales son las primitivas:

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Recordemos cuales son las primitivas:


Primitivas
sem_create(int value): Devuelve un nuevo semaforo
inicializado en value. (Otras formas: Semaphore(value),
new Semaphore(value), etc.)

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Recordemos cuales son las primitivas:


Primitivas
sem_create(int value): Devuelve un nuevo semaforo
inicializado 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 decrementa
el valor de sem. (Otras formas: wait(sem), P(sem),
sem.wait(), etc.)

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Recordemos cuales son las primitivas:


Primitivas
sem_create(int value): Devuelve un nuevo semaforo
inicializado 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 decrementa
el 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 semaforo sem y despierta a alguno1 de los
procesos que estan esperando en ese semaforo. (Otras formas:
signal(sem, [n]), V(sem), sem.signal([n]), etc.)
1

En general las bibliotecas de sem


aforos no garantizan en que orden se
despertar
a a los procesos que est
an esperando en un sem
aforo.
Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cuando esta en deadlock un conjunto de procesos?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Cuando esta en deadlock un conjunto de procesos?


un conjunto de procesos esta en deadlock si cada proceso del
conjunto esta esperando por un evento que s
olo otro de los
procesos del conjunto puede causar.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


Exclusion mutua: Cada recurso esta asignado a un proceso o
esta disponible.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


Exclusion mutua: Cada recurso esta asignado a un proceso o
esta disponible.
Hold and wait: Los procesos que ya tienen alg
un recurso
pueden solicitar otro.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


Exclusion mutua: Cada recurso esta asignado a un proceso o
esta disponible.
Hold and wait: Los procesos que ya tienen alg
un recurso
pueden solicitar otro.
No preemption: No hay mecanismo compulsivo para quitarle
los recursos a un proceso que ya los tiene. El proceso debe
liberarlos explcitamente.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


Exclusion mutua: Cada recurso esta asignado a un proceso o
esta disponible.
Hold and wait: Los procesos que ya tienen alg
un recurso
pueden solicitar otro.
No preemption: No hay mecanismo compulsivo para quitarle
los recursos a un proceso que ya los tiene. El proceso debe
liberarlos explcitamente.
Espera circular: Tiene que haber una cadena de dos o mas
procesos, cada uno de los cuales esta esperando alg
un recurso
que tiene el miembro siguiente.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


1

Exclusion mutua

Hold & Wait

Sin desalojo

Espera circular
Las cuatro deben estar presente para que haya deadlock. Son
condiciones necesarias.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Race condition
Sem
aforos
Deadlock

Condiciones (Coffman y ca, 1971)


1

Exclusion mutua

Hold & Wait

Sin desalojo

Espera circular
Las cuatro deben estar presente para que haya deadlock. Son
condiciones necesarias.
Estas condiciones se pueden modelar como grafos con dos
tipos de nodos: procesos y recursos. Hay deadlock si se
encuentra un ciclo en el grafo.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Se tienen 3 procesos A, B y C. Construya el c
odigo con semaforos de
manera tal que la secuencia sea ABC,ABC,ABC,. . .

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Se tienen 3 procesos A, B y C. Construya el c
odigo con semaforos de
manera tal que la secuencia sea ABC,ABC,ABC,. . .
Soluci
on:
Uso 3 semaforos, sem A, sem B y sem C. Sus valores de inicializacian
son:
sem A = 1, sem B = 0, sem C = 0

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Se tienen 3 procesos A, B y C. Construya el c
odigo con semaforos de
manera tal que la secuencia sea ABC,ABC,ABC,. . .
Soluci
on:
Uso 3 semaforos, sem A, sem B y sem C. Sus valores de inicializacian
son:
sem A = 1, sem B = 0, sem C = 0
P(sem A)
// Algo
V(sem B)

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

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

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

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

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si quiero que la secuencia sea BCA,BCA,BCA,. . .?
Soluci
on:
Cambio los valores de inicializaci
on de los semaforos por
sem A = 0, sem B = 1, sem C = 0

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

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

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si quiero que la secuencia sea BBCA,BBCA,BBCA,. . .?
Soluci
on:
Uso 3 semaforos, sem A, sem B y sem C. Sus valores de inicializacion
son:
sem A = 0, sem B = 2, sem C = 0

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si quiero que la secuencia sea BBCA,BBCA,BBCA,. . .?
Soluci
on:
Uso 3 semaforos, sem A, sem B y sem C. Sus valores de inicializacion
son:
sem A = 0, sem B = 2, sem C = 0
P(sem A)
// Algo
V(sem B)
V(sem B)

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

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

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Deadlock

So it begins, the great battle of our time.


Un ejemplo tpico de deadlock es
P1
sem1.wait();
sem2.wait();
// Secci
on cr
tica
sem2.signal();
sem1.signal();

P2
sem2.wait();
sem1.wait();
// Secci
on cr
tica
sem1.signal();
sem2.signal();

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
En un sistema conviven 3 procesos y 2 recursos. Uno de los
recursos (R2) es de uso exclusivo y el otro (R1) puede ser
compartido por hasta dos procesos. Puede haber deadlock?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
En un sistema conviven 3 procesos y 2 recursos. Uno de los
recursos (R2) es de uso exclusivo y el otro (R1) puede ser
compartido por hasta dos procesos. Puede haber deadlock?
Soluci
on:
S.

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

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

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si ahora R1 puede ser compartido por hasta tres procesos?
Soluci
on:
No.
Ejercicio
Cual o cuales de las condiciones de Coffman no se cumple?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si ahora R1 puede ser compartido por hasta tres procesos?
Soluci
on:
No.
Ejercicio
Cual o cuales de las condiciones de Coffman no se cumple?

Recordemos las condiciones de


Coffman
1 Exclusi
on mutua
2

Hold & Wait

Sin desalojo

Espera circular
Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
Y si ahora R1 puede ser compartido por hasta tres procesos?
Soluci
on:
No.
Ejercicio
Cual o cuales de las condiciones de Coffman no se cumple?

Recordemos las condiciones de


Coffman
1 Exclusi
on mutua
2

Hold & Wait

Sin desalojo

Espera circular
Damian Bursztyn

Soluci
on:
No hay exclusion mutua,
porque a los efectos del
problema R1 puede ser usado
por todos los procesos al
mismo tiempo.

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

Ejercicio
En 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 P1
requiere los tres recursos, P2 requiere de R1 y R2 y P3 solo require
R3.
1

El sistema esta libre de deadlock?

P3 influye en que el sistema esta o no libre de deadlock?

Si me aseguro que P2 no podra pedir ning


un recurso hasta
que P1 haya liberado todos sus recursos El sistema esta libre
de deadlock? Por que?

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

El proximo Martes: Mas ejercicios de sincronizaci


on difciles

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

Repaso
Sincronizaci
on (Ej. introductorios)
Deadlock

El proximo Martes: Mas ejercicios de sincronizaci


on difciles

Damian Bursztyn

Sincronizaci
on entre procesos (aka: sem
aforos)

También podría gustarte