1 Sincronización de Procesos 1. Formas de pasaje de información 2. Actividades críticas...
-
Upload
emperatriz-bermudez -
Category
Documents
-
view
219 -
download
0
Transcript of 1 Sincronización de Procesos 1. Formas de pasaje de información 2. Actividades críticas...
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