Implementarea proceselor in Unix

Trimis la data: 2010-05-24
Materia: Informatica
Nivel: Facultate
Pagini: 9
Nota: 9.75 / 10
Downloads: 29
Autor: Marius Malota
Dimensiune: 29kb
Voturi: 2
Tipul fisierelor: doc
Acorda si tu o nota acestui curs:
Fiecare proces are atat o faza utilizator (lucreaza in mod utilizator), cat si o faza sistem (lucreaza in mod sistem, nucleu). Instructiunile obisnuite sunt executate in mod utilizator, iar apelurile sistem in mod sistem. Corespunzator, procesului ii sunt asociate doua stive.
Comutarea intre modul utilizator si sistem se realizeaza in cazurile: generare exceptie; apelurile sistem prin care utilizatorul solicita diverse servicii oferite de sistemul de operare; cele care realizeaza operatii de intrare/iesire conduc la suspendarea procesului apelant pe durata transmiterii datelor; sosire intreruperi de la periferice.
Planificatoarele cauta sa maximizeze performanta medie relativ la un anumit criteriu. Una dintre problemele intalnite la proiectarea planificatorului este aceea ca unele criterii sunt in contradictie cu altele. De exemplu,un timp de raspuns cat mai bun poate duce la scaderea utilizarii UCP-ului.

Marind utilizarea UCP-ului si viteza de prelucrare, timpul de raspuns poate avea de suferit. De aceea, proiectantii incearca sa maximizeze performantele relativ la criteriul cel mai important pentru mediul de lucru (planificatoarele sunt dependente de mediu).

De exemplu, pentru sistemele cu prelucrare in loturi, intereseaza utilizarea UCP-ului; la sistemele multiutilizator, timpul de raspuns; la sistemele in timp real, sa raspunda corespunzator multitudinii de evenimente externe.

Algoritmii de planificare pot fi preemptivi sau non-preemptivi.
In cazul non-preemptiv, controlul este cedat sistemului de operare in momentul in care in procesul curent in executie apare o instructiune de acest gen sau daca procesul asteapta terminarea unei operatii I/O. Deci procesul curent activ nu poate fi inlocuit cu un alt proces aflat in starea pregatit avand prioritate mai mare.

In cazul preemptiv, procesul aflat in executie poate fi inlocuit oricand cu un alt proces cu prioritate mai mare. Acest lucru este realizat prin activarea planificatorului ori de cate ori este detectat un eveniment ce schimba starea globala a sistemului.

Indiferent daca algoritmul este preemptiv sau nu, comutarea de procese presupune salvarea starii procesului fost in executie, precum si crearea mediului de executie a noului proces ales a fi executat, ceea ce necesita mult timp. In general, sistemele de tip preemptiv pot furniza un timp de raspuns mai bun, dar consuma mult timp cu executia planificatorului si comutarea proceselor asociate.

Pentru pastrarea consistentei structurilor de date interne ale nucleului, un proces utilizator ruland in mod nucleu nu poate fi intrerupt si inlocuit (preemted) de un alt proces, ci numai cand ruleaza in mod utilizator (nucleul ruleaza non-preemtiv).

In plus, nucleul creste nivelul de executie al procesorului atunci cand executa regiuni critice (ex.: modificare pointeri la liste dublu inlantuite, in cazul citirii datelor de pe disc) pentru a preveni ca anumite intreruperi sa-i cauzeze inconsistente ale datelor.

Mecanismul de planificare round-robin: In cazul sistemelor cu partajarea timpului, prima cerinta este ca sistemul sa furnizeze un timp de raspuns rezonabil si, in general, sa partajeze echitabil resursele sistemului intre toti utilizatorii. Evident, numai disciplinele de planificare preemptive pot fi luate in considerare in astfel de situatii, una dintre cele mai populare fiind round-robin.

Timpul UCP-ului este impartit in cuante, de obicei intre 10 si 100 msec., care se aloca proceselor. Nici un proces nu poate rula mai mult de o cuanta, atat timp cat mai sunt procese in sistem ce asteapta sa fie executate. Structura de date folosita este o coada a proceselor gata de executie (aflate in starea pregatit).

Cand cuanta s-a terminat, UCP-ul este alocat unui alt proces (primul din coada). Acelasi lucru se intampla si in cazul cand procesul este suspendat sau si-a terminat activitatea inaintea expirarii cuantei. Astfel, fiecare proces are alocat 1/N din timpul UCP-ului, unde N este numarul proceselor din sistem.

Round-robin asigura partajarea echitabila a resurselor sistemului intre procese. Procesele scurte se pot termina intr-o singura cuanta, obtinandu-se astfel un timp de raspuns bun.

Procesele lungi au nevoie de mai multe cuante de timp, cicland in coada pana cand se termina.
Din punct de vedere hardware, se foloseste un timer care genereaza o intrerupere dupa trecerea unui interval de timp egal cu o cuanta. Cand soseste intreruperea, sistemul de operare lanseaza planificatorul pentru comutarea proceselor. Intervalul de timp este resetat inaintea executiei noului proces ales din coada.

Performanta acestui mecanism depinde foarte mult de valoarea cuantei. Astfel, o valoare mica avantajeaza procesele interactive, dar scade eficienta UCP-ului, acesta ocupandu-se mult timp cu tratarea intreruperii sosite de la timer si cu comutarea proceselor. O valoare mare creste eficienta UCP-ului, dar poate determina un timp de raspuns mare, dezavantajand procesele interactive (ex.: mai multi utilizatori apasa in acelasi timp pe o tasta). O cuanta de 100 msec. realizeaza un compromis bun.

Algoritmul de planificare round-robin se recomanda a se folosi in cazul sistemelor multiutilizator, cu partajarea timpului, unde timpul de raspuns conteaza foarte mult.
Home | Termeni si conditii | Politica de confidentialitate | Cookies | Help (F.A.Q.) | Contact | Publicitate
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.