240 likes | 523 Views
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. Condiciones de Competencia.
E N D
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.
Condiciones de Competencia Dos procesos quieren acceder a memoria compartida al mismo tiempo. 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. 4. Fairness: ningún proceso debe esperar por siempre para entrar a su sección crítica.
Regiones Críticas (2) Exclusión mutua usando regiones críticas.
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)
Alternancia Estricta Solución propuesta para el problema de la región crítica (a) Proceso 0. (b) Proceso 1.
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.
Test-and-set lock Entrando y saliendo de la sección crítica usando la instrucción TSL. Instrucciones atómicas, implementadas en hardware.
Sleep y Wakeup Productor-Consumidor problema de condición de competencia.
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.
Semáforos Problema del productor-consumidor usando semáforos.
Mutexes Implementación de mutex_lock y mutex_unlock para sincronización threads en espacio de usuario
Monitores (1) Ejemplo de monitor – sólo un proceso puede 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 Variables de condition con wait and signal
Pasaje de Mensajes Problema del productor-consumidor con N mensajes
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
Cena de los Filósofos • Filósofos comen/piensan • Para comer necesitan 2 tenedores • Toman un tenedor a la vez