Top Banner
Sincronización entre Procesos
21

Sincronización entre procesos

Feb 19, 2017

Download

Software

Ichinose 11
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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