Conducte (software)

conductele sunt adesea implementate într – un sistem de operare multitasking, prin lansarea tuturor elementelor în același timp cu procesele și deservirea automată a cererilor de citire a datelor de către fiecare proces cu datele scrise de procesul din amonte-aceasta poate fi numită conductă multiprocesată. În acest fel, procesorul va fi schimbat în mod natural între procese de către programator, astfel încât să-și minimizeze timpul de inactivitate. În alte modele comune, elementele sunt implementate ca fire ușoare sau ca Coroutine pentru a reduce cheltuielile generale ale sistemului de operare implicate adesea în procese. În funcție de sistemul de operare, firele pot fi programate direct de sistemul de operare sau de un manager de fire. Coroutinele sunt întotdeauna programate de un manager de coroutine de o anumită formă.

de obicei, cererile de citire și scriere sunt operațiuni de blocare, ceea ce înseamnă că executarea procesului sursă, la scriere, este suspendată până când toate datele ar putea fi scrise în procesul de destinație și, de asemenea, executarea procesului de destinație, la citire, este suspendată până când cel puțin o parte din datele solicitate ar putea fi obținute din procesul sursă. Acest lucru nu poate duce la un impas, în care ambele procese ar aștepta la nesfârșit ca celălalt să răspundă, deoarece cel puțin unul dintre cele două procese va avea în curând cererea sa deservită de sistemul de operare și va continua să ruleze.

pentru performanță, majoritatea sistemelor de operare care implementează țevi folosesc tampoane de țevi, care permit procesului sursă să furnizeze mai multe date decât procesul de destinație este în prezent capabil sau dispus să primească. În majoritatea sistemelor de operare unice și Unix, este disponibilă și o comandă specială care implementează un tampon de țeavă de dimensiuni potențial mult mai mari și configurabile, numit de obicei „tampon”. Această comandă poate fi utilă dacă procesul de destinație este semnificativ mai lent decât procesul sursă, dar este oricum dorit ca procesul sursă să își poată finaliza sarcina cât mai curând posibil. De exemplu, dacă procesul sursă constă dintr-o comandă care citește o piesă audio de pe un CD și procesul de destinație constă dintr-o comandă care comprimă datele audio sub formă de undă într-un format precum MP3. În acest caz, tamponarea întregii piste într-un tampon de țeavă ar permite unității CD să se rotească mai repede și să permită utilizatorului să scoată CD-ul din unitate înainte ca procesul de codificare să se termine.

o astfel de comandă tampon poate fi implementată folosind apeluri de sistem pentru citirea și scrierea datelor. Risipitor de așteptare ocupat pot fi evitate prin utilizarea unor facilități, cum ar fi sondaj sau selectați sau multithreading.

câteva exemple notabile de sisteme software de conducte includ:

  • RaftLib – C/C++ Apache 2.0 Licență

Lasă un răspuns

Adresa ta de email nu va fi publicată.