Conceptul de proces. Procese paralele și concurente

În general, se numește proces o succesiune de transformări sau de operații care conduce la realizarea unui anumit rezultat.
 
Esențial pentru un proces este caracterul său temporal: fiecare transformare elementară necesită un anumit timp, iar procesul în ansamblu este o succesiune de astfel de transformări elementare. Termenul este folosit în domenii diferite: procese fizice, procese chimice, procese tehnologice, procese biologice, procese economice, procese sociale, procese juridice etc.

În informatică, procesul este un program în execuție. În consecință, fiecărui proces i se asociază un program, și un ansamblu de resurse necesare executării acestui program: o anumită zonă din memoria internă în care se păstrează datele programului, acces la procesorul sistemului, acces la anumite dispozitive de intrare/ieșire etc. Procesul constă tocmai în efectuarea în timp a succesiunii de operații prevăzută în program, folosind în acest scop resursele alocate.

În mod tradițional, programul este executat de către un singur procesor (dispozitiv de prelucrare), care poate efectua, la un moment de timp dat, numai o singură operație. În consecință, operațiile prevăzute în program trebuie executate secvențial, astfel încât operația următoare nu poate începe decât după încheierea celei precedente. Toate programele prezentate de noi în capitolele precedente se încadrează în această categorie.
 
Este posibil ca mai multe procese să se desfășoare simultan, adică intervalele de timp corespunzătoare acestor procese să se suprapună total sau parțial. Astfel de procese pot fi paralele sau concurente

Dacă procesele de calcul care au loc simultan folosesc resurse diferite (sunt executate de procesoare diferite, folosesc zone de memorie internă și externă diferite etc.), ele se numesc procese paralele

Dacă procesele care se desfășoară în același interval de timp folosesc anumite resurse comune, ele se numesc procese concurente. Cel mai frecvent se întâlnește situația, în care mai multe procese folosesc în comun același procesor. Întrucât, la un moment dat, procesorul nu poate efectua decât o singură operație, înseamnă că este necesar să se adopte o anumită strategie, conform căreia timpul de funcționare al procesorului este partajat între diferitele procese concurente. În principiu, aceste strategii se împart în două categorii:
   1. Se acordă fiecăruia dintre procesele concurente un anumit nivel de prioritate. Dacă mai multe procese solicită simultan aceeași resursă, ea este alocată procesului cu prioritate superioară. 
 
Conform acestei strategii, dacă, în timpul derularii unui proces A, procesorul este solicitat de un alt proces B de prioritate superioară, procesul A este întrerupt, trecându-se la executarea procesului B. După încheierea executării procesului prioritar B, se revine la procesul A, care este continuat din starea în care a fost întrerupt. Este însa posibil ca, în timp ce se deruleaza procesul B, procesorul sa fie solicitat de un alt proces C, de prioritate și mai înalta. În acest caz, și procesul B va fi întrerupt, trecându-se la executarea procesului C și așa mai departe.

  2. Timpul total de funcționare a procesorului este porționatsau divizat (împărțit în intervale de durate egale sau diferite), acordându-se succesiv câte un astfel de înterval de timp fiecăruia dintre procesele concurente. La expirarea intervalului de timp alocat, numit și felie sau tranșă de timp (engleză: time slice), procesul în curs este întrerupt și se trece la executarea procesului următor, prin rotație. O astfel de utilizare a procesorului se numește "partajare a timpului" (engleză: time sharing sau time slicing).

Cele două strategii menționate aici pot fi aplicate în diferite variante și pot fi combinate în diferite moduri. Cel mai frecvent, partajarea timpului este aplicată numai pentru procesele cu același nivel de prioritate.

Majoritatea sistemelor de operare ale calculatoarelor moderne permit executarea în același timp a mai multor programe, deci permit concurența proceselor la nivel de program (de aplicație). De exemplu, în timp ce edităm un text, putem tipări alt text la imprimantă, putem aștepta sosirea de pe rețea a unei pagini de Web etc. Studierea acestui mod de funcționare a calculatorului, cunoscut sub numele de multitasking, se face la cursul de "Sisteme de operare".

Pentru a pune în evidență distincția între program și proces, putem menționa că același program poate da naștere la procese diferite: dacă programul conține ramificații și/sau cicluri, parcurgerea efectivă a acestora (ce ramuri vor fi executate efectiv și de câte ori se vor parcurge ciclurile) depinde de datele de intrare. În cadrul multitaskingului, este chiar posibil ca doi utilizatori să utilizeze simultan același program folosind date diferite, astfel încât se generează procese diferite.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați