Roura (software)

Tento článek je o obecném principu. O propojení programů při zpracování dat pojednává článek Roura (Unix).

Roura (též trubka nebo pípa, anglicky pipeline) je v softwarovém inženýrství rozhraní nebo datový kanál mezi dvěma entitami zpracovávajícími data (programy, vlákny, koprogramy atd.), pro který platí, že komunikaci zajišťuje v jednom směru[1] a funguje v režimu fronty[2].[3] Může se jednat o jistou programovou logikou obhospodařovaný určitý objem paměti, nebo o pouhé symbolické pojmenování způsobu předávání dat mezi dvěma entitami (alternativně k termínu fronta). Datový tok, který skrze rouru proudí, označujeme jako proud (anglicky stream), popř. proud v daném typu roury nejmenší nedělitelné jednotky — proud bitů, proud bajtů, proud zpráv (záznamů), proud objektů apod.

V souvislosti s rourami se užívá pojmů kolona a filtr. Kolonou je série entit zpracovávajících data, které jsou propojeny rourami, definici filtru splňuje každá taková entita, jež se vyznačuje tím, že neprovádí nic jiného než transformaci dat ze standardního vstupu na standardní výstup (dle svého zkonfigurování před započetím práce); filtry jsou obvykle ty entity v koloně, které nestojí na jejím začátku, výjimečně ani konci.[4] Zpracování dat více entitami v tomto smyslu je popsáno návrhovým vzorem roury a filtry; toto pojmenování má původ v principu, jímž fungují hmotné potrubní instalace (jeden směr toku) a filtry (zachycování elementů).

Programová logika, dle které (nikoli symbolická) roura funguje, odpovídá vyrovnávací paměti, resp. kruhovému bufferu — roura disponuje nějakým (obecně konstantním) objemem paměti, přičemž zdroj a odběratel dat pracují principielně různou rychlostí. Programátor roury musí ošetřit stav, kdy roura již není schopna pojmout více dat, a situaci, v níž není schopna další data poskytnout odběrateli. Kruhový buffer se užívá proto, aby nebyl ztrácen výpočetní výkon přesouváním dat v paměti roury. Aby byly minimalizovány události prázdné a plné roury, které při víceprocesorovém zpracování kolony její propustnost snižují, entitám v koloně obvykle věnuje zvláštní pozornost plánovač procesů.

  1. Existují i roury se zpětným kanálem a plně obousměrné roury, dle základní definice je však roura jednosměrná.
  2. Charakteristickým znakem fronty je, že odběratel data přebírá v tom pořadí, ve kterém je zdroj vložil.
  3. Roura jakožto jednosměrný komunikační kanál mezi entitami zpracovávajícími data, který pracuje v režimu fronty, je základním typem interprocesní komunikace.
  4. To, zda daná entita je filtrem, či nikoli, je nutno posuzovat na základě funkce této entity v konkrétní koloně.

Developed by StudentB