1 sincronización de procesos 1. formas de pasaje de información 2. actividades críticas...

Post on 23-Jan-2016

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Sincronización de Procesos

1. Formas de pasaje de información

2. Actividades críticas protejidas (p. ej. actualización de información compartida)

3. Secuenciamiento adecuado en caso de dependencias

2 y 3 aplica también a threads.

2

Condiciones de Competencia

Dos procesos quieren acceder a memoria compartida al mismo tiempo.

El resultado final depende de cuando ejecuta cada uno.

3

Regiones Críticas (1)Parte del programa donde se accede a la memoria

compartida.Se deben dar 4 condiciones para proveer una comunicación

correcta y eficiente:

1. Exclusión Mutua: ningún par de procesos puede estar e la región crítica en forma simultánea.

2. No se debe hacer ninguna asunción acerca de la velocidad o número de CPUs.

3. Avance: ningún proceso ejecutando fuera de su sección crítica puede ser bloqueado por otro proceso.

4. Fairness: ningún proceso debe esperar por siempre para entrar a su sección crítica.

4

Regiones Críticas (2)

Exclusión mutua usando regiones críticas.

5

Exclusión Mutua Usando Espera Activa

1. Desabilitano las interrupciones. (Sólo el kernel)

2. Variables de Lock => race condition3. Alternancia estricta usando spin locks –

viola la condición 3.4. Solución de Peterson5. Test-and-set locks (TSL)

6

Alternancia Estricta

Solución propuesta para el problema de la región crítica(a) Proceso 0. (b) Proceso 1.

7

Solución de Peterson

Interested(process)= False => el proceso no ingresó y no quiere ingresar a la sección crítica.

Si ambos están interesados, un proceso sólo puede entrar si es el turno del otro.

8

Test-and-set lock

Entrando y saliendo de la sección crítica usando la instrucción TSL.

Instrucciones atómicas, implementadas en hardware.

9

Sleep y Wakeup

Productor-Consumidor problema de condición de competencia.

10

Semáforos

Variable entera con 2 operaciones atómicas: down: if 0, then go to sleep;

if >0, then decrementar valor

up: incrementar valor y dejar a un proceso dormido ejecutar un down

Implementado deshabilitando todas las interrupciones por el kernel.

11

Semáforos

Problema del productor-consumidor usando semáforos.

12

Mutexes

Implementación de mutex_lock y mutex_unlock

para sincronización threads en espacio de usuario

13

Monitores (1)

Ejemplo de monitor – sólo un proceso puede estar dentro del monitor a al vez

14

Monitors (2)

Ejemplo del problema del productor-consumidor con monitores Sólo un procedimiento del monitor puede estar activo a la vez El buffer tiene N entradasVariables de condition con wait and signal

15

Pasaje de Mensajes

Problema del productor-consumidor con N mensajes

16

Barreras

Uso de una barrera Procesos acercándose a la barrera Todos los procesos menos uno esperando en la barrera El último proceso llega, se deja pasar a todos

17

Cena de los Filósofos

Filósofos comen/piensan Para comer necesitan 2

tenedores Toman un tenedor a la

vez

18

Problema de los Filósofos

19

Solución sin Deadlock para los Filósofos (1)

20

Solución sin Deadlock para los Filósofos (2)

21

Lectores y Escritores

22

El Barbero Dormilón

23

Solución al Barbero Dormilón

top related