Tubería (informática)

En informática, una tubería (pipeline o cauce) consiste en una cadena de procesos conectados de forma tal que la salida de cada elemento de la cadena es la entrada del próximo. Permiten la comunicación y sincronización entre procesos. Es común el uso de búfer de datos entre elementos consecutivos.

La comunicación por medio de tuberías se basa en la interacción productor/consumidor, los procesos productores (aquellos que envían datos) se comunican con los procesos consumidores (que reciben datos) siguiendo un orden FIFO. Una vez que el proceso consumidor recibe un dato, este se elimina de la tubería.

Implementación

Las tuberías están implementadas en forma muy eficiente en los sistemas operativos multitarea, iniciando todos los procesos al mismo tiempo, y atendiendo automáticamente los requerimientos de lectura de datos para cada proceso cuando los datos son escritos por el proceso anterior. De esta manera el planificador de corto plazo va a dar el uso de la CPU a cada proceso a medida que pueda ejecutarse minimizando los tiempos muertos.

Para mejorar el rendimiento, la mayoría de los sistemas operativos implementan las tuberías usando búferes, lo que permite al proceso proveedor generar más datos que lo que el proceso consumidor puede atender inmediatamente.

Tubería sin nombre

Las tuberías sin nombre tienen asociado un fichero en memoria principal, por lo tanto, son temporales y se eliminan cuando no están siendo usados ni por productores ni por consumidores. Permiten la comunicación entre el proceso que crea un cauce y procesos hijos tras la creación de la tubería.

Tubería con nombre

Su diferencia respecto a las tuberías sin nombre radica en que el cauce se crea en el sistema de archivos, y por lo tanto no tienen carácter temporal. Se manejan mediante llamadas al sistema (open, close, read y write) como el resto de ficheros del sistema. Permiten la comunicación entre los procesos que usen dicha tubería, aunque no exista una conexión jerárquica entre ellos.

Es también llamada FIFO por su comportamiento, que es una extensión del concepto tradicional de tuberías utilizado en los sistemas operativos POSIX, y es uno de los métodos de comunicación entre procesos (IPC). Este concepto también se encuentra en Windows, si bien implementado con otra semántica. Una tubería (pipe) tradicional no tiene "nombre" porque existe anónimamente mientras se está ejecutando el proceso. Una named pipe es creada explícitamente por un comando del sistema operativo y persiste a posteriori de la finalización del proceso y debe ser borrada una vez que no va a seguir siendo utilizada. En Unix la orden para crear tuberías nombradas es mkfifo.[1]

Véase también

Referencias

  1. «12.4 mkfifo: Make FIFOs (named pipes)». gnu.org (en inglés). Consultado el 16 de junio de 2014.