Aquest article o secció no cita les fonts o necessita més referències per a la seva verificabilitat. |
En informàtica, una canonada (pipeline en anglès) consisteix en una cadena de processos connectats de manera que la sortida de cada element de la cadena és l'entrada del pròxim. Permeten la comunicació i sincronització entre processos. És comú l'ús de buffer de dades entre elements consecutius.
La comunicació per mitjà de canonades es basa en la interacció productor/consumidor, els processos productors (aquells que envien dades) es comuniquen amb els processos consumidors (que reben dades) seguint un ordre FIFO. Una vegada que el procés consumidor rep una dada, aquest s'elimina de la canonada.
Les canonades (pipes) estan implementades en forma molt eficient en els sistemes operatius multitasca, iniciant tots els processos a la vegada, i atenent automàticament els requeriments de lectura de dades per a cada procés quan les dades són escrits pel procés anterior. D'aquesta manera el planificador de curt termini donarà l'ús de la CPU a cada procés a mesura que pugui executar minimitzant els temps morts.
Per millorar el rendiment, la majoria dels sistemes operatius implementen les canonades amb buffers, el que permet al procés proveïdor generar més dades que el que el procés consumidor pot atendre immediatament.
Podem distingir dos tipus de canonades: