Sincronización entre procesos

Post on 19-Feb-2017

88 views 1 download

Transcript of Sincronización entre procesos

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