Sunteți pe pagina 1din 16

Sisteme de operare -generalitati

Sistemul de operare(S.O)controleaza si coordoneaza utilizarea hard-ului intre diferite programe de


aplicaii ale utilizatorului.

S.O este cel ce furnizeaza instrumente cu ajutorul carora sa fie folosite in mod adecvat resursele de baza
ale sistemului(resursele hardware,respectiv software).Din acest punct de vedere S.O poate fi privit ca un
administrator al resurselor pe care le aloca in functie de necesitatile programelor si ale utilizatorilor, a.i.
exploatarea sistemului de calcul sa fie corect si eficienta.

Pe de alta parte un S.O poate fi privit ca un program de control care urmareste efectuarea programelor
utilizatorului pentru a putea preveni eventuale erori,precum si folosirea necorespunzatoare a sistemului
de calcul,avand ca principala sarcina operarea si controlul dispozitivelor de I/O.

In concluzie functile de control si alocare ce sunt necesare programelor de alocare sunt cumulate intr-o
agenda componenta software numita S.O.

Concepte ale S.O

1.Conceptul de proces

Procesul este forma activa a unui program aflat in executie.Un program reprezinta memorarea pe un
anumit suport,a unei succesiuni de instructiuni asociate rezolvarii unei probleme a
utilizatorului.Programul este astfel o entitate pasiva.Spre deosebire de acesta un proces prezinta un
ansamblu de resurse alocate unui program ce face posibila executia acestuia:

-cantitate de memorie alocata

-numarul si tipul perifericelor asocitae

-tipul unitatii centrale(la care procesorul dobandeste acces la U.C pentru a fi executat).

In cadrul unui S.O procesele sunt organizare sub forma ierarhica.In general exista 2 tipuri de procese:

1.procese independente-la care nu exista nici un fel de raport de coordonare sau


subordonare a executiei

2.procese subordonate in structuri de tip parinte-fiu

OBS.!!! In mod natrual executia unui proces parinte trebuie sa aiba loc dupa ce toate procesele fiu
asociate si-au incheiat executia.In caz contrar(in cazul in care un proces parinte si-a incheiat o activitate
inaintea tuturor proceselor fiu ale sale)situatia de exceptie generat este reprezentata de ramanerea
proceselor fiu intr-o stare numita"zombie".
2.Apelul de sistem

Un apel de sistem reprezinta o modalitate prin care un program poate solicita catre S.O executia unei
anumite functii.

Ex.:

 cererea de alocare de memorie

 cererea de eliberare a memoriei

 rezervarea/eliberarea unui spatiu pe disc

 trimiterea unei cereri la imprimanta,etc.

In general activitatea de lansare a unui apel de sistem se executa in cativa pasi:

1. procesul formuleaza o cerere si o trimite S.O sub forma unui apel de sistem

2. S.O primeste solicitarea(eventual o valideaza)

3. S.O executa actiunile produse de apelul lansat in execturie si intoarce procesului apelant un
raspuns

3.Fisiere

Fisierele reprezinta structuri complexe de informatie care au de obicei ca suport partea fizica a
dispozitivelor periferice.

Obs.:In mod evident pentru a se putea asigura securitatea informatiilor ,accesul la acestea se va face
exclusiv prin intermediul apelurilor de sistem.In ceea ce priveste fisierele actuale,ele sunt organizare de
regula sub forma unor structuri arborescente.

Obs.:In ierarhiile curente asociate proceselor exista doua tipuri de fisiere:

a. fisiere obisnuite=sunt fisiere la care continutul reprezinta principalul atribut.

b. fisiere speciale=la care exista o asociere intre un fisier si un echipament periferic.

Aceste fisiere nu sunt caracterizate de continut,ci de legatura pe care o au cu un echipament periferic.

MODELE DE S.O.
SISTEME MONOLITICE=cea mai simpla structura,S.O fiind cocneput ca o colectie de proceduri, fiecare
dintre acestea pot apela,la nevoie,orice alta functie,mai mult fiecare functie din acest tip de sistem are o
interfata bine definita in ceea ce priveste parametrii de apel.

In acest sistem fiecare procedurea este vizibila de oricare alta procedura.Aceste sisteme se numesc
"sisteme fara oridine",serviciile asigurate de acestea fiind regastie si apelate tot prin intermediul
apelurilor de sistem.

La aceste sisteme un apel se executa prin plasarea parametrilor apelului de sistem in locuri fixe bine
precizate.S.O preia valorile parametrilor,rezolva apelul de siste si depune rezultatele acestuia tot in
locuri fixe,de aici raspunsurile sunt preluate de catre procesele apelante.Practic in acest model pentru
fiecare apel de sistem exista o procedura de serviciu care rezolva o anumita functie si eventual o colectie
de proceduri utilitare de care pot avea nevoie procedurile de serviciu.

SISTEME DE OPERARE STRUCTURATE PE NIVELURI=acestea sunt o generalizare a structurii anterioare


sub forma unei ierarhii de niveluri,un nivel fiind construit pe altul.Primul S.O orientat pe niveluri a
aparut in 1968.

Sistemul avea 6 niveluri:

5.operator uman

4.program utilizator

3.gestiune I/O

2.comunicatie operator-proces

1.management memorie

0.alocarea procesorului si multiprogramarea

Nivelul 0 se ocupa cu alocarea procesorului insemnand executia pe rand a unor fragmente mici din
programele aflate in executie,schimbarea procesorului de la un fragment la altul fiind realizata atunci
cand apare o intrerupere.Din acest motiv acest nivel furnizeaza bazele functionarii mecanismului de tip
multi programare.

Nivelul1 aloca spatiu in unitatea de memorie pentru executia proceselor,in plus administreaza
mecanismele de lucru cu memoria externa,atunci cand memoria interna nu este suficienta.

Nivelul2 asigura comunicarea intre proces sau operator.

Nivelul3 realizeaza managementul operatiilor de I/O.

Nivelul4 este cel la care se plaseaza programele utilizator.

Nivelul5 este nivelul pe care ruleaza procesul operatorului de sistem.


Obs.: Aceeasi structura de niveluri poate fi considerata ca o succesiunte de inele concentrice unde
fiecare inel interior este mai privilegiat decat un inel exterior.Atunci cand are loc un apel de procedura
de pe un anumit nivel se executa practic un apel(de sistem) catre nivelurile interioare.Avantajul aceste
structuri este posibilitatea de dezvoltare a unor niveluri independete pentru fiecare utilizator.

3.S.O RARE DE TIP MASINA VIRTUALA

Acest concept a fost introdus de IBM,prin anii '60,si se bazeaza pe observatia ca sistemul de operare
poate fi privit ca o entitate ce furnizeaza doua tipuri de servicii si anume:

 multiprogramarea

 o interfata simpla si eficienta pentru utilizator

Nivelul "monitor masina virtuala"realizeaza toate functiile de multiprogramare,furnizand suportul


pentru mai multe calculatoare individuale(masini virtuale).Fiecare masina ofera cate o interfata identica
emuland fiecare in parte cate un sistem de calcul.In concluzie sistemul in ansamblu poate fi vazut ca un
numar de n calculatoare independente ceea ce face posibila executia mai multor sisteme de operare.

4.S.O DE TIP CLIENT-SERVER

Tendinta S.O actuale este de a se transfera pe cat posibil pe nivele superioare(nivelul programelor
utilizator)o parte din codul S.O astfel incat nucleul sistemului(kernel-ul) sa ramana la dimensiuni reduse
fiind si redus de complexitate.In S.O de tip client-server o parte din functiuni sunt practic trecute in
procese de tip utilizator.

Procesorul are 2 moduri de functionare corespunzand celor 2 niveluri ale S.O:

-Modul nucleu(kernel):este un mod de functionare in care acesta executa fara restrictii toate sarcinile
impuse.Acest mod este specific partii sistemului de operare ce are contact direct cu dispozitivele
hardware.Spre deosebire de acesta comutarea procesorului in mod utilizator are drept efect executia
selectiva a programelor,o parte din functii devin inaccesibile.La acest S.O nucleul procesului pastreaza
doar acele componente de baza celelalte sarcini fiind deplasate pe un nivel superior(in domeniul
proceselor utilizator).

Atunci cand un proces client emite o cerere catre un proces server atat solicitarea serviciului cat si
raspunsul sunt transportate de catre nucleu.

Este foarte important sa retinem ca iesirea din functiune a unui proces server,atrage dupa sine nu
blocarea intregului sistem,ci doar a componentei respective.

Exista si variante adaptabile pentru structurile distribuite.


Nucleul distribuit al S.O realizeaza atat transportul mesajelor dintre procelese client si procesele server
cat si executia functiilor ce nu pot fi executate in mod utilizator.

Procese

Starile unui proces in cadrul sistemului

Un proces dispunde de 3 stari acestea caracterizand in mod extensiv procesul respectiv.

Cele 3 stari ale unui proces sunt:

1.Starea"in executie"atunci cand procesul ocupa timp procesor.

2.Starea"gata de executie"in care procesul are toate conditiile indeplinite pentru a se executa,el
asteptand a fi preluat si infatisat.

3.Starea"blocat"in care procesul nu poate fi executat deoarece nu sunt indeplinite conditiile necesare
executiei sale.(se asteapta producerea unui eveniment,eliberarea unei resurse,indeplinirea unor
conditii,etc.)

Obs.!!!:In vederea executiei de catre microprocesor a ansamblului de procese,exista un proces special


numit proces planificator,in sarcina caruia revin trimiterea la microprocesor in vederea executiei
respectiv derogarea dreptului de executie pentru procesele active.Procesul planificator este un proces
special,exista in toate S.O,iesirea din functiune a sa atragand dupa sine,incetarea functionarii sistemului.

Implementarea proceselor in cadrul S.O

Procesele sunt resurse logice gestionate de catre S.O,gestiunea proceselor este realizata prin
administrarea unor tabele de proces.(acestea asigura o intrare pentru fiecare proces)

Cele mai importante informatii asociate unei intrari sunt:

1. continutul registrului numarator de program

2. continutul registrului indicator de stiva

3. memoria alocata procesului


4. starea fisierelor deschise

5. informatii de planificare

6. orice alta informatie ce ar trebui salvata in momentul in care un proces trece din starea de
executie in starea gata de executie in asa fel incat reluarea activitatii sa fie posibila

Modelele fiselor de executie

S.O traditionaole considera procesele ca avand un singur fir de executie in sensul ca instructiunile
procesului fac parte dintr-o singura secventa de control,totusi apare deseori situatia in care procesul sa
fie constituit din mai multe fire de control,acestea executandu-se si in paralel.

Pentru ca un proces sa poata fi impartit in fire de control conditia necesara este aceea ca pe parcursul
actiunilor procesului sa poata fi identificate secvente de actiuni ce sunt disjuncte(in sensul ca sfarsitul
unei secvente nu conditioneaza inceputul altei secvente).

Cu alte cuvinte conceptul de proces grupeaza din punct de vedere al resurselor executa,in timp ce
conceptul de fir o desparte din punct de vedere executiv.

In cazul firelor de executie acestea partajeaza resurse ale procesului respectiv(ex.:aceeasi zona de
memorie) in timp ce procesele diferite se refera la astfel de entitati separate.

Obs.!!!:Microprocesoarele care suporta lucrul cu fire de executie se numesc procesoare multi-threading.

COMUNICAREA INTRE PROCESE

In activitatea sistemului poat aparea situatii in care doua sau mai multe procese partajeaza anumite
resurse comnune,dintre acestea exista o categorie speciala care,desi sunt resurse partajabile,acestea nu
pot fi partajate simultan.(ex.:imprimante)

Aceste resurse poarta numele generic de resurse critice,iar sectiunea de cond in care un proces are
acces la aceste resurse critice se numeste zona/sectiune critica.

In consecinta doua procese nu trebuie sa se afle simultan in propriile sectiuni critice referitoare la
aceeasi resursa(in caz contrar situatia numindu-se "conditii de competitie").

Obs.:"Conditiile de competitie"sunt intotdeauna de evitat.

Mecanismul prin care doua procese se impiedica reciproc sa intre in acelasi timp in propriile sectiuni
critice se numeste excludere mutuala.
Obs.!!!:Pentru a putea avea procese paralelel care sa coopereze corect si eficient este necesar ca pe
langa evitarea conditiilor de competitie sa se resprecte o serie de alte 3 conditii speciale de lucru:

1. sa nu existe o dependenta a activitatilor din sistem de viteza sau numar de procesoare.

2. procesele care ruleaza in afara sectiunilor critice,sa nu poata bloca alte procese din sistem.

3. niciun proces nu trebuie sa astepte la nesfarsit pentru a intra in sectiunea ctirica.

Metode de excludere mutuala-BUSY WAITING

O situatie BUSY WAITING(asteptare cu ocuparea procesorului)se refera la o stare in care se asteapta


terminarea unei activitati fara ca in acest timp sa se poata executa nicio alta activitate.

Situatia BUSY WAITING desi rezolva problema excluderii mutuale nu este de dorit a fi intalnita,deoarece
nu este utilizat eficient procesorul de sistem.

1.BLOCAREA CU VARIABILE SOFTWARE

Pentru aceasta metoda se considera o variabila partajata cu numele de lock folosita ca un fanion ce
indica daca un proces se afla sau nu in zona sa critica.

Initial aceasta variabila are valoarea 0,semnalizand faptul ca niciun proces nu se afla in sectiunea
sacritica.Atunci cand un proces intentioneaza sa intre in propria sectiune critica,ma intai va testa
variabila lock.Daca valoarea acesteia este 0,procesul va modifica aceasta valoare in 1 si va intra apoi in
sectiunea sa critica.In acest moment orice alt proces ar incerca sa intre in zona critica va gasi valoarea
acestei variabile egala cu 1,neputand astfel intra in acea sectiune.In momentul in care programul ce
intrase deja in zona criticaa termina executarea acestor instructiuni,el va repune pe 0 valoarea variabilei
lock,astfel este permis acum accesul altor procese in sectiunea lor critica.
Desi foarte simplu de implementat aceasta metoda poate conduce in anumite conditii la existenta
conditiilor de competitie.

2.METODA DE ALTRNARE STRICTA

In aceasta sistuatie prin intermediul unei variabile numite turn se va controla alternarea stricta de la
parcurgerea sectiunii critice.
3.SOLUTIA PETERSON

Aceasta solutie combina utilizarea variabilelor software cu variabila de alternare fara insa a stabili o
alternare stricta a accesului in zona sectiunii critice.

Inainte de a intra in sectiunea critica fiecare proces trebuie sa apeleze functia intrare_regiune avand ca
parametru numarul procesului in sine(0sau1).Aceasta rutina va introduce daca este nevoie o stare de
asteptare pana in momentul in care exista conditii de acces la sectiunea critica.La iesirea din aceasta
zona procesele apelante lanseaza in executie functia iesire_regiune indicand astfel ca si alt proces poate
de acum sa intre in sectiunea sa critica.

APELURI DE SISTEM

SLEEP SI WAKE UP

Pentru evitarea folosirii de metode busy wainting solutia este ca S.O sa puna la dispozitia utilizatorilor o
serie de apeluri de sistem specifice comunicarii intre procese.Aceste apeluri trebuie sa blocheze
procesul care incearca sa intre in sectiunea sa critica,daca un alt proces se afla deja in sectiunea critica
corespunzatoare,in acest caz blocarea procesului ce nu indeplinste conditiile de intrare in sectiunea
critica nu se face prin instructiuni ce tin ocupat procesorul,masura fiind mai eficienta decat metoda busy
waiting.

O rezolvare simpla este data de folosirea apelurilor SLEEP si WAKE UP.

SLEEP->se blocheaza procesul apelant.

WAKE UP->se deblocheaza procesul specificat in apel.

Obs.:Intotdeauna un proces care este blocat pe un apel SLEEP va trebui deblocat de un alt proces.Pentru
exemplificarea functionarii apelurilor SLEEP si WAKE UP va fi folosita o problema clasica de programare
si anume problema producator-consumator(problema buffer-ului limitat).

Presupunem ca avem 2 procese care impart o zona de memorie de dimensiune fixa si limitata numita
buffer.Unul dintre procese are rol de producator(depune datein buffer),iar celalalt proces are rol de
consumator(consuma date din buffer);in acest caz pot aparea doua situatii de exceptie:

1-procesul producator doreste sa depuna informatii in buffer,insa acesta este plin.

2-procesul consumator doreste sa consume informatia din buffer,insa acesta este gol.

Solutia la aceste doua situatii utilizant cele 2 apeluri SLEEP si WAKE UP este urmatoarea:

1.Producatorul trebuie sa intre in starea blocat prin apelul functiei SLEEP daca bufferul este plin,el va fi
scos din aceasta stare de catre procesul consumator prin intermediul unui apel WAKE UP in momentul in
care acesta va extrage din buffer unul sau mai multe elemente.

2.Consumatorul in momentul in care doreste sa extraga date din buffer si il gaseste gol va trece in starea
de blocare printr-un apel SLEEP.De aceasta data producatorul este cel ce realizeaza operatia de
deblocare cu un apel WAKE UP in momentul in care produce cateva elemente.

Implementarea in cod C(pseudocod)a rezolvarii problemei producator-consumator este data in randurile


ce urmeaza:

Desi functional acest algoritm poate conduce la aparitia conditilor de competitie din cauza ca variabila
contor este accesata fara niciun fel de control de catre ambele procese.

De exemplu:Atunci cand bufferul este gol si procesul consumator este intrerupt imediat dupa ce a citit
valoarea lui contor in vederea testarii(vezi sageata inainte de apelul sleep)se lanseaza procesul
producator.Acesta produce un element si incrementeaza valoarea lui contor,acesta devenind unic.In
acelasi timp procesul producator lanseaza un apel de tip WALE UP catre consumator,apel care se
pierde(procesul consumator nu a apucat sa execute apelul sleep). Ulterior in momentul in care exectia
este predata din nou procesului consumator,acesta continua executia lansand un apel sleep si
blocandu-se.

Obs.:Practic apelul WAKE UP consumator a fost emis prea devreme.

In aceste conditii nu mai exista nicio posibilitate ca procesul consumator sa fie deblocat.Evident,la un
anume moment de timp si procesul producator se va bloca datorita umplerii bufferului.

In consecinta ambele procese sunt blocate deoarece fiecare asteapta de la celalalt un raspuns care nu
mai vine.Situatia poarta numele de situatie de INTERBLCOARE.

SEMAFOARE

Conceptul de semafor a fost propus pentru a se evita situatiile in care pot aparea apelul wake up ce nu
sunt acoperite de apelul sleep.(vezi situatia anterioara)

Se introduc 2 apeluri de sistem de tip DOWN si UP avand urmatoarea semnificatie:

DOWN(semafor)->testeaza variabila semafor,daca>0 se decrementeaa aceasta valoare si se continua


executia,daca semafor=0 procesul trece in starea blocat.

Obs.: Implementarea apelurilor DOWN,respectiv UP ca si a apelurilor SLEEP si WAKE UP este facuta la


nivelul S.O.Pentru a functiona coresct este necesar ca pe durata efectuarii acestor apeluri,sistemul de
intreruperi sa fie dezactivat.Totusi dezactivarea interuperilor pe o durata de timp foarte mica nu
produce disfunctionalitati in sistem.Rezolvarea problemelor producator consumator,utilizand
semafoare.Se vor folosi 3 variante de tip semafor:

-semaforul plin:contabilizeaza numarul de sloturi ocupate

-semaforul gol:contabilizeaza numarul de sloturi libere

-semaforul exclud-mutual: face ca in mod sigur producatorul si consumatorul sa nu acceseze in


acelasi timp buffer-ul.

semaforul plin=0

semaforul gol=N

semaforul exclud-mutual=1
METODA CONTOARELOR DE EVENIMENTE

O astfel de metoda este intr-un mod cu totul special suportat doar de S.O(care lucreaza cu contoare de
evenimente)

Obs.:Nu toate S.O,opereaza cu aceste contoare de evenimente.

Asupra unei variabile de tip contor de evenimente se pot aplica 3 tipuri de operatii.
READ(E)->citeste valoarea curenta a contorului

ADVANCE(E)->incrementeaza valoarea lui E cu 1

AWAIT(EV)->asteapta pana cand E capata o valoare egala cu V sau mai mare

E-variabila eveniment

Obs.:Intotdeauna contoarele de evenimente cresc.

Pentru rezolvarea problemei,producator consumator se utilizeaza doua contoare de evenimente.

Primul contor(IN)contorizeaza cumulativ numarul de elemente pe care producatorul le-a depus in buffer
de la initializarea programului.

Celalalt contor(OUT)contorizeaza numarul de elemente pe care consumatorul le-a extras din bufer din
momentul initierii programului.

Conditia necesara este ca valoarea lui IN sa fie mai mare sau egala cu valoarea lui OUT fara insa a se
depasi dimensiunea bufferului(N)
Producatorul,dupa priducerea unui eveniment incearca sa il depuna in buffer,prin apelul de sistem
AWAIT (out,secventa-N)el este pus in asteptare daca nu este loc in buffer,adica out(nr. elementelor
extrase)nu este cel putin egal cu secventa-N.

Producatorul va fi pus in asteptare ori de cate ori numarul elementelor generate ajunge cu n+1 mai
mare decat numarul elementelor consumate.

In mod simetric consumatorul va fi pus in asteptare prin apelul AWAIT(in,secventa)daca numarul


elementelor depuse in buffer nu este cel putin egal cu numarul elementelor extrase -1.

CONCEPTUL DE MONITOR

Metoda monitoare presupune existenta unei colectii de proceduri,variabile,respectiv structuri de date


avand proprieteatea ca atunci cand o entitate ce apartine monitorului este utilizata de catre un program
niciun alt program nu poate accesa un alt element din monitor.

Din punct de vedere practic se poate spune ca un singur proces/program este activ in monitor la un
moment-dat.

Atunci cand un proces apeleaza o procedura de tip monitor primele instructiuni ale procedurii vor
verifica,daca un alt proces este activ intr-o procedura de tip monitor.

In caz afirmativ ultimul proces care a apelat minitorul este blocat pana cand celalalt proces paraseste
procedura de monitor.Astefel revine in sarcina compilatorului implementar excluderii mutuale intre
procese,ceea ce face mai putin posibila aparitia erorilor de programare.

Obs.!:Desi monitoarele pot asigura excluderea mutuala acest lucru nu este suficient fiind necesare de
asemenea proceduri de sincronizare prin intermediul carora procesele sa fie blocare atunci cand nu pot
lucra.De exemplu:In problemele producator-consumator procesul producator trebuie sa fie blocat in
momentul in care bufferul respectiv este plin,respectiv procesul consumator trebuie sa fie blocat in
momentul extragerii unui element dintre buffer gol.
In acest scop se introduce un nou tip de variabila de conditie respectiv 2 operatii asociate acesteia.

WAIT(var_conditie)->determina blocarea unui proces

SIGNAL(var_conditie)->deblocheaza un proces blocat pe varianila de conditie respectiva

Obs.:Operatiile WAIT,respectiv SIGNAL sunt similare apelurilor SLEEP,respectiv WAKEUP cu deosebirea


faptului ca nu se poate intampla sa poarda niciun apel signal deoarece monitorul asigura excluderea
mutuala:

S-ar putea să vă placă și