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.
1
Condiciones de Competencia
Dos procesos quieren acceder a memoria compartida al mismo
tiempo.
2
El resultado final depende de cuando ejecuta cada uno.
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.
3
4. Fairness: ningún proceso debe esperar por siempre
Regiones Críticas (2)
Exclusión mutua usando regiones
críticas.
4
Exclusión Mutua Usando
Espera Activa
1. Desabilitano las interrupciones. (Sólo el
kernel)
2. Variables de Lock => race condition
3. Alternancia estricta usando spin locks –
viola la condición 3.
4. Solución de Peterson
5. Test-and-set locks (TSL)
5
Alternancia Estricta
Solución propuesta para el problema de
la región crítica
6
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
7
Test-and-set lock
Entrando y saliendo de la sección crítica usando
la instrucción TSL.
Instrucciones atómicas, implementadas en
hardware.
8
Sleep y Wakeup
9
Productor-Consumidor problema de condición de
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.
10
Semáforos
Problema del productor-consumidor usando
11
Mutexes
Implementación de mutex_lock y mutex_unlock
para sincronización threads en espacio de 12
usuario
Monitores (1)
Ejemplo de monitor – sólo un proceso puede13
estar dentro del monitor a al vez
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 entradas
14
Pasaje de Mensajes
Problema del productor-consumidor con N 15
Barreras

Uso de una barrera


Procesos acercándose a la barrera
Todos los procesos menos uno esperando
en la barrera
16
Cena de los Filósofos



Filósofos
comen/piensan
Para comer necesitan
2 tenedores
Toman un tenedor a la
vez
17
Problema de los Filósofos
18
Solución sin Deadlock para los
Filósofos (1)
19
Solución sin Deadlock para los
Filósofos (2)
20
Lectores y Escritores
21
El Barbero Dormilón
22
Solución al Barbero Dormilón
23
Descargar

Descargar