Sincronización entre procesos

21
Sincronización entre Procesos

Transcript of Sincronización entre procesos

Page 1: Sincronización entre procesos

Sincronización entre Procesos

Page 2: 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

Page 3: Sincronización entre procesos

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

Page 4: 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.

Page 5: Sincronización entre procesos

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.

Page 6: Sincronización entre procesos

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.

Page 7: Sincronización entre procesos

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.

Page 8: Sincronización entre procesos

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.

Page 9: Sincronización entre procesos

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.

Page 10: Sincronización entre procesos

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

Page 11: Sincronización entre procesos

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.

Page 12: Sincronización entre 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.

Page 13: Sincronización entre procesos

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)

Page 14: Sincronización entre procesos

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)

Page 15: Sincronización entre procesos

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).

Page 16: Sincronización entre procesos

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.

Page 17: Sincronización entre procesos

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.

Page 18: Sincronización entre procesos

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.

Page 19: Sincronización entre procesos

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.

Page 20: Sincronización entre procesos

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.

Page 21: Sincronización entre procesos

Problemas de Comunicación entre procesos

Productor-consumidor Lectores-Escritores Los Filósofos Pensadores. El Barbero Dormilón