viernes, 20 de noviembre de 2015

Arquitectura Pipeline


PATRON DE DISEÑO PIPELINE


NOMBRE: Pipeline.

INTENCION:
Pipeline (Tuberías) es un término que pertenece a la ingeniería de software  y consiste en una cadena de elementos de procesamiento ordenados de tal manera que la salida de cada elemento es la entrada del siguiente elemento  con almacenamiento temporal de datos o buffering entre todos  los procesos.

Un pipeline o tubería es  un conjunto de elementos procesadores de datos conectados en serie, en donde la salida de un elemento es la entrada del siguiente. Los elementos del pipeline son generalmente ejecutados en paralelo, en esos casos, debe haber un almacenamiento tipo buffer insertado entre elementos.
Esta arquitectura es muy común en el desarrollo de programas para el intérprete, ya que se puede conectar por comandos fácilmente con tuberías (pipe). También es común verlos en sistemas operativos multitarea ya que ejecutan una serie de procesos de manera simultaneas, los cuales son ejecutados de manera secuencial mediante un administrador de tareas dándoles diferente prioridad de procesamiento, alternando entre este sistema “pipeline” y los demás.


ALIAS: Tubería.


APLICAVILIDAD:

PIPELINE GRAFICOS: se encuentran en la mayoría de las tarjetas graficadoras y consiste en múltiples unidades aritméticas o CPUs completas  que implementan variados escenarios de operaciones típicas, por ejemplo cálculos de luz y colores  renderizado proyección de perspectiva entre otros. 
             Ejemplo:

·         Cálculos de luz y colores
·         Renderizado
·         Proyección de perspectiva, etc.
PIPELINE SOFTWARE: Consiste en múltiples procesos ordenados de tal forma que el flujo de salida de un procesado alimenta la entrada del siguiente proceso. Por ejemplo:
·         Pipelines de Unix. 

IMPLEMENTACION TIPO UNIX:  
En la mayoría de los sistemas tipo Unix, los procesos de este sistema se inician al mismo tiempo, con sus corrientes conectados bien planeados, y gestionado por el planificador junto con todos los demás procesos que se ejecutan en la máquina.
Un aspecto importante de este sistema, además de las implementaciones, es el concepto de almacenamiento en búfer: por ejemplo, un programa que envía datos puede producir 5.000 bytes por segundo, y un programa de recepción sólo puede ser capaz de aceptar 100 bytes por segundo, pero los datos no se pierden.

Cuando el programa de recepción está listo para leer los datos, el sistema operativo envía sus datos de la cola, a continuación, elimina los datos de la cola. Si el buffer de la cola se llena, el programa de envío se suspende (se bloquea) hasta que el programa de recepción ha tenido la oportunidad de leer algunos datos y hacer espacio en el búfer. En Linux, el tamaño del búfer es de 65536 bytes.

ESTRUCTURA

Diagrama

                                                      Ilustración 1Diagrama de Clases Pipeline.

Flujo de Datos

                                                     Ilustración 2 Flujo de Datos de la Tuberia.

CONSECUENCIAS:

Positivas:

  ü  Permite comprender el comportamiento de entrada /salida de un sistema como la composición del                comportamiento de los filtros individuales.

  ü  Facilita el mantenimiento y crecimiento.

  ü  Permiten realizar análisis de ‘deadlock’ y rendimiento.

  ü  Soporte de ejecución concurrente. 

  ü  Facilita la reutilización de transformaciones. 

  ü  Es intuitivo Fácil agregar / quitar transformaciones Relativamente sencillo de implementar, a nivel                    concurrente o secuencial.

Negativas:

  ü  Frecuentemente tienden a una organización de procesamiento batch.

  ü  No son buenos para aplicaciones interactivas.

  ü  Pueden complicarse al tener que mantener dos flujos separados pero relacionados. 

  ü  Puede ser necesario agregar a los filtros conversión de datos de entrada y salida.

  ü  Pérdida de performance e incremento de complejidad delos filtros. 

  ü  Es difícil soportar interacciones basadas en eventos. 

CÓDIGO:

Link de diferentes ejemplos del patrón pipeline:

REFERENCIAS BIBLIOGRÁFICAS: