next up previous
Next: Thread-uri Up: Gestiunea proceselor Previous: Structura unui proces in

Starile unui proces. Comutarea de context

La orice moment de timp un proces se poate afla intr-una din urmatoarele stari:

Exista anumite substari particulare, dar cele trei stari de mai sus sunt esentiale in intelegerea modului in care un proces functioneaza.

Intr-un sistem cu N procesoare, pot exista maxim N procese aflate in executie. Un proces se afla in executie daca detine acces complet la un procesor.

La producerea unui eveniment se poate realiza trecerea dintr-o stare in alta. Cele mai importante tranzitii sunt:

Inlocuirea unui proces cu un altul in cadrul unui procesor se numeste comutare de context (task switching). Aceasta este realizata de planificatorul de procese (scheduler). Acesta alege din coada de procese ready procesul cel mai potrivit pe baza anumitor criterii si ii ofera acestuia procesorul.

In Linux, ca si in alte sisteme de operare, unui proces ii este asociata o cuanta de timp. Pe masura ce acesta ruleaza, el consuma din cuanta de timp. In momentul in care aceasta i-a expirat complet, va fi inlocuit cu un alt proces. Alta situatie de inlocuire apare atunci cand procesul intalneste o conditie care-l obliga sa astepte blocant.

Schimbarea de context este o operatie destul de costisitoare care necesita schimbarea registrelor, stivei, aducerea paginilor rezidente de pe disc, etc. Din aceasta cauza cuanta de timp nu poate fi aleasa foarte mica. Acest lucru ar insemna ca cea mai mare parte din timpul de rulare a unui proces s-ar pierde pe comutare. De asemenea, o cuanta mare de timp nu este de dorit, intrucat va produce asteptare mare a proceselor din coada ready si un timp de raspuns mare (interactivitate redusa). In Linux, datorita unor algoritmi si euristici eficiente, cuanta de timp asociata unui proces este destul de mare, lasand totusi proceselor un timp de raspuns foarte bun.

De asemenea, procesele dispun de o prioritate la scheduling. La o comutare de context, un proces prioritar va acapara procesorul in dauna unuia mai putin prioritar. In Linux/Unix prioritatea unui proces poate fi alterata cu ajutorul comenzii nice.



Subsections
next up previous
Next: Thread-uri Up: Gestiunea proceselor Previous: Structura unui proces in
Razvan Adrian Deaconescu 2005-10-12