Sunteți pe pagina 1din 59

UNIVERSITATEA TITU MAIORESCU

Facultatea de INFORMATIC

Lect. univ. dr. ing.

MARINELA NIDELEA

ANUL 1
- semestrul I Curs pentru nvmntul la distan

BUCURETI 2013

Capitolul 1. Introducere n domeniul sistemelor de operare


Obiective:
Clasificarea sistemelor de operare;
Sarcinile sistemului de operare;
Familiarizarea cu componentele sistemelor de operare;
Structura sistemelor de operare;
S se ruleze comparativ comenzi de baz pentru lucrul cu fiiere i directoare
n Windows/Linux.
S se prezinte n mod comparativ diferenele i asemnrile Linux-Windows.
Instalare Linux.
Partiionare Windows/Linux.
Organizarea sistemului de fiiere Windows/Linux.
Utilizatori Windows/Linux. Stabilirea i modificarea drepturilor.

Definitie: Un sistem de operare reprezinta un ansamblu de proceduri manuale si de


module program cu ajutorul carora se gestioneaza resursele sitemului de calcul si
se realizeaza o interfata intre masina fizica si utilizator.
Prin intermediul apelurilor sistem, un program utilizator poate crea, utiliza i terge
diverse obiecte gestionate de sistemul de operare.
1.1. Clasificarea sistemelor de operare.
Sistemele de operare se pot clasifica dupa mai multe tipuri, in functie de anumite
criterii. O prima clasificare se face dupa:
a) Modul de introducere a programelor n sistem
Din acest punct de vedere sistemele de operare pot fi:
-SO seriale, n care se accept introducerea lucrrilor de la un singur
dispozitiv de intrare;
-SO paralele, n care introducerea lucrrilor se face de la mai multe
dispozitive de intrare;
-SO cu introducerea lucrrilor la distan.
Exp: sistemele UNIX i WINDOWS sunt paralele i cu introducere la distan,
sistemul MS-DOS este serial.
b) Modul de planificare a lucrrilor pentru execuie
2

- SO orientate pe lucrri, care admit ca unitate de planificare lucrarea, alctuit


din unul sau mai multe programe succesive ale aceluiai utilizator;
- SO orientate pe proces, care admit ca unitate de planificare procesul.
- SO moderne sunt orientate pe proces.
c) Numrul de programe prezente simultan n memorie
-SO cu monoprogramare (cu un singur program n memoria principal la un
moment dat);
-SO cu multiprogramare (cu mai multe programe existente, la un moment dat, n
memoria principal).
Exp: sistemele UNIX i WINDOWS sunt cu multiprogramare. Sistemul MS-DOS
este ceva ntre monoprogramare i multiprogramare.
d) Gradul de comunicare a proceselor n multiprogramare
Sistemele de operare cu multiprogramare pot fi:
-SO monotasking, n care programele existente n memorie nu comunic i nu-i
pot sincroniza activitile;
- SO multitasking, n care programele existente n memorie au un obiectiv comun
i i sincronizeaz activitile.
Exp: UNIX i WINDOWS sunt multitasking, MS-DOS este un hibrid.
e) Numrul de utilizatori simultani ai SO
- SO monouser ( cu un singur utilizator) ;
- SO multiuser (cu mai muli utilizatori),
Exp : UNIX i WINDOWS sunt multiuser, MS-DOS este monouser.
f) Modul de utilizare a resurselor
-SO cu resurse alocate (resursele alocate proceselor sunt alocate acestora pe toat
desfurarea execuiei);
-SO n timp real (permit controlul executrii proceselor n interiorul unui interval
de timp specificat);
SO n timp real sunt utilizate pentru conducerea direct, interactiv, a unui proces
tehnologic sau a altei aplicaii. Procesul va transmite ctre SO n timp real
parametrii procesului iar SO va transmite ctre proces deciziile luate.
-SO cu resurse partajate (resursele necesare proceselor sunt afectate acestora
periodic, pe durata unor cuante de timp).
Dac resursa partajat este timpul unitii centrale, SO devine partajat.
g) Dupa modul in care se face accesul la resursele sistemului clasificarea
sistemelor de operare este urmatoarea:
3

- accesul direct (caz particular SO n timp real, cnd se cere o valoare


partajabil maxim a timpului de rspuns) ;
- accesul multiplu (acces la resursele sistemului pentru un mare numr de
utilizatori) ;
- time sharing (alocarea timpului se face pe o cuant de timp) ;
- la distan (prelucrarea se face asupra unor date distribuite i dispersate
geografic).
h) Dup structura lor, sistemele de operare se clasific n :
-SO modulare , formate din entiti cu roluri bine definite ;
-SO ierarhizate, n care o entitate poate folosi componente de nivel inferior
(de exemplu, partea de serviciu poate folosi partea de control);
-SO portabile, pentru care efortul de a trece SO de pe un calculator pe altul
este mic, mai mic dect cel de a-l rescrie .
Sistemele UNIX i WINDOWS sunt portabile. Cele mai vechi, de exemplu
RSX, nu erau portabile.
1.2. Sarcinile sistemului de operare
In functie de modul in care se realizeaza comunicarea cu utilizatorul se pot intalni
trei tipuri de sisteme :
- Monitoare,
- Interfee n linie de comand (interfee text),
- Interfee grafice.
Monitoare
Un program numit monitor, stocat ntr-o memorie ROM intern, care se lanseaz
automat la pornirea calculatorului i i permite operatorului s efectueze operaii
simple asupra sistemului de calcul, cum ar fi: inspectarea i modificarea registrelor
procesorului, vizualizarea coninutului memoriei etc. De obicei, monitorul este un
complementar al SO, n sensul c pornete cnd nu a putut fi ncrcat SO.
Interfee n linie de comand (interfee text)
Interfeele n linie de comand sunt reprezentate cu interpretorul de comenzi, care
afieaz pe ecran un prompter, primete comanda introdus de operator i o
execut.
Interfata grafica
Utilizatorul comunica cu sistemul de calcul prin intermediul unor dispozitive
grafice: ferestre de dialog, meniuri, cu funcii bine precizate.
4

1.3. Componentele sistemelor de operare


Majoritatea sistemelor de operare, pentru a rspunde rolului de interfa cu
utilizatorii, sunt organizate pe dou niveluri:
- nivelul fizic, care este mai apropiat de partea hardware a sistemului de
calcul, interfernd cu aceasta printr-un sistem de ntreruperi;
- nivelul logic, care este mai apropiat de utilizator, interfernd cu acesta prin
intermediul unor comenzi, limbaje de programare, utilitare etc.
Potrivit acestor dou niveluri, sistemele de operare cuprind n principal dou
categorii de programe:
- programe de control i comand, cu rolul de coordonare i control al tuturor
funciilor sistemelor de operare, cum ar fi procese de intrare ieire, execuia
ntreruperilor, comunicaia hardware-utilizator.
- programe de servicii (prelucrri), care sunt executate sub supravegherea
programelor de comand i control, fiind utilizate de programator pentru
dezvoltarea programelor sale de aplicaie.
In general, putem considera c un SO este format din dou pri: partea de control
(gestiunea resurselor) i partea de serviciu.
- Partea de serviciu
Partea de serviciu conine instrumente de lucru aflate la dispoziia utilizatorului.
Partea de serviciu cuprinde soft aplicativ. Dup destinaia lor, serviciile pot fi de :
-birotic ;
-baze de date ;
-dezvoltare de aplicaii/programe ;
-reele de calculatoare ;
-produse soft pentru prelucrarea informaiilor din diverse domenii.

1.4. Structura sistemelor de operare


n sistemele de operare apar, n general, dou aspecte structurale:
-kernel (nucleu);
-user (utilizator).
Nucleul (kernel) are urmtoarele principale funcii:
- asigurarea unui mecanism pentru crearea i distrugerea proceselor;
- realizarea gestionrii proceselor, procesoarelor, memoriei i perifericelor;
- furnizarea unor instrumente pentru mecanismele de sincronizare a proceselor;
- furnizarea unor instrumente de comunicaie care s permit proceselor s i
transmit informaii.
Teste de autocontrol
1. Care sunt criteriile conform carora se poate face o clasificarea a sistemelor de
operare?
2. Ce sarcini indeplineste un sistem de operare?
3. Care sunt componentele unui sistem de operare?
4. Care este structura unui sistem de operare?
5. Sa se prezinte o clasificare a sistemelor de operare data de numarul de
utilizatori, de tipul interfetei si numarul de programe rezidente in memoria
interna a calculatorului.
6. S se ruleze comparativ comenzi de baz pentru lucrul cu fiiere i
directoare n Windows/Linux.
7. S se prezinte n mod comparativ diferenele i asemnrile LinuxWindows.
8. Instalare Linux.
9. Partiionare Windows/Linux.
10. Organizarea sistemului de fiiere Windows/Linux.
11. Utilizatori Windows/Linux. Stabilirea i modificarea drepturilor.

Capitol 2. Gestiunea proceselor si procesoarelor


Obiective:
Gestiunea proceselor. Starile unui proces;
Algoritmi de planificare;
Controlul execuiei proceselor concurente;
Sincronizarea execuiei proceselor;
Modificarea prioritii n Linux;
Rularea unui proces in background;
Vizualizarea proceselor din sistem;
Aciuni efectuate asupra proceselor.
Criterii de performan a planificrii UC
Functia de baza a unui sistem de operare este sa gestioneze resursele sistemului de
calcul. Cea mai importanta resursa aflata in administrarea acestuia este resursa
procesor. Modul in care se realizeaza acest lucru de catre sistemul de operare va fi
prezentat in cele ce urmeaza:
2.1. Gestiunea proceselor.
Pentru utilizarea eficient a resurselor sistemului de calcul, unele sisteme de
operare pot gestiona execuia concurent a mai multor procese, asigurnd
proceselor din sistem accesul concurent la resursele sistemului sau partajarea
resurselor. Aceasta nseamn c, la un moment dat, n sistem se pot afla n
execuie mai multe procese care concureaz ntre ele pentru accesul la resursele
sistemului iar sistemul de operare gestioneaz resursele sistemului pentru
satisfacerea ct mai multor cereri ale acestor procese pentru alocarea de resurse.
Gestiunea procesorului este privit ca o parte component a gestionrii proceselor.
Pentru a-i ndeplini sarcinile, procesele au nevoie de resurse, cum ar fi: timpul de
lucru al UC (unitatea central), memorii, fiiere, dispozitive I/O. Apare evident
necesitatea ca resursele s fie utilizate n comun.
Un proces poate fi ntrerupt n timpul execuiei sale, ntre etapele acestei execuii.
Este posibil ca n sistem s coexiste la un moment dat mai multe procese n
7

execuie, solicitnd accesul concurent la resursele sistemului.

Un proces se caracterizeaz prin:


- prelucrrile pe care le determin, n funcie de setul de instruciuni (procedura)
care se execut,
- contextul n care se execut i asupra cruia acioneaz, determinat de
resursele care i sunt alocate n fiecare moment, pe durata execuiei sale.
Un proces se desfoar n timp, ntre:
iniierea (generarea) si distrugerea (ncheierea) - adic scoaterea procesului din
evidena componentei de gestionare a proceselor i eliberarea memoriei interne
alocate procesului.
Strile unui proces
Strile prin care poate s treac un proces sunt:
- nelansat n execuie, atunci cnd procesul a fost generat dar nu a fost onorat
nc cererea de lansare n execuie a sa;
- pregtit pentru activare (READY) sau proces ntrerupt; aceast stare poate s
apar n dou cazuri:
cnd cererea de lansare n execuie a procesului a fost onorat, procesul a
fost ncrcat n memoria intern i este pregtit pentru activare,
cnd un proces n execuie a fost ntrerupt i ateapt activarea sa, adic
reluarea execuiei sale din punctul n care a fost ntrerupt; parametrii care
descriu procesul n momentul ntreruperii sale sunt memorai n vectorul de
stare al procesului, pentru a permite continuarea acestuia n momentul
relurii sale;
- activ (RUN), cnd procesul are alocat procesorul i sunt n curs de desfurare
prelucrrile aferente procesului;
- suspendat (blocat) sau proces
- n ateptare (WAIT), n cazul n care execuia procesului a fost ntrerupt,
procesul este dezactivat, n ateptarea realizrii unui eveniment, de exemplu,
eliberarea unei resurse solicitate;
8

- starea de proces complet, cnd procesul a fost complet executat i urmeaz


dezalocarea resurselor afectate procesului i distrugerea procesului.
Aciunile care determin comutarea ntre dou stri ale unui proces sunt:
- iniierea procesului, genereaz cererea de lansare n execuie a procesului;
procesul este n starea de proces nelansat n execuie
- lansarea n execuie a procesului determin trecerea lui din starea de proces
nelansat n execuie n starea de proces pregtit pentru activare (READY)
- activarea procesului determin trecerea lui din starea de proces pregtit pentru
activare n starea de proces activ (RUN)
- dezactivarea procesului determin revenirea lui din starea de proces activ n
starea de proces ntrerupt (READY - pregtit pentru activare)
- blocarea procesului activ determin trecerea lui n starea de proces n ateptare
(WAIT)
- deblocarea procesului determin trecerea lui din starea de proces blocat n starea
de proces pregtit pentru activare (READY)
- completarea procesului determin trecerea lui din starea de proces activ n starea
de proces complet.
- distrugerea procesului complet determin nlturarea lui din sistem.
Dezactivarea unui proces (trecerea din RUN n READY) este proprie numai pentru
exploatarea n time-sharing i n timp real, caz n care comutarea ntre procesele
active se poate face la iniiativa sistemului de operare, prin dezactivarea procesului
activ n favoarea altuia; starea WAIT nu este proprie exploatrii n
monoprogramare unde, la un moment dat, n sistem se execut o singur lucrare,
creia i sunt alocate toate resursele.

Planificarea proceselor
n sistemele de operare care permit executarea concurent a mai multor lucrri, o
lucrare nou introdus n sistem, pentru execuie, este tratat de o component a SO
numit planificatorul de lucrri (job scheduler). Sarcinile planificatorului de
lucrri sunt:

evidena tuturor lucrrilor din sistem i a strii lor

determinarea ordinii n care lucrrile intrate n sistem vor fi lansate n


execuie, conform unui algoritm ce pornete, de regul, de la prioritile de
execuie ale lucrrilor i de la resursele solicitate de lucrri
lansarea n execuie a lucrrii: n momentul pregtirii unei lucrri, n vederea
lansrii ei n execuie, planificatorul creaz unul sau mai multe procese,
pentru aceast lucrare, stabilind i modul de comunicare ntre procese
alocarea resurselor necesare lucrrii
dezalocarea resurselor, cnd lucrarea a fost executat sau cnd ele nu mai
sunt necesare
distrugerea proceselor complete.

n timpul execuiei lucrrilor, gestionarea execuiei proceselor n sistem este


realizat de componenta SO numit planificatorul de procese (process scheduler);
el decide care proces va dispune de procesor, cnd i pentru ct timp. Funciile
acestui modul sunt:

evidena tuturor proceselor din sistem i a strii lor, prin intermediul


componentei numit controlor de trafic (traffic controller)
stabilirea procesului cruia i se aloc procesorul i, eventual, a timpului de
alocare, funcie realizat de componenta planificator al procesorului
(processor scheduller)
alocarea procesorului la proces, prin actualizarea regitrilor procesorului cu
informaiile privind starea curent a procesului, funcie realizat de
controlorul de trafic
dezalocarea procesorului, funcie care presupune salvarea coninutului
regitrilor de stare ai procesorului, n vederea relurii ulterioare a procesului;
operaia este realizat de controlorul de trafic. (Dezalocarea procesorului are
loc atunci cnd expir timpul afectat procesului i are loc dezactivarea
procesului, care trece n starea READY, sau cnd a fost solicitat o resurs
care nu este disponibil i procesul este blocat, intrnd n starea WAIT.
Dezalocarea procesorului se face fr memorarea strii procesului n cazul n
care procesul intr n starea de proces complet, caz n care el urmeaz s fie
distrus. )

n cazul exploatrii n monoprogramare a sistemului de calcul, noiunea de lucrare


i proces se confund iar funcia SO de gestionare a proceselor se simplific; n
celelalte moduri de exploatare a sistemelor de calcul, problema planificrii i
sincronizrii proceselor este foarte complex; activitatea planificatorului de
procese este precedat i determinat de activitatea planificatorului de lucrri.

10

Modul de funcionare al planificatorului de procese poate fi descris astfel: la


anumite momente de timp, determinate de modalitatea de intervenie, se
evalueaz funcia de prioritate, pentru fiecare proces i, pe baza rezultatului
obinut, se aloc procesorul unui proces; n cazul n care mai multe procese au
aceeai prioritate, se aplic o regul de arbitraj, care determin care dintre
procese este tratat primul.
Fiecare dintre operaiile executate de componentele SO pentru gestionarea
proceselor se bazeaz pe algoritmi care trebuie s ndeplineasc urmtoarele
condiii:

s realizeze criteriile de performan ale sistemului de calcul


s aib timpi de execuie foarte mici i un consum redus de resurse sistem.

Modalitatea de intervenie a planificatorului de procese definete momentele


cnd acesta intr n lucru:

la momente determinate de proces, de exemplu la gestionarea proceselor n


multiprogramare, cu ajutorul sistemului de ntreruperi
la momente determinate de SO, de exemplu la gestionarea execuiilor n
mod time-sharing.

Funcia de prioritate a planificatorului de procese determin prioritatea de


activare a proceselor. Ea poate lua n calcul, pentru determinarea valorii prioritii
fiecrui proces:

cererea real de resurse, ca n cazul exploatrii n multiprogramare


cererea estimat de timp pentru execuie, ca la sistemele exploatate n timp
real
timpul petrecut n sistem, ca n cazul sistemelor exploatate n timp real
prioriti prestabilite, cum este cazul exploatrii n multiprogramare, etc.

Exist dou modaliti de stabilire a prioritilor:

prioritile sunt definite, pentru o lucrare, la intrarea ei n sistem i nu pot fi


modificate pe durata execuiei lucrrii; aceast metod dezavantajeaz
lucrrile cu prioritate mic, care pot nregistra timpi foarte mari de ateptare
n sistem, n momentul n care, concomitent cu ea, intr multe lucrri cu
prioritate mai mare;

11

prioritile sunt calculate de SO dup reguli proprii i sunt ataate dinamic


proceselor n execuie; metoda este folosit la sistemele de calcul exploatate
n time-sharing sau n timp real.

Exemple de algoritmi pentru calculul dinamic al prioritii:

lucrarea cea mai veche n sistem va fi executat prima; acest algoritm duce
la scderea timpului maxim de ateptare n sistem a unei lucrri;
n sistemul de operare UNIX, la un interval fix, de 1 secund, se
recalculeaz prioritile, pentru fiecare proces n execuie, ca raport dintre
timpul afectat de procesor procesului (timpul de RUN) i timpul total
petrecut de proces n memorie (timpul de proces n execuie); n continuare,
se activeaz procesele n ordinea cresctoare a acestui raport; aplicarea
acestui algoritm duce la scderea timpului mediu de rspuns al sistemului.

Regula de arbitraj stabilete ordinea de servire n cazul prioritilor egale; aceast


regul este definit de un algoritm de planificare a proceselor.
Obiectivele urmrite n activitatea de planificare a proceselor sunt:

minimizarea duratei de execuie a lucrrilor, prin minimizarea timpului de


ateptare n sistem
asigurarea unei rate optime de servire a tuturor lucrrilor din sistem
implementarea unor criterii de prioritate pentru procesele din sistem
maximizarea factorului de utilizare a resurselor sistemului.

2.2. Algoritmi de planificare


2.2.1. Algoritmul FCFS (First Come First Served)

irul READY este de tip FIFO (First Inpout First Output= Primul Intrat
Primul Ieit).
Dezavantaje : Durata medie de ateptare-DMA nu este minimal i poate varia n
limite foarte largi n funcie de caracteristicile procesului. n plus DMA depinde de
ordinea proceselor.

12

2.2.2. Algoritmul SJF (Shortest Job First)

Se execut mai nti cel mai scurt job. La egalitate, se aplic regula FCFS (First
Come First Served).
Dac se cunosc cu precizie ciclurile UC (ca timp), SJF este optimal. Problema
principal este cunoaterea duratei ciclului UC.
2.2.3. Algoritmi bazai pe prioritate

n cadrul unui astfel de algoritm, fiecrui proces i se asociaz o prioritate, UC


fiind alocat procesului cu cea mai mare prioritate din irul READY. Se poate
defini o prioritate intern i o prioritate extern.
Prioritatea intern se calculeaz pe baza unei entiti msurabile :
-limita de timp ;
-necesarul de memorie ;
-numrul fiierelor deschise ;
-raportul dintre numrul de cicluri rafal I/O i numrul de
cicluri rafal UC.
Pentru prioritatea extern, criteriile folosite sunt din afara sistemului de
operare :
-departamentul care sponsorizeaz lucrrile ;
-factori politici ;
-factori financiari.
Principala problem a algoritmilor bazai pe prioriti este posibilitatea
blocrii la infinit ( a nfometrii) proceselor care sunt gata de execuie, dar
deoarece au prioritate redus, nu reuesc s obin accesul la UC. O astfel de
situaie poate s apar ntr-un sistem cu ncrcare mare, n care se execut un
numr considerabil de procese cu prioritate ridicat ; acestea vor obine accesul la
UC n detrimentul proceselor cu prioritate redus care pot s nu fie executate
niciodat. O soluie a acestei probleme este mbtrnirea proceselor, o tehnic
prin care se mrete treptat prioritatea proceselor remanente timp ndelungat n
sistem.
2.2.4. Algoritmi preemptivi

Un algoritm preemptiv permite ntreruperea execuiei unui proces n


momentul cnd n irul READY apare un alt proces cu drept prioritar de execuie.

13

Dintre algoritmii prezentai anterior :


-FCFS este prin definiie nepreemptiv ;
-SJF poate fi realizat preemptiv; dac n irul READY sosete un proces al
crui ciclu rafal UC urmtor este mai scurt dect ce a mai rmas de executat din
ciclul curent, se ntrerupe execuia ciclului curent i se aloc UC noului proces;
-algoritmii bazai pe prioritate, de asemenea, pot fi realizai preemptiv ; la fel
ca la SJF, timpul rmas poate fi nlocuit cu mrimea prioritii.
2.2.5. Algoritmul Round-Robin

Este un algoritm de tip time-sharing. Fiecrui proces i se aloc numai o cuant de


timp (10ms 100ms) iar irul READY se trateaz ca FIFO circular.
Planificatorul aloc UC fiecrui proces pe durata a cel mult o cuant ; dac durata
procesului este mai mic dect aceast cuant, procesul elibereaz UC prin
comunicarea ncheierii execuiei ;
Mrime cuantei afecteaz performanele algoritmului Round-Robin ; dac cuanta
este foarte mare, comportarea este asemntoare FCFS ; dac cuanta este foarte
mic, frecvena comutrii se mrete foarte mult i performanele scad deoarece se
consum mult timp pentru salvare/restaurare registre ;
Se poate spune c algoritmul Round-Robin este un algoritm preemptiv care asigur
un timp aproape egal de ateptare pentru toate procesele din sistem.
2.2.6. Ali algoritmi de planificare

Exist unii algoritmi cu iruri de procese multinivel. irul READY este format din
mai multe subiruri. Fiecare susbir are propriul algoritm de planificare. n schema
de planificare apar iruri READY multiple :
P1 P2..Pn

UC

P1 P2..Pn

P1(n) P2 (n)Pn(n)
(
..P

14

2.3. Controlul execuiei proceselor concurente


Atunci cnd exist n sistem mai multe procese care, pentru un interval de timp, se
afl simultan n execuie, se spune c aceste procese sunt executate n paralel.
Pentru aceste procese, timpul total de execuie al fiecruia cuprinde perioade
comune tuturor. n cazul existenei mai multor procesoare, paralelismul execuiilor
poate fi efectiv, n sensul c fiecare proces poate fi executat de un alt procesor; n
cazul unui singur procesor, procesele executate n paralel se execut, de fapt, pe
rnd prin alternarea strii RUN cu strile READY sau WAIT.
Procesele paralele sunt acele procese care pot fi executate n paralel; aceste
procese nu se intercondiioneaz reciproc, n timpul execuiei, i nu colaboreaz
ntre ele (sunt procesele care utilizeaz seturi de resurse disjuncte ale sistemului i
nu este necesar s comunice ntre ele).
n cazul programrii execuiei proceselor paralele, sistemul de operare trebuie s
asigure funciile obinuite de gestionare a proceselor: evidena proceselor din
sistem, planificarea, alocarea i dezalocarea resurselor.
Procesele concurente sunt acele procese care se pot intercondiiona reciproc n
timpul execuiei n paralel, de exemplu prin folosirea n comun a unor resurse.
Pentru procesele concurente executate n paralel pot exista momente cnd execuia
unui proces este dependent de execuia altui proces sau de rezultatele execuiei n
curs de desfurare a altui proces.
De exemplu, considerm dou procese care au acces n actualizare la acelai fiier,
de exemplu fiierul cu locurile la un tren, care se actualizeaz printr-un program de
rezervare automat a locurilor; dac acest program este lansat concomitent pentru
dou execuii, se poate ntmpla ca, la un moment dat, s se fac rezervarea
simultan a unui loc de ctre ambele programe; evident, n acest caz, una dintre
rezervri este eronat, deci apariia unor astfel de situaii trebuie prevenit.
Secvena de program care realizeaz rezervarea unui loc, n exemplul nostru, se
numete seciune critic iar nregistrarea din fiier care se refer la locul rezervat se
numete resurs critic.
Se definete seciunea critic drept o secven de program care nu trebuie s fie
executat simultan de procese concurente; resursa critic este resursa care nu
poate fi accesat simultan de procese concurente.

15

n cazul programrii execuiei proceselor concurente trebuie avute n vedere


urmtoarele principii pentru tratarea seciunii critice:
1. La un moment dat, un singur proces trebuie s poat executa o seciune
critic; orice alt proces care solicit executarea seciunii critice va primi
permisiunea de a o executa numai dup ncheierea execuiei ei de ctre
procesul n curs; n exemplul nostru, dac programul de rezervare a locurilor
se lanseaz de la dou staii care fac parte dintr-o reea de calculatoare,
atunci sistemul de gestionare a reelei poate bloca accesul n scriere a tuturor
proceselor la fiier sau la o nregistrare a fiierului, atta vreme ct
nregistrarea a fost accesat n regim de actualizare de un proces activ;
accesul la nregistrare este deblocat atunci cnd se ncheie actualizarea ei de
ctre procesul care a provocat blocarea.
2. Durata execuiei seciunii critice a proceselor concurente este necunoscut
aprioric (nu se tie ct va dura execuia n curs); pe de alt parte, nici un
proces nu trebuie s atepte nedefinit de mult pentru a intra n seciunea
critic. Rezult a doua regul pentru execuia proceselor concurente: oprirea
unui proces, prin dezactivare sau blocare, poate avea loc numai n afara
seciunii critice, adic seciunea critic este neinteruptibil.
2.4. Controlul alocrii resurselor la procese concurente
Resursele existente ntr-un sistem pot fi alocate proceselor n mai multe moduri, n
funcie de tehnica de exploatare a sistemului folosit:

prin alocarea tuturor resurselor la un singur proces, pe toat durata execuiei


sale, ca n cazul monoprogramrii
prin alocarea n comun a resurselor, la mai multe procese n execuie,
oferind fiecrui proces cte un segment de timp pentru utilizarea resursei,
segmente de timp egale pentru toate procesele sau diferite ntre ele, alocare
numit multiplexarea resurselor, ca n cazul exploatrii n time-sharing
prin partajarea resurselor, ca n multiprogramare, adic alocnd o resurs
solicitat de proces n msura disponibilitii sale i elibernd-o numai dup
utilizarea ei complet
permind accesul concurent la resurse, cu concursul sistemului de
ntreruperi, ca n cazul exploatrii n timp real, pentru alocarea rapid a
resurselor solicitate i eliberarea rapid a celor care nu mai sunt utilizate.

Sistemul de reguli dup care este luat decizia de alocare a resurselor la un proces
se numete algoritm de alocare; acesta trebuie s aib n vedere att utilizarea

16

eficient a resurselor sistemului ct i reducerea timpului de rspuns al sistemului


la solicitrile proceselor.
Problema impasului este o problem legat de alocarea n comun a unor resurse
la mai multe procese concurente; ea poate aprea ntre procese a cror execuie este
condiionat de utilizarea exclusiv a acelorai resurse.
S considerm exemplul a dou procese care folosesc aceleai dou fiiere. Avem
n vedere faptul c, pentru a fi actualizat, un fiier trebuie deschis pentru acces
exclusiv. Dac primul proces trebuie s deschid, pentru actualizare, dou fiiere
F1 i F2 iar al doilea proces trebuie s utilizeze, tot n regim exclusiv, fiierele F2
i F1, poate aprea situaia n care, n fiecare proces, a fost deschis exclusiv primul
fiier i se ateapt s poat fi deschis exclusiv i al doilea fiier. n acest caz, apare
o ateptare circular a celor dou procese, pentru eliberarea resursei solicitate, care
este alocat exclusiv celuilalt proces. Aceast ateptare circular poart numele de
impas; ea poate dura un timp nedefinit de lung i nu poate fi ntrerupt din
interiorul proceselor, dac acestea nu au prevzut o procedur de excepie, care s
se execute n cazul n care o cerere a procesului nu poate fi satisfcut.
Impasul (interblocarea proceselor) este o stare grav care poate duce la un blocaj n
funcionarea sistemului de calcul i care trebuie avut n vedere i prevenit de
ctre sistemul de operare.
Condiiile de apariie a impasului sunt:

exist un lan de procese n care fiecare dintre ele ateapt eliberarea unei
resurse utilizate de alt proces din lan (condiia de cerere de alocare
circular)
procesele solicit controlul exclusiv al resurselor pe care le utilizeaz
(condiia de excludere mutual a proceselor)
procesele pstreaz resursele alocate deja, atunci cnd ateapt alocarea altor
resurse (condiia de ateptare a alocrii resurselor)
resursele nu sunt eliberate de procesele la care au fost alocate pn nu au
fost utilizate complet (condiia de nepreempie).

Exist mai multe metode de prevenire a impasului:

metoda prealocrii resurselor: procesul trebuie s cear toate resursele


necesare cnd solicit ncrcarea n sistem; cu metode de detecie a
impasului, sistemul verific dac exist riscul apariiei unui impas; dac nu,
procesul este ncrcat, n cazul n care toate resursele solicitate sunt
17

disponibile; dac nu sunt disponibile toate resursele solicitate, procesul


ateapt ndeplinirea condiiilor de mai sus;
metoda alocrii controlate a resurselor: procesele trebuie s declare de la
nceput toate resursele care le sunt necesare; procesele sunt lansate n
execuie, chiar dac nu sunt disponibile toate resursele; alocarea resurselor
se face controlat, urmrindu-se evitarea impasului; n cazul n care apariia
impasului este iminent n momentul alocrii unei noi resurse, se blocheaz
procesul care a solicitat resursa pn cnd se depete iminena impasului.

Detectarea apariiei unui impas este prima problem la care trebuie s rspund un
sistem de operare care nu are implementat un mecanism de prevenire a impasului.
Este de dorit ca, odat cu detectarea unui impas, s se identifice i procesul care a
produs impasul.
Ieirea din impas se face, de regul, destructiv, prin una din metodele urmtoare:

se reseteaz sistemul de calcul, fapt care duce la ntreruperea forat a tuturor


proceselor din sistem; aceasta este metoda cea mai radical, prin aplicarea
creia se pierd rezultatele intermediare ale tuturor proceselor n execuie din
sistem
se alege un proces prin a crui distrugere se nltur impasul i se distruge
acest proces, n cazul n care sistemul de operare dispune de modaliti de
detectare a procesului care a generat impasul; n acest caz, se pierd numai
rezultatele intermediare ale execuiei procesului care se distruge
dac procesul care va fi distrus este prevzut cu puncte de reluare, atunci el
va putea fi reluat din punctul cel mai apropiat de stadiul curent al execuiei
sale. Un punct de reluare este o imagine a stadiului execuiei procesului, la
un moment dat. Crearea punctelor de reluare pentru procesele din sistem
implic operaii suplimentare, inclusiv n proiectarea programului care se
execut, i consum suplimentar de resurse.

Facem observaia c dezactivarea i reluarea executrii unui proces, generat sub


controlul sistemului de ntreruperi, se deosebete de utilizarea punctelor de reluare
a unui proces care va fi distrus i apoi relansat n execuie. n cazul ntreruperii,
procesul trece din starea RUN n starea READY, din care poate fi reactivat
ulterior, n acelai context de lucru; n cazul utilizrii punctelor de reluare, se
distruge procesul i, practic, se lanseaz n execuie un alt proces care trebuie s
continue procesul distrus, ncepnd de la punctul de reluare.

18

2.5. Sincronizarea execuiei proceselor


Sincronizarea proceselor este necesar n activitatea de gestionare a proceselor, n
cazul n care execuia anumitor procese trebuie blocat, pn la producerea unor
evenimente generate de alte procese. Problema sincronizrii poate s apar:

n legtur cu utilizarea n comun a resurselor ntre procese concurente,


pentru alocarea automat a resurselor
n cazul proceselor concurente n care execuia unui proces este condiionat
de rezultatul execuiei altui proces
n cazul comunicrii ntre procese, n scopul realizrii unei comunicri
corecte.

Sincronizarea proceselor reprezint nlnuirea automat a strilor unor procese


concurente, prin blocarea i deblocarea automat a proceselor n execuie.
Mecanisme de sincronizare a proceselor:
a. Mecanismele de sincronizare pentru partajarea resurselor ntre procese
concurente i propun gestionarea operaiei de alocare a unei resurse la
procese, astfel nct, la eliberarea resursei, procesul care a solicitat resursa s
fie trecut automat din starea WAIT n starea READY, n vederea alocrii
resursei solicitate.
Fiecrei resurse i poate fi asociat cte un bit indicator al strii de ocupare a
resursei (lock-bit). Mecanismul de utilizare a biilor indicatori este urmtorul:

prin convenie, bitul indicator este setat pe 0, dac resursa este disponibil,
respectiv pe 1, dac resursa este alocat altui proces;
nainte de a aloca o resurs unui proces, se verific starea lock-bit -ului:
dac valoarea este 0, procesul are acces la resurs i se seteaz bitul pe 1,
pn la ncheierea utilizrii resursei de ctre proces, cnd bitul se reseteaz
pe 0 i resursa devine disponibil;
n cazul n care bitul este 1, procesul rmne n ateptare, sistemul executnd
verificarea periodic a lock-bit -ului, pn cnd acesta devine 0 i procesului
i se poate aloca resursa.

Inconvenientul acestei metode const n faptul c, dei procesul este n starea


WAIT, procesorul este afectat procesului pentru testarea valorii din lock-bit
(procesorul execut n mod repetat o aceeai instruciune de testare a strii bitului
19

indicator); ar fi preferabil ca, pe timpul ct procesul ateapt, procesorul s fie


eliberat, pentru a putea executa alte sarcini, pentru alte procese din sistem.
Inconvenientul metodei prin utilizarea biilor indicatori poate fi depit prin
crearea unei liste cu toate procesele n ateptare pentru o resurs; introducerea i
extragerea proceselor din list poate fi gestionat automat, cu ajutorul unui bit
semafor s, gestionat de funciile pereche pentru alocare A() i pentru dezalocare
D(). Modul de funcionare al acestui mecanism este urmtorul:

pentru fiecare resurs partajat din sistem exist un bit semafor s i o list a
proceselor n ateptare, pentru alocarea resursei
bitul semafor s este setat iniial la valoarea 1
funcia de alocare asociat resursei este executat cnd un proces solicit
alocarea resursei; funcia decrementeaz bitul s i aloc resursa procesului
numai dac valoarea bitului s este 0; n caz contrar, procesul este trecut n
coada de ateptare
funcia de dezalocare asociat resursei este executat cnd un proces
elibereaz resursa; funcia incrementeaz bitul s i scoate din coad primul
proces cruia i aloc resursa numai dac valoarea bitului s este negativ sau
0; n caz contrar, bitul s are valoarea 1, deci coada de ateptare este goal.

n cadrul acestui algoritm se observ faptul c variabila semafor este resurs critic
pentru funciile de alocare i de dezalocare iar cele dou funcii sunt seciuni critice
pentru procese; n consecin, execuia celor dou funcii nu trebuie blocat i
asupra variabilei semafor nu trebuie s acioneze, la un moment dat, dect una
dintre aceste funcii.
Mecanismele de sincronizare direct, prin comunicarea ntre procese, utilizate
pentru procese concurente, pentru care execuia unui proces este condiionat de
rezultatul execuiei altor procese, sau pentru procese care fac schimb de informaii:
1. Cu ajutorul unor funcii primitive ale sistemului de operare, care permit
deblocarea unui proces care a intrat n starea de ateptare, cu funcii de tipul
WAIT() pentru un eveniment, de ctre un alt proces, care execut o funcie
de setare a indicatorului de eveniment respectiv. Concomitent, se poate
realiza i schimbul de date ntre cele dou procese, utiliznd directive ale
sistemului de operare de tipul SEND(proces destinatar,adresa mesaj) i
RECEIVE(adresa mesaj); comunicarea are loc n momentul n care procesul
expeditor lanseaz comanda SEND(), urmat de execuia comenzii
RECEIVE() de ctre procesul destinatar; pentru unele sisteme de operare,

20

directivele SEND si RECEIVE opereaz i asupra indicatorilor de


eveniment, pentru sincronizarea proceselor;
2. Prin intermediul cutiilor potale, care sunt zone de buffer n memoria
intern, destinate comunicrii ntre procese; un proces creaz o cutie potal
n care depune informaii care pot fi extrase de celelalte procese. Condiia
unei comunicri corecte este ca mesajele transmise s poat fi preluate
integral, corect i n ordinea n care au fost produse. n gestionarea
comunicaiei prin aceast metod trebuie avute n vedere restriciile
determinate de:

capacitatea limitat a bufferului: expeditorul poate ncearca s expedieze mai


multe mesaje dect poate memora bufferul; n acest caz exist posibilitatea
acoperirii mesajelor, nainte ca ele s fie preluate;
vitezele diferite ale proceselor expeditor i destinatar: destinatarul poate s
preia mai repede mesajele dect le poate depune expeditorul; n acest caz
exist posibilitatea prelurii repetate a unui mesaj.

Regula de sincronizare a proceselor, n cazul comunicrii prin intermediul cutiilor


potale, trebuie s respecte condiiile:

mesajele trebuiesc preluate din buffer n ordinea n care au fost scrise


numrul mesajelor transmise i nerecepionate trebuie s nu depeasc
numrul mesajelor care pot fi memorate n buffer
numrul mesajelor recepionate nu trebuie s depeasc numrul mesajelor
emise.

2.6. Criterii de performan a planificrii UC


Cnd se dorete un algoritm de planificare, se pot lua n considerare mai
multe criterii :
-gradul de utilizare UC (aproximativ 40% pentru un sistem cu grad de
ncrcare redus, 90% pentru un sistem cu grad mare de ncrcare ) ;
-throughput (numrul de procese executate ntr-un interval de timp precizat);
-turnaround time (durata total a execuiei unui proces) reprezint timpul
scurs intre momentul introducerii procesului n memorie i momentul ncheierii
execuiei sale; se exprim ca suma perioadelor de timp de ateptare pentru a intra
n memorie, de ateptare n irul READY, de execuie (n UC) i de realizare a
operaiilor I/O ;

21

-durata de ateptare ( algoritmul de ateptare influeneaz numai durata de


ateptare n irul READY i nu afecteaz durata de execuie a procesului sau
timpul destinat operaiilor I/O) ;
-durata de rspuns (timpul scurs ntre formularea unei cereri i iniierea
rspunsului corespunztor).

Teste de autocontrol
1. Planificarea Round-Robin:
1. determina atribuirea unei cuante de timp in care procesului ii este permis sa
ruleze,
2. determina suspendarea unui proces intr-un moment arbitrar,
3. determina atribuirea unei prioritati fixe pentru executia unui proces,
4. determina lansarea in executie a unui proces daca nu exista altul mai
prioritar in executie.
2. Tranzitia unui proces din starea in executie in starea blocat are loc atunci
cand:
1. planicatorul decide suspendarea procesului pentru a lansa un altul mai
prioritar,
2. planicatorul decide blocarea procesului din cauza unei erori,
3. procesul asteapta aparitia unor date de care depinde continuarea executiei,
4. procesul nu mai poate continua executia din cauza unei erori.
3. Cu ce comanda aflm direct procesul folosit de un utilizator conectat prin
ssh la serverul nostru?
1. ps -aux | grep pts;
2. ps -aux | who;
3.ps -aux | grep last.
4. Planifcarea preemptiva este strategia de planifcare conform careia:
1. un proces nu poate fi suspendat temporar daca este in starea GATA,
2. un proces care din punct de vedere logic poate fi executat este temporar
suspendat,
22

3. un proces odata lansat in executie nu mai este suspendat atunci cand poate fi
n executie,
4. un proces nu poate fi suspendat temporar daca este in starea BLOCAT.
5. Sectiunile critice sunt:
1. secvente de program care trebuie tratate cu mare atentie,
2. secvente de tratare a intreruperilor importante,
3. secvente din activitatea sistemului calculator cand resursele sunt insufciente,
4. secvente de program unde se acceseaza date partajate.

6. Cum se nchide procesul 2543?


1. kill -9 2543;
2. ps aux | 2543
3. grep 2543.
7. Cum aflm care este programul ce a deschis procesul 5000?
1. ps -aux | grep 5000;
2. ps 5000;
3. pid 5000.
8. Explicati modul in care se realizeaza planificarea proceselor folosind algoritmul
Round-Robin. Cum se realizeaza planificarea proceselor n Linux?
9. Explicitati sursele care pot duce la intreruperea unui proces aflat in executie.
10. Realizati o scurta prezentare a starilor unui proces, explicitand modul in care se
realizeaza trecerea dintr-o stare in alta.

23

Capitolul 3. Gestionarea ntreruperilor


Obiective:
Surse de ntrerupere;
Mecanismul de funcionare a ntreruperilor;
Controlul ntreruperilor;
Ierarhizarea ntreruperilor.

Funciile sistemului de ntreruperi


Exist o categorie de sarcini a cror apariie n sistem face necesar tratarea lor
imediat de ctre UCP; vom numi aceste sarcini evenimente.
Pe de alt parte, UCP nu trebuie s afecteze timp pentru a verifica dac a aprut o
astfel de solicitare n sistem, tiut fiind c timpul UCP este o resurs critic a
sistemului de calcul. Apare astfel o problem de comunicare de la componentele
fizice sau logice ale sistemului de calcul ctre UCP, problem rezolvat, n
sistemele de calcul moderne, utiliznd tehnica ntreruperilor.
ntreruperea reprezint suspendarea temporar a execuiei procesului care are
alocat UCP, n momentul n care apare un eveniment n sistem, n scopul tratrii
acestui eveniment de ctre UCP.

24

Pentru ca o ntrerupere s fie funcional, este necesar s poat fi ndeplinite dou


condiii:
o

UCP s dispun de capacitatea de a fi ntrerupt, adic s fie posibil ca


UCP s fie alocat altui proces, nainte de ncheierea execuiei
procesului cruia i este alocat, la un moment dat;
s existe posibilitatea de a conserva parametrii procesului suspendat,
pentru ca acesta s poat fi continuat ulterior, din punctul n care a
fost ntrerupt.

3.1. Surse de ntrerupere


Sursele de ntrerupere identific acele componente fizice sau logice ale
sistemului care pot solicita ntreruperi, n cazul apariiei unor evenimente.
Semnalele transmise pentru UCP de ctre sursele de ntrerupere care solicit o
ntrerupere se numesc cereri de ntrerupere (CI).
n funcie de natura surselor de ntrerupere i a evenimentelor care pot genera o
ntrerupere, se pot identifica mai multe tipuri de ntreruperi:
1. ntreruperi hardware, generate de surse hardware, pentru evenimente
externe procesului; de exemplu:
o dispozitivele periferice pot solicita, printr-o cerere de ntrerupere,
servicii sau aciuni specifice (imprimanta anun terminarea hrtiei,
n timpul unei listri; unitatea de disc anun ncheierea unei
operaii de citire/scriere sau apariia unei erori n timpul unei astfel de
operaii; tastatura anun activarea sau dezactivarea unei taste, etc.)
o dispozitivele hardware de supraveghere a funcionrii normale a
sistemului de calcul pot emite cereri de ntrerupere n cazul sesizrii
unor anomalii de funcionare (circuitele detectoare de paritate pot
semnala erori de paritate n timpul unui transfer de date, circuite
specializate pot sesiza scderea tensiunii de alimentare a sistemului,
etc.)
2. ntreruperi software, care apar n timpul i n legtur cu execuia unui
proces; ele sunt de dou tipuri:
o ntreruperi software programate, generate cu ocazia execuiei unui
program, cu scopul de a solicita anumite servicii; aceste ntreruperi nu
apar ntmpltor, n timpul execuiei programului, ci sunt generate
intenionat, prin intermediul unei instruciuni specializate care se
25

insereaz n program i care, atunci cnd se execut, lanseaz o cerere


de ntrerupere.
ntreruperi software de excepie care apar n timpul execuiei unui
program, cnd se ncearc executarea unor operaii nepermise, de
exemplu:
 mprirea la 0
 depirea domeniului de valori disponibil pentru anumite
moduri de reprezentare a datelor
 utilizarea, ntr-o instruciune, a unui cod de operaie necunoscut
 ncercarea de acces ntr-o zon de memorie protejat, etc.
Aceste ntreruperi sunt determinate de condiii de excepie n
execuia programului i sunt generate n scopul evitrii unei
evoluii imprevizibile sau eronate a procesului.
Aceste ntreruperi sunt sincrone cu programul, adic dac o
ntrerupere de excepie apare n timpul executrii unui program,
cu un anumit set de date, atunci aceast ntrerupere va apare de
fiecare dat cnd programul respectiv se execut cu acest set de
date.

3.2. Mecanismul de funcionare a ntreruperilor


Mecanismul de funcionare a ntreruperilor presupune:





lansarea unei cereri de ntrerupere i transmiterea ei pe un nivel


de ntrerupere
ntreruperea temporar a procesului activ, cu conservarea strii
sale n momentul ntreruperii
executarea rutinei de tratare a ntreruperii de pe nivelul
corespunztor
reluarea procesului ntrerupt i continuarea lui, pornind de la
starea din momentul ntreruperii.

n funcie de sursa ntreruperii, fiecare CI se identific printr-un numr, numit


nivel de ntrerupere; numrul nivelelor de ntrerupere disponibile n sistem este o
constant constructiv a sistemului de calcul, determinat de numrul de linii pe
care UCP poate primi cereri de ntrerupere. Sursele de ntrerupere sunt grupate,
fiecare grup avnd rezervat un anumit nivel de ntrerupere (de exemplu, exist cte
26

un nivel de ntrerupere pentru: unitile de disc, imprimant, tastatur, ceasul


sistemului, etc.)
n cazul ntreruperilor hardware, nivelul de ntrerupere este determinat de o
component de pe placa de baz, numit controler de ntreruperi hardware;
acesta primete cererea de ntrerupere i o direcioneaz ctre UCP pe un anumit
nivel de ntrerupere, n funcie de sursa care a generat-o.
n cazul ntreruperilor software, programul care lanseaz o cerere de ntrerupere
trebuie s specifice i nivelul de ntrerupere corespunztor.
Pentru fiecare nivel de ntrerupere exist un program de sistem specializat, numit
rutin de tratare a ntreruperii sau handler. Fiecrui nivel de ntrerupere i
corespunde o adres fix n memorie, unde este memorat adresa rutinei de tratare
a ntreruperii respective. Toate aceste adrese fixe formeaz n memoria intern
vectorul de ntrerupere.
Operaia de executare a rutinei de tratare a ntreruperii corespunztoare unei cereri
de ntrerupere poart numele de servire a cererii de ntrerupere respective.
Rutinele de tratare a ntreruperilor sunt incluse n firmware, de exemplu n ROMBIOS, sau n componentele sistemului de operare. Pot exista i rutine de tratare a
ntreruperilor proprii unor programe de aplicaie. Aceste rutine pot fi create fie
pentru a nlocui o ntrerupere standard, fie pentru a crea un nou tip de ntrerupere.
Activitatea UCP poate fi ntrerupt la ncheierea execuiei unei instruciuni main.
La apariia unei cereri de ntrerupere, UCP execut urmtoarele operaii:







salveaz starea procesului n execuie, prin memorarea pe stiv


a coninutului registrului contor de program, al cuvntului de
stare program i al registrelor generale
accept ntreruperea i localizeaz rutina de ntrerupere
execut rutina de ntrerupere
reface contextul de execuie al procesului ntrerupt
reia procesul din punctul n care a fost ntrerupt.

3.3. Controlul ntreruperilor


n timpul executrii unui proces, exist anumite operaii critice, care nu trebuiesc
ntrerupte. n acest scop, exist posibilitatea invalidrii unei CI.
27

Controlul ntreruperilor se refer la posibilitatea acordat UCP de a accepta sau


nu o cerere de ntrerupere. n cod main exist dou instruciuni complementare:



EI (Enable Interrupt) care permite validarea unei cereri de


ntrerupere
DI (Disable Interrupt) care nu permite validarea unei cereri de
ntrerupere, pn la o nou instruciune EI. Prin intermediul
acestei instruciuni se poate realiza invalidarea soft a unei cereri
de ntrerupere.

ntreruperile care pot fi invalidate soft se numesc ntreruperi mascabile.


Exist ns i cereri de ntrerupere care trebuie s genereze obligatoriu ntreruperea
procesului n curs, n momentul apariiei lor. ntreruperile care nu pot fi invalidate
soft se numesc ntreruperi nemascabile.
3.4. 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
oprete, temporar, execuia unei rutine de ntrerupere, pentru a lansa n execuie o
alt rutin de ntrerupere, apelat de o cerere de ntrerupere aprut ulterior n
sistem.
Se poate realiza o ierarhizare a ntreruperilor, prin acordarea de prioriti de
execuie fiecrui nivel de ntrerupere. n cazul ierarhizrii ntreruperilor, ordinea de
servire a cererii de ntrerupere va fi stabilit conform urmtoarelor principii:




servirea unei cereri de ntrerupere poate fi ntrerupt numai de o


cerere de ntrerupere cu nivel de prioritate mai mare;
ntreruperile nemascabile au prioritate maxim;
dup ncheierea unei rutine de tratare a ntreruperii se reia
execuia ntrerupt, care poate fi a unui proces sau a altei rutine
de tratare a unei ntreruperi cu prioritate mai mic.

3.5. Funciile sistemului de ntreruperi


n concluzie, sistemul de ntreruperi permite comunicarea n sistemul de calcul i
sincronizarea activitii UCP cu evenimentele externe sau interne din sistem,
asigurnd:
28






direcionarea majoritii cererilor adresate UCP, din mediul


extern
degrevarea UCP de sarcina explorrii intrrilor n sistemul de
calcul, pentru a detecta sarcinile care i revin
micorarea timpului de rspuns al UCP la solicitrile externe
sau interne primite
detectarea rapid a unor situaii de disfuncionalitate a
sistemului, determinnd astfel creterea fiabilitii acestuia.

Teste de autocontrol
1. Subunitatile de intrerupere sunt:
1. un mijloc de intrerupere al sistemului calculator,
2. un mecanism de transmitere a informatilor intre dispozitivele de intrareiesire,
3. un mijloc de terminare a unei operatii de intrare-iesire,
4. un mijloc de comunicatie intre sistemul calculator hardware si sistemul de
operare.
2. La declansarea unei intreruperi prima actiune desfasurata in sistemul
calculator este:
1. salvarea registrelor procesului intrerupt in tabela de procese,
2. incarcarcarea registrului program counter cu continutul vectorului de
intrerupere,
3. salvarea starii programului intrerupt in stiva,
4. modifcarea starii procesului interupt.
3. Explicitati sursele care pot duce la intreruperea unui proces aflat in executie.

29

Capitolul 4. Gestionarea memoriei


Obiective:
Ierarhii de memorie;
Optimizri n ncrcarea i execuia unui program n memorie;
Legarea dinamic;
Alocarea memoriei;
Caracteristici ale alocatoarelor;
Scheme de alocare a memoriei;
Paginarea memoriei. Segmentarea memoriei;
Gestiunea memoriei n Linux/Windows.

Problema esenial pe care trebuie s o rezolve un sistem de operare este ca un


program, pentru a putea fi executat, s aib codul executabil i datele rezidente n
memorie. SO trebuie s partiioneze memoria, ca s permit utilizarea ei simultan
de ctre mai multe programe. De asemenea trebuie s asigure mecanisme de
protecie pentru ca programele s poat coexista n memorie n bune condiiuni.
4.1. Ierarhii de memorie
La ora actual, exist urmtoarele categorii de memorie:
Memoriile rapide au un timp de acces foarte mic; din punct de vedere
tehnologic sunt memorii statice i cu un cost ridicat pe unitatea de memorie. Se
utilizeaz pentru registrele generale ale unitii centrale i pentru memoria
CACHE.
Memoriile lente au un timp de acces mai mare, din punct de vedere
tehnologic sunt realizate ca memorii dinamice i au un cost pe unitatea de memorie
mult mai mic dect al memoriilor rapide. Se utilizeaz pentru memoria principal.
Memoriile foarte lente au timp de acces foarte mare n comparaie cu
celelalte tipuri, i, bineneles, un cost mult mai mic pe unitatea de memorie. Este
cazul hard discurilor.
O ierarhie de memorie este un mecanism, transparent pentru utilizator, prin care
SO acioneaz aa fel nct, cu o cantitate ct mai mic de memorie rapid i cu o
cantitate ct mai mare de memorie lent i foarte lent, s lucreze ca i cum ar avea
o cantitate ct mai mare de memorie rapid.

30

4.2. Optimizri n ncrcarea i execuia unui program n memorie


Exist unele optimizri ale sistemelor de operare, legate de ncrcarea i execuia
unui program n memorie :
-ncrcarea dinamic;
-suprapuneri (overlay-uri);
-legarea dinamic (.dll n WINDOWS, .so n UNIX).
ncrcarea dinamic
ncrcarea dinamic este ncrcarea rutinelor n memoria principal numai atunci
cnd este nevoie de ele.
n acest mod sunt aduse n memorie numai rutinele apelate, rutinele neutilizate nu
vor fi ncrcate niciodat. Un astfel de exemplu este un program de dimensiune
foarte mare care conine multe rutine de tratare a erorilor, (rutine foarte mari),
erorile tratate fiind foarte rare. Desigur aceste rutine nu vor fi ncrcate n
memorie.
Trebuie remarcat c mecanismul de ncrcare dinamic nu este implementat n SO,
el fiind o sarcin a utilizatorului.
4.3. Overlay-uri
Overlay-urile furnizeaz un mod de scriere a programelor care necesit mai
mult memorie dect memoria fizic, cu alte cuvinte a programelor de mari
dimensiuni. La fel ca i n cazul ncrcrii dinamice, nu este o sarcin a sistemului
de operare ci a utilizatorului.
Acesta trebuie s partiioneze programul n buci mai mici i s ncarce aceste
partiii n memorie aa fel ca programul s nu aib de suferit n execuie. Desigur o
astfel de programare este complex, dificil. Ea se utiliza n SO mai vechi.
4.4. Legarea dinamic
Legarea dinamic este utilizat n sistemele de operare de tip WINDOWS, pentru
fiierele cu extensia dll sau n UNIX , n bibliotecile cu extensia so.

31

Conform acestui mecanism rutinele nu sunt incluse n programul obiect generat de


computer, legarea subrutinelor fiind amnat pn n momentul execuiei
programelor.
Rolul sistemului de operare este s vad dac rutina este n memorie i dac nu s
o ncarce. In acest mod se realizeaz o bun partajare a codului.
4.5. Alocarea memoriei
Alocarea memoriei este efectuat de ctre alocatorul de memorie care ine
contabilitatea zonelor libere i ocupate din memorie, satisface cererea pentru noi
zone i reutilizeaz zonele eliberate.
Alocarea memoriei se face ierarhic; la baza acestei ierarhii se afl sistemul de
operare care furnizeaz utilizatorilor poriuni de memorie iar utilizatorul, la rndul
su, gestioneaz poriunea primit de la SO dup necesitile sale
4.5.1. Alocarea de memorie n limbaje de programare

Exist o clasificare a limbajelor de programare din punct de vedere al


alocrii de memorie:
1) Limbaje care nu pot aloca memorie. Este cazul limbajelor mai vechi
(Fortran, Cobol). In aceste limbaje, utilizatorul nu poate aloca dinamic memorie n
momentul execuiei ci naintea execuiei programului.
2) Limbaje cu alocare i delocare explicit. Aceste limbaje permit
utilizatorului s cear, pe parcursul execuiei, noi zone de memorie i s returneze
memoria utilizat. Este cazul funciilor new i free n PASCAL i new
i delete sau malloc i free din C i C++.
3) Limbaje cu colectoare de gunoaie (garbage collection). In aceste limbaje,
utilizatorul nu specific niciodat cnd vrea s elibereze o zon de memorie.
Compilatorul i o serie de funcii care se execut simultan cu programul deduc
singure care dintre zone nu sunt necesare i le recupereaz.
Menionm c majoritatea alocatoarelor din nucleele sistemelor de operare
comerciale sunt de tipul 1) i 2). Exist i nuclee ale sistemelor de operare cu
alocatoare de tipul 3), cum ar fi sistemele Mach sau Digital.

32

4.5.2. Caracteristici ale alocatoarelor

Vom prezenta cteva caracteristici ale alocatoarelor dup care se poate


evalua calitatea acestora.
1) Timp de operaie. Este timpul necesar unei operaii de alocare/dealocare.
Acest timp depinde de tipul alocatorului, fiecare alocator trebuind s execute un
numr de operaii pentru fiecare funcie. Cu ct memoria disponibil este mai mare
cu att timpul de execuie a unui apel este mai mare.
2) Fragmentarea. O problem cu care se confrunt alocatoarele este faptul
c aproape niciodat ele nu pot folosi ntreaga memorie disponibil, pentru c mici
fragmente de memorie rmn neutilizate. Aceste pierderi apar n urma mpririi
spaiului disponibil de memorie n fragmente neocupate n totalitate de programe.
Fragmentarea poate fi :
-fragmentare extern;
-fragmentare intern;
Fragmentarea extern apare ori de cte ori exist o partiie de memorie
disponibil, dar nici un program nu ncape n ea.
Singurul mod de a reduce fragmentarea extern este compactarea spaiului
liber din memorie prin mutarea blocurilor dintr-o zon n alta.
Fragmentarea intern este dat de cantitatea de memorie neutilizat ntr-o
partiie blocat ( ocupat parial de un program).
Pentru a nu avea fragmentare intern ideal ar fi ca fiecare program s aib exact
dimensiunea partiiei de memorie n care este ncrcat, lucru aproape imposibil.
3) Concuren. Aceast caracteristic se refer la gradul de acces concurent
la memorie. Este cazul mai ales la sistemele cu multiprocesor, cu memorie
partajat. Un alocator bine scris va permite un grad mai ridicat de concuren,
pentru a exploata mai bine resursele sistemului.
4) Grad de utilizare. Pe lng faptul c memoria este fragmentat, alocatorul
nsui menine propriile structuri de date pentru gestiune. Aceste structuri ocup un
loc n memorie, reducnd utilizarea ei efectiv.
4.5.3. Tipuri de alocare

n sistemul de gestiune a memoriei exist dou tipuri de adrese:


-adrese fizice;
-adrese logice.

33

Adresele fizice sunt adresele efective ale memoriei fizice. Se tie c pentru a
adresa o memorie fizic cu o capacitate de n octei este necesar un numr de
adrese egal cu log2n .
Adresele logice, sau virtuale, sunt adresele din cadrul programului ncrcat.
De obicei, n marea majoritate a alocatoarelor, n momentul ncrcrii unui
program sau chiar al compilrii lui, adresele fizice coincid cu cele logice. n
momentul execuiei acestea nu mai coincid.
Translatarea adreselor logice n adrese fizice este executat de ctre
hardware-ul de mapare al memoriei.

Alocarea memoriei se poate face n dou feluri:


Alocarea contigu nseamn alocarea, pentru un proces, a unei singure poriuni de
memorie fizic, poriune continu; (elemente contigue nseamn elemente care se
ating spaial sau temporal).
Alocarea necontigu nseamn alocarea, pentru un proces, a mai multor poriuni
separate din memoria fizic.
Alocarea memoriei se mai face n funcie de cum este privit memoria. Exist
dou tipuri de memorie:
-memorie real;
-memorie virtual.
Memoria real const numai n memoria intern a sistemului i este limitat
de capacitatea ei.
Memoria virtual vede ca un tot unitar memoria intern i cea extern i se
permite execuia unui proces chiar dac acesta nu se afl integral n memoria
intern.
4.5.4. Scheme de alocare a memoriei

Exist mai multe scheme de alocare de la foarte simple la foarte complexe.


n general, sunt de dou categorii:
-sisteme care transport procesele, nainte i napoi, ntre
memoria principal i disc (swapping i paging);
- sisteme care nu fac acest lucru ( fr swapping i paging).
a)-Pentru sistemele cu alocare contigu, exist schemele:
-alocare unic;
34

-alocare cu partiii fixe ( alocare static);


-alocaii cu partiii variabile (alocare dinamic);
-alocare cu swapping.
b)Pentru sistemele cu alocare necontigu:
-alocare paginat (simpl sau la cerere);
-alocare segmentat (simpl sau la cerere);
-alocare segmentat-paginat (simpl sau la cerere).
Alocare unic
a) Alocare unic cu o singur partiie
Este un tip de alocare folosit n primele sisteme de operare care lucrau
monouser. Este cea mai simpl schem n care toat memoria intern este destinat
sistemului de operare, fr nici o schem de administrare a memoriei. Desigur, ea
ine de domeniul istoriei.
b) Alocare unic cu dou partiii
Este cazul sistemului de operare MS-DOS. Principalul dezavantaj const n
faptul c nu se ofer soluii pentru multiprogramare.
Alocare cu partiii fixe (alocare static)
Memoria este mprit static n mai multe partiii, nu neaprat de
dimensiuni egale. n fiecare partiie poate rula cel mult un proces, gradul de
multiprogramare fiind dat de numrul partiiilor. De obicei, mprirea n partiii i
dimensionarea acestora se face la nceput de ctre operator. Programele sunt
ncrcate n memorie prin nite cozi de intrare. Este posibil ca s existe o singur
coad de intrare in memorie sau diferite cozi la diferitele partiii. Din coada de
intrare un program intr n cea mai mic partiie destul de mare, ins, pentru a-l
primi. Spaiul neocupat de program n aceast partiie rmne pierdut i n acest
fapt const dezavantajul schemei. Exista att fragmentare intern ct i fragmentare
extern.
n aceast alocare aprea pentru prima dat i un mecanism de protecie a
memoriei care era asigurat de sistemul de chei de protecie i chei de acces.
Sistemul de memorie era mprit n pagini de 2KO i fiecare pagin avea o
cheie de protecie. Aceasta era pus printr-o instruciune cod-main a
calculatorului. Pentru ca un program s fie rulat ntr-o zon a memoriei, trebuia s
fie prezentate cheile de acces pentru fiecare pagin utilizat. La identitatea cheii de
acces cu cea de protecie, se permitea accesul n pagina respectiv. Existau i chei

35

de acces care deschideau orice cheie de protecie (de exemplu cheia de acces zero),
precum i chei de protecie deschise de orice cheie de acces.
Alocare cu partiii variabile
n aceast alocare numrul, locaia i dimensiunea partiiilor variaz
dinamic. Ne mai fiind fixat dimensiunea partiiilor, care pot fi ori prea mari ori
prea mici fa de program, crete mult gradul de utilizare al memoriei. n schimb se
complic alocarea i dealocarea memoriei i urmrirea acestor operaii.
Cnd se ncarc un proces n memorie, i se aloc exact spaiul de memorie
necesar, din memoria liber crendu-se dinamic o partiie. Cnd se termin un
proces, partiia n care a fost procesul devine memorie liber, ea unificndu-se cu
spaiul de memorie liber existent pn atunci.
Pentru gestionarea unei astfel de alocri, sistemul de operare trebuie s
aib dou tabele:
- tabela partiiilor ocupate;
- tabela partiiilor libere.
Principala problem este alegerea unui spaiu liber; aceast alegere trebuie
fcut cu minimizarea fragmentrii interne i externe. Exist anumii algoritmi de
alegere a spaiului liber.
-FFA (First Fit Algoritm), prima potrivire. Se parcurge lista spaiilor libere,
care este ordonat cresctor dup adresa de nceput i se alege primul spaiu de
dimensiune suficient.
Acest algoritm este folosit n sistemul SO MINIX, creat de Tannenbaum.
-BFA (Best Fit Algoritm) , cea mai bun potrivire. Se parcurge lista spaiilor
libere i se alege spaiul cu dimensiunea cea mai mic n care ncape programul. n
acest fel se minimizeaz fragmentarea intern. n cazul n care lista spaiului liber
este ordonat cresctor dup dimensiunea spaiilor libere, se alege evident primul
spaiu liber. n acest caz FFA i BFA coincid. BFA este utilizat n SO MS-DOS.
-WFA (Worst Fit Algoritm) , cea mai proast potrivire. Se parcurge lista
spaiilor libere ordonat cresctor dup dimensiune i se alege ultimul spaiu din
list.
Din punct de vedere al vitezei i al gradului de utilizare al memoriei, FFA i
BFA sunt superioare strategiei WFA.

36

Alocarea prin swapping


n acest tip de alocare, un proces, n majoritatea cazurilor n stare de
ateptare, este evacuat temporar pe disc, elibernd memoria principal.
Reluarea execuiei procesului se face prin rencrcarea sa de pe disc n
memoria principal.
Swap nseamn a face schimb i, ntr-adevr, este vorba de o schimbare de
pe memoria principal pe una extern i napoi . Problema principal n swapping
este: ce procese sunt evacuae din memorie pe disc ? Exist un algoritm bazat pe
prioriti, numit Rollout-Rollin, conform cruia, la apariia unui proces cu
prioritate ridicat, vor fi evacuate procesele sau procesul cu prioritatea cea mai
sczut.
O alt problem este: la ce adres din memorie va fi readus procesul evacuat.
De obicei, dac alocarea este static, procesul va fi readus n aceeai partiie din
care a plecat. n cazul alocrii dinamice, procesul va fi adus n orice loc al
memoriei.
Pentru ca alocarea prin swapping s aib eficien, este necesar ca memoria
extern (harddiscul) s aib dou caracteristici: o capacitate suficient de mare i un
timp de acces foarte mic.
Capacitatea mare este necesar deoarece pe disc trebuie s se evacueze toate
imaginile proceselor, numrul lor putnd ajunge, la un moment dat, foarte mare.
Timpul de acces trebuie s fie foarte mic. n caz contrar, costul swappingului
memorie disc poate deveni inconvenabil. O condiie esenial pentru micorarea
costului este ca timpul de execuie al procesului s fie mult mai mare dect timpul
de swapping.
O alt problem apare atunci cnd un proces necesit date noi n timpul
execuiei i, implicit, zone suplimentare de memorie. Este situaia aa numitelor
procese cu dimensiune variabil n timpul execuiei. Dac, datorit cererii
suplimentare de memorie, se depete zona de memorie afectat procesului,
atunci sistemul de operare trebuie s intervin. Exist urmtoarele posibiliti:
- s ncheie forat procesul care a formulat cerere de suplimentare a memoriei
i s se considere aceast cerere ca o eroare de execuie;
-s returneze decizia procesului, n sensul c acesta va decide dac i va
ncheia activitatea sau o va continua strict n zona de memorie care i-a fost
impus;-n cazul alocrii dinamice, s evacueze procesul pe disc, i s atepte
eliberarea unei zone de memorie satisfctoare pentru proces.
Trebuie menionat c nc suntem n modul de alocare contiguu, deci spaiul
de adresare al unui proces nu poate depi capacitatea memoriei interne.
n concluzie, putem spune c principalul avantaj al alocrii prin swapping
este faptul c se simuleaz o memorie mai mare dect cea fizic existent.
37

Principalul dezavantaj este costul swappingului care uneori poate fi destul de


mare.
4.6. Paginarea memoriei
Paginarea este un tip de alocare necontiguu, aceasta nsemnnd c unui
proces i poate fi alocat memorie oriunde, att n memoria intern ct i n cea
extern, iar memoria alocat poate fi format din buci de memorie.
Suportul hardware
Memoria fizic este mprit n blocuri de lungime fix, numite cadre de
pagin (frames) sau pagini fizice. Lungimea unui cadru este o putere a lui doi i
este constant pentru fiecare arhitectur de sistem n parte. Pentru Intel lungimea
unui cadru este 4KO.
Memoria logic a unui proces este mprit n pagini logice sau pagini
virtuale care sunt plasate n memoria secundar, pe harddisc.
Pentru execuia unui proces, paginile sale logice trebuie ncrcate n cadrele
libere ale memoriei fizice, intr-un mod necontiguu. Evidena cadrelor libere este
inut de sistemul de operare. Bineneles, dac procesul are nevoie de n pagini
logice, trebuie s se gseasc n cadre libere.
Att adresele fizice ct i cele logice sunt implementate n hard i ele conin:
-adresa fizic=numr de cadru(f)+deplasament n cadru(d)
-adresa logic=numr de pagini logice(l)+deplasament n
pagina logic
Prin mapare se nelege translatarea adresei logice n adres fizic. Aceast
sarcin i revine sistemului de operare prin utilizarea tabelei de pagini.
Fiecare proces are o tabel de pagini n care n care fiecare pagin logic are
adresa de baz a cadrului asociat ei. Pentru translatare se folosete numrul de
pagin drept index n tabela de pagini.
Concluzii privind paginarea
Principalul avantaj al paginrii este eliminarea complet a fragmentrii
externe. Nu dispare ns i fragmentarea intern, deoarece poate rmne un spaiu
nefolosit dar alocat proceselor, fiindc dimensiunea proceselor nu este un multiplu
exact al lungimii paginilor.
38

Un alt avantaj al paginrii este posibilitatea de partajare a memoriei. Dou


sau mai multe pagini pot vedea aceeai zon de memorie ncrcnd paginile logice
n acelai cadru fizic. Singura soluie este ca n acel cadru fizic s fie memorat cod
reentrant, adic un cod care nu se mai poate automodifica n timpul execuiei.
Datorit proprietii de reentran , este posibil ca dou sau mai multe procese s
execute simultan acelai cod, fiecare proces pstrnd o copie a registrelor i a
datelor proprii. n memoria fizic este necesar s se pstreze o singur copie a
codului comun, fiecare tabel de pagin indic spre acelai cadru, n timp ce
paginile corespunztoare datelor proceselor sunt memorate n cadre diferite.
Un dezavantaj al paginrii este faptul c fiecare acces la memorie presupune
un acces suplimentar la tabela de pagini pentru calculul de adres.
4.7. Segmentarea memoriei
Segmentarea reprezint o vedere a memoriei din punctul de vedere al
utilizatorului care percepe memoria nu ca pe o succesiune de cuvinte, aa cum este
n realitate, ci ca pe o mulime de buci de memorie de diverse dimensiuni. Aceste
segmente pot cuprinde: programul principal, proceduri, funcii, stive, vectori,
matrici etc.
Segmentarea este o schem de administrare a memoriei n care programul
este divizat n mai multe pri funcionale. Spaiul logic de adresare al programului
este i el mprit n segmente. Fiecrui segment de memorie i corespunde o
unitate funcional a programului.
Program
Program principal
Funcia 1
Funcia 2
Procedura
Matrice 1
Matrice 2
Vector

Memorie
Segment 1
Segment 2
Segment 3
Segment 4
Segment 5
Segment 6
Segment 7

Fig. 1. Principiul segmentrii.


Fiecare segment are un nume i o dimensiune, deci:
-un nume
-un deplasament.

39

Programatorul vede spaiul virtual de adresare al programului ca un spaiu


bidimensional, nu un spaiu unidimensional ca la programare

4.8. Gestiunea memoriei n unele sisteme de operare


4.8.1. Gestiunea memoriei n Linux

In Linux se aloc i se elibereaz pagini fizice, grupuri de pagini, blocuri


mici de memorie.
n ceea ce privete administrarea memoriei fizice, alocatorul de pagini poate
aloca la cerere intervale contigue de pagini fizice. Politica de alocare este cea
bazat pe puteri ale lui 2, metoda camarazilor.
Pentru administrarea memoriei virtuale, nucleul Linux rezerv o zon de
lungime constant din spaiul de adresare al fiecrui proces pentru propriul su uz
intern. Aceast zon conine dou seciuni:
- o seciune static care conine tabela de pagini cu referie la fiecare pagin
fiic disponibil n sistem, astfel nct s existe o translaie simpl de la adresele
fizice la adresele virtuale atunci cnd se ruleaz codul nucleului;
- o seciune care nu este rezervat pentru ceva anume.
4.8.2. Gestiunea memoriei n Windows NT
Administratorul de memorie din sistemul de operaie Windows lucreaz cu
procese nu cu threaduri. Se utilizeaz paginarea la cerere, cu pagini de dimensiune
fix, maximum de 64 Kb ( la Pentium se utilizeaz o pagin de 4Kb). O pagin
poate fi n urmtoarele stri:
-liber
-rezervat
-angajat (commutted).

40

Teste de autocontrol
1. Ce este alocatorul de memorie? In ce consta alocarea segmentat a
memoriei?
2. In ce consta alocarea paginata a memoriei?
3. Explicate rolul urmatoarelor comenzi dand un exemplu de utilizare a
acestora: cat fiier(e), echo ir , quota, wc fiier, tail fiier, ps aux,
sleep, write, jobs, kill.
4. Explicate rolul urmatoarelor comenzi dand un exemplu de utilizare a
acestora: cd director, echo $VARIABILA, rm fiier, head fiier, pwd,
jobs, nice, top, wall, netstat.

41

Capitolul 5. Gestionarea memoriei externe


Obiective:
Evidena fiierelor;
Evidena ocuprii volumului de disc.

Activitatea de gestionare a datelor sub controlul sistemului de operare const n


organizarea datelor pe suporii de memorie extern n scopul stocrii lor i pentru a
permite regsirea lor, n vederea realizrii schimbului de date cu celelalte
componente ale sistemului de calcul.
Fiierul reprezint unitatea logic de organizare a datelor pe suportul de memorie
extern.
Componenta sistemului de operare care asigur gestiunea datelor pe suporii de
memorie extern se numete sistemul de gestiune a fiierelor (SGF).
Sistemul de operare definete uniti logice corespunztoare echipamentelor
periferice, echipamente de intrare/ieire, dispozitive de memorie extern numite
device-uri. Pentru fiecare tip de device, sistemul de operare furnizeaz cte un
program de interfa numit driver.
Schimbul de date gestionat de SGF se realizeaz la nivel de fiier, prin cooperarea
rutinelor SGF cu programele driver corespunztoare echipamentelor periferice
implicate.
Funciile ndeplinite de SGF pentru gestionarea datelor stocate pe suporii de
memorie extern sunt:

funcia de eviden a fiierelor, care trebuie s ofere date despre fiiere i


despre modul de organizare a fiierelor pe suport ct i despre drepturile de
acces ale utilizatorilor la fiiere;
funcia de alocare a memoriei externe, pentru stocarea fiierelor; pentru
realizarea acestei funcii, sistemul de operare trebuie s realizeze i o
eviden a ocuprii dispozitivelor de memorie extern;
funcia de dezalocare a memoriei externe, prin eliberarea memoriei externe
ocupate;

42

funcia de acces la date, care trebuie s faciliteze accesul utilizatorului la


date, prin localizarea nregistrrii dorite i accesarea ei, conform drepturilor
de acces.

Utiliznd conceptul de fiier, se poate spune c SGF este acea component a


sistemului de operare care implementeaz operaiile de creare, ntreinere i
exploatare a fiierelor.
innd cont de funciile pe care trebuie s le ndeplineasc n sistemul de calcul,
SGF trebuie s satisfac urmtoarele condiii:

s asigure un mecanism de lucru cu fiierele ct mai accesibil pentru


utilizator
s permit o utilizare ct mai eficient a dispozitivelor de memorie extern
s asigure o independen maxim a programelor fa de particularitile
hardware ale sistemului de calcul
s permit accesul concurent la fiiere
s asigure securitatea i integritatea datelor memorate n fiiere.

Evidena fiierelor
Funcia SGF de eviden a fiierelor pe suporii de memorie extern trebuie s
rezolve urmtoarele probleme:

identificarea fiierului i memorarea caracteristicilor generale ale sale


organizarea unui sistem de cataloage pentru nregistrarea tuturor fiierelor de
pe un dispozitiv de memorie extern.

Dintre toate dispozitivele de memorie extern, discurile magnetice necesit cea mai
complex eviden a fiierelor pe care le memoreaz, pentru c sunt dispozitive
care permit stocarea simultan a mai multor fiiere (dispozitive multifiier) i sunt
direct adresabile, deci modul de organizare a evidenei fiierelor pe suport trebuie
s permit accesul direct la fiiere.
Fiecare volum de disc conine cte o tabel cu informaii despre fiierele memorate
n volumul respectiv, tabel numit catalog de fiiere sau director. Accesul la
fiiere se face pe baza datelor din aceast tabel; fiecare intrare n tabela director
conine cte un descriptor de fiier, ce cuprinde date despre fiier, i anume:

43

identificatorul de fiier, format dintr-o pereche de valori, de forma


(Nume,Indicativ), unde Nume este numele simbolic al fiierului, recunoscut
de utilizator, iar Indicativ este un numr prin care fiierul este identificat
intern, de ctre SGF;
informaii de adres care permit localizarea fiierului n disc; natura acestor
informaii difer, n funcie de modul de alocare a discului folosit pentru
generarea fiierului;
informaii pentru controlul accesului la fiier, prin care sistemul de operare
realizeaz funcia de protecie a datelor:
o atributele de fiier (de exemplu: fiier read-only, fiier sistem, fiier
ascuns aplicaiilor obinuite)
o utilizatorii i drepturile de acces la fiier pe care le au (de exemplu: W
acces n scriere, R acces n citire, A acces pentru modificare, D acces
pentru tergere)
o drepturi de partajare a fiierului, de exemplu n cadrul unei reele de
calculatoare;
informaii despre date calendaristice, de exemplu: data cnd a fost creat
fiierul, data ultimei actualizri, data ultimei consultri;
alte informaii despre fiier, de exemplu: modul de organizare, dup modul
de alocare a suportului (contigu, nlnuit, indexat), tipul de fiier, dup
formatul articolului (cu format fix, variabil, nedeterminat), dup modul de
codificare a datelor (fiier binar, fiier text), dup durata stocrii pe suport
(permanent, temporar, la termen), numrul de accese la fiier, etc.

Modul de organizare a sistemului de fiiere n directori poate fi:

cu un singur nivel, definind un director unic pentru fiecare volum de disc;


acest director are dimensiune fix, deci numrul de intrri n director este
fix, adic numrul maxim de fiiere care pot fi memorate n volumul de disc
este limitat de aceast valoare maxim. Pentru o astfel de organizare a
sistemului de fiiere, pe un volum de disc poate fi un singur fiier cu un
anumit nume (identificator);
cu dou niveluri, ntre care exist o relaie de subordonare:
o pe primul nivel se definete un director principal MFD (Master File
Directory), avnd cte o intrare pentru fiecare utilizator; n felul acesta
se asigur protecia datelor ntre utilizatori, pentru c drepturile de
acces ale unui utilizator se pot limita la fiierele din propriul su
director
o pe al doilea nivel sunt definii directorii utilizatorilor, UFD (User File
Directory), care conin cte o intrare pentru fiecare fiier al
44

utilizatorului respectiv. Pentru o astfel de organizare, pot exista pe un


volum de disc mai multe fiiere cu acelai nume, cu condiia s
aparin la UFD-uri diferite;
cu structur de arbore, care extinde modul de organizare de mai sus la mai
multe niveluri; fiecare volum conine un director principal, numit rdcin;
intrrile unui director conine descriptori pentru toate fiierele pe care le
include; un director este tot un fiier, care difer de fiierele utilizator numai
prin coninut; rezult c un director poate conine orici directori sau oricte
fiiere, cu condiia ca orice fiier s se gseasc ntr-un singur director;
cu structur de graf aciclic, asemntoare organizrii n arbore de directori,
dar cu deosebirea c un fiier poate s aparin la mai muli directori.

5.1. Evidena ocuprii volumului de disc


Pentru a realiza alocarea spaiului din disc, sistemul de operare trebuie s asigure o
eviden a modului n care este ocupat fiecare volum i a spaiului liber din disc. n
acest scop, volumul este mprit n uniti de alocare de lungime fix, numite
blocuri i numerotate secvenial; exist mai multe modaliti de realizare a
evidenei blocurilor libere i a celor ocupate:

cu ajutorul tabelei de ocupare a volumului (TOV), care are attea poziii cte
blocuri are volumul; n fiecare poziie se memoreaz cte un indicator, care
este setat pe 0 dac blocul nu este ocupat i pe o valoare diferit de 0 la
ocuparea blocului;
cu ajutorul unei liste nlnuite a blocurilor libere; n directorul volumului se
memoreaz un pointer la primul bloc liber de pe volum; fiecare bloc liber
conine un pointer la urmtorul bloc liber; ultimul bloc liber conine un
indicator de sfrit de list; alocarea unui bloc se face cu scoaterea lui din
list (de obicei de la unul din capetele listei); eliberarea unui bloc se face cu
inserarea blocului n list; dezavantajul este c pentru consultarea listei, de
exemplu pentru a determina numrul blocurilor libere din disc, trebuie
ncrcate n memoria intern attea blocuri cte se consult;
o metod mai eficient este evidena printr-o list nlnuit i indexat a
ocuprii volumului; n primul bloc liber din volum se memoreaz cte adrese
de blocuri libere ncap; acest bloc se numete bloc de index; dac numrul
blocurilor libere depete capacitatea blocului de index, pe ultima poziie
din blocul de index se memoreaz adresa unui nou bloc de index, amd; n
directorul volumului se memoreaz un pointer ctre primul bloc de index;
alocarea de blocuri libere ca i inserarea unor blocuri eliberate n blocurile
de index se realizeaz la nivelul ultimului bloc de index.
45

5.1.2. Alocarea spaiului pe disc

n funcie de modalitatea de alocare a discului se determin modul de acces la


fiier i informaiile care se memoreaz n descriptorul de fiier, pentru a permite
accesarea fiierului. Exist mai multe moduri de alocare a discului pentru
generarea unui fiier:

alocarea este contigu atunci cnd fiierul ocup un set de adrese


consecutive n disc; pentru a face posibil accesul la fiier, n descriptorul de
fiier trebuiesc precizate: adresa de nceput a fiierului i lungimea fiierului;
n cazul utilizrii alocrii contigue poate s apar, n timp, o fragmentare a
discului i necesitatea compactrii datelor din volum;
alocarea nlnuit se realizeaz cnd blocurile fiierului alctuiesc o list
nlnuit; acest mod de alocare permite numai accesul secvenial la fiier; n
descriptorul de fiier se memoreaz adresa primului bloc al fiierului, pentru
a permite citirea fiierului i adresa ultimului bloc, pentru a permite
extinderea fiierului;

alocarea indexat folosete un bloc suplimentar, numit bloc de index, care se


genereaz odat cu fiierul; n blocul de index se memoreaz, n ordinea alocrii
lor, adresele blocurilor fiierului; pentru fiiere mari, blocurile de index se pot
nlnui; aceast alocare permite accesul direct la un bloc de date din fiier; n
descriptorul de fiier se memoreaz adresa primului bloc de index i numrul de
blocuri alocate fiierului.

46

Teste de autocontrol
1. Cum ajungem n directorul home al utilizatorului logat?
1. cd /
2. cd ~
3. cd home
2. Ce comand folosim pentru a afia toate directoarele i fiierele din
directorul curent?
1. ls -a;
2. ls -l;
3. ls -t.
3. Cu ce comand adugm un utilizator?
1. user;
2. userlist;
3. adduser.
4. Ce comand folosim n linux pentru a afla adresa ip a placii de reea?
1. ifconfig;
2. ipconfig;
3. route.

5. Ce drepturi are asupra fisierului calculator utilizatorul proprietar daca s-a


folosit comanda chmod 765 calculator?
1. citire, scriere;
2. citire, execuie;
3. citire, scriere, execuie

6. Ce se scrie n prima linie a unui script bash?


1. #!/bin/bash;
2. #!/usr/local/perl;
3. #!/sbin/perl.

47

APLICATII DE LABORATOR
Instalare linux
Cerinta:
1. Instaleaza Linux-ul pe calculatoarul tau.
Indicatii:
Lucruri pe care trebuie s le tii nainte de a ncepe o instalare a Linux-ului:
Va rula aceast distribuie pe calculatorul tau?
Verificai la http://www.tldp.org/HOWTO/Hardware-HOWTO/index.html atunci cnd avei
dubii despre compatibilitatea cu echipamentul dumneavoastr.
Ce tip de tastatur am? Ce fel de maus (serial, paralel, numrul de butoane)?
Ce memori de tip RAM este disponibil n sistem?
Voi alege o instalare pentru o staie de lucru sau pentru un server, sau va trebui s
selectezpachetele necesare eu nsumi?
Voi instala de pe discul fix (hard disk), de pe un suport extern sau voi utiliza reeaua? Va
trebui s adaptez BIOS-ul pentru oricare dintre acestea? Metoda de instalare necesit un
dispozitiv extern de pornire?
Linux-ul va fi singurul sistem instalat pe calculator, sau va fi o instalare dual-boot? Ar trebui
s fac o partiie mai mare pentru a instala pe ea sisteme virtuale mai trziu, sau este o instalare
virtual de la nceput?
Calculatorul este legat la reea? Care este numele gazdei, adresele de IP? Exist servere tip
gateway sau alte dispozitive importante de reea cu care sistemul meu ar trebui s comunice?
Calculatorul este un gateway/router/firewall?
Calculatorul va porni n modul text sau n cel grafic?
Gndii-v la o parol bun pentru administratorul acestui sistem (root). Facei un cont de
utilizator obinuit (care nu are acces privilegiat la calculator nu este necesar pentru Ubuntu,
deoarece aceast distribuie utilizeaz un sistem care cere autentificare pentru sarcinile realizate
ca administrator).
Am nevoie de un disc pentru recuperare?
Ce limb doresc pentru sistemul meu?
Partitii
Afiai traseul dumneavoastr de cutare.
Exportai o cale inexistent, de exemplu export PATH=blah i ncercai s listai
coninutul directorului.
Care este traseul directorului dumneavoastr personal? Cum poate un alt utilizator s
ajung la directorul dumneavoastr personal, folosind un traseu relativ?
Mergei n directorul tmp din var.
Mergei n directorul share din usr folosind o singur comand. Schimbai directorul cu
doc. Care

48

este directorul curent de lucru?


Turul sistemului
Mergei n directorul /proc.
Pe ce procesor ruleaz sistemul dumneavoastr?
Ct de mult RAM (memorie cu acces aleator) folosete acum?
Ct spaiu alocat pentru swap avei?
Ce drivere sunt ncrcate?
De cte ore ruleaz sistemul?
Ce sisteme de fiiere sunt recunoscute n sistem?
Mutai-v n /etc/rc.d | /etc/init.d | /etc/runlevels i alegei directorul potrivit
nivelului de executare (rulare) al sistemului dumneavoastr.
Ce servicii ar trebui s ruleze n acest nivel?
Ce servicii ruleaz n modul grafic i nu ruleaz n modul text?
Mutai-v n /etc.
Ct timp pstreaz sistemul fiierele jurnal n care sunt monitorizate autentificrile
utilizatorilor?
Ce versiune folosii?
Exist alte notificri sau mesaje ale zilei?
Ci utilizatori exist pe sistemul dumneavoastr? Nu i numrai, lsai calculatorul s fac
acest
lucru n locul dumneavoastr.
Cte grupuri?
Unde este pstrat informaia referitoare la zona de timp?
Sunt instalate n calculator informaii de tipul CUM S?
Mutai-v n usr/share/doc.
Numii trei programe care sunt incluse n pachetul GNU coreutils.
Ce versiune a consolei (bash) este instalat n sistemul dumneavoastr?
Mnuirea fiierelor
Creai un director nou n directorul dumneavoastr personal.
Putei muta acest director pe acelai nivel cu directorul personal?
Copiai toate fiierele XPM din /usr/share/pixmaps n directorul cel nou. Ce nseamn XPM?
Afiai toate fiierele n ordine alfabetic invers.
Mutai-v n directorul personal. Creai un director nou i copiai toate fiierele din directorul
/etc n acesta. Asigurai-v c ai copiat i toate fiierele i directoarele care sunt subdirectoare
ale lui/etc! (copiere recursiv)
Mergei n directorul nou i creai un director pentru fiierele care ncep cu liter mare i un
altul pentru fiierele care ncep cu o liter mic. Mutai toate fiierele n directorul potrivit.
Folosii ct mai puine comenzi posibil.
tergei fiierele care v-au rmas.
tergei tot directorul i coninutul acestuia printr-o singur comand.
Folosii grep pentru a afla care script pornete serviciul fonturi (Font Server) n nivelul de
rulare grafic.

49

Unde se afl programul serviciului sendmail?


Creai o legtur simbolic n directorul dumneavoastr personal ctre /var/tmp. Verificai i
dac funcioneaz.
Creai alt legtur simbolic n directorul personal ctre legtura existent. Verificai dac
funcioneaz. tergei prima legtur i listai coninutul directorului. Ce s-a ntmplat cu cea dea doua legtur?
Permisiunile asociate fiierelor
Putei schimba permisiunile asociate directorului personal /home?
Care este modul implicit pentru crearea fiierelor n cazul dumneavoastr?
Schimbai deintorii directorului /etc n utilizatorul i grupul asociate dumneavoastr.
Schimbai permisiunile asociate fiierului ~/.bashrc n aa fel nct numai dumneavoastr i
grupul dumneavoastr primar s l poat citi.
Introducei comanda locate root. Observai ceva deosebit?
Creai o legtur simbolic care este ndreptat ctre /root. Poate fi folosit?
Rulai comanda ps.
Citii n paginile man cum putei s afiai toate procesele.
Rulai comanda find /. Ce efect are asupra nivelului de solicitare a sistemului? Oprii aceast
comand.
n modul grafic, pornii programul xclock n prim-plan. Apoi mutai-l n fundal. Oprii
programul prin comanda kill.
Rulai comanda xcalc direct n fundal, pentru ca prompterul terminalului n care ai introdus
comanda s fie eliberat.
Ce face comanda kill -9 -1?
Deschidei dou terminale sau ferestre terminal i folosii write ca s trimitei mesaje dintrunul n cellalt.
Introducei comanda dmesg. Ce v spune?
Ct dureaz rularea comenzii ls n directorul curent?
Folosindu-v de intrrile proceselor din /proc, deinute de UID-ul dumneavoastr, cum putei
afla ce reprezint de fapt aceste procese?
De ct timp este pornit sistemul dumneavoastr?
Care este terminalul (TTY) pe care-l folosii n acest moment?
Numii trei procese care nu au fost generate de init ca printe iniial.
Numii trei comenzi care folosesc modul SUID. Explicai de ce.
Numii comenzile care determin, n general, un nivel de solicitare mrit n sistemul
dumneavoastr.

50

Model de subiect de examen


Subiecte CURS
1. Care sunt functiile unui shell?
2. Explicati actiunea urmatoarelor comenzi:
traceroute www.google.com
route n
/sbin/ifconfig eth0
netstat --tcp listening
ifconfig | tr s ` ` | cut d ` ` -f 2
grep '^ana' /etc/passwd

3. Realizati un script care sa aiba ca rezultat afisarea numarului de fisiere text


din cadrul directorului curent.
4. Cum se realizeaza gestiunea proceselor in Linux?

Subiecte LABORATOR
I.

Prezentati 3 moduri in care puteti afla informatii despre o comanda.


Tipuri de partitii folosite in Linux.

51

II.

Care sunt comenzile prin intermediul carora se poate creea accesul la


urmatoarele informatii:
a) Cat spatiu este disponibil pe HDD?

b) Care este spatiul de memorie utilizat?

c) In ce director ma aflu?
d) Ce user este conectat la terminal si care sunt drepturile acestuia?
e) Care sunt utilizatorii conectati in sistem?
f) Cum se poate adauga un nou utilizator si cum isi poate schimba parola

acesta?
g) Unde se gaseste baza de date cu utilizatorii?
h) Unde se afla baza de date cu grupurile?
i) Cum se face conectarea ca root?
j) Ce contin urmatoarele fisiere: /dev; /bin; /var; /proc

III.

Realizati urmatoarele cerinte:


a) Creati recursive 3 directoare notate A, B, C;
b) Mergeti in directorul B, vizualizati directorul curent si creati doua fisiere
b1 si b2;

c) In fisierul b1 scrieti rezultatul comenzii care afiseaza informatii despre


procesele din sistem;

52

d) In fisierul b2 scrieti rezultatul comenzii care afiseaza informatii despre


comezile de ajutor;

e) In subdirectorul C sa se copieze continutul concatenat al celor 2 fisiere


intr-un fisier nou numit fisierul c1;
f) Sa se extraga si afiseze din fisierul c1 doar linia 8.

g) Sa se scrie comanda necesara pentru a gasi fisierele care contin muzica


ale utilizatorului curent.
h) Din fisierul b1 sa se afiseze doar coloana cu PID-ul proceselor.

i) Sa se creeze o legatura (link) intre fisierul c1 si un fisier nou, numit


legatura.
j) Care sunt comenzile prin care se vor atribui urmatoarele drepturi (se vor
scrie atat in octal cat si literal):
- Dreptul de executie dat utilizatorului si grupului din care face parte,
asupra fisierului c1.
- Dreptul de citire dat tuturor asupra fisierului b1.

IV.

Realizati urmatoarele actiuni:


a) Lansati top in background. Aflati numarul jobului pentru comanda
top.

b) Aduceti procesul in foreground.

53

c) Mutati procesul la loc in background.


d) Terminati procesul cu semnal SIGTERM. Lansati-l din nou in
background si terminate-l cu semnal SIGKILL.
e) Inspectati directorul /etc/rc.1, apoi schimbati runlevelul in runlevel 1 .

f) Schimbati in runlevel 2.
g) Listati comenzile care ruleaza in background.

54

55

BIBLIOGRAFIE:
1.D. Cramer, Interworking with TCP-IP, vol.1, Prentice Hall, New -Jersey,1991.
2.Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall,1992.
3.Iosif Ignat, Emil Muntean, Kalman Pustzai, Microinformatica, 1992.
4. Andrew Tanenbaum, Sisteme de Operare Moderne, Editura Byblos, Bucureti, 2004.
5. Sorin Adrian Ciureanu, Sisteme de operare, suport de curs,
6. Grigore Albeanu, Sisteme de operare, suport de curs.
7. Machtelt Garrels, Introducere n Linux,
8. Introducere n sisteme de operare, Rughini R., Deaconescu R., Milescu G., Bardac M.

56

CUPRINS:
1.1. Clasificarea sistemelor de operare. ...................................................................................... 2
1.2. Sarcinile sistemului de operare ............................................................................................ 4
1.3. Componentele sistemelor de operare .................................................................................. 5
1.4. Structura sistemelor de operare ............................................................................................ 6
Capitol 2. Gestiunea proceselor si a procesoarelor ......................................................................... 7
2.1. Gestiunea proceselor. ........................................................................................................... 7
2.2. Algoritmi de planificare ..................................................................................................... 12
2.2.1. Algoritmul FCFS (First Come First Served) .............................................................. 12
2.2.2. Algoritmul SJF (Shortest Job First) ........................................................................... 13
2.2.3. Algoritmi bazai pe prioritate ...................................................................................... 13
2.2.4. Algoritmi preemptivi .................................................................................................. 13
2.2.5. Algoritmul Round-Robin ............................................................................................ 14
2.2.6. Ali algoritmi de planificare ....................................................................................... 14
2.3. Controlul execuiei proceselor concurente......................................................................... 15
2.4. Controlul alocrii resurselor la procese concurente ........................................................... 16
2.5. Sincronizarea execuiei proceselor .................................................................................... 19
2.6. Criterii de performan a planificrii UC .......................................................................... 21
Capitolul 3. Gestionarea ntreruperilor ......................................................................................... 24
3.1. Surse de ntrerupere ........................................................................................................... 25
3.2. Mecanismul de funcionare a ntreruperilor ....................................................................... 26
3.3. Controlul ntreruperilor ...................................................................................................... 27
3.4. Ierarhizarea ntreruperilor .................................................................................................. 28
3.5. Funciile sistemului de ntreruperi ..................................................................................... 28
Capitolul 4. Gestionarea memoriei ............................................................................................... 30
4.1. Ierarhii de memorie ............................................................................................................ 30
4.2. Optimizri n ncrcarea i execuia unui program n memorie ......................................... 31
4.3. Overlay-uri ......................................................................................................................... 31
4.4. Legarea dinamic ............................................................................................................... 31
4.5. Alocarea memoriei ............................................................................................................. 32
4.5.1. Alocarea de memorie n limbaje de programare ......................................................... 32
4.5.2. Caracteristici ale alocatoarelor .................................................................................... 33
4.5.3. Tipuri de alocare ......................................................................................................... 33
4.5.4. Scheme de alocare a memoriei ................................................................................... 34
4.6. Paginarea memoriei ........................................................................................................... 38
4.7. Segmentarea memoriei....................................................................................................... 39
4.8. Gestiunea memoriei n unele sisteme de operare ............................................................... 40
4.8.1. Gestiunea memoriei n Linux..................................................................................... 40
4.8.2. Gestiunea memoriei n Windows NT ......................................................................... 40
Capitolul 5. Gestionarea datelor i a memoriei externe ................................................................ 41
5.1. Evidena ocuprii volumului de disc.................................................................................. 45
5.1.2. Alocarea spaiului pe disc ........................................................................................... 46
BIBLIOGRAFIE: .......................................................................................................................... 56

57

58

59

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