Clasificarea sistemelor de operare din punct de vedere al tehnicilor de prelucrare se īmpart īn: Sisteme cu prelucrare pe loturi (batch processing). Sisteme īn timp real. Sisteme time-sharing (cu parta-jarea timpului). Sistemele batch-processing (cu prelucrarea pe loturi) folosesc notiunea de tren de lucrari, adica succesiunea tuturor lucrarilor care trebuie executate. Urmatoarea lucrare se va executa numai dupa terminarea celei anterioare. O dezv a sist batch-processing au constituit-o sist care lucreaza īn multiprogramare, īn care resursele sist erau īmpartite catre partitii fixe. Īn fiecare din aceste partitii executāndu-se prelucrari pe loturi. Sist de op īn timp real sunt bazate pe sistemul de prioritate al taskurilor, resursele sistemului de calcul fiind alocate task-ului (lucrarii) cu cea mai mare prioritate la momentul respectiv. Datorita particularitatilor lor, au fost folosite mai ales īn supravegherea proceselor industriale, īn care evenimentelor externe importante li se asociau task-uri cu prioritate maxima. Sist de op time-sharing, permit accesul fiecarui task la resursele sist pentru o perioada fixa de timp. Dupa scurgerea perioadei alocate, indiferent daca task-ul respectiv s-a terminat sau nu, este evacuat si lansat urmatorul s.a.m.d. La terminarea listei task-urilor care trebuie executate se reia procesul cu primul task din lista. Ciclul se repeta pāna cānd taskurile īsi īncheie executia īn mod normal, si lista task-urilor īn asteptare se goleste. Acest tip de sistem de operare este folosit īn prelucrarile cu multi utilizatori si cu task-uri de importanta aproximativ egala.
Starile unui proces: nelansat īn executie, atunci cānd procesul a fost generat dar nu a fost onorata īnca cererea de lansare īn executie a sa;
pregatit pentru activare (READY) sau proces īntrerupt; aceasta stare poate sa apara īn doua cazuri: cānd cererea de lansare īn executie a procesului a fost onorata, procesul a fost īncarcat īn memoria interna si este pregatit pentru activare; cānd un proces īn executie a fost īntrerupt si asteapta activarea sa, adica reluarea executiei sale din punctul īn care a fost īntrerupt; parametrii care descriu procesul īn momentul īntreruperii sale sunt memorati īn vectorul de stare al procesului, pentru a permite continuarea acestuia īn momentul reluarii sale;
activ (RUN), cānd procesul are alocat procesorul si sunt īn curs de desfasurare prelucrarile aferente procesului; suspendat (blocat) sau proces īn asteptare (WAIT), īn cazul īn care executia procesului a fost īntrerupta, procesul este dezactivat, īn asteptarea realizarii unui eveniment, de exemplu, eliberarea unei resurse solicitate; starea de proces complet, cānd procesul a fost complet executat si urmeaza dezalocarea resurselor afectate procesului si distrugerea procesului. Actiunile care determina comutarea īntre doua stari ale unui proces sunt:
initierea procesului, genereaza cererea de lansare īn executie a procesului; procesul este īn starea de proces nelansat īn executie; lansarea īn executie a procesului determina trecerea lui din starea de proces nelansat īn executie īn starea de proces pregatit pentru activare (READY); activarea procesului determina trecerea lui din starea de proces pregatit pentru activare īn starea de proces activ (RUN); dezactivarea procesului determina revenirea lui din starea de proces activ īn starea de proces īntrerupt (READY - pregatit pentru activare); blocarea procesului activ determina trecerea lui īn starea de proces īn asteptare (WAIT); deblocarea procesului determina trecerea lui din starea de proces blocat īn starea de proces pregatit pentru activare (READY); completarea procesului determina trecerea lui din starea de proces activ īn starea de proces complet;
distrugerea procesului complet determina īnlaturarea lui din sistem; dezactivarea unui proces (trecerea din RUN īn READY) este proprie numai pentru exploatarea īn time-sharing si īn timp real, caz īn care comutarea īntre procesele active se poate face la initiativa sistemului de operare, prin dezactivarea procesului activ īn favoarea altuia; starea WAIT nu este proprie exploatarii īn monoprogramare, unde, la un moment dat, īn sistem se executa o singura lucrare, careia īi sunt alocate toate resursele.
Algoritmi pentru planificarea proceselor:
Cu cozi multiple combina algoritmii de planificare. Rezulta astfel planificarea cu cozi multiple, īn care fiecare coada corespunde unui algoritm de planificare.
Round-Robin Si in acest caz, procesul aflat in starea running este eliminat dupa expirarea cuantei de timp maxime alocate (10ms - 100ms) in care i se permite sa ruleze iar sirul READY se trateaza ca FIFO circular. Planificatorul mentine o lista a proceselor aflate in starea ready si trimite in executie procesul aflat la inceputul acestei liste. In plus, procesul care tocmai a fost scos din starea running este plasat la sfarsitul listei (desigur, daca nu a facut un apel de sistem, caz in care este trecut in starea waiting, sau s-a terminat). Astfel, procesele sunt executate unul dupa altul, iar un proces scos din starea running va fi din nou planificat pentru executie numai dupa ce toate celelalte procese aflate in starea ready au fost si ele planificate. Considerand din nou exemplul anterior, de data aceasta pentru algoritmul Round-Robin, obtinem urmatoarea diagrama:
Un proces care tocmai a fost eliminat din starea running poate fi replanificat imediat pentru executie numai daca nu exista nici un alt proces in starea ready. Datorita simplitatii conceptuale si de implementare, precum si faptului ca nu necesita cunoasterea unor informatii suplimentare despre procese, algoritmul round-robin este cel mai utilizat in sistemele de operare.Dezavantaje: Folosirea unei cuante prea scurte poate cauza prea multe comutari de proces si micsoreaza eficienta UCP. -marime cuantei afecteaza performantele algoritmului Round-Robin ; daca cuanta este foarte mare, comportarea este asemanatoare FCFS ; daca cuanta este foarte mica, frecventa comutarii se mareste foarte mult si performantele scad deoarece se consuma mult timp pentru salvare/ restaurare registre;-se poate spune ca algoritmul Round-Robin este un algoritm preemptiv care asigura un timp aproape egal de asteptare pentru toate procesele din sistem.
Planificare bazata pe prioritati Pentru departajarea proceselor īn functie de importanta, se folosesc prioritati acordate fiecarui proces īn parte, sistemul rulānd īntotdeauna procesul cu cea mai mare prioritate din sistem. Pentru a preveni ca procesele cu cea mai mare prioritate sa ruleze tot timpul, planificatorul poate scade prioritatea procesului curent īn executie la fiecare īntrerupere de ceas. Cānd prioritatea procesului īn executie a devenit mai mica decāt prioritatea unui alt proces, sistemul de operare comuta īntre ele.
Prioritatile pot fi asignate static sau dinamic. Static, se acorda de catre utilizator sau de catre sistem, la creare. Dinamic, se asigneaza de catre sistemul de operare, pentru realizarea unui anumit scop.
Stabilirea prioritatilor si planificarea proceselor in unix Intr-un sistem cu partajarea timpului, nucleul aloca UCP unui proces pentru o anumita perioada de timp, numita cuanta de timp, cuprins intre 0 si 1 s; de obicei, in sistemul Unix este de 100 ms. Procesele au asociate prioritati, valorile mari corespunzand prioritatilor scazute. La expirarea cuantei procesului curent īn executie, se va alege procesul aflat in starea PREGATIT cu priorit cea mai mare. Nucleul recalculeaza prioritatea unui proces cand acesta revine din modul nucleu in modul utilizator si, periodic, ajusteaza prioritatiile proceselor aflate in starea PREGATIT si in modul utilizator. Pentru planificare se foloseste mecanismul cu cozi multiple. Fiecare coada este asociata cu un nivel de prioritate. Alegerea in cadrul cozii se face fie utilizand mecanismul round-robin, fie va fi ales procesul care a stat cel mai mult timp in starea PREGATIT. Daca in sistem nu exista nici un proces in starea PREGATIT, procesorul sta (starea idle) pana la urmatoarea intrerupere (adica cel mult pana la urmatoarea intrerupere de ceas). Dupa tratarea intreruperii, nucleul verifica daca sunt procese de rulat. Gestiunea proceselor Spatiul de adresa a unui proces cuprinde: segmentul de cod; segmentul de date consta din:zona de date; zona de rezervari (date neinitializate); zona de alocare dinamica; segmentul de stiva. Threadul (fir de exec), e o subunit a proc, utiliz īn unele SO.
Planificatorul de proces Īn timpul executiei lucrarilor, gestionarea executiei proceselor īn sistem este realizata de componenta SO numita planificatorul de procese (process scheduler); decide care proces va dispune de procesor, cānd si pentru cāt timp. Functiile acestui modul sunt: evidenta tuturor proceselor din sistem si a starii lor, prin intermediul componentei numita controlor de trafic (traffic controller); stabilirea procesului caruia i se aloca procesorul si, eventual, a timpului de alocare, fct realizata de componenta planificator al procesorului (processor scheduller); alocarea procesorului la proces, prin actualizarea registrilor procesorului cu informatiile privind starea curenta a procesului, functie realizata de controlorul de trafic; dezalocarea procesorului, functie care presupune salvarea continutului registrilor de stare ai procesorului, īn vederea reluarii ulterioare a procesului; operatia este realizata de controlorul de trafic. (Dezalocarea procesorului are loc atunci cānd expira timpul afectat procesului si are loc dezactivarea procesului, care trece īn starea READY, sau cānd a fost solicitata o resursa care nu este disponibila si procesul este blocat, intrānd īn starea WAIT. Dezalocarea procesorului se face fara memorarea starii procesului īn cazul īn care procesul intra īn starea de proces complet, caz īn care el urmeaza sa fie distrus.). Īn cazul exploatarii īn monoprogramare a sistemului de calcul, notiunea de lucrare si proces se confunda iar functia SO de gestionare a proceselor se simplifica; īn celelalte moduri de exploatare a sistemelor de calcul, problema planificarii si sincronizarii proceselor este foarte complexa; activitatea planificatorului de procese este precedata si determinata de activitatea planificatorului de lucrari.Modul de functionare al planificatorului de procese poate fi descris astfel: la anumite momente de timp, determinate de modalitatea de interventie, se evalueaza functia de prioritate, pentru fiecare proces si, pe baza rezultatului obtinut, se aloca procesorul unui proces; īn cazul īn care mai multe procese au aceeasi prioritate, se aplica o regula de arbitraj, care determina care dintre procese este tratat primul.
Comenzi pentru lucru cu procese in unix Spre deosebire de sistemul de operare MS-DOS, sistemul UNIX permite lansarea spre executare a unei comenzi (program) la un anumit moment de timp. Comanda UNIX ce face posibil acest lucru este disponibila numai administratorului de sistem. Numele comenzii este at si primeste ca argumente timpul, data, factorul de repetare a lansarii, precum si numele unui fisier care contine comanda sau comenzile ce se vor executa. De asemenea, folosind comenzile nice, kill si sleep, utilizatorul poate interveni asupra proceselor din sistem pentru a le modifica starea. Comanda UNIX ce permite afisarea starilor unor procese este ps Comanda kill emite un semnal de tip īntrerupere catre un proces. De obicei, acest semnal solicita terminarea procesului. Comanda are ca argumente un numar de semnal (precedat de -) si identificatorul procesului caruia i se adreseaza semnalul. Semnalul este un numar īntre 1 si 31 prin care este codificat tipul semnalului de īntrerupere. Cele mai importante semnale sunt: -2 īntrerupere la apasarea tastei DEL; -9 oprire neconditionata; -15 semnal software de oprire; -16 -31 semnale definite de utilizator. Īn absenta specificarii unui semnal (ci numai a identificatorului procesului), implicit este considerat semnalul 15. O alta facilitate a sistemului de operare UNIX privind executia comenzilor o constituie lansarea īn fundal (background) a proceselor care nu sunt conversationale. Pentru a lansa un astfel de proces, linia de comanda trebuie sa se īncheie cu simbolul &. Comanda sleep asteapta un numar de secunde īnainte de a executa o alta comanda. De exemplu comanda ls poate
fi lansata peste 40 de secunde folosind apelul: $ sleep 40; ls
Gestionarea
intreruperilor Exista o categorie de sarcini a caror aparitie īn sistem
face necesara tratarea lor imediata de catre
Pe de alta parte,
sa existe posibilitatea de a conserva parametrii procesului suspendat, pentru ca acesta sa poata fi continuat ulterior, din punctul īn care a fost īntrerupt.
Surse de īntrerupere identifica acele componente
fizice sau logice ale sistemului care pot solicita īntreruperi, īn cazul
aparitiei unor evenimente.Semnalele transmise pentru
Tipuri de intreruperi īntreruperi hardware, generate de surse hardware, pentru evenimente externe procesului; de exemplu: dispozitivele periferice pot solicita, printr-o cerere de īntrerupere, servicii sau actiuni specifice (imprimanta "anunta" terminarea hārtiei, īn timpul unei listari; unitatea de disc "anunta" īncheierea unei operatii de citire/scriere sau aparitia unei erori īn timpul unei astfel de operatii; tastatura "anunta" activarea sau dezactivarea unei taste, etc.); dispozitivele hardware de supraveghere a functionarii normale a sistemului de calcul pot emite cereri de īntrerupere īn cazul sesizarii unor anomalii de functionare (circuitele detectoare de paritate pot semnala erori de paritate īn timpul unui transfer de date, circuite specializate pot sesiza scaderea tensiunii de alimentare a sistemului, etc.) īntreruperi software, care apar īn timpul si īn legatura cu executia unui proces; ele sunt de doua tipuri: īntreruperi software programate generate cu ocazia executiei unui program, cu scopul de a solicita anumite servicii; aceste īntreruperi nu apar īntāmplator, īn timpul executiei programului, ci sunt generate intentionat, prin intermediul unei instructiuni specializate care se insereaza īn program si care, atunci cānd se executa, lanseaza o cerere de īntrerupere. īntreruperi software de exceptie care apar īn timpul executiei unui program, cānd se īncearca executarea unor operatii nepermise, de exemplu: īmpartirea la 0; depasirea domeniului de valori disponibil pentru anumite moduri de reprezentare a datelor; utilizarea, īntr-o instructiune, a unui cod de operatie necunoscut;īncercarea de acces īntr-o zona de memorie protejata, etc. Aceste īntreruperi sunt determinate de conditii de exceptie īn executia programului si sunt generate īn scopul evitarii unei evolutii imprevizibile sau eronate a procesului. Aceste īntreruperi sunt sincrone cu programul, adica daca o īntrerupere de exceptie apare īn timpul executarii unui program, cu un anumit set de date, atunci aceasta īntrerupere va apare de fiecare data cānd programul respectiv se executa cu acest set de date
Nivel de īntrerupere; numarul nivelelor de īntrerupere disponibile īn
sistem este o constanta constructiva a sistemului de calcul,
determinata de numarul de linii pe care
Mecanismul de functionare a īntreruperilor presupune: lansarea unei cereri de īntrerupere si transmiterea ei pe un nivel de īntrerupere; īntreruperea temporara a procesului activ, cu conservarea starii sale īn momentul īntreruperii; executarea rutinei de tratare a īntreruperii de pe nivelul corespunzator; reluarea procesului īntrerupt si continuarea lui, pornind de la starea din momentul īntreruperii.
Pasii executati de sist de la aparitia intreruperii pana la rezolvare: salveaza starea procesului īn executie, prin memorarea pe stiva a continutului registrului contor de program, al cuvāntului de stare program si al registrelor generale; accepta īntreruperea si localizeaza rutina de īntrerupere; executa rutina de īntrerupere; reface contextul de executie al procesului īntrerupt; reia procesul din punctul īn care a fost īntrerupt.
Controlul
īntreruperilor Īn
timpul executarii unui proces, exista anumite operatii critice,
care nu trebuiesc īntrerupte. Īn acest scop, exista
posibilitatea invalidarii unei cereri de intrerupere. Controlul īntreruperilor se refera la posibilitatea
acordata
Ierarhizarea īntreruperilor La un moment dat,
īn sistem, pot fi activate, simultan, mai multe cereri de īntrerupere. Acestea
sunt servite īn ordinea īn care apar īn sistem. De exemplu: se opreste,
temporar, executia unei rutine de īntrerupere, pentru a lansa īn
executie o alta rutina de īntrerupere, apelata de o cerere
de īntrerupere aparuta ulterior īn sistem. Se poate realiza o
ierarhizare a īntreruperilor, prin acordarea de prioritati de
executie fiecarui nivel de īntrerupere. Īn cazul ierarhizarii
īntreruperilor, ordinea de servire a cererii de īntrerupere va fi
stabilita conform urmatoarelor principii: servirea unei cereri de
īntrerupere poate fi īntrerupta numai de o cerere de īntrerupere cu nivel
de prioritate mai mare; īntreruperile
nemascabile au prioritate maxima; dupa īncheierea unei rutine de
tratare a īntreruperii se reia executia īntrerupta, care poate fi a
unui proces sau a altei rutine de tratare a unei īntreruperi cu prioritate mai
mica. Functiile sistemului de īntreruperi Īn concluzie,
sistemul de īntreruperi permite comunicarea īn sistemul de calcul si
sincronizarea activitatii
Gestiunea memoriei Tipuri de memorie Dupa viteza de acces: memorii rapide;memorii lente; memorii foarte lente; Dupa tip: memorie principala RAM; mem secundara HDD; memorie cash Ierarhie de memorie Partea din SO care gestioneaza ierarhia de memorie are ca sarcina: sa urmareasca ce parti de memorie sunt īn uz si ce parti nu sunt folosite; sa aloce memorie proceselor care au nevoie si sa o dealoce cānd nu mai este necesara; sa coordoneze schimbul īntre memoria principala si disc cānd memoria principala este prea mica pentru a contine toate procesele.
Incarcarea si executia unui program in memorie: īncarcarea dinamica īncarcarea rutinelor īn memoria principala numai atunci cānd este nevoie de ele); suprapuneri (Overlay-urile furnizeaza un mod de scriere a programelor care necesita mai multa memorie decāt memoria fizica ); legarea dinamica (WINDOWS, UNIX).
Alocarea memoriei. Alocatorul de memorie Alocarea memoriei se face ierarhic;
Alocarea memoriei este efectuata de catre alocatorul de memorie care tine contabilitatea zonelor libere si ocupate din memorie, satisface cererea pentru noi zone si reutilizeaza zonele eliberate la baza acestei ierarhii se afla sistemul de operare care furnizeaza utilizatorilor portiuni de memorie iar utilizatorul, la rāndul sau, gestioneaza portiunea primita de la SO dupa necesitatile sale.in limbaje de programare )-Limbaje cu alocare si delocare explicita. Functiile new si free īn PASCAL si new si delete sau malloc si free din C si C++; )-Limbaje cu colectoare de gunoaie (garbage collection); Dezavantajele limbajului: alocarea este impredictibila īn timp, adica nu se stie exact īn care moment se va produce; nu se poate sti daca zona de memorie utilizata va fi sau nu utilizata īn viitor, deci este posibil ca un program sa pastreze alocate zone de memorie care-i sunt inutile; limbajele Lisp si Java.
in sistemele de operare Mach sau Digital.
Caracteristici ale alocatoarelor: 1)-Timp de operatie. Este timpul necesar unei operatii de alocare/dealocare; 2)-Fragmentarea: fragmentare externa apare ori de cāte ori exista o partitie de memorie disponibila, dar nici un program nu īncape īn ea compactarea spatiului liber din memorie prin mutarea blocurilor dintr-o zona īn alta . Fragmentarea interna este data de cantitatea de memorie neutilizata īntr-o partitie blocata ( ocupata partial de un program); 3)-Concurenta. Aceasta caracteristica se refera la gradul de acces concurent la memorie. 4)-Grad de utilizare.
Scheme de alocare a memoriei: sisteme care transporta procesele, īnainte si īnapoi, īntre memoria principala si disc (swapping si paging); sisteme care nu fac acest lucru ( fara swapping si paging); a)-Pentru sistemele cu alocare contigua, exista schemele: -alocare unica; -alocare cu partitii fixe ( alocare statica);-alocatii cu partitii variabile (alocare dinamica); -alocare cu swapping.
b)Pentru sistemele cu alocare necontigua: -alocare paginata (simpla sau la cerere);
-alocare segmentata (simpla sau la cerere);-alocare segmentata-paginata (simpla sau la cerere). Alocare unica a) Alocare unica cu o singura partitie b) Alocare unica cu doua partitii -partitie pentru sistemul de operare(nucleul);-partitie pentru utilizator.
Alocare cu partitii fixe (alocare statica) -Memoria este īmpartita static īn mai multe partitii, nu neaparat de dimensiuni egale. -Īn fiecare partitie poate rula cel mult un proces, gradul de multiprogramare fiind dat de numarul partitiilor sistemul de chei de protectie si chei de acces.-La identitatea cheii de acces cu cea de protectie, se permitea accesul īn pagina respectiva Alocare cu partitii variabile -tabela partitiilor ocupate; -tabela partitiilor libere.
Algoritmi de alegere a spatiului liber: -FFA (First Fit Algoritm), prima potrivire. Se parcurge lista spatiilor libere, care este ordonata crescator dupa adresa de īnceput si se alege primul spatiu de dimensiune suficienta. Acest algoritm este folosit īn sistemul SO MINIX, creat de Tannenbaum. -BFA (Best Fit Algoritm) , cea mai buna potrivire. Se parcurge lista spatiilor libere si se alege spatiul cu dimensiunea cea mai mica īn care īncape programul. Īn acest fel se minimizeaza fragmentarea interna. Īn cazul īn care lista spatiului liber este ordonata crescator dupa dimensiunea spatiilor libere, se alege evident primul spatiu liber; -WFA (Worst Fit Algoritm) , cea mai proasta potrivire. Se parcurge lista spatiilor libere ordonata crescator dupa dimensiune si se alege ultimul spatiu din lista.Alocarea prin swapping
Segmentarea memoriei Principiul segmentarii. Fiecare segment are un nume si o dimensiune, deci: -un nume; -un deplasament. Programatorul vede spatiul virtual de adresare al programului ca un spatiu bidimensional, nu un spatiu unidimensional ca la programare
Paginarea memoriei. Paginarea este un tip de alocare necontiguu inseamna ca unui proces ii poate fi alocata memorie oriunde atat in memoria interna cat si externa iar memoria se aloca pe bucati. Suportul hardware Memoria fizica este īmpartita īn blocuri de lungime fixa, numite cadre de pagina (frames) sau pagini fizice.Memoria logica a unui proces este īmpartita īn pagini logice sau pagini virtuale care sunt plasate īn memoria secundara, pe hdd.
Atāt adresele fizice cāt si cele logice sunt implementate īn hard si ele contin: -adresa fizica=numar de cadru(f)+deplasament īn cadru(d); -adresa logica=numar de pagini logice(l)+deplasament īn pagina logica. Prin mapare se īntelege translatarea adresei logice īn adresa fizica. Aceasta sarcina īi revine sistemului de operare prin utilizarea tabelei de pagini.Principalul avantaj al paginarii este eliminarea completa a fragmentarii externe. Posibilitatea de partajare a memoriei. Doua sau mai multe pagini pot vedea aceeasi zona de memorie īncarcānd paginile logice īn acelasi cadru fizic. Un dezavantaj al paginarii este faptul ca fiecare acces la memorie presupune un acces suplimentar la tabela de pagini pentru calculul de adresa.
|