lunes, 18 de abril de 2016

COOPERACIÓN ENTRE PROCESOS

ü  Definición
ü  Problema de los Lectores – Escritores
ü  Problema Productor - Consumidor

•En la mayoría de las ocasiones los procesos son entidades totalmente aisladas: llevan a cabo su trabajo sin tener que comunicarse con otros procesos o programas. Sin embargo las cosas en realidad no son tan sencillas. En muchas ocasiones, los programas o procesos necesitan intercambiar información entre sí.
•Ejemplos:
•En una plataforma Windows, el intercambio de información a través del portapapeles.
•Chatear a través de la red. Hay dos procesos (dos navegadores) que intercambian información.

PROBLEMA DE LOS LECTORES-ESCRITORES
•Hay un objeto de datos (fichero de texto) que es utilizado por varios procesos, unos leen y otro que escribe.
•Solo puede utilizar el recurso un proceso y solo uno, es decir, o bien un proceso estará escribiendo o bien leyendo, pero nunca ocurrirá simultáneamente (teniendo en cuenta que si no lo esta utilizando nadie, tendrá preferencia el escritor ante el lector)



RESTRICCIONES:
•Solamente puede haber un escritor al mismo tiempo, si un escritor o un lector quiere utilizar la base de datos y  hay un escritor utilizándola, entonces debe  esperar.
•Pueden haber  varios lectores utilizando la base de datos al mismo tiempo, pero si un escritor quiere usar la base de datos mientras los lectores la usan, deberá esperar.
•El último lector en usar la base de datos debe habilitarla para que pueda ingresar el siguiente escritor que estaba esperando la base de datos o en todo caso al siguiente proceso que requiera usarla.

VÍDEO LECTORES-ESCRITORES
•https://www.youtube.com/watch?v=4MKiDA3I8f8

PROBLEMA PRODUCTOR-CONSUMIDOR
•Es un ejemplo clásico de problema de sincronización de multi-procesos.
El programa describe dos procesos, productor y consumidor, ambos comparten un buffer de tamaño finito. La tarea del productor es generar un producto, almacenarlo y comenzar nuevamente; mientras que el consumidor toma (simultáneamente) productos uno a uno. El problema consiste en que el productor no añada más productos que la capacidad del buffer y que el consumidor no intente tomar un producto si el buffer está vacío.

Un ejemplo de un problema de concurrencia sería el siguiente: Dados dos procesos A (productor) y B (consumidor), suponiendo que ambos se ejecutan indefinidamente en el tiempo, el proceso A debe recibir tiempo de ejecución antes que B, tras esto, el proceso B debe recibir su oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente, siguiendo un esquema de alternancia estricta.
          PROBLEMA PRODUCTOR-CONSUMIDOR