Sunteți pe pagina 1din 11

Universitatea Lucian Blaga, Facultatea de Inginerie Hermann Oberth

Procese. Interblocari. Fisiere










Bitiu Andrada,
Sia 133, an III







Un sistem de operare (SO) este o colectie organizata de programe care:
gestioneaza resursele calculatorului, implementnd algoritmi prin care se
incearca o optimizare a performantelor calculatorului
realizeaza o interfata intre utilizator si calculator, extinznd setul de operatii
disponibile utilizatorului si simplificnd modul de lucru cu calculatorul.

Functiile generale unui sistem de operare:
Alocarea de resurse proceselor
Contabilizarea resurselor - Ce resurse sunt libere
Planificarea proceselor
Protectia - Un proces poate accesa resurse numai cand i este permis

Functii de baza:
Managementul proceselor
Managementul resurselor
Managmentul perifericelor
Managmentul memoriei
Managmentul fisierelor

Proiectantul unui sistem de operare trebuie sa realizeze urmatoarele actiuni:
sa asigure buna functionare a componentelor hardware, precum si
comunicarea si cooperarea intre acestea
sa previna interferentele nedorite intre diferitele programe de aplicatii
inclusiv sa impiedice pe cat posibil propagarea efectelor erorilor unui
program asupra celorlalte

Existun numr de concepte comunesistemelor de operare
procese
modul de gestionare a memoriei
fiiere



1. Procese

Un proces este un program n execuie, cruia i se asociazun spaiu de adrese
Pentru a putea rula mai multe procese, acestea sunt partajate n timp
- La reluarea procesului acesta trebuie repornit din starea pe care o avea
n momentul suspendrii
- n multe SO, informaiile despre fiecare proces, altele dect coninutul
propriului spaiu de adrese, sunt reinute ntr-un tabel de procese
Un rol cheie n gestiunea sistemului l auapelurile de sistem pentru
iniierea i terminarea proceselor
Fiecaruiproces i se asociaza un spatiu de adrese, adica o lista de locatii de
memorie
Locatiile sunt cuprinse intre doua limite, una minima (de obicei 0) si
una maxima
Spatiul de adrese contine programul executabil, datele programului
si stiva
Sistemul de operare decide, periodic, sa opreasca rularea unui proces
si declansarea altuia

Procesul suspendat trebuie repornit dupa un timp exact din starea starea
pe care o avea in momentul suspendarii
Toate informatiile despre proces trebuie salvate si pastrate pe toata
duratasuspendarii
Aceste informatii sunt memorate intr-un tabel de procese
Apelurile de sistem se ocupa de initierea si terminarea proceselor



1.1. Comunicaia ntre procese

Un proces poate crea mai multe procese (numite copii) care la rndul lor pot crea
alte procese. Astfel se ajunge la o structura de tip arbore
Procesele pot comunica ntre ele. n cazul n care procesul corespondent
nu rspunde dupun anumit timp, SO trimite un semnal de alarm care
trebuie
tratat (de ex. prin retrimiterea mesajului)
Fiecare utilizator de sistem are asociat un UID (User Identification).
Fiecare proces conine UID-ul utilizatorului care l-a declanat. Un
proces copil are acelai UID ca i printele su.
Exist un UID (superuser n UNIX) care are puteri depline asupra
sistemului


2. Interblocri

Intr-un sistem cu multiprogramare se intampla frecvent ca mai multe
procese sa concureze pentru folosirea unui numar finit de resurse. In cazul in
care resursa ceruta de catre un proces nu este disponibila, procesul va intra in
starea de asteptare. Daca resursa ceruta este mentinuta in starea ocupat de
catre alt proces aflat la randul sau in asteptare, apare interblocarea
(deadlock), o situatie nedorita in care procesele implicate nu reusesc sa-si
incheie executia, mentinand ocupate resursele sistemului si impiedicand astfel
celelalte procese sa-si inceapa la randul lor executia.

Exemplu:
Procesele 1 i 2 trebuie s copieze date de pe disc pe CD-ROM
Procesul 1 soliciti primete acces la disc
Procesul 2 solicit i primete acces la CD-ROM
Procesul 1 nu primete acces la CD-ROM pncnd procesul 2 nu
cedeaz accesul
Procesul 2 nu primete acces la disc pncnd procesul 1 nu cedeaz
accesul

Resursele pot fi: resurse fizice ( imprimate, spatiu de memorie, cicluri UC etc.) sau
resurse logice ( fisiere, semafoare, monitoare ). In general, se considera ca
resursele sistemului sunt grupate in tipuri de resurse, fiecare dintre acestea fiind
format dintr-un anumit numar de elemente identice. Ca exemple de tipuri de resursa
pot fi enumerate: cicluri de UC, spatiu de memorie, fisiere si dispozitive de I/O ( in
cazul in care sistemul contine doua UC, se spune ca tipul resursa UC contine doua
elemente.) Inainte de a putea utiliza o resursa, procesul formuleaza o cerere de
acces, iar dupa terminarea operatiei elibereaza resursa respectiva. Atunci cand un
proces formuleaza o cerere de acces la un element al unui tip resursa, cererea va fi
satisfacuta prin alocarea oricarui element apartinand tipului precizat.
Pe scurt, etapele parcurse de un proces in cursul utilizarii unei resurse sunt:
cerere de acces: daca cererea nu poate fi satisfacuta imediat, procesul care
a formulat-o va fi nevoit sa astepte pana in momentul in care poate dobandi resursa
utilizare: procesul poate folosi resursa;
eliberare: procesul elibereaza resursa.
Cererea si eliberarea resurselor se realizeaza prin apeluri de sistem cum ar fi,
de exemplu, apelurile de sistem pentru cerere/eliberare dispozitiv, deschidere/inchidere
fisier si alocare/eliberare memorie sau prin intermediul operatiilor cu semafoare, Wait
si Signal. Tot cu ajutorul apelurilor de sistem se poate realiza si utilizarea resurselor (
de exemplu, pentru citirea sau scrierea unui fisier ). De aceea, sistemul verifica de
fiecare data daca procesul a formulat cererea si daca i-a fost alocata resursa ceruta,
folosind un tabel de sistem in care se specifica pentru fiecare resursa faptul ca este
libera sau este deja alocata, in aceasta ultima situatie fiind precizat si procesul
asociat. In cazul in care un proces cere o resursa deja alocata altui proces,
procesul care a formulat cererea va fi adaugat la sirul de asteptare asociat resursei
in cauza.
Pentru rezolvarea problemei interblocarii se folosesc, in principiu, doua
metode. Prima metoda consta in utilizarea unui protocol care sa nu permita
niciodata sistemului sa intre in starea de interblocare. Acest deziderat se realizeaza
fie prin prevenirea interblocarii,fie prin evitarea interblocarii. Cea de-a doua metoda
permite sistemului intrarea in starea de interblocare si rezolva apoi aceasta
situatie, reprezentand de multe ori o solutie destul de dificila si costisitoare.
1. Conditii necesare pentru aparitia interblocarii
Interblocarea apare daca si numai daca in sistem sunt indeplinite simultan
urmatoarele 4 conditii:
excluderea mutuala: exista cel putin o resursa ocupata in mod exclusiv ( adica
fara a putea fi folosita in comun ) de catre un singur proces; daca un alt proces
formuleaza cerere pentru aceeasi resursa, va fi nevoit sa astepte pana in
momentul eliberarii ei;
ocupare si asteptare: exista cel putin un proces care mentine ocupata cel
putin o resursa si asteapta sa obtina resurse suplimentare ocupate in acel
moment de catre alte procese;
imposibilitatea achizitionarii fortate: resursele nu pot fi achizitionate fortat,
adica nu pot fi dobandite in mod 'abuziv' de catre un proces de la procesul
care le ocupa la momentul considerat; resursele pot fi eliberate numai de
catre procesele care le ocupa, dupa ce acestea si-au indeplinit sarcinile;
asteptarea circulara: in sistem exista un set de procese aflate in starea de
asteptare, ( P0, P1, Pn ), astfel incat P0 asteapta eliberarea unei resurse ocupate de
catre P1, P1 asteapta eliberarea unei resurse ocupate de catre P2, , Pn asteapta
eliberarea unei resurse ocupate de catre P0.
2. Prevenirea interblocarii
Starea de interblocare poate fi prevenita daca cel putin una dintre conditiile necesare
si suficiente pentru aparitia sa nu este indeplinita.
Excluderea mutuala
In cazul tipurilor de resurse nepartajabile ( care nu pot fi folosite in comun )
aceasta conditie trebuie neaparat indeplinita. De exemplu, o imprimanta nu
poate fi folosita simultan de catre mai multe procese. Pe de alta parte, deoarece
resursele partajabile nu necesita acces mutual exclusiv, ele nu vor fi niciodata
implicate intr-o interblocare. Un exemplu edificator de resursa partajabila sunt
fisierele ce pot fi accesate doar pentru citire ( read only ). Daca mai multe procese
incearca in acelasi moment de timp sa deschida un fisier de acelasi tip, li se poate
acorda accesul simultan. In cazul unei resurse partajabile procesul nu va fi niciodata
nevoit sa astepte. Totusi, in general, nu este posibila prevenirea interblocarilor prin
neimplinirea conditiei de excludere mutuala, deoarece anumite resurse sunt in mod
intrinsec nepartajabile.
Ocupare si asteptare
Pentru ca in sistem sa nu fie indeplinita niciodata conditia de ocupare si
asteptare trebuie sa existe certitudinea ca in momentul in care un proces cere o
resursa el nu mai are alocate si alte resurse. In acest scop se poate utiliza un
protocol prin care, inainte de a-si incepe executia, fiecare proces sa ceara si sa i se
aloce toate resursele de care are nevoie. Implementarea se poate realiza impunand
conditia ca apelurile de sistem ce formuleaza cereri de acces la resurse sa se
produca inaintea altor apeluri de sistem. Un alt protocol care poate fi utilizat este cel
ce permite unui proces sa ceara resurse numai in cazul in care nu detine niciuna;
procesul poate sa ceara anumite resurse si sa le utilizeze dar, inainte de a cere
resurse suplimentare, trebuie sa le elibereze pe cele care ii sunt deja alocate. Tipurile
de protocol prezentate au doua mari dezavantaje:
gradul de utilizare a resurselor poate fi foarte redus deoarece multe dintre acestea
pot fi alocate dar neutilizate o lunga perioada de timp;
pericolul aparitiei 'infometarii' ( starvation ): procesul care doreste sa obtina
acces la mai multe resurse publice poate fi nevoit sa astepte la infinit, in timp ce
cel putin una dintre resursele cerute este alocata permanent altor procese.

I mposibilitatea achizitionarii fortate

Cea de-a treia conditie necesara pentru aparitia starii de interblocare este ca
resursele deja alocate sa nu poata fi achizitionate fortat. Pentru a avea certitudinea ca
aceasta conditie nu va fi indeplinita se poata folosi urmatorul protocol: daca un proces
care ocupa anumite resurse formuleaza cerere pentru o alta resursa ce nu ii poate fi
alocata imediat ( adica procesul trebuie sa astepte), atunci toate resursele detinute
in mod curent vor fi 'achizitionate fortat' ( in mod implicit, toate vor fi eliberate ). Ele
vor fi adaugate in lista de resurse a caror eliberare este asteptata de catre proces, iar acesta
isi va relua executia numai in momentul in care va reusi sa dobandeasca atat vechile
resurse, cat si noua resursa pe care o ceruse.

3. Evitarea interblocarii
Algoritmii prezentati anterior realizeaza prevenirea interblocarii prin
stabilirea unor restrictii asupra modului in care se pot formula cererile de acces.
Restrictiile impun cel putin una dintre conditiile necesare sa nu fie indeplinita, ceea
ce conduce la imposibilitatea aparitiei interblocarii. Aceasta metoda are insa un
dezavantaj: poate genera un grad redus de utilizare a dispozitivelor si un volum de
lucru in unitatea de timp destul de mic.
O alta metoda, pentru evitarea interblocarii, este folosirea de informatii
suplimentare referitoare la modul in care se va face cererea de acces la resurse.
Cunoscand toata secventa de cereri si eliberari de resurse pentru fiecare dintre procese
se poate hotari pentru fiecare cerere in parte daca procesul va trebui sau nu sa astepte. In
cazul fiecarei formulari de cerere se impune ca sistemul sa ia in considerare resursele
disponibile in momentul respectiv, resursele alocate deja, precum si viitoarele cereri si
eliberari de resurse corespunzatoare fiecarui proces, pentru a putea decide daca cererea
curenta poate fi satisfacuta sau trebuie sa astepte in vederea evitarii aparitiei unei
interblocari.
Pentru implementarea acestei metode se folosesc in prezent mai multi algoritmi
care difera intre ei prin tipul si cantitatea de informatie necesara.
In cazul celui mai simplu si mai des utilizat, fiecare proces trebuie sa declare
numarul maxim de resurse din fiecare tip de care ar putea avea nevoie. Dispunand apriori
de o astfel de informatie, se poate construi un algoritm prin intermediul caruia sa se
evite complet aparitia unei interblocari. Algoritmul examineaza in mod dinamic starea
alocarii resurselor pentru a avea certitudinea ca nu va aparea niciodata o conditie de
asteptare circulara.
Starea alocarii resurselor este definita de numarul de resurse disponibile si
alocate si de numarul maxim de cereri de resurse formulate de catre procese. Se spune
ca o stare este singura daca sistemul poate aloca fiecarui proces resursele cerute ( pana
la numarul maxim), intr-o anumita ordine si evitand aparitia interblocarii. Mai exact,
sistemul se afla intr-o stare sigura numai daca exista o secventa sigura. Se spune
ca o secventa de procese <p
1
,p
2
,..,p
n
>este o secventa sigura pentru starea de alocare
curenta daca, pentru fiecare p
i
, resursele pe care p
i
le-ar mai putea cere pot fi alocate
din resursele disponibile, la care se adauga resursele detinute de catre toate celelalte
p
k
, cu k<i. In acest caz, daca resursele dorite de catre procesul p
i
nu sunt imediat
disponibile, p
i
trebuie sa astepte pana cand toate p
k
isi incheie executia. In acel moment
p
i
poate obtine toate resursele de care are nevoie, isi completeaza sarcina, elibereaza
resursele si se incheie, dupa care p
i+1
poate obtine resursele pe care le doreste si asa mai
departe. In cazul in care nu exista o astfel de secventa se spune ca starea sistemului este
nesigura.
O stare de interblocare este o stare nesigura. Totusi, nu toate starile
nesigure reprezinta interblocari ( Figura 12 ). O stare nesigura poate insa conduce la
o interblocare. Atata timp cat starea este sigura, sistemul de operare poate evita starile
nesigure ( si starile de interblocare ). Intr-o stare nesigura sistemul de operare nu
poate impiedica procesele sa formuleze in asa fel cererile de alocare a resurselor
incat sa nu apara interblocare: comportarea proceselor este cea care controleaza
starile nesigure.

4. Detectarea interblocarii
Atunci cand sistemul nu utilizeza nici algoritmi de prevenire si nici algoritmi
de evitare, interblocarea poate sa apara. In acest caz sistemul trebuie sa furnizeze un
algoritm care sa examineze starea sistemului pentru a afla daca a aparut o interblocare si
un algoritm care sa realizeze revenirea din starea de interblocare. Metodele de
detectare si revenire necesita insa cheltuieli suplimentare care includ nu numai costurile
implicate de pastrarea informatiei necesare si executarea algoritmului de detectare, dar si
posibile pierderi inerente revenirii din starea de interblocare.
Decizia de folosire a algoritmilor de detectare a interblocarii este influentata
in principiu de frecventa aparitiei starii de interblocare si de numarul proceselor implicate.
Starea de interblocare poate sa apara in momentul in care un proces
oarecare formuleaza o cerere ce nu poate fi acceptata imediat. Algoritmul de detectare a
interblocarii se poate apela ori de cate ori se intampla ca o cerere de alocare sa nu
poata fi permisa imediat, caz in care poate fi identificat nu numai setul de procese
interblocate, ci si procesul care a determinat aparitia interblocari ( in realitate, fiecare
dintre procesele interblocate face parte din bucla aparuta in graful alocarii resurselor si,
deci, se poate spune ca toate aceste procese colaboreaza la aparitia interblocarii ). Daca
in sistem exista mai multe tipuri de resursa, o singura cerere poate determina aparitia
mai multor bucle in cadrul grafului,fiecare bucla fiind completata de catre cea mai
recenta cerere si 'cauzata' de catre un anumit proces ce poate fi identificat.
Apelarea algoritmului de detectare a interblocarii, ori de cate ori se
formuleaza o cerere de resurse, poate avea ca efect un substantial consum suplimentar
de timp si calcul. O varianta mai putin costisitoare este apelarea algoritmului la
intervale mai mari de timp, de exemplu la o ora sau ori de cate ori gradul de utilizare
a UC scade sub 40% ( o interblocare poate conduce la 'paralizarea' functionarii
sistemului si deci la o scadere a gradului de utilizare a UC ). In cazul in care
algoritmul de detectarea a interblocarii este apelat la momente de timp alese in
mod arbitrar, in graful resurselor pot exista simultan mai multe bucle si, de aceea,
in general, nu se va putea preciza care dintre procesele interblocate a 'cauzat'
interblocarea.
5. Revenirea din starea de interblocare
In cazul in care algoritmul de detectare a interblocarii a semnalat aparitia unei
astfel de stari in sistem, revenirea poate fi realizata de catre operatorul uman ( in mod
manual ) sau de catre sistemul de operare ( in mod automat ). Oricare ar fi varianta
aleasa, se poate folosi una dintre urmatoarele doua metode: incheierea fortata a
executiei unuia sau a mai multor procese pentru a face sa dispara asteptarea circulara
si, respectiv, achizitionarea fortata a unor resurse de la unul sau de la mai multe dintre
procesele interblocate.
I ncheierea executiei procesului
Aceasta metoda pune la dispozitia sistemului toate resursele ce fusesera alocate
pana in acel moment proceselor care se incheie; se aplica sub una dintre urmatoarele
forme:
incheierea fortata a executiei tuturor proceselor interblocate: asigura
eliminarea buclei de interblocare, dar este o metoda foarte costisitoare deoarece
toate rezultatele obtinute prin executia proceselor pana la momentul considerat
trebuie abandonate, urmand a fi recalculate ulterior;
incheierea fortata a executiei cate unui singur proces pana in momentul in
care se elimina bucla de interblocare: necesita un timp de calcul suplimentar
destul de mare deoarece, dupa incheierea fortata a fiecarui proces, trebuie
apelat un algoritm de detectare a interblocarii pentru a constata daca mai exista
sau nu procese interblocate.

3. Fiiere

Sistemul de fiiere ascunde particularitile discurilor i ale altor dispozitive de I/E
Deschiderea, citirea, scrierea i nchiderea unui fiier sunt generate de
apeluri de sistem
Majoritatea SO folosesc conceptul de director (directory) pentru gruparea
fiierelor.
Intrrile dintr-un director pot fi fiiere sau alte directoare.
Acest model dnatere unei ierarhii: sistemul de fiiere
Ierarhiile de procese nu sunt foarte adnci (n general mai puin de 3
niveluri). Spre deosebire de acestea, ierarhiile de fiiere sunt mult mai
adnci

3.1. Identificarea fiierelor

Fiecare fiier dintr-o ierarhie poate fi identificat prin atribuirea unui nume de cale
(path name)
Calea absolut ctre un fiier constdintr-o lista de cataloage care trebuie
parcurse pornind de la
catalogul rdcin, care este precedatde separatorul /. Componentele cii
sunt separate de / n UNIX i \ n MS-DOS i Windows
n fiecare moment un proces are un director de lucru curent n care caut
numele de cale care un ncep cu /(ci relative)
Pentru a trata dispozitivele de memorie externcare pot fi mutate, n UNIX
sistemul de fiiere de pe acestea poate fi adugat la arborele principal ntr-
un director. Pentru aceasta se folosete apelul de sistem mount

3.2. Drepturi la nivel de fiier

naintea citirii sau scrierii unui fiier, acesta trebuie deschis, moment n care sunt
verificate drepturile de acces.
Dac accesul este permis, SO ntoarce un numr ntreg mic, numit
descriptor de fiier.
Dacaccesul este interzis, SO ntoarce un cod de eroare.

3.3. Fiiere speciale

n UNIX, un concept legat de fiiere este cel de fiier special. Un fiier special
face ca dispozitivele de I/E s fie prezentate utilizatorului sub formde fiiere.
Astfel, pentru lucrul cu un dispozitiv de I/E se folosesc acelai apeluri de sistem ca
i pentru lucrul cu fiiere.
Fiierele speciale sunt pstrate n directorul /dev
Fiierele speciale se mpart n doucategorii
Fiiere orientate pe bloc (pentru discuri)
Fiiere orientate pe caracter (pentru imprimant, modem, etc)

3.4. Fiiere legtur (pipe)

O conduct(pipe) este un pseudo-fiier care poate fi folosit pentru conectarea a
dou procese.


Procesul A, pentru a trimite date procesului B, scrie n pipe ca ntr-un fiier
de ieire.
Procesul B, pentru a primi datele, citete din pipe ca dintr-un fiier de
intrare