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:
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.