Upload
ichinose-11
View
91
Download
1
Embed Size (px)
Citation preview
Sincronización entre Procesos
Sincronización entre Procesos
Conjunto de Protocolos y mecanismos, utilizados para preservar la integridad y consistencia del sistema cuando varios procesos concurrentes comparten recursos que son reutilizables en serie
La sincronización entre procesos puede definirse como la necesidad que tienen algunos procesos de bloquearse en determinadas circunstancias y ser despertados cuando ocurren ciertos eventos.
Un caso típico en el cual se requiere sincronización ocurre cuando un proceso inicia una lectura y va a utilizar en la siguiente instrucción la información leida. En este caso se debe esperar a que la operación de E/S termine para poder continuar la ejecución.
Sincronización entre Procesos
Necesidades de Sincronización entre Procesos
El uso de variables compartidas es una forma sencilla y habitual de comunicación entre procesos cooperativos. Cuando un conjunto de procesos tienen acceso a un espacio común de direcciones, puede usar variables compartidas para una serie de cometidos.
Exclusión Mutua
Método alternativo que proporciona la metodología y las herramientas necesarias para tratar con problemas de sincronización entre procesos.La actualización de una variable compartida puede ser considerada como una sección crítica.
Sección Crítica
Es una secuencia de instrucciones con un comienzo y un final claramente marcados, que generalmente delimita la actualización de una o más variables compartidas.Sólo el proceso que ejecuta la sección crítica tiene permitido el acceso a la variable compartida; los restantes procesos deberían tenerlo prohibido hasta la terminación de la Sección Crítica.
El problema de la Sección Crítica
• n procesos compitiendo para utilizar algún dato compartido.
• Cada proceso tiene un segmento de código, llamado sección crítica, en
el que se accede al dato compartido. • Problema – asegurarse de que cuando un
proceso esta ejecutandose en su sección crítica, a ningún otro proceso se
le permite ejecutar la suya.
Exclusión Mútua
Si un proceso P i esta ejecutandose en su sección crítica,entonces ninguno de los otros procesos puede estar en su sección crítica.
Solución al Problema de Exclusión Mutua
Acceder al Recurso compartido Protegido. No hacer suposiciones con respecto a las
velocidades. Garantizar el aborto o terminación de cualquier
proceso fuera de su S.C. No afecte la capacidad de los restantes
Cuando más de un proceso desee entrar a la S.C. Concederle la entrada a uno de ellos en tiempo finito.
Progreso
Si ningún proceso esta ejecutándose en su sección crítica y existen procesos que quieren entrar en su sección crítica, entonces la selección del próximo proceso que entrará a la sección crítica no puede ser pospuesta indefinidamente
Espera limitada.
Debe existir un límite del número de veces que se les permite a otros procesos entrar en sus secciones críticas en el intervalo entre que un proceso ha hecho un requerimiento para entrar en su sección crítica y que se le concede el permiso. Se supone que cada proceso se ejecuta a velocidad distinta de cero. Ninguna suposición respecto a la velocidad relativa de los n procesos.
Semáforos
Mecanismo para exclusión mutua entre un número arbitrario de procesos.Una vez iniciado un proceso ninguno otro podra accesar hasta que se complete la operación.
Wait(s): Decrementa el valor de su argumento semáforo.
Signal(s): Incrementa el valor de su argumento semáforo.
Semáforos
• Herramienta de sincronización que no requiere “espera activa” (del
proceso). • Semáforo S – variable entera • Solo puede ser accedida vía dos
operaciones indivisibles (atómicas)
Semáforos
• El aspecto crítico es que los semáforos sean ejecutados atómicamente
(dos procesos no deben ejecutar signal o wait sobre el mismo semáforo al
mismo tiempo)
Semáforo
• Dos soluciones: – Monoprocesador: inhibir las
interrupciones... – Multiprocesador: el hardware lo suministra,
o alguna de las soluciones software. (observar que las
secciones críticas (donde se puede necesitar la espera activa) ahora es el
código de signal y wait).
Problemas con los Semáforos
Los semáforos son propensos a los errores de programación:
– La inversión del par P() y V() causará la violación de la condición de
exclusión mútua. – Y la omisión de una P() o de una V()
potencialmente causará deadlock • Estos problemas son difíciles de encontrar y
muchas veces difíciles de reproducir.
Comunicación entre Procesos
• Los procesos deben nombrase uno a otro explícitamente: – send (P, mensaje) – envia mensaje al proceso P – receive(Q, mensaje) – recibe un mensaje del proceso Q • Propiedades del enlace de comunicación – Los enlaces se establecen automáticamente (se conocen
uno a otro). – Un enlace esta asociado con exactamente un par de
procesos comunicádose. – Entre cada par existe exactamente un enlace. – El enlace puede ser unidireccional, pero normalmente es
bidireccional.
Memoria Compartida • La otra forma de comunicar procesos es
utilizando memoria compartida. • Sin embargo, el acceso concurrente a los
datos compartidos puede conducir a inconsistencia de datos. • Mantener la consistencia de los datos
requiere mecanismos (sincronización) para asegurar la ejecución
ordenada de los procesos cooperantes.
Problemas Clásicos de Sincronización
• Estos problemas se utilizan para probar casi cualquier nuevo
esquema de sincronización que sea propuesto.
• El problema de buffer limitado – se utiliza normalmente para ilustrar la
potencia de las primitivas de sincronización.
Problemas Clásicos de Sincronización
Problema de Lectores-Escritores • Si se permiten múltiples lectores, entonces hay
varios aspectos a tener en cuenta acerca de cuando un escritor puede
acceder al objeto. • Debemos esperar a que todos los lectores
completen su lectura antes de permitir que el escritor bloquee el objeto. – Podemos no dejar comenzar a nuevos lectores, – o hacer que el escritor espere hasta que no haya
lectores.
Problemas de Comunicación entre procesos
Productor-consumidor Lectores-Escritores Los Filósofos Pensadores. El Barbero Dormilón