Pipeline (software)

pijpleidingen worden vaak geà mplementeerd in een multitasking – besturingssysteem, door alle elementen tegelijk met processen te starten en automatisch de data-leesverzoeken van elk proces te onderhouden met de gegevens die door het upstreamproces zijn geschreven-dit kan een multiprocessed-pijplijn worden genoemd. Op deze manier zal de CPU op natuurlijke wijze door de scheduler tussen de processen worden geschakeld om de inactieve tijd te minimaliseren. In andere gangbare modellen worden elementen geà mplementeerd als lichtgewicht draden of als coroutines om de overhead van besturingssystemen die vaak betrokken zijn bij processen te verminderen. Afhankelijk van het besturingssysteem, threads kunnen rechtstreeks worden gepland door het besturingssysteem of door een thread manager. Coroutines zijn altijd gepland door een coroutine manager van een of andere vorm.

gewoonlijk zijn lees-en schrijfverzoeken blokkerende handelingen, wat betekent dat de uitvoering van het bronproces, bij het schrijven, wordt opgeschort totdat alle gegevens naar het doelproces kunnen worden geschreven, en, evenzo, de uitvoering van het doelproces, bij het lezen, wordt opgeschort totdat ten minste een deel van de gevraagde gegevens uit het bronproces kan worden verkregen. Dit kan niet leiden tot een impasse, waar beide processen zou wachten voor onbepaalde tijd op elkaar om te reageren, omdat ten minste een van de twee processen zal snel daarna zijn verzoek onderhouden door het besturingssysteem, en blijven draaien.

voor prestaties gebruiken de meeste besturingssystemen die pipes implementeren pijpbuffers, waardoor het bronproces meer gegevens kan leveren dan het doelproces momenteel kan of wil ontvangen. Onder de meeste Unices en Unix-achtige besturingssystemen is ook een speciaal commando beschikbaar dat een pipe buffer implementeert van potentieel veel grotere en configureerbare grootte, meestal “buffer”genoemd. Dit commando kan nuttig zijn als het doelproces aanzienlijk langzamer is dan het bronproces, maar het is toch gewenst dat het bronproces zijn taak zo snel mogelijk kan voltooien. Bijvoorbeeld, als het bronproces bestaat uit een commando dat een audiotrack van een CD leest en het doelproces bestaat uit een commando dat de golfvorm audio data comprimeert naar een formaat als MP3. In dit geval zou het bufferen van het gehele spoor in een pipe buffer het CD-station sneller laten draaien, en de gebruiker in staat stellen om de CD van het station te verwijderen voordat het coderingsproces is voltooid.

een dergelijk buffer commando kan worden geïmplementeerd met behulp van systeemaanroepen voor het lezen en schrijven van gegevens. Verspillend druk wachten kan worden vermeden door gebruik te maken van faciliteiten zoals poll of select of multithreading.

enkele opmerkelijke voorbeelden van pipeline software systemen zijn:

  • RaftLib-C / C++ Apache 2.0 licentie

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.