Pipeline (software)

putkistot toteutetaan usein moniajo – käyttöjärjestelmässä käynnistämällä kaikki elementit samanaikaisesti prosessien kanssa ja huoltamalla automaattisesti kunkin prosessin lukemapyynnöt alkuprosessin kirjoittamilla tiedoilla-tätä voidaan kutsua moniprosessoiduksi putkistoksi. Tällä tavalla, CPU luonnollisesti vaihtaa kesken prosessien ajoituksen minimoimiseksi sen joutokäyntiaika. Muissa yhteisissä malleissa elementit toteutetaan kevyinä kierteinä tai coroutineina, joilla vähennetään usein prosesseihin liittyviä OS-yläpuolisia toimintoja. Riippuen käyttöjärjestelmästä, kierteet voidaan ajoittaa suoraan käyttöjärjestelmä tai kierteiden hallinta. Coroutines on aina ajoitettu coroutine manager jonkin muodon.

yleensä luku-ja kirjoituspyynnöt ovat esto-operaatioita, mikä tarkoittaa, että lähdeprosessin suorittaminen keskeytyy kirjoittamisen jälkeen, kunnes kaikki tiedot voidaan kirjoittaa kohdeprosessiin, ja vastaavasti kohdeprosessin suorittaminen lukemisen jälkeen keskeytetään, kunnes ainakin osa pyydetyistä tiedoista saadaan lähdeprosessista. Tämä ei voi johtaa umpikujaan, jossa molemmat prosessit odottaisivat loputtomasti toistensa vastausta, koska ainakin toinen kahdesta prosessista saa pian tämän jälkeen käyttöjärjestelmänsä pyynnön ja jatkaa toimintaansa.

suorituskyvyn osalta useimmat putket toteuttavat käyttöjärjestelmät käyttävät putkipuskureita, joiden avulla lähdeprosessi tuottaa enemmän tietoa kuin kohdeprosessi tällä hetkellä pystyy tai haluaa vastaanottaa. Useimpien Unicesin ja Unixin kaltaisten käyttöjärjestelmien alle on saatavilla myös erikoiskomento, joka toteuttaa mahdollisesti paljon suuremman ja konfiguroitavan kokoisen putkipuskurin, jota kutsutaan tyypillisesti ”puskuriksi”. Tämä komento voi olla hyödyllinen, jos kohdeprosessi on huomattavasti hitaampi kuin lähdeprosessi, mutta on joka tapauksessa toivottavaa, että lähdeprosessi voi suorittaa tehtävänsä mahdollisimman pian. Esim. jos lähdeprosessi koostuu komennosta, joka lukee ääniraidan CD-levyltä ja kohdeprosessi komennosta, joka pakkaa aaltomuodon äänidatan mp3-muotoon. Tällöin koko kappaleen puskurointi putkipuskurissa mahdollistaisi CD-aseman pyörimisen nopeammin alas ja mahdollistaisi sen, että käyttäjä voi poistaa CD-levyn asemalta ennen kuin koodausprosessi on päättynyt.

tällainen puskurikomento voidaan toteuttaa järjestelmäkutsuilla tietojen lukemiseen ja kirjoittamiseen. Tuhlaava kiireinen odotus voidaan välttää käyttämällä palveluja, kuten poll tai select tai multitreading.

merkittäviä esimerkkejä pipeline – ohjelmistojärjestelmistä ovat:

  • RaftLib-C/C++ Apache 2.0-lisenssi

Vastaa

Sähköpostiosoitettasi ei julkaista.