A. Administrarea circulara
Acum haideti sa analizam cateva tipuri particulare de algoritmi de administrare. Unul dintre algoritmuii cei mai vechi, mai simpli si mai echitabili, precum si cel mai utilizat este cel circular. Fiecarui proces ii este alocat un interval de timp, numit quantumul sau, timp in care ii este permis sa ruleze. Daca la sfarsitul acestui interval procesul inca ruleaza, procesul este interrupt si procesorul alocat altui proces. Daca procesul s-a blocat sau s-a incheiat inaintea timpului alocat, comutarea procesorului se face desigur, in momentul blocarii. Acest tip de temporizare este foarte usor de implementat. Tot ce are de facut temporizatorul este sa mentina o lista de procese care pot fi rulate, asa cum se vede in fig. 2-22(a). Atunci cand procesul si-a utilizat timpul alocat trece la sfarsitul listei, ca in fig. 2-22(b).
fig. 2-22. Temporizarea circulara. (a) Lista proceselor care pot fi rulate
(b) Lista proceselor care pot fi rulate dupa ce B si-a folosit timpul alocat.
Singurul punct interesant in ceea ce priveste temporizarea circulara este lungimea quantumului. Comutarea de la un proces la altul necesita un anumit timp pentru ca trebuie salvati si incarcati registrii si schemele de memorie, actualizate diferite liste si tabele, etc. Sa presupunem ca aceasta schimbare de proces sau schimbare de context, cum se mai numeste, dureaza 5 msec. Sa presupunem de asemenea ca avem un quantum setat la 20 msec. Cu acesti parametri, dupa 20 de msec. de lucru util, procesorul trebuie sa faca schimbarea de proces in 5 msec., astfel, douazeci la suta din timpul procesorului va fi irosit pentru sarcini administrative.
Pentru a mari eficienta procesorului am putea sa setam quantumul la 500 msec., de exemplu. Acum, timpul pierdut nu trece de 1 procent. Dar ganditi-va ce se intampla intr-un sistem legat la server daca 10 utilizatori interactivi apasa tasta pentru furnizarea rezultatelor aproximativ in acelasi timp. Zece procese vor fi adaugate pe lista proceselor care pot fi rulate. Daca procesorul nu lucreaza, primul proces va incepe imediat, cel de-al doilea o jumatate de secunda mai tarziu, si asa mai departe. Cel care are ghinionul sa fie ultimul poate sa fie nevoit sa astepte 5 secunde pana sa aiba ocazia sa inceapa, presupunand ca toti ceilalti isi folosesc integral quantumul. Majoritatea utilizatorilor vor fi de parere ca este mult prea mare un interval de 5 secunde pentru a raspunde la o comanda simpla. Aceeasi problema poate sa apara la un computer personal care suporta multiprogramarea.
Concluzia poate fi formulata astfel: setarea unui quantum prea scurt mareste numarul de schimbari de procese si diminueaza eficienta procesorului, dar daca acest quantum este prea mare poate duce la o intarziere prelungita a raspunsului pentru comenzile scurte interactive. Un quantum de 100 msec. este adesea un compromis rezonabil.
B. Administrare prioritara
Administrarea circulara presupune, implicit ca toate procesele au aceeasi importanta. Adesea, cei care detin si opereaza computere cu mai multi utilizatori nu sunt de aceeasi parere.La universitate ordinea importantei este: intii decanul, apoi profesorii, secretarele, portarul si in sfarsit, studentii.Necesitatea de a lua in considerare factori externi duce la temporizarea prioritara. Ideea principala este urmatoarea: fiecarui proces ii este atribuita o anumita importanta, iar procesul cu cea mai mare importanta este cel care va rula.
Chiar si pe un computer cu un singur utilizator pot exista mai multe procese, unele mai importante decat altele. De exemplu, un program de fond care trimite e-mailuri ar trebui sa aiba o mai mica importanta decat un proces care afiseaza pe ecran un film video in timp real.
Pentru ca procesele cu o importanta ridicata sa nu ruleze la nesfarsit, temporizatorul poate sa scada importanta procesului care ruleaza in momentul respectiv odata cu fiecare intrerupere a cronometrului. Daca aceasta scadere a importantei il face sa fie mai putin important decat urmatorul proces de pe lista se produce o schimbare de procese. In acelasi timp, fiecarui proces ii poate fi alocat un quantum maxim in care poate sa utilizeze procesorul fara intrerupere. La sfarsitul acestui quantum, urmatorul proces de pe lista incepe sa ruleze.
Importanta proceselor poate fi atribuita static sau dinamic. Pe un computer militar procesele initiate de catre generali pot porni cu importanta de 100, cele initiate de colonei - 90, maiori - 80, capitani - 70, locotenenti - 60, si asa mai departe. In acelasi timp, la un centru commercial de computere, cele mai importante lucrari ar putea costa 100 de dolari pe ora, cele de importanta medie - 75 de dolari pe ora, iar cele cu o importanta scazuta - 50 de dolari pe ora. Sistemul UNIX are o comanda, nice, care permite, la cererea utilizatorului, scaderea importantei procesului sau pentru a fi amabil cu ceilalti. Nimeni nu-l foloseste niciodata.
Prioritatea poate fi atribuita dinamic de catre sistem pentru a indeplini diferite functii ale sistemului. De exemplu, unele procese sunt strans legate de I/O si in cea mai mare parte a timpului asteapta finalizarea I/O. De fiecare data cand un astfel de proces solicita procesorul, acesta ar trebui sa-i fie cedat imediat, pentru a-i permite sa initieze urmatoarea comanda I/O, care poate continua in paralel cu alt proces. Daca procesul de legatura I/O asteapta mult timp dupa procesor inseamna ca el va ocupa memoria mai mult timp decat este necesar. Un algoritm simplu care confera o buna efectuare a proceselor de legatura I/O este setarea prioritatii pe 1/f, unde f reprezinta raportul ultimului quantum utilizat de un proces. Un proces care a folosit doar 2 msec. din cele 100 alocate va primi o prioritate de 50, in timp ce un proces care a rulat timp de 50 msec. inainte de a se bloca va primi prioritate 2, iar un proces care a utilizat quantumul in intregime va primi prioritate 1.
Adesea este mult mai convenabil sa se grupeze procesele in clase de prioritati si sa se utilizeze temporizarea prioritara intre clase si temporizarea circulara in cadrul fiecarei clase. Figura 2-23 ne arata un sistem cu 4 clase de prioritati. Algoritmul de temporizare este urmatorul: atata timp cat exista in clasa 4 de prioritati procese care pot fi rulate, sa se ruleze fiecare un quantum, dupa metoda circulara, neluand in seama clasele cu o prioritate mai mica. Daca in clasa 4 nu exista nici un proces, sa se ruleze procesele din clasa 3 de prioritati, tot in mod circular. Daca atat clasa 4 cat si clasa 3 sunt goale, vor rula procesele din clasa 2 dupa metoda circulara, si asa mai departe. Daca, din cand in cand prioritatile nu sunt modificate, procesele cu o mica prioritate pot sa moara acolo.
fig. 2-23. Un algoritm de temporizare cu 4 clase de prioritati.
Dostları ilə paylaş: |