Sunteți pe pagina 1din 197

UNIVERSITATEA TRANSILVANIA DIN BRA OV

Centrul de nvmnt la Distan


i nvmnt cu Frecven Redus

FACULTATEA DE MATEMATIC I INFORMATIC


PROGRAM DE LICEN: INFORMATIC

Sisteme de operare
CURS PENTRU NVMNT LA DISTAN

AUTORI: Conf. Dr. Ion Florea

ANUL I
2012-2013
Universitatea Transilvania din Braov
Facultatea de Matematic i Informatic
Informatic ID

Ion FLOREA

SISTEME DE OPERARE-CONCEPTE
FUNDAMENTALE

Anul I sem. 2

2012
CUPRINS
Introducere ............................................................................................................................... 6
Modulul 1: Concepte introductive despre sisteme de operare
U1.Concepte introductive despre sisteme de operare ........................................................... 8
M1.U1.1. Introducere ................................................................................................................ 8
M1.U1.2. Obiectivele unitii de nvare ................................................................................. 6
M1.U1.3. Definirea sistemului de operare ............................................................................... 9
M1.U1.4. Evoluia sistemelor de operare................................................................................ 10
M1.U1.5. Tipuri de sisteme de operare.................................................................................... 12
M1.U1.6. Organizarea hardware a sistemelor de calcul ......................................................... 14
M1.U1.7. ntreruperi ............................................................................................................... 15
M1.U1.8. Apelurile de sistem ................................................................................................ 16
M1.U1.9. Conceptul general de proces .................................................................................. 17
M1.U1.10. Generarea, configurarea i lansarea n execuie a SO ........................................... 17
M1.U1.11. Teste de evaluare a cunotinelor .......................................................................... 19
M1.U1.12. Rezumat ................................................................................................................ 20
Modulul 2: Gestiunea proceselor
Introducere ............................................................................................................................... 21
Competene............................................................................................................................... 21
U1. Coordonarea execuiei proceselor ................................................................................. 22
M2.U1.1. Introducere ............................................................................................................... 22
M2.U1.2. Obiectivele unitii de nvare ................................................................................ 22
M2.U1.3. Strile unui proces ................................................................................................... 23
M2.U1.4. Crearea i terminarea proceselor.............................................................................. 26
M2.U1.5. Sincronizarea proceselor.......................................................................................... 25
M2.U1.6. Probleme clasice de coordonare a proceselor .......................................................... 28
M2.U1.7. Fire de execuie........................................................................................................ 31
M2.U1.8. Test de evaluare a cunotinelor............................................................................... 34
M2.U1.9. Rezumat ................................................................................................................... 36
U2. Planificarea execuiei proceselor.................................................................................... 37
M2.U2.1. Introducere ............................................................................................................... 37
M2.U2.2. Obiectivele unitii de nvare ................................................................................ 37
M2.U2.3. Concepte introductive .............................................................................................. 38
M2.U2.4. Strategii fr evacuare ............................................................................................ 45
M2.U2.5. Strategii cu evacuare................................................................................................ 44
M2.U2.6. Teste de evaluare ..................................................................................................... 48
M2.U2.7. Rezumat ................................................................................................................... 49
U3. Starea de interblocare..................................................................................................... 50
M2.U3.1. Introducere ............................................................................................................... 50
M2.U3.2. Obiectivele unitii de nvare ................................................................................ 50
M2.U3.3. Concepte introductive .............................................................................................. 50
M2.U3.4. Evitarea interblocrii pentru resurse cu mai multe elemente................................... 52
M2.U3.5. Evitarea interblocrii pentru resurse cu un singur element...................................... 54
M2.U3.6. Detectarea interblocrii pentru resurse cu mai multe elemente .............................. 56
M2.U3.7. Detectarea interblocrii pentru resurse cu un singur element.................................. 57
M2.U3.8. Alte metode de rezolvare a problemei interblocrii................................................. 59
M2.U3.9. Teste de evaluare a cunotinelor............................................................................. 60
M2.U3.10. Rezumat ................................................................................................................. 61

3
Modulul 3: Gestiunea memoriei
Introducere ............................................................................................................................... 63
Competenele modului ............................................................................................................. 63
U1. Metode clasice de alocare a memoriei ........................................................................... 65
M3.U1.1. Introducere ............................................................................................................... 65
M3.U1.2. Obiectivele unitii de nvare ................................................................................ 65
M3.U1.3. Alocarea memoriei pentru sistemele monoutilizator ............................................... 66
M3.U1.4. Alocarea static a memoriri ..................................................................................... 67
M3.U1.5. Alocarea dinamic a memoriri................................................................................. 70
M3.U1.6. Metoda alocrii memoriei prin camarazi ................................................................ 73
M3.U1.7. Teste de evaluare ..................................................................................................... 75
M3.U1.8. Rezumat ................................................................................................................... 77
U2. Segmentarea i paginarea memoriei.............................................................................. 78
M3.U2.1. Introducere ............................................................................................................... 78
M3.U2.2. Obiectivele unitii de nvare ................................................................................ 78
M3.U2.3. Memoria virtual...................................................................................................... 79
M3.U2.4. Alocarea paginat a memoriei ................................................................................. 81
M3.U2.5. Alocare segmentat.................................................................................................. 84
M3.U2.6. Algoritmi statici de paginare.................................................................................... 87
M3.U2.7. Algoritmi dinamici de paginare ............................................................................... 91
M3.U2.8. Memoria cu acces rapid ........................................................................................... 95
M3.U2.9. Teste de evaluare ..................................................................................................... 95
M3.U2.10. Rezumat ................................................................................................................. 97
Modulul 4. Administrarea fiierelor
Introducere ............................................................................................................................... 98
Competenele modului ............................................................................................................. 98
U1. Administrarea fiierelor.................................................................................................. 98
M4.U1.1. Introducere ............................................................................................................... 98
M4.U1.2. Obiectivele unitii de nvare ................................................................................ 98
M4.U1.3. Conceptul de fiier ................................................................................................... 99
M4.U1.4. Operaii asupra fiierelor ....................................................................................... 102
M4.U1.5. Moduri de organizare a fiierelor........................................................................... 106
M4.U1.6. Conceptul de director(catalog)............................................................................... 109
M4.U1.7. Alocarea spaiului pentru fiiere disc..................................................................... 112
M4.U1.8. Evidena spaiului liber de disc.............................................................................. 115
M4.U1.9. Teste de evaluare ................................................................................................... 116
M4.U1.10. Rezumat .............................................................................................................. 118
Modulul 5. Administrarea perifericelor
Introducere ............................................................................................................................. 119
Competenele modului ........................................................................................................... 119
U1. Administrarea perifericelor.......................................................................................... 119
M5.U1.1. Introducere ............................................................................................................. 119
M5.U1.2. Obiectivele unitii de nvare .............................................................................. 119
M5.U1.3. Organizarea sistemului de I/O ............................................................................... 120
M5.U1.4. Controller de unitate .............................................................................................. 123
M5.U1.5. Metode clasice de administrare a I/O .................................................................... 125
M5.U1.6. Utilizarea ntreruperilor ......................................................................................... 127
M5.U1.7. I/O cu corespondenta in memorie (Memory-Mapped I/O).................................... 130

4
M5.U1.8. Utilizarea zonelor tampon(buffering) ................................................................ 133
M5.U1.10.Teste de evaluare .................................................................................................. 135
M5.U1.11. Rezumat .............................................................................................................. 136
Modulul 6. Studii de caz
Introducere ............................................................................................................................. 138
Competenele modului ........................................................................................................... 138
U1. Sistemele Linux ............................................................................................................. 139
M6.U1.1. Introducere ............................................................................................................ 139
M6.U1.2. Obiectivele unitii de nvare ............................................................................. 139
M6.U1.3. Concepte introductive ........................................................................................... 140
M6.U1.4. Interfaa sistemului cu utilizatorii ......................................................................... 144
M6.U1.5. Tipuri de fiiere i sisteme de fiiere .................................................................... 147
M6.U1.6. Administrarea proceselor...................................................................................... 157
M6.U1.7. Gestiunea memoriei sub Linux ............................................................................. 160
M6.U1.8. Teste de evaluare a cunotinelor.......................................................................... 164
M6.U1.9. Rezumat ................................................................................................................ 165
U2. Sistemele Windows
M6.U2.1. Introducere ............................................................................................................ 168
M6.U2.2. Obiectivele unitii de nvare ............................................................................. 168
M6.U2.3. Generaliti despre sistemele Windows................................................................ 169
M6.U2.4. Componente de nivel sczut ale sistemelor Windows.......................................... 174
M6.U2.5. Administrarea obiectelor....................................................................................... 178
M6.U2.6. Memoria virtual sub Windows............................................................................ 179
M6.U2.7. Administrarea proceselor sub Windows ............................................................... 181
M6.U2.8. Sistemul de fiiere sub Windows.......................................................................... 187
M6.U2.9. Teste de evaluare a cunotinelor.......................................................................... 190
M6.U2.10. Rezumat .............................................................................................................. 191
Rspunsuri/Indicaii de rezolvare a testelor de evaluare ................................................. 193
Bibliografie............................................................................................................................ 196

5
Introducere

Sistemul de operare reprezint componenta software fundamental a unui sistem de calcul.


Sistemul de operare permite aplicaiilor i utilizatorilor s acceseze resursele unui sistem de
calcul. De asemenea, sistemul de operare controleaz modul cum sunt distribuite resursele
sistemului, ncercnd s optimizeze accesarea lor i s ofere un grad ridicat de protecie al
acestora. Un alt scop al unui sistem de operare este s asigure flexibilitate n funcionarea
calculatorului pe care este instalat. Sistemele de operare permit interaciunea sistemului de
calcul cu mai muli utilizatori, execuia simultan a mai multor aplicaii, precum i adaptarea
strategiilor de rspuns la o anumit problem.
Comparativ, dac privim un calculator ca un aeroport, atunci sistemul de operare poate fi
privit ca turnul de control care controleaz traficul. Resursele aeroportului sunt reprezentate
de pistele i avioanele pe care le pune la dispoziie. Fr un turn de control care s asigure
gestiunea i organizarea acestor resurse, pe un aeroport nu s-ar putea evita ntrzierile i
coliziunile. n cazul sistemului de calcul, rolul sistemului de operare este de a coordona
traficul i accesul la resurse, ca i turnul de control al aeropertului. De multe ori, se spune c
dac unitatea central a calculatorului este creierul, atunci sistemul de operare este inima
acestuia.

Obiectivele cursului
Cursul intitulat Sisteme de operare-Concepte teoretice i studii de caz are ca
obiectiv principal nsuirea conceptelor fundamentale pe care se sprijin orice
sistem de operare. Dup parcurgerea acestui curs, studenii i vor schimba
viziunea despre ceea ce nseamn un sistem de calcul. De asemenea, vor obine
abiliti n utilizarea sistemelor de operare cele mai utilizate, cum sunt cele din
familiile Windows i Linux. La sfritul acestui curs, studentul va fi capabil s:
opereze cu noiuni precum: administrarea proceselor, gestiunea memoriei
interne, gestiunea fiierelor, administrarea intrrilor i ieirilor;
explice modalitile de implementare ale mecanismelor fundamentale n cazul
sistemelor Windows i Linux;
s utilizeze interfeele n mod grafic i text oferite de sistemele Windows i
Linux.

Cerine preliminare.
Studenii trebuie s posede cunotine, deprinderi, abiliti obinute n cadrul
cursurilor de Algoritmic i Arhitectura calculatoarelor.

Resurse.
Sisteme de calcul pe care s fie instalate:
- un sistem de operare din familia Windows, respectiv Linux ;
- medii de programare tradiionale (C++, Java);

Structura cursului
Volumul este structurat n ase module, care sunt formate din uniti de nvare.
La rndul su, fiecare unitate de nvare cuprinde: obiective, aspecte teoretice
privind tematica unitii de nvare respective, exemple, teste de evaluare precum

6
i probleme propuse spre discuie i rezolvare.
Primul modul cuprinde o unitate de nvare, prin care cititorul este introdus n
problematica sistemelor de operare. n acest context, este prezentat evoluia
sistemelor de operare, strns legat de evoluia sistemelor de calcul. De asemenea,
se ncearc o definire a conceptului de sistem de operare i stabilirea locului
acestuia n cadrul unui sistem de calcul. Sunt prezentate conceptele fundamentale
cu care lucreaz sistemele de operare si legatura dintre sistemul de operare si
componenta hardware a sistemului de calcul.
Al doilea modul abordeaz problematica gestiunii proceselor i cuprinde trei
uniti de nvare. Prima unitate de nvare prezint coordonarea execuiei
proceselor care, n condiiile multiprogramrii reprezint una dintre problemele
eseniale pe care trebuie s le rezolve sistemul de operare. A doua unitate de
nvare abordeaz problematica planificrii execuiei proceselor, prin care se
realizeaz o servire echitabil a aplicaiilor de ctre unitatea central de prelucrare.
Rezolvarea problemei interblocrii proceselor este esenial n condiiile n care
acestea partajeaz diverse resurse ale siatemelor de calcul, fiind abordat n a treia
unitate de nvare.
Al treilea modul abordeaz problematica gestiunii memoriei interne a sistemelor
de calcul. Memoria intern este una dintre componentele fizice eseniale ale
calculatoarelor i administrarea ei corect reprezint una dintre sarcinile
fundamentale ale sistemelor de operare. Prima unitate de nvare prezint
metodele clasice de alocare a memoriei, specifice primelor generaii de
calculatoare. A doua unitate de nvare abordeaz metodele de alocare a memoriei
care se ntlnesc n cadrul calculatoarelor moderne.
Fiierul reprezint unul dintre conceptele fundamentale ale sistemului de operare,
fiind esenial n pstrarea i manipularea datelor. Administrarea fiierelor
reprezint tematica celui de al patrulea modul de nvare.
Al cincelea modul abordeaz problematica interaciunii dintre sistemul de operare
i dispozitivele de intrare i ieire. Aceast component a sistemului de operare
trebuie s transmit comenzi ctre acestea, s trateze eventuale ntreruperi sau
erori. De asemenea, sistemul de operare trebuie s furnizeze o interfa simpl,
uor de utilizat de ctre utilizator. n acest sens, controlul perifericelor unui
calculator este o preocupare important a proiectanilor de sisteme de operare.
Modulul al aselea prezint modalitile prin care sunt aplicate conceptele
prezentate n cadrul modulelor anterioare n cazul celor mai rspndite sisteme de
operare, cele din familiile Linux i Windows. Modulul este format din dou uniti
de nvare, corespunztoare celor dou clase de sisteme de operare.

Evaluarea va cuprinde att verificarea nsuirii cunotiinelor teoretice prezentate,


ct i utilizarea practic a sistemelor de operare.

7
Modulul 1. Concepte introductive despre sisteme de operare
Cuprins
U1.Concepte introductive despre sisteme de operare ................................................................ 8
M1.U1.1. Introducere ................................................................................................................ 8
M1.U1.2. Obiectivele unitii de nvare ................................................................................. 6
M1.U1.3. Definirea sistemului de operare ............................................................................... 9
M1.U1.4. Evoluia sistemelor de operare................................................................................ 10
M1.U1.5. Tipuri de sisteme de operare.................................................................................... 12
M1.U1.6. Organizarea hardware a sistemelor de calcul ......................................................... 14
M1.U1.7. ntreruperi ............................................................................................................... 15
M1.U1.8. Apelurile de sistem ................................................................................................ 16
M1.U1.9. Conceptul general de proces .................................................................................. 17
M1.U1.10. Generarea, configurarea i lansarea n execuie a SO ........................................... 17
M1.U1.11. Teste de evaluare a cunotinelor .......................................................................... 19
M1.U1.12. Rezumat ................................................................................................................ 20
M1.U1.1. Introducere Dac unitatea central de prelucrare (CPU) reprezint
creierul sistemului de calcul, sistemul de operare (SO) reprezint inima
calculatorului. Atunci cnd un utilizator sau, mai concret o aplicaie solicit o
resurs a sistemului de calcul, aceasta este oferit prin intermediul sistemului de
operare. Cererea respectiv se face printr-o instruciune (comand), care este
analizat de CPU i care transmite un mesaj ctre SO prin care se specific resursa
cerut i condiiile n care aceasta va fi utilizat.
Este dificil s se dea o definiie complet a ceea ce este un SO, n schimb, este
mult mai uor s se vad ce face un SO. Astfel SO ofer facilitile necesare unui
programator pentru a-i construi propriile aplicaii. De asemenea, SO gestioneaz
resursele fizice(memorie, discuri, imprimante etc) i cele logice (aplicaii de
sistem, fiiere, baze de date etc) ale sistemului de calcul, oferind posibilitatea ca
utilizatorii s poat folosi n comun aceste resurse. SO ofer o interfa prin care
aplicaiile utilizator i cele de sistem au acces la componenta hardware. SO ofer
un limbaj de comand prin care utilizatorii pot s-i lanseze n execuie propriile
programe i s-i manipuleze propriile fiiere.
Putem spune c sistemul de operare realizeaz dou funcii de baz: extensia
funcional a calculatorului i gestiunea resurselor.

M1.U1.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o introducere a
studenilor n problematica sistemelor de operare. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice locul sistemului de operare n cadrul sistemului de calcul;
neleag i s explice evoluia sistemelor de operare.
neleag i s explice legtura ntre sistemul de operare i componenta hardware
a sistemului de calcul;
neleag i s explice tipurile de sisteme de operare;
neleag i s explice ncrcarea sistemului de operare.

8
Durata medie de parcurgere a unitii de nvare este de 2 ore.

M1.U1.3. Definirea sistemului de operare


Componentele principale ale unui sistem de calcul (SC) sunt cea fizic(hardware) i cea
logic(software). La rndul ei, componenta logic este format din aplicaii i sistemul de
operare-SO (figura 1.1). Orice utilizator acceseaz diverse aplicaii, prin intermediul unei
interfee care este oferit tot de sistemului de operare.
Utilizator

Aplicaii (medii de programare,


browsere de web, etc)

Sistemul de operare (Nucleu, programe de


baz)

Hardware

Figura 1.1 Rolul unui sistem de operare


Sistemul de operare este format din dou componente: nucleu i programe de baz. Nucleul
este componenta de baz a sistemului de operare care are rolul de a gestiona resursele
sistemului de calcul i de a oferi o interfa aplicaiilor ctre acestea. O descriere detaliat este
prezentat n cadrul acestei uniti de nvare. Programele de baz sunt aplicaiile
fundamentale ale unui sistem de operare, care permit interaciunea cu nucleul i cu
componentele fizice ale sistemului de calcul (interpretoare de comenzi, utilitare de gestiune a
utilizatorilor i a fiierelor, biblioteci etc.).
Funciile de baz ale sistemelor de operare. Aceste funcii coopereaz ntre ele pentru a
satisface cerinele utilizatorilor. n figura 1.2 sunt prezentate interaciunile ntre modulele care
realizeaz funciile SO, precum i ntre aceste module i componentele hard ale sistemului de
calcul.
Administrarea resurselor hardware se refer la modul de acces la procesor, memorie, hard
discuri, comunicare n reea precum i la dispozitivele de intrare/ieire a diverselor aplicaii
care se execut, de sistem sau utilizator. Aceste componente hardware sunt alocate, protejate
n timpul alocrii i partajate dup anumite reguli. Sistemul de operare ofer o abstractizare a
resurselor hardware, prin care se ofer o interfa simplificat la acestea. Dispozitivele fizice,
fiierele i chiar sistemul de calcul au nume logice prin care pot fi accesate de utilizator sau
diverse aplicaii. Accesarea acestor componente se realizeaz prin intermediul driverelor.
Aceast problem va fi discutat pe larg n modulul V.
Administrarea proceselor i a resurselor. Procesul reprezint unitatea de baz a calculului,
definit de un programator, iar resursele sunt elemente ale mediului de calcul necesare unui
proces pentru a fi executat. Crearea, execuia i distrugerea proceselor, comunicarea ntre ele,

9
mpreun cu alocarea resurselor dup anumite politici, sunt aspecte deosebit de importante
care vor fi discutate n detaliu n modulul II.
Gestiunea memoriei. SO aloc necesarul de memorie intern solicitat de procese i asigur
protecia memoriei ntre procese. O parte este realizat prin hard, iar o parte prin soft. Aceast
problem va fi obiectul modulul III.

Sistem ul de operare
A dm inistratorul Sistem ul de gestiune a
proceselor i fisierelor
resurselor

A dm inistratorul A dm inistrarea
m em oriei resurselor hardw are

Procesor M em oria U niti


(Procesoare) intern
H ardw are
Figura 1.2. Organizarea sistemului de operare
Gestiunea fierelor. SO conine o colecie de module prin intermediul crora se asigur
deschiderea, nchiderea i accesul utilizatorului la fiierele rezidente pe diferite suporturi de
informaii. Component de baz a SO, este cel mai des invocat de ctre utilizator i de ctre
operator. Ea va fi subiectul modulul IV.
M1.U1.4. Evoluia sistemelor de operare
Primele calculatoare aprute(generaia I) dispun numai de echipamentul hard. Ele puteau fi
programate numai n cod main, care este introdus n memorie de la o consol. Dup
execuie, se vizualizeaz rezultatele i se corecteaz , eventuale erori. Alocarea timpului de
lucru n sistem se realiza manual; fiecare utilizator primea un anumit interval de timp pentru
a-i executa programele.
Generaia a II-a de calculatoare a durat ntre anii 1955-1965 i este legat de utilizarea
tranzistoarelor, la producerea sistemelor de calcul. Apar o serie de componente hardware noi:
cititorul de cartele, imprimanta, banda magnetic etc. n ceea ce privete componenta
software, principalele aspecte sunt:
- Apare pentu prima dat un compilator pentru un limbaj evoluat (FORTRAN).
- Este realizat monitorul rezident, ce reprezint o form rudimentar de sistem de operare;
datele, textul surs i informaiile destinate monitorului erau citite de pe cartelele perforate.
Acesta realiza att nlnuirea fazelor execuiei programului (compilarea, editarea
legturilor, execuia programului), ct i cea a lucrrilor (job-urilor). Un job era format din
unul sau mai multe programe. ntre cartelele care conin textul surs al programului i datele
de prelucrat, se inserau cartele speciale numite cartele de comand, care se adreseaz acestui
monitor rezident. Astfel, s-a definit un limbaj de control al job-urilor. Prin intermediul lui, se
comand trecerea de la o faz la alta sau de la un job la altul.

10
- Un astfel de mod de prelucrare se numete serial, deoarece job-urile se execut unul dup
altul sau prelucrare pe loturi (Batch processing), adic se execut mai multe job-uri unul
dup altul.
- O caracteristic a acestui sistem este monoprogramarea, adic CPU nu se ocup de alt job
pn cnd nu-l termin pe cel curent.
- Deoarece lucrul cu cartele perforate este incomod, coninutul acestora era transferat pe
benzi magnetice, folosind calculatoare relativ ieftine. Coninutul benzilor era utilizat de ctre
sistemul de calcul n locul cartelelor perforate, unitatea de band fiind intrarea standard.
Analog, rezultatele, sub forma unor linii de imprimant, sunt depuse mai inti ntr-un fisier pe
un suport magnetic, iar la terminarea lucrului, coninutul fiierului este listat la imprimant.
Prin aceast metod, se reduce i timpul de lenevire al CPU datorat vitezei de lucru mai mici a
unor periferice.
-Apare i noiunea de independen fa de dispozitiv a programelor, adic aceeai operaie de
I/O s poat fi realizat de pe diferite dispozitive fizice. Acest lucru se realizeaz prin aa
zisele dispozitive logice de I/O, ce reprezint nite identificatori utilizai de programe, care
sunt asociai prin intermediul SO dispozitivelor fizice.
Generaia a III-a de calculatoare apare n 1965 i este legat de utilizarea circuitelor
integrate. Din punct de vedere hardware, principala component aprut este hard disc-ul.
Principalele aspecte legate de sistemul de operare sunt:
- Apare conceptul de multiprogramare, adic execuia n paralel a mai multor job-uri. Astfel,
se asigur un grad de utilizare mai ridicat al CPU, deoarece atunci cnd un job execut o
operaie de intrare-ieire, CPU poate servi alt job i nu ateapt terminarea acestuia.
- Apariia discurilor magnetice, cu acces direct la fiiere a permis operarea on-line, simultan,
cu mai multe periferice (SPOOLING - Simultaneous Peripherical Operation On-Line). El s-a
obinut prin mbinarea utilizrii zonelor tampon multiple cu conversiile off-line i cu
multiprogramarea.
- Un alt concept fundamental al acestei generaii este de utilizare n comun a timpului CPU
(timesharing). Conform acestui principiu, mai muli utilizatori pot folosi simultan terminale
conectate la acelai calculator. Se elimin astfel o parte din timpii mori datorai diferenei
dintre viteza de execuie a CPU i cea de reacie a utilizatorilor.
Exemple Dintre sistemele de operare specifice acestei generaii de calculatoare,
cele mai reprezentative sunt sistemul SIRIS pentru calculatoarele IRIS 50, care s-
au produs i n ara noastr sub denumirea FELIX 256/512/1024 i sistemul
OS/360 pentru calculatoarele IBM 360.

Generaiei a-IV-a de calculatoare a aprut n anul 1980 i este legat de utilizarea


tehnologiei microprocesoarelor. Principalele caracteristici ale acestei generaii sunt:
- Interactivitatea. Un sistem interactiv permite comunicarea on-line ntre utilizator i
sistem. Utilizatorul are la dispoziie un terminal cu tastatur i ecran, prin care comunic cu
sistemul. Comunicarea se poate face n mod text sau grafic. n astfel de sisteme, utilizatorul
d comanda, asteapt rspunsul i, n funcie de rezultatul furnizat de comanda precedent,
decide asupra noii comenzi. Spre deosebire de sistemele seriale, sistemele interactive au un
timp de rpuns rezonabil de ordinul secundelor.
- Extinderea conceptului de time-sharing prin mbinarea cu interactivitatea i
multiprogramarea.
- Terminal virtual este modalitatea prin care utilizatorul stabilete o sesiune cu sistemul,
fiind o simulare a hardware-ului calculatorului i implementat de ctre sistemul de operare.
Sistemul comut rapid de la un program la altul, nregistrnd comenzile solicitate de fiecare
utilizator prin terminalul su. Deoarece o tranzacie a utilizatorului cu sistemul necesit un
timp de lucru mic al CPU, rezult c ntr-un timp scurt, fiecare utilizator este servit cel puin o

11
dat. n acest fel, fiecare utilizator are impresia c lucreaz singur cu sistemul. Dac sistemele
seriale ncearc s optimizeze numrul de job-uri prelucrate pe unitatea de timp, sistemele
timesharing realizeaz o servire echitabil a mai multor utilizatori, aflai la diverse terminale.
- Odat cu evoluia sistemelor timesharing, s-a realizat o difereniere ntre noiunile de job i
proces (program n execuie). n sistemele timesharing, la acelai moment un job poate
executa dou sau mai multe procese, pe cnd n sistemele seriale un job presupune un singur
proces. ntr-un sistem timesharing multiprogramat procesele se mai numesc i task-uri iar un
astfel de calculator se mai numete i sistem multitasking.
- Redirectarea si legarea in pipe. Aplicarea lor presupune c fiecare program lansat de la un
terminal are un fiier standard de intrare i un fiier standard de ieire. De cele mai multe
ori acestea coincid.cu tastatura, respectiv cu terminalul de la care se fac lansrile. Redirectarea
intrrilor standard (intrare sau/i ieire) permite utilizatorului s nlocuiasc intrarea standard
cu orice fiier, respective s se scrie rezultatele, afiate de obicei pe ecran ntr-un fiier
oarecare, nou creat sau s fie adugate la un fiier deja existent. Informaiile de redirectare
sunt valabile din momentul lansrii programului pentru care se cere acest lucru i pn la
terminarea lui. Dupa terminarea programului se revine la fiierele standard implicite.
Exemplu. Dintre SO cele mai cunoscute ale generaiei a IV-a de calculatoare,
amintim sistemele DOS, Windows, Unix i Linux pentru calculatoare personale
i pentru reele de calculatoare, sistemele RSX pentru minicalculatoare
(calculatoare mainframe).

M1.U1.5. Tipuri de sisteme de operare


Sisteme de operare pentru calculatoare mari. Calculatoarele mari sunt caracterizate de
capacitatea de a procesa volume foarte mari de informatii. Ele lucreaz cu dispozitive de I/O
de capacitate mare de stocare i sunt orientate spre execuia mai multor sarcini n acelai timp.
Pe astfel de calculatoare se pot executa: servere de Web, servere pentru site-uri dedicate
comerului electronic i servere care gestioneaz tranzacii ntre companii. Aceste sisteme de
operare ofer trei tipuri de servicii: procesarea loturilor, procesarea tranzaciilor i partajarea
timpului.
Un sistem de procesare n loturi prelucreaz lucrri obinuite, care nu impun intervenia
utilizatorului.
Exemple de astfel de prelucrri sunt: procesarea operaiilor uzuale din cadrul
companiilor de asigurri, raportarea vnzrilor dintr-un lan de magazine.

Sistemele de procesare a tranzaciilor gestioneaz pachete mari de cereri scurte.

Exemplu de astfel de prelucrare este procesul de cutare/verificare ntr-o baz de


date a unei companii aeriene care conine rezervrile de bilete.

La un astfel de sistem de calcul, sunt legate terminale de la care se introduc un numr mare de
tranzacii diverse.
Exemplu de astfel de sistem de operare este OS/370, care a fost realizat de firma
IBM..

Sisteme de operare pentru calculatoare pe care se execut servere. Aceste sisteme de


calcul fac parte din reele de calculatoare i rolul lor este de a servi cererile aplicaiilor lansate

12
de diveri utilizatori. n funcie de complexitatea operaiilor pe care le execut, aceste
calculatoare pot fi de la calculatoare personale la calculatoare de putere foarte mare.
Exemple de servere: Servere care administreaz utilizatorii unei reele de
calculatoare, servere de fiiere, servere de baze de date, servere de pot
electronic, servere care asigur servicii de Web etc.

Sisteme de operare pentru calculatoare multiprocesor. Aceste sisteme de calcul


ncorporeaz mai multe uniti de prelucrare (procesoare), n vederea creterii capacitii de
prelucrare. Aceste calculatoare necesit sisteme de operare speciale, care s rezolve diverse
probleme specifice legate de ncrcarea echilibrat a procesoarelor, partajarea resurselor etc.
Sisteme de operare pentru calculatoare personale. Aceste sisteme de operare sunt
concepute pentru a oferi posibiliti de lucru unui singur utilizator. Ele pot funciona
individual sau legate n reea. n cadrul unei reele, calculatoarele pe care se execut servere
folosesc variante diferite de sisteme de operare fa de cele ale sistemelor de calcul personale.
Exemplu. Exist patru versiuni ale sistemului Windows 2000: versiunea
Profesional este destinat calculatoarelor individuale; celelalte trei versiuni
(Server, Advanced Server i DataCenter Server) sunt destinate calculatoarelor
server dintr-o reea. Windows 2000 DataCenter Server este destinat serverlor
multi-procesor. Versiunea XP propune dou variante: Windows XP. Net Server,
utilizat de calculatoarele server dintr-o reea i Windows XP Proffesional,
destinat calculatoarelor individuale precum i calculatoarelor client legate n
reea.
Sisteme de operare pentru calculatoare n timp real. Sistemele de calcul n timp real
consider timpul de rspuns ca o caracteristic fundamental a bunei lor funcionri.
S ne reamintim...
Sistemul de operare este parte a componentei software a unui sistem de calcul. El
reprezint o extensie funcional a calculatorului i realizeaz gestiunea
resurselor unui sistem de calcul.
Evoluia sistemelor de operare este legat de cea a sistemelor de calcul care se
mparte n patru generaii de calculatoare. Funciile de baz ale sistemelor de
operare sunt: administrarea resurselor hardware, administrarea proceselor i a
resurselor, gestiunea memoriei i si stemul de gestiune a fisierelor.
nlocuii zona punctat cu termenii corespunztori.
1. Primele calculatoare aprute (generaia I) dispun numai de ................. Ele
puteau fi programate numai n ............, care este introdus n memorie de la .........
2. Generaia a II-a de calculatoare a durat ntre anii ...... i este legat de utilizarea
.........., la producerea sistemelor de calcul. Apar o serie de componente hardware
noi: ......................
3. Monitorul rezident reprezint o form rudimentar de ............ Acesta realiza
att nlnuirea ............................, ct i cea a ....................
4. Generaia a III-a de calculatoare apare n .......... i este legat de utilizarea
............. Din punct de vedere hardware, principala component aprut este
........... Apare conceptul de ............., adic execuia n paralel a mai multor job-uri
5. Terminal virtual este modalitatea prin care utilizatorul stabilete o sesiune cu
..........., fiind o simulare a ............. calculatorului i implementat de ctre
..............

13
M1.U1.6. Organizarea hardware a sistemelor de calcul
Sistemele de calcul se bazeaz pe conceptul de arhitectur Von Neumann, conform cruia
partea de hardware este format din:
Unitatea central de calcul (CPU - Central Processing Unit), compus din unitatea
aritmetic i logic (ALU-Arithmetical-Logical Unit) i unitatea de control.
Unitatea de memorie primar sau executabil sau intern.
Uniti de I/O.
Toate unitile sunt conectate folosind o magistral (bus), care se mparte ntr-o magistral de
date i una de adrese.
Pentru memorie i alte uniti se poate aduga o magistral de I/O, care nu este folosit de
CPU. O astfel de organizare, permite ca o unitate s poat citi/scrie informaii din memorie,
fr alocarea CPU. Fiecare magistral poate fi gndit ca fiind format din mai multe linii
(fire) paralele, care pot pstra o cifr binar.
Unitatea aritmetic i logic conine, pe lng unitatatea funcional un numr de regitri
generali i de stare. Regitrii generali sunt folosii n efectuarea operaiilor aritmetice i logice,
att pentru memorarea operanzilor ncrcai din memorie, ct i a rezultatului operaiei, care
apoi va fi salvat ntr-o locaie de memorie.
CPU extrage i execut instruciunile cod main ale procesului ncrcat n memoria intern.
n acest sens, CPU conine:
o component care extrage o instruciune memorat ntr-o locaie de memorie;
o component care decodific instruciunea;
o component care se ocup de execuia instruciunii, mpreun cu alte componente ale SC.
Regitrii contor de program PC (Program Counter), respectiv registrul instruciune IR
(Instrucion Register), conin adresa de memorie, respectiv o copie a instruciunii n curs de
prelucrare.
Unitile de I/O sau dispozitivele periferice sunt folosite pentru a plasa date n memoria
primar i pentru a stoca cantiti mari de date pentru o perioad lung de timp. Astfel, ele pot
fi uniti de stocare (uniti bloc), cum ar fi discurile, respectiv uniti caracter cum ar fi
tastatura, mouse-ul, display-ul terminalului precum i uniti de comunicaie, cum ar fi portul
serial conectat la un modem sau o interfa la reea. Fiecare unitate folosete un controller de
unitate pentru a o conecta la adresele calculatorului i la magistrala de date. Controller-ul
ofer un set de componente fizice pe care instruciunile CPU le pot manipula pentru a efectua
operaii de I/O. Ca i construcie, controller-ele difer, dar fiecare ofer aceeai interfa de
baz. Sistemul de operare ascunde aceste detalii de funcionare ale controller-lor, oferind
programatorilor funcii abstracte pentru accesul la o unitate, scrierea/citirea de informaii etc.
Componenta sistemulului de operare care manipuleaz dispozitivele de I/O este format din
driverele de unitate.
Moduri de lucru ale procesorului. Procesoarele contemporane conin un bit care definete
modul de lucru al procesorului. Acest bit poate fi setat n modul utilizator sau supervizor. n
modul supervizor, procesorul poate executa orice instruciune cod main, pe cnd n modul
utilizator el poate executa numai o parte dintre aceste instruciuni. Instruciunile care pot fi
executate numai n modul supervizor se numesc instruciuni privilegiate. De exemplu, astfel
de instruciuni sunt cele de I/O. Un proces, dac este executat n mod utilizator, el nu poate
s-i execute propriile instruciuni de I/O. De aceea, aceste instruciuni sunt executate prin
intermediul SO. Cnd un program face o cerere ctre sistem, o instruciune cod main
special este apelat pentru a comuta procesorul n modul supervizor i ncepe s execute
driverul unitii respectiv.

14
Corespunztor celor dou moduri de lucru, memoria intern este mprit n zona de
memorie utilizator i zona de memorie supervizor. Dac bitul mod de lucru este setat pe
utilizator, atunci procesul respectiv are acces numai la zona cu acelai nume. Astfel, se
realizeaz i protecia zonei de memorie supervizor. Nucleul este acea parte a SO care este
executat n modul supervizor. Alte procese, legate de diverse aplicaii ale utilizatorilor sau
chiar aplicaii soft de sistem sunt executate n mod utilizator. Execuia acestor instruciuni nu
afecteaz securitatea sistemului. Cnd un proces dorete s execute anumite operaii n mod
supervizor, atunci se va face o comutare din modul utilizator, n cel supervizor. Acest lucru
se realizeaz prin intermediul unei instruciuni trap, numit instruciune de apel al
supervizorului, care seteaz bitul de mod de lucru i face un salt la o locaie de memorie, care
se afl n spaiul de memorie protejat, locaie care conine nceputul unei proceduri sistem
care va rezolva cererea procesului. Cnd execuia acestei rutine supervizor s-a terminat, SO va
reseta bitul de mod de lucru din supervizor n utilizator.
S ne reamintim...
Sistemele de calcul se bazeaz pe conceptul de arhitectur Von Neumann, conform
cruia partea de hardware este format din:
Unitatea central de calcul (CPU - Central Processing Unit), compus din
unitatea aritmetic i logic (ALU-Arithmetical-Logical Unit) i unitatea de
control.
Unitatea de memorie primar sau executabil sau intern.
Uniti de I/O.
Toate unitile sunt conectate folosind o magistral (bus), care se mparte ntr-o
magistral de date i una de adrese.
nlocuii zona punctat cu termenii corespunztori.
1. Unitatea central de calcul este compus din ........... i ........................
2. Unitile de .......... sau dispozitivele ............... sunt folosite pentru a plasa date
n ................. i pentru a stoca cantiti ............. pentru o perioad ...........de timp.
3. Fiecare unitate folosete un ........ de unitate pentru a o conecta la .........
calculatorului i la ............. de date.
4. Componenta sistemulului de operare care manipuleaz .......... este format din
................ de unitate.
5. Instruciunile care pot fi executate numai n modul ............. se numesc
instruciuni .......................

M1.U1.7. ntreruperi.
Calculatoarele furnizeaz un mecanism prin care diferite componente (hard sau soft) ntrerup
evoluia normal a procesorului, pentru a semnala acestuia diverse evenimente aprute.
Rolul principal al ntreruperilor este de a mbuntii utilizarea procesorului. Acest lucru se
vede cel mai bine atunci cnd se execut operaii de I/O. Cnd se lanseaz execuia unei astfel
de operaii, procesorul nu trebuie s atepte terminarea ei; n acest timp, el poate servi un alt
proces i i se va transmite cnd s-a terminat de efectuat operaia de intrare-ieire printr-o
ntrerupere.
n cadrul unui proces, dup executarea fiecrei instruciuni cod-main, CPU verific dac n
perioada execuiei acesteia a primit ntreruperi. n caz afirmativ, suspend execuia procesului
respectiv i lanseaz n execuie manipulatorul ntreruperilor, care identific rutina care
corespunde ntreruperii respective, care va fi executat n continuare. Dup ce execuia rutinii
respective s-a terminat, se poate relua execuia procesului. Evident, c din punctul de vedere

15
al utilizrii unitii centrale, acest mecanism presupune i el anumite cheltuieli ale acesteia,
dar impactul asupra creterii gradului de utilizare este semnificativ.
Exemple.
Programele pot genera ntreruperi n situaii de excepie (depire a domeniului de
valori la calculul unei expresii, mprire la zero, ncercare de execuie a unei
instruciuni cod main ilegale, ncercare de refereniere a unei locaii de memorie
la care utilizatorul nu are drept de acces etc.)
ntreruperi generate de controllerele perifericelor pentru a semnala terminarea
normal a unei operaii de I/O sau semnalarea unor eventuale erori aprute.
ntreruperi generate de defeciuni hardware aprute (ntrerupere a alimentrii cu
energie electric, eroare de paritate a unei locaii de memorie etc.).
ntreruperi generate de timer-ul procesului, prin care semnaleaz sistemului de
operare s execute anumite funcii, la anumite momente.

M1.U1.8. Apelurile de sistem


Apelurile de sistem furnizeaz o interfa ntre un proces i sistemul de operare. Prin
intermediul acestora, un program utilizator comunic cu sistemul de operare i cere anumite
servicii de la acesta. Apelurile de sistem pot fi mprite n cinci categorii importante:
controlul proceselor (ncrcarea, execuia, sfritul, abandonarea, setarea i
obinerea atributelor, alocarea i eliberarea de memorie etc);
manipularea fiierelor (creere, tergere, deschidere, nchidere, citire, scriere,
repoziionare, setarea i obinerea atributelor);
manipularea unitilor (cerere i eliberare unitate, citire scriere i repoziionare,
obinerea i setarea atributelor, ataarea/detaarea logic);
ntreinerea informaiilor (obinerea i setarea timplui sau datei calendaristice sau a
sistemului, obinerea de informaii despre componentele fizice i logice ale sistemului i
posibilitatea modificrii lor);
comunicaii (crearea i anularea unei conexiuni, transmiterea i primirea de mesaje,
transferul informaiilor de stare, ataarea/detaarea logic a unitilor la distan).
Limbajele de asamblare i limbajele evoluate moderne conin instruciuni(comenzi) prin care
sunt lansate apeluri de sistem. Pentru transmiterea parametrilor, sunt utilizate trei metode:
transmiterea parametrilor prin intermediul regitrilor, atunci cnd numrul lor este
relativ mic;
transmiterea parametrilor sub forma unei tabele (bloc de memorie), a crei adres este
pus ntr-un registru;
punerea parametrilor n vrful stivei, de unde sunt extrai de ctre sistemul de
operare.
Dup transmiterea parametrilor, este declanat o instruciune trap, pentru oferi controlul
sistemului de operare. Cnd sistemul de operare obine controlul, verific corectitudinea
parametrilor i n caz afirmativ execut activitatea cerut. Cnd a terminat de executat rutina
respectiv, sistemul de operare returneaz un cod de stare ntr-un registru, care specific
terminarea normal sau anormal i execut o instruciune de revenire din instruciunea trap,
prin care se red controlul procedurii de sistem, care apoi red controlul execuiei procesului
care a fcut apelul, returnnd anumite valori coninute n parametrii apelului.

16
M1.U1.9 Conceptul general de proces
Dac sistemele de operare cu prelucrare n loturi executau lucrri(job-uri), sistemele de
operare moderne, bazate pe divizarea timpului execut task-uri. Aceste dou concepte
corespund termenului de proces. n cadrul sistemelor de operare, procesul reprezint o entitate
activ, un program n execuie ale crui instruciuni sunt parcurse secvenial i executate de
ctre unitatea central a calculatorului. Dac prin program nelegem o entitate static, o
codificare ntr-un anumit limbaj de programare a unui algoritm, sub forma unui fiier stocat
pe un suport extern de informaie, prin proces definim o entitate dinamic, ncrcat n
memoria intern a sistemului de calcul. Unul sau mai multe procese pot fi asociate unui
program, dar ele sunt considerate entiti distincte.
Orice proces folosete mai multe resurse ale sistemului de calcul: contorul de program (PC
Program Counter) este un registru al UC care conine adresa de memorie a urmtoarei
instruciuni care urmeaz s fie executat; stiva de program conine date utilizate n execuie,
parametri ai subprogramelor, adrese de retur i alte variabile locale; seciunea de date,
conine variabile globale; timpul de lucru al UC; fiiere; dispozitive de I/O etc.
Aceste resurse sunt alocate procesului fie n momentul creerii, fie n timpul execuiei lui. n
multe sisteme, procesul este unitatea de lucru. Astfel de sisteme constau dintr-o colecie de
procese. Sistemul de operare, ca i component soft, este format din mai multe procese, care
execut codul de sistem, pe cnd procesele utilizator execut programe scrise de acetia.
Toate aceste procese se execut simultan la nivelul unui sistem de calcul sau al unei reele de
calculatoare. n mod tradiional, un proces coninea un singur fir de execuie, adic o singur
instruciune cod main este executat de CPU la un moment dat; sistemele de operare
moderne, privesc un proces ca fiind format din unul sau mai mute fire de execuie.
Execuia proceselor este un mecanism combinat hard i soft. Componenta software care este
implicat n administrarea proceselor este sistemul de operare, ale crui sarcini sunt: crearea i
distrugerea proceselor i firelor de execuie; planificarea proceselor; sincronizarea proceselor;
comunicarea ntre procese; manipularea interblocrii proceselor.
M1.U1.10. Generarea, configurarea i lansarea n execuie a sistemului de operare
n cazul generaiilor de calculatoare mai vechi, sistemul de operare este destinat numai unui
anumit tip de calculator.
Exemplu. Sistemul SIRIS este destinat familiei de calculatoare FELIX C-
256,512,1024, iar sistemul de operare RSX este destinat minicalculatoatelor
compatibile PDP, printre care se numr i cele romneti CORAL si
IDEPENDENT.
Sistemele de operare moderne sunt realizate pentru a lucra pe o clas de sisteme de calcul,
care n multe cazuri difer prin configuraia lor. Sistemul trebuie s fie generat(sau configurat)
pentru fiecare sistem de calcul n parte, proces care se numete generarea
sistemului(SYSGEN). Programul SYSGEN citete dintr-un fiier sau cere informaiile care
se refer la configuraia hardware a sistemului respectiv. Prin acest proces sunt determinate
urmtoarele informaii:
Ce fel de CPU este folosit? Care dintre opiunile(set de instruciuni cod main extins,
instruciuni aritmetice n virgul flotant etc) sunt instalate? Dac sistemul este multi-
procesor, fiecare CPU va fi descris.
Ct memorie este disponibil?
Care uniti sunt disponibile? Sistemul trebuie s cunoasc adresele acestor uniti, adresele
ntreruperilor corespunztoare unitilor, precum i nite caracteristici tehnice ale unitilor.

17
Setarea unor parametri ai sistemului de operare, cum ar fi de exemplu, numrul i
dimensiunea zonelor tampon utilizate, numrul maxim de procese care pot fi lansate la un
moment dat, tipul algoritmului de planificare utilizat de CPU etc.
Dup stabilirea acestor informaii, sistemul de operare poate fi utilizat n mai multe moduri:
- administratorul de sistem poate modifica codul surs al sistemului de operare, situaie
n care toate programele surs vor fi recompilate i vor fi refcute legturile;
- selectarea unor module noi care fac parte dintr-o bibliotec precompilat, fiind
necesar numai refacerea legturilor;
- selectarea unor opiuni se face n timpul execuiei, situaie caracteristic sistemelor de
operare moderne.
Unul dintre serviciile de baz ale unui SO este acela de a se putea autoncrca de pe disc n
memoria intern i de a se autolansa n execuie. Aceast aciune se desfoar la fiecare
punere sub tensiune a unui SC, precum i atunci cnd utilizatorul dorete s rencarce SO,
fiind cunoscut sub numele ncrcare sau lansare n execuie a SO. Pentru lansare se
utilizeaz un mecanism combinat hard i soft, numit bootstrap.
Mecanismul bootstrap intr n lucru la apsarea butonului de pornire <START> i cuprinde
urmtoarele etape:
1. Se citete din memoria ROM un numr de locaii consecutive. Aceste locaii conin
instruciunile de copiere ale programului care va ncrca nucleul SO. Motivul pentru care
acest program este stocat n memoria ROM, este c aceasta nu trebuie s fie iniializat i c
procesul respectiv se afl la o adres fix, de unde poate fi lansat n cazul punerii sub tensiune
sau re-setrii sistemului. De asemenea, deoarece ROM este o memorie read-only, ea nu
poate fi virusat.
2. Se lansez n execuie programul citit la pasul anterior, care citete de pe un disc un
program mai complex, care ncarc nucleul sistemului de operare.
3. Se lanseaz n execuie programul citit la pasul anterior care va ncrca nucleul sistemului
de operare.
Observaie. Se pune firesc ntrebarea, de ce programul care ncarc nucleul SO nu este citit
din memoria ROM? Rspunsul este c instalarea unui alt sistem de operare, ar nsemna
modificarea acestui program, deci a coninutului memoriei ROM, care este o problem destul
de costisitoare.
S ne reamintim...
Calculatoarele furnizeaz un mecanism prin care diferite componente (hard sau
soft) ntrerup evoluia normal a procesorului, pentru a semnala acestuia diverse
evenimente aprute. Rolul principal al ntreruperilor este de a mbuntii utilizarea
procesorului.
Apelurile de sistem furnizeaz o interfa ntre un proces i sistemul de operare.
Prin intermediul acestora, un program utilizator comunic cu SO i cere anumite
servicii de la acesta.
n cadrul sistemelor de operare, procesul reprezint o entitate activ, un program n
execuie ale crui instruciuni sunt parcurse secvenial i executate de ctre unitatea
central a calculatorului.
Sistemele de operare moderne sunt realizate pentru a lucra pe o clas de sisteme de
calcul, care n multe cazuri difer prin configuraia lor. Sistemul trebuie s fie
generat(sau configurat) pentru fiecare sistem de calcul n parte, proces care se
numete generarea sistemului.

18
nlocuii zona punctat cu termenii corespunztori.
1. Cnd se lanseaz execuia unei operaii de I/O, ....... nu trebuie s atepte
terminarea ei; n acest timp, el poate servi un alt ..........i i se va transmite cnd s-a
terminat de efectuat operaia de ............. printr-o .............
2. Apelurile de sistem furnizeaz o .........ntre un proces i .......................
3 .n cadrul sistemelor de operare, procesul reprezint o .........., un program n
...........ale crui instruciuni sunt parcurse ............ i executate de ctre ..............
4. Unul dintre serviciile de baz ale unui ............ este acela de a se putea .......... de
pe disc n ............. i de a se .............. n execuie.
M1.U1.11. Test de evaluare a cunotinelor
Marcai varianta corect.

1. Monitorul rezident:
a) Realizeaz prelucrarea serial a job- c) Lucreaz n regim de
urilor. multiprogramare.
b) Permite alocarea memoriei cu partiii d) Execut operaiile de I/O n paralele
fixe. cu efectuarea unor calcule.
2. Conceptul de spooling a aprut odat cu:
a) Apariia hard-discurilor. c) Apariia benzilor magnetice.
b) Apariia generaiei a II-a de d) Apariia cartelelor perforate.
calculatoare.
3. Controller-ul de unitate este:
a) O component software. c) O interfa hardware a unitii de
I/O respective.
b) O component a CPU. d) Un registru al unitii centrale.
4. Nucleul SO este:
a) Componenta SO utilizat n execuia c) Componenta SO utilizat n
proceselor. administrarea unitilor.
b) Componenta SO executat n mod d) Componenta SO executat n mod
supervizor. utilizator.
5. Un proces este:
a) Un program scris ntr-un limbaj de c) Un program n execuie.
programare.
b) Un fiier executabil. d) Un buffer.
6. Care dintre componentele sistemului de operare sunt scrise n limbajul de asamblare al
calculatorului gazd:
a) Nucleul c) Driverele de memorie.
b) Bibliootecile d) Driverele de dispozitiv
7. Instruciunile care pot fi executate numai n modul supervizor se numesc:
a) Instruciuni cod main. c) Instruciuni privilegiate.
b) Instruciuni de asamblare. d) Instruciuni de comutare.
8. Rolul principal al ntreruperilor este de:
a) A mbuntii utilizarea procesorului. c) A mbuntii utilizarea sistemului
de operare.
b) A mbuntii utilizarea nucleului. d) A mbuntii utilizarea sistemului
de fiiere.

19
9. Apelurile de sistem furnizeaz:
a) O interfa ntre un proces i c) O interfa ntre un proces i CPU.
controllerul de unitate.
b) O interfa ntre un proces i sistemul d) O interfa ntre un proces i un
de operare. disc
10. Programul care ncarc nucleul sistemului de operare se citete:
a) Din memoria RAM. c) Din memoria ROM.
b) De la tastatur. d) De pe un disc.

M1.U1.12. Rezumat. Evoluia sistemelor de calcul, reflectat n cele patru


generaii de calculatoare existente pn n prezent, este strns legat i de evoluia
componentelor software, n care sistemul de operare ocup un loc central. Dac
primele calculatoare electronice aprute nu au beneficiat de un sistem de operare,
odat cu generaia a doua de calculatoare apare conceptul de monitor rezident.
Acesta era o form rudimentar de sistem de operare, care a permis prelucrarea
serial a lucrrilor i automatizarea nlnuirii fazelor unei lucrri.
Multiprogramarea, aprut odat cu generaia a treia de calculatoare, a permis
utilizarea mult mai eficient a unitii centrale a unui sistem de calcul. Apar
conceptele de driver de unitate i ntrerupere, care permit o manipulare mai
eficient i facil a unitilor de I/O. De asemenea, apar conceptul de spooling,
care permite o utilizare mai eficient a resurselor unui SC. Odat cu generaia a
patra de calculatoare, apar noi concepte cum ar fi time-sharing, redirectarea i
legarea n pipe, care urmresc interactivitatea sistemelor i un timp de rspuns ct
mai mic. Conceptul de lucarare(job) este nlocuit cu cel de proces(task) i apare
conceptul de multi-tasking.
Prezentarea arhitecturii Von Neumann a unui sistem de calcul, care a rmas un
model viabil i pentru calculatoarele din zilele noastre este util n nelegerea
modului de interaciune dintre sistemul de operare i componentele hardware ale
sistemului de calcul. Pe baza acestui model, se poate face o difereniere a funciilor
i componentelor unui sistem de operare. Astfel, n ceea ce privete execuia
proceselor, se prezint pe scurt ce face CPU i care este rolul sistemului de operare
n gestiunea proceselor, aspect care va fi detaliat ntr-un capitol special. De
asemenea, legat de administrarea unitilor, se scoate n eviden rolul
controllerelor de unitate, ca i componente hard precum i al celor de interfa
software. De asemenea, tot legat de executarea unor operaii de I/O, se prezint
rolul nucleului unui sistem de operare.
Autoncrcarea, generarea i configurarea sistemelor de operare reprezint concepte
care au fost dezvoltate n timp i prin care este optimizat activitatea sistemului de
operare.

20
Modulul 2. Gestiunea proceselor
Cuprins
Introducere .................................................................................................................... 21
Competene ................................................................................................................... 21
U1.Coordonarea execuiei proceselor........................................................................... 22
U2.Planificarea execuiei proceselor ............................................................................ 37
U3.Interblocarea proceselor.......................................................................................... 49
Introducere
Procesul este abstractizarea unui program n execuie i reprezint elementul
computaional de baz n sistemele de calcul moderne. Toate sistemele de operare
moderne au fost construite n jurul conceptului de proces. Multe probleme pe care
sistemul de operare trebuie sa le rezolve, sunt legate de procese.
Administrarea proceselor se refer la toate serviciile oferite de sistemul de operare
pentru gestionarea activitii tuturor proceselor care sunt executate la un moment
dat. Pentru a realiza aceast activitate, sistemul de operare administreaz mai mute
structuri de date care vor fi detaliate n cadrul modulului. Dup definirea
conceptului de proces, sunt prezentate strile n care acesta se poate afla la un
moment dat, precum i tranziiile de la o stare la alta. Conceptul de fir de execuie,
constituie o perfecionare a modelului de proces tradiional i pe care se bazeaz
sistemele de operare moderne.
n condiiile multiprogramrii, sistemul de operare trebuie s realizeze comutarea
CPU de la un proces la altul, n vederea creterii gradului de utilizare al acesteia i
servirii echitabile a tuturor proceselor aflate n execuie la un moment dat. Servirea
de ctre CPU a proceselor se realizeaz pe baza unor metode de planificare a
execuiei acestora, prin care se urmrete att o servire echitabil a proceselor, ct
i servirea prioritar a unora dintre ele, cum este cazul celor care aparin sistemului
de operare.
De asemenea, alocarea resurselor sistemului de calcul ctre procese, se face de
ctre sistemul de operare, pe baza unei anumite strategii. Este discutat problema
interblocrii, care poate apare la alocarea de resurse proceselor. Sunt abordate
condiiile n care apare interblocarea, strategiile folosite n abordarea acestei
probleme, precum i legtura dintre interblocarea i sincronizarea proceselor.

Competene
La sfritul acestui modul studenii vor fi capabili s:
s neleag conceptul general de proces;
s neleag importana utilizrii firelor de execuie;
s identifice strile unui proces;
s explice metodele utilizate n planificarea execuiei proceselor;
s identifice situaiile n care poate apare interblocarea proceselor;
s explice metodele utilizate pentru nlturarea strii de interblocare
s implementeze algoritmii prezentai ntr-un limbaj de programare cunoscut.

21
Unitatea de nvare M2.U1. Coordonarea execuiei proceselor
Cuprins
M2.U1.1. Introducere ............................................................................................................... 22
M2.U1.2. Obiectivele unitii de nvare ................................................................................ 22
M2.U1.3. Strile unui proces ................................................................................................... 23
M2.U1.4. Crearea i terminarea proceselor.............................................................................. 26
M2.U1.5. Sincronizarea proceselor.......................................................................................... 25
M2.U1.6. Probleme clasice de coordonare a proceselor .......................................................... 28
M2.U1.7. Fire de execuie........................................................................................................ 31
M2.U1.8. Test de evaluare a cunotinelor............................................................................... 34
M2.U1.9. Rezumat ................................................................................................................... 36
M2.U1.1. Introducere
Termenul de proces, poate fi definit prin una din urmtoarele modaliti:
- Un program n executie.
- O instan a unui program ce se execut pe un calculator.
- O entitate ce poate fi asignat i executat de un processor.
- O unitate a unei activiti caracterizat de execuia unei secvene de instructiuni,
o stare curent i o mulime de resurse ale sistemului asociat.
Elementele esentiale ale unui proces sunt codul programului (care poate fi
partajat cu un alt procese care execut acelai program) i un set de date asociat
acelui cod.
n condiiile multiprogramrii, procesele trec dintr-o stare n alta, n funcie de
cererile formulate de fiecare proces i resursele sistemului de calcul disponibile la
un moment dat. n momentul trecerii dintr-o stare n alta, cnd procesul respectiv
trebuie s cedeze CPU ctre alt proces se produce comutarea de context, care este
o operaie costisitoare din punctul de vedere al procesorului. Pentru a se evita
aceast situaie, s-a dezvoltat conceptul de fir de execuie; acesta corespunde unei
activiti din cadrul programului respectiv i comutarea CPU de la un fir la altul
este mult mai puin costisitoare.
n contextul multiprogramrii, procesele care se executa n cadrul unui sistem de
cacul sunt cooperante; apare astfel problema sincronizrii execuiei proceselor, n
comunicarea ntre ele i accesarea anumitor resurse necesare.
Optimizarea activitii CPU precum i apariia sistemelor de calcul multiprocesor,
impune utilizarea conceptului de fir de execcuie, care corespunde unei activiti
executate n cadrul unei aplicaii.

M2.U1.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o introducere a
studenilor n problematica gestiunii proceselor. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice tranziiile unui proces dintr-o stare n alta;
neleag i s explice modalitile de creare a proceselor;
neleag i s explice cauzele terminrii proceselor;
neleag i s explice metodele de coordonare a execuiei proceselor;
neleag i s explice utilizarea firelor de execuie.

22
Durata medie de parcurgere a unitii de nvare este de 3 ore.

M2.U1.3. Strile unui proces.


Starea unui proces este definit ca mulimea activitilor executate de acesta. n cele ce
urmeaz vom presupune c avem un sistem de calcul cu un singur procesor(CPU). Strile
unui proces sunt:
New: corespunde definirii procesului. Procesul primete un identificator, se creaz blocul de
control al procesului (despre care vom discuta imediat), se aloc i se construiesc tabelele
necesare execuiei procesului. Pentru o bun funcionare a sistemului, se pune problema
limitrii numrului de procese; pentru procesul respectiv se creaz structurile necesare,
urmnd ca execuia s se fac n momentul n care sistemul poate aloca resursele necesare.
Run: procesul este n execuie, adic instruciunile sale sunt executate de CPU;
Wait: procesul ateapt apariia unui anumit eveniment, cum ar fi terminarea unei operaii de
I/O sau primirea unui semnal;
Ready: procesul este gata de execuie ateptnd s fie servit de ctre procesor;
Finish: terminarea execuiei procesului.
n sistemele cu multiprogramare, procesele trec dintr-o stare n alta, n funcie de specificul
fiecruia sau de strategia de planificare adoptat. n figura 2.1.1 este prezentat diagrama
tranziiilor unui proces n timpul execuiei.

new fin is h

re a d y run

w a it

Figura 2.1.1 Diagrama strilor i tranziiilor unui proces


Tranziiile posibile sunt:
nullnew: Un proces nou este creat pentru a executa un program.
newready: nseamn c procesul este luat n considerare pentru a fi executat; se realizeaz
cnd sistemul dispune de resursele necesare pentru a executa un nou proces i numrul
proceselor din sistem nu depete o anumit valoare.
readyrun: Se produce atunci cnd procesului i este alocat un procesor.
runready: Se produce atunci cnd, conform unei politici de planificare, procesorul trebuie
alocat unui alt proces.
runwait: Se produce atunci cnd procesorul ntlnete o cerere de executare a unei operaii
de intrare/ieire.
waitready: Se produce atunci cnd operaia de I/O s-a terminat.
runfinish: nseamn terminarea execuiei procesului.
M2.U1.4. Crearea i terminarea proceselor
Urmtoarele evenimente conduc la crearea unui nou proces:
- primirea spre execuie a unui nou job (n cazul sistemelor cu prelucrare n loturi);
- loginarea unui nou utilizator (n cazul sistemelor interactive);

23
- crearea procesului de ctre sistemul de operare pentru a oferi un serviciu unui proces
existent n sistem.
- declararea n cadrul unui proces (proces tat) a unui nou proces (proces fiu), care se
vor executa n paralel.
Cnd un nou proces este adugat celor n curs de execuie, sistemul de operare construiete o
structur de date necesar administrrii lui. Aceast structur de date se numete blocul de
control al procesului(PCB Process Control Block); este este o zon de memorie, ce
conine urmtoarele informii:
- identificatorul procesului, prin care se face distincia fa de alte procese din sistem.
- nivelul de prioritate al procesului, n raport cu alte procese din sistem.
- starea procesului, ale crei valori le vom prezenta imediat.
- valoarea contorului de program, care indic adresa urmtoarei instruciuni care urmeaz s
fie executat pentru acest proces.
- valorile regitrilor unitii centrale; cnd apare o ntrerupere i CPU trece la execuia altui
proces, valorile acestor regitri i ale contorului de program trebuie salvate, pentru a permite
reluarea corect a execuiei procesului; cnd procesul primete din nou serviciile CPU,
valorile salvate n PCB-ul procesului respectiv sunt atribuite regitrilor acesteia.
- informaii de contabilizare, referitoare la valoarea timpului CPU utilizat de proces, valori
limit ale timpului CPU, ntre care este executat procesul respective, conturi utilizator,
numere ale altor procese etc; informaii de I/O (lista unitilor de I/O alocate procesului, lista
fiierelor deschise de proces etc.).
- informaii legate de operaiile de I/O ( cereri de operaii de I/O n curs de execuie,
perifericele asignate procesului etc.)
- informaii de planificare a CPU(prioritatea procesului, pointer ctre coada de planificare a
execuiei procesului etc.).
- informaii cu privire la modalitatea de alocare a memoriei interne;
- un pointer ctre un alt PCB.
Observaii.
1. Toate PCB-urile asociate proceselor din sistem active la un moment dat formeaz o list
alocat dinamic.
2. Informaiile coninute n PCB-ul unui proces permite comutarea CPU de la un proces la
altul, astfel nct reluarea execuiei procesului s se fac cu instruciunea urmtoare ultimei
instruciuni executate de CPU.
Terminarea execuiei proceselor se poate realiza din urmtoarele motive:
- Terminare normal. Procesul execut o rutin a sistemului de operare prin care semnaleaz
c a atins i executat ultima instruciune cod main din fiierul executabil.
- Depirea intervalului de timp alocat de sistem.
- Memorie nedisponibil. Procesul cere mai mult memorie dect cea pe care o poate oferi
sistemul.
- Violarea memoriei. Procesul ncearc s acceseze o locaie de memorie la care nu are
permis accesul.
- Eroare de protecie. Procesul ncearc s acceseze o resurs ntr-un mod n care nu-i este
permis.

Exemplu: scrierea ntr-un fiier asupra cruia nu are acest drept.

- Eroare aritmetic. Procesul ncearc s execute o operaie interzis .

24
Exemplu: mprire la zero sau un calcul al crui rezultat depete valoarea
maxim stabilit prin hardware.

- Depirea timpului de ateptare pentru producerea unui eveniment.


- Eec ntr-o operaie de I/O
Exemplu:imposibilitatea gsirii unui fiier, nerealizarea operaiilor de citire sau
scriere dup un anumit numr de ncercri, lansarea unei operaii invalide-citirea de
la imprimant.
- Instructiune invalid. Procesul ncearc s execute o instructiune inexistent.
- Instructiune privilegiat. Procesul ncearc s execute o instructiune rezervat sistemului
de operare.
- Date eronate. Tipul datelor refereniate este eronat sau este invocat o variabil
neiniializat.
- Intervenia unui operator uman sau a sistemului de operare n situaii n care execuia
procesului duce la blocarea sistemului de calcul.
Crearea proceselor presupune parcurgerea urmtorilor pai:
1. Asignarea unui identificator unic procesului nou creat. n acest moment, se adaug o
nou intrare la tabela proceselor active din sistem.
2. Alocarea spaiului pentru proces. Aceasta include toate elementele necesare imaginii
procesului. Sistemul de operare trebuie s cunoasc dimensiunea spaiului de memorie
necesar execuiei procesului (pentru ncrcarea codului, pentru date i stiva utilizator). Aceste
valori pot fi asignate implicit de sistemul de operare pe baza tipului procesului care va fi creat
sau a unor cerine formulate la crearea jobului. Dac un proces este creat n contextul altui
proces, procesul tat poate transmite valorile necesare sistemului de operare.
3. Iniializarea blocului de control al procesului. Partea de identificare a procesului conine
identificatorul acestuia i pe cel al procesului tat. Poriunea de informaii de stare utilizat de
ctre procesor conne mai multe intrri, dintre care o mare parte sunt iniializate cu zero. Fac
excepie contorul de program (setat cu valoarea punctului de intrare in program) i pointerii
de stiv de sistem. Partea de informaii de control a procesului este initializat pe baza unor
valori standard implicite, la care se adaug unele valori pentru attribute care au fost cerute
pentru acest proces.
Exemplu: Starea procesului este iniializat cu Ready. Prioritatea este setat
implicit la valoarea minim, dac nu se specific o valoare superioar. Iniial,
procesul nu posed resurse (periferice, fiiere etc.), cu excepia situaiei n care face
o cerere special sau le motenete de la procesul tat.
4. Seteaz legturile potrivite.
Exemplu: Setarea legturilor din coada de planificare a execuiei proceselor, aflate
n starea ready (administrat de sistemul de operare).

5. Crearea sau expandarea altor structuri de date.


Exemplu: Fiierul cu informaii de contabilizare.

25
S ne reamintim...
Starea unui proces este definit ca mulimea activitilor executate de acesta. Un
proces se poate afla ntr-una dintre strile: new (corespunde definirii procesului), run
( procesul este n execuie), wait ( procesul ateapt apariia unui anumit eveniment),
ready ( procesul este gata de execuie ateptnd s fie servit de ctre procesor), finish
( terminarea execuiei procesului). n sistemele cu multiprogramare, procesele trec
dintr-o stare n alta, n funcie de specificul fiecruia sau de strategia de planificare
adoptat.
Urmtoarele evenimente conduc la crearea unui nou proces: primirea spre execuie a
unui nou job (n cazul sistemelor cu prelucrare n loturi); loginarea unui nou
utilizator (n cazul sistemelor interactive); crearea procesului de ctre sistemul de
operare pentru a oferi un serviciu unui proces existent n sistem; declararea n cadrul
unui proces (proces tat) a unui nou proces (proces fiu), care se vor executa n
paralel.
Cnd un nou proces este adugat celor n curs de execuie, sistemul de operare
construiete o structur de date necesar administrrii lui. Aceast structur de date
se numete blocul de control al procesului.
Terminarea execuiei proceselor se poate realiza din urmtoarele motive:terminare
normal, depirea intervalului de timp alocat de sistem, memorie nedisponibil,
violarea memoriei, eroare de protecie, eroare aritmetic, depirea timpului de
ateptare, eec ntr-o operaie de I/O, instructiune invalid, instructiune privilegiat,
date eronate, intervenia unui operator uman sau a sistemului de operare.

nlocuii zona punctat cu termenii corespunztori.


1. n sistemele cu multiprogramare, procesele trec dintr-o ............. n alta, n
funcie de ................. sau de ................... adoptat.
2. Cnd un nou .............. este adugat celor n curs de ................, sistemul de
operare construiete o ................... necesar administrrii lui. Aceast structur de
date se numete .....................
3. Informaiile coninute n PCB-ul unui proces permite ............... de la un
proces la altul, astfel nct reluarea execuiei ............... s se fac cu instruciunea
urmtoare ultimei instruciuni executate de CPU.
4. Terminarea normal a procesului presupune c acesta execut o ..................
prin care semnaleaz c a atins i executat ultima ................. din fiierul .................

M2.U1.5 Sincronizarea proceselor


Despre un proces se spune c este independent dac execuia lui nu afecteaz sau nu poate fi
afectat de execuia altor procese din sistem. Un astfel de proces poate fi oprit sau repornit
fr a genera efecte nedorite, este determinist(ieirile depind numai de starea de intrare),
reproductibil (rezultatele sunt totdeauna aceleai, pentru aceleai condiii de intrare), nu
partajeaz date cu alte procese din sistem. Dac execuia unui proces poate fi afectat de
execuia altor procese din sistem sau poate influena strile unor procese, atunci spunem c
procesul este cooperant. n acest caz, procesul partajeaz date mpreun cu alte procese din
sistem, evoluia lui nu este determinist, fiind influenat de strile acestora, nu este
reproductibil etc. Sincronizarea proceselor reprezint un mecanism prin care un proces activ
este capabil s blocheze execuia altui proce (trecerea din starea run n ready i invers), sau s
se autoblocheze(s treac n starea wait), sau s activeze un alt proces.

26
Problema seciunii critice. Considerm un sistem n care exist n procese cooperante p0,
p1,.., pn-1. De exemplu, s presupunem c dou dintre procese, p0 i p1 au acces la o variabil
v, primul proces scade o valoare c0, iar al doilea adaug o valoare c1 la v. Dac secvena de
operaii executate de cele dou procese asupra variabilei v se deruleaz necontrolat, atunci
rezultatele sunt total imprevizibile. Putem extinde problema enunat asupra fiierelor, bazelor
de date, tabele din memorie etc. O astfel de resurs logic partajat de ctre dou procese se
numete resurs critic. Partea de program(segmentul de cod) n care un proces acceseaz o
resurs critic se numete seciune critic. Problema care se pune este stabilirea unor reguli
dup care un proces poate s intre n propria sa seciune critic i s comunice celorlate
procese cooperante cnd a prsit-o. Astfel, structura unui proces este:
do{<seciune de intrare>
<seciune critic>
<seciune de ieire>
<seciune rmas>
}while(1);
O soluie corect a problemei seciunii critice trebuie s satisfac urmtoarele condiii:
- excludere mutual: la un anumit moment, un singur proces i execut propria lui
seciune critic;
- evoluie(progres): un proces care nu este n seciunea sa critic, nu poate s
blocheze intrarea altor procese n propriile lor seciuni critice, atunci cnd acestea
doresc acest lucru;
- ateptare limitat: ntre momentul formulrii unei cereri de acces n propria
seciune critic de ctre un proces i momentul obinerii accesului, trebuie acordat
un numr limitat de accese celorlalte procese n propriile lor seciuni critice.
Semafoare. Conceptul de semafor a fost introdus de Dijkstra. Un semafor s este o pereche
(v,q); v este un ntreg ce reprezint valoarea semaforului, fiind iniializat la crearea
semaforului cu o valoare v0 iar q este o coad, iniial vid n care sunt introduse procesele
care nu reuesc s treac de semaforul s.
Asupra semaforului pot aciona dou operaii indivizibile, W(wait) i S(signal), executate
asupra unui anumit proces. Operaia W poate fi considerat ca o ncercare de trecere a
semaforului iar operaia S ca o permisiune de trecere. Efectul celor dou primitive este descris
n continuare, n condiiile n care p este un proces care ncearc s treac de semaforul s.
a) Efectul primitivei W
do {v--:
If (v<0) // procesul p se introduce n coad
{
Stare(p):= wait;
q p}
} while(1):
b) Efectul primitivei S
do { v++:
If (v <= 0) // procesul p este scos din coad i activat
{ q p;
Stare(p): = ready}
} while(1):
Observaii. 1. Dac nw i ns reprezint numrul primitivelor W, respectiv S executate pe
semaforul s, atunci

27
v = v0- nw+ns (2.1.1)
2. Valoarea iniial v0 este un ntreg pozitiv.
3. La un moment dat, dac valoarea semaforului v este negativ, respectiv pozitiv, valoarea
ei absolut reprezint numrul proceselor blocate n coad, respectiv numrul proceselor care
pot trece de semaforul s.
4. Dac presupunem c la un moment dat numrul proceselor care au trecut cu succes de
semaforul s este nt, atunci evident c nt nw. De asemenea:
nt = min{v0+ns,nw} (2.1.2)
5. Modificarea valorilor ntregi ale semafoarelor trebuie s fie executate indivizibil, adic
atunci cnd un process modific valoarea semaforului nici un alt proces nu poate face acest
lucru.
Utilizarea semafoarelor n gestionarea resurselor critice. Putem folosi semafoarele pentru
a rezolva problema unei seciuni critice, partajat de ctre n procese. Procesoarele folosesc n
comun un semafor mutex (mutual exclusion), a crui valoare iniial este 1. Fiecare proces pi
este organizat astfel:
do {
W(mutex);
<seciune critic>
S(mutex);
<seciune rmas>
} while(1);
Observaii.
1. Seciunea critic este precedat de o primitiv W, care aplicat semaforului mutex va
permite intrarea n seciunea critic numai n cazul n care resursa critic cerut este liber.
Dup execuia resursei critice, urmeaz execuia primitivei S asupra aceluiai semafor, al
crei efect este eliberarea resursei i eventual deblocarea unui proces din coada semaforului,
dac aceasta este nevid, care s treac n seciunea sa critic.
2. Operaiile W i S trebuie s fie indivizibile.
3. Pentru a demonstra corectitutinea soluiei, mai nti vom proba proprietatea de excludere
mutual. Numrul proceselor care se se afl la un moment dat n seciunea critic este nt-ns.
Deoarece valoarea iniial a semaforului este 1, conform relaiei (2.1), avem inegalitatea
nt-ns1, care are semnificaia c cel mult un proces se poate afla la un moment dat n
seciunea sa critic. Mai trebuie s artm c dac nici un proces nu se afl n seciunea sa
critic, atunci intrarea unui proces n seciunea sa critic va avea loc dup un interval finit de
timp, care este echivalent cu a arta c dac nici un proces nu se afl n seciunea sa critic,
atunci nu exist procese blocate n coada de ateptare a semaforului. Dac nici un proces nu se
afl n seciunea sa critic, atunci nt=ns. Dac ar exista procese blocate n coada semaforului
mutex, atunci nt>nw i deci n conformitate cu (2.2) nt=1+ns, ceea ce reprezint o
contradicie.
M2.U1.6. Probleme clasice de coordonare a proceselor
Problema productor/consumator. Procesele de tip productor/ consumator apar destul de
frecvent n cadrul sistemelor de operare, de exemplu atunci cnd dou procese comunic ntre
ele. Procesul de tip productor genereaz informaiile(mesajele), care vor fi folosite de ctre
procesul de tip consumator. Aceast problem poate fi rezolvat prin utilizarea unei zone de
memorie accesibil tuturor proceselor care cooperez. Ea este structurat n funcie de natura
informaiilor schimbate i de regulile care guverneaz comunicaia propriu-zis. Aceast zon
comun este o resurs critic, ce trebuie protejat.

28
Fie procesele pi i pj care comunic ntre ele. Cele dou procese partajeaz o zon comun
ZC, care este divizat n n celule-mesaj, n care se depun (productorul), respectiv se extrag
(consumatorul) mesaje de dimensiune fix. Procesele pi i pj au o evoluie ciclic ce
cuprinde operaiile de producere i de depunere, respectiv de extragere i de consumare a unui
mesaj din ZC, aa cum este redat n figura 2.1.2. Depunerea, respectiv extragerea unui mesaj
din zona comun, trebuie s satisfac urmtoarele restricii:
a) Consumatorul nu poate s extrag un mesaj, pe care productorul este n curs s-l
depun, adic operaiile de depunere i extragere trebuie s se execute n excludere
mutual la nivelul mesajului.
b) Productorul nu poate s depun un mesaj atunci cnd ZC este plin, iar dac ZC
este vid, consumatorul nu poate extrage nici un mesaj.
Aceste situaii limit trebuie detectate i semnalate proceselor care depind de ele. Condiia a)
poate fi satisfcut prin introducerea unui semafor de excludere mutual, asociat unei zone
comune ZC, mutex(ZC), iniializat cu valoarea 1. Restricia b) se poate respecta, utiliznd
semafoarele s0 i s1 pentru a nregistra, n orice moment, starea de ocupare a zonei ZC; s0,
iniializat cu 0 va indica numrul de celule-mesaj depuse n ZC, iar s1, iniializat cu n, va
indica numrul celulelor-mesaj libere n ZC.

ZC
Produce Depune Extrage Consum

0 1 n-1

Figura 2.1.2 Structura zonei comune ZC


Descrierea proceselor productor/consumator pi, respectiv pj este prezentat n
continuare.
{pi: proces productor de mesaje}
do {
construiete mesaj:
W(s1);
W(mutex(ZC));
ZCmesaj;
S(mutex(ZC));
S(s1);
} while(1);
{pj: proces consumator de mesaje}
do {
W(s0);
W(mutex(ZC));
ZCmesaj;
S(mutex(ZC));
S(s0);
Consum mesaj
} while(1);
Problema cititori/scriitori. Atunci cnd o structur de date, de exemplu un fiier sau o baz
de date este accesat n comun de ctre mai multe procese concurente, dintre care unele

29
doresc doar s citeasc informaii, iar altele doresc s actualizeze (scrie sau modifice)
structura respectiv, cele dou tipuri de procese se mpart generic n cititori i respectiv
scriitori.
Se impun urmtoarele restricii:
a) Doi cititori pot accesa simultan obiectul partajat;
b) Un cititor i un scriitor nu pot accesa n acelai timp obiectul disputat.
Pentru a respecta cele dou condiii, accesul la resurs va fi protejat; problema de sincronizare
astfel aprut se numete cititori/scriitori. Problema cititori/scriitori poate fi formulat n mai
multe variante, toate implicnd lucrul cu prioriti. Cea mai simpl dintre acestea, impune ca
nici un cititor s nu fie obligat s atepte dect n cazul n care un scriitor a obinut deja
permisiunea de utilizare a obiectului disputat. O alt variant cere ca, de ndat ce un scriitor
este gata de execuie, el s i realizeze scrierea ct mai repede posibil, adic dac un scriitor
ateapt pentru a obine accesul la obiectul disputat, nici un cititor nu va mai primi
permisiunea de a accesa la resurs.
O soluie a primei variante a problemei cititori/scriitori permite proceselor s partajeze
semafoarele A(Acces), Sc(Scrie) i variabila cu valori ntregi C(contor). Sc, iniializat
cu 1 este folosit de ambele tipuri de procese. El asigur excluderea mutual a scriitorilor, este
folosit de ctre primul/ultimul cititor care intr/iese din propria seciune critic, dar nu i de
ctre cititorii care intr/ies n/din aceasta n timp ce ali cititori se afl n propriile seciuni
critice. Semaforul A, iniializat cu 1 este folosit pentru protejarea variabilei C, care este
iniializat cu 0 i are rolul de a memora numrul proceselor care citesc din obiectul partajat
la momentul considerat. Primul cititor care acceseaz resursa critic(C=1) blocheaz accesul
scriitorilor, iar ultimul cititor (C=0), deblocheaz accesul la obiectul partajat.
Descrierea celor dou tipuri de procese este prezentat n continuare.
do { do
W(A); {
C++; W(Sc);
if (C ==1 ) <scrirea>
W(Sc); S(Sc);
S(A); } while(1);
<citirea>
W(A); C--;
if (C == 0) S(Sc);
} while(1);
a) Procesul cititor b) Procesul scriitor
S ne reamintim...
Dac execuia unui proces poate fi afectat de execuia altor procese din sistem sau
poate influena strile unor procese, atunci spunem c procesul este cooperant..
Sincronizarea proceselor reprezint un mecanism prin care un proces activ este
capabil s blocheze execuia altui proce sau s se autoblocheze sau s activeze un alt
proces.
O resurs logic partajat de ctre dou sau mai multe procese se numete resurs
critic. Partea de program(segmentul de cod) n care un proces acceseaz o resurs
critic se numete seciune critic.
Problema productor/consumator se refer la partajarea unei zone de memorie.
Problema cititori/scriitori se refer la partajarea unui fiier.

30
nlocuii zona punctat cu termenii corespunztori.
1. Sincronizarea proceselor reprezint un mecanism prin care un proces .........
este capabil s ................ execuia altui proces sau s se ............... sau s activeze
..............
2. Partea de program(segmentul de cod) n care un proces acceseaz o ..............
critic se numete ........ critic.
3. Excluderea mutual presupune c la un anumit ............., un singur .............
i execut .............
4. Un semafor s este o pereche (v,q); v este un ntreg ce reprezint ..............,
fiind iniializat la ............ semaforului cu o valoare v0 iar q este o coad, iniial ........
n care sunt introduse ................. care nu reuesc s treac de semaforul s.
5. Seciunea critic este precedat de .................., care aplicat ................. va
permite intrarea n .............. numai n cazul n care resursa ............. cerut este
..............
6. Consumatorul nu poate s .............., pe care productorul este ...............,
adic operaiile de depunere i extragere trebuie s se execute n ............ la nivelul
mesajului.

M2.U1.7. Fire de execuie


n mod tradiional, fiecrei aplicaii i corespunde un proces. Pe calculatoarele moderne se
execut aplicaii care, din punct de vedere logic, sunt structurate pe activiti, care se pot
desfura simultan.
Exemplu: n cadrul unui browser de WWW, o activitate poate fi afiarea unor
texte sau imagini, pe cnd alta poate fi regsirea unor informaii de pe anumite
servere dintr-o reea de calculatoare. Un procesor de texte poate executa simultan
afiarea de imagini sau texte, citirea unor comenzi de la tastatur i verificarea
greelilor gramaticale sau de sintax ale textului introdus.
Modelul proceselor, se bazeaz pe dou considerente principale:
- procesul dispune de o colecie de resurse, ntre care un spaiu de memorie, necesare
execuiei sale;
- procesul are un singur fir de control, adic la un moment dat cel mult o singur instruciune
a procesului poate fi n execuie pe un procesor.
ntr-un sistem de operare multiproces, una dintre operaiile de baz ale sistemului de operare,
o constituie comutarea proceselor, conform unui algoritm de planificare. Comutarea
proceselor implic salvarea de ctre nucleu a unor informaii suficiente, care ulterior s fie
restaurate, atunci cnd procesorul respectiv va primi din nou serviciile CPU, pentru ca
execuia s fie reluat cu instruciunea urmtoare celei care a fost executat ultima. Aceste
informaii se refer la diverse categorii de resurse deinute de proces, ceea ce face ca operaia
de comutare a proceselor s fie relativ costisitoare din punctul de vedere al timpului procesor
consumat pentru efectuarea ei. De asemenea, crearea unui nou proces n sistem este o operaie
de o complexitate deosebit.
Att cerinele unor noi domenii de aplicaii, ct i dezvoltrile tehnologice i arhitecturale ale
sistemelor de calcul(n special sistemele multiprocesor), au impus renunarea la condiia de
unicitate a firului de control n cadrul unui proces. A aprut astfel conceptul de fir de
execuie (thread); mai multe asemenea fire pot coexista ntr-un proces, utiliznd n comun
resursele procesului. Avantajele principale fiind:
eliminarea costului crerii de noi procese;

31
simplificarea comutrii, pentru c numrul de informaii salvate/restaurate va fi mai redus;
posibilitatea ca o aplicaie interactiv s-i continue execuia, chiar dac o parte a ei este
blocat sau execut o operaie mai lung n timp; de exemplu, un browser de WWW menine
interaciunea cu utilizatorul, chiar dac a nceput ncrcarea unei imagini;
utilizarea arhitecturilor multiprocesor, care permit ca fiecrui fir de control s-i fie alocat
un procesor.
Firele de execuie pot coexista ntr-un proces(n acelai spaiu de memorie), evident cu
necesitatea de a fi sincronizate atunci cnd solicit acces la resurse partajate, ca i n cazul
proceselor. Resursele proprii fiecrui fir de execuie sunt, n general limitate la: stiv,
variabile locale i numrtor(contor) de program. Variabilele globale ale unui program
vor fi implicit accesibile tuturor firelor din acel program.
Firele de execuie se mpart n:
fire ale utilizatorului, implementate de ctre o bibliotec ce poate fi accesat de ctre
utilizator i care ofer posibiliti de creare, planificare i administrare a thred-urilor, fr a fi
necesar suportul nucleului; acestora li se asigur spaiu de memorie n vederea execuiei lor n
spaiul utilizator;
fire ale nucleului sistemului de operare, implementate de ctre sistemul de operare, care
realizeaz crearea, planificarea i administrarea lor n spaiul nucleului, ele realiznd anumite
operaii protejate cerute de ctre procese.
Utilizarea firelor de execuie se poate realiza folosind mai multe modele:
mai multe fire utilizator care corespund la un fir al nucleului, este caracterizat de
eficien, deoarece administrarea lor este realizat n spaiul utilizatorului, dar n cazul n care
unul dintre firele utilizator genereaz un apele de sistem, prin care intr n starea de blocare,
ntregul proces va fi blocat; de asemenea, deoarece numai un fir de execuie poate, la un
moment dat s acceseze nucleul, nu este posibil ca mai multe fire de execuie s se execute n
paralel, pe un sistem multiprocesor.
un fir utilizator care corespunde la un fir al nucleului permite concurena execuiei,
deoarece atunci cnd un fir de execuie a iniiat un apel de sistem care genereaz blocarea,
celelalte fire de execuie se pot executa n continuare; dezavantajul const n numrul mare de
fire nucleu care trebuie create.
mai multe fire utilizator care corespund la mai multe fire ale nucleului(n numr mai
mic sau egal dect cele ale utilizatorului) este o situaie specific sistemelor multiprocesor,
deoarece este posibil, ca la un moment dat, mai multe fire ale unei aplicaii, care sunt servite
de procesoare diferite, s lanseze un acelai apel de sistem, care s fie rezolvat de fire nucleu
diferite.
Exist mai multe variante conceptuale i de implementare, dup cum firele de execuie se
manifest numai n spaiul utilizator sau au reprezentare i n nucleu. Un astfel de model este
prezentat n figura 2.1.3.
Procesele uoare (lightweight process, prescurtat LWP) pot fi considerate ca o
coresponden ntre firele la nivelul utilizatorului i firele din nucleu. Fiecare proces uor este
legat, pe de o parte de una sau mai multe fire utilizator, iar pe de alt parte, de un fir nucleu.
Planificarea pentru execuie a LWP se face independent, astfel c LWP separate pot fi
executate simultan n sisteme multiprocesor.
Figura 2.1.3 ilustreaz diversele relaii care se pot stabili ntre cele 4 tipuri de entiti. Se
observ, n primul rnd c un LWP este vizibil i n spaiul utilizator, ceea ce nseamn c vor
exista structuri de date corespunztoare LWP att n cadrul unui proces, ct i n cadrul
nucleului. Pe lng situaiile ilustrate n figur, unde exist numai fire de execuie nucleu
asociate unor fire utilizator, nucleul poate conine i fire care nu sunt asociate unor fire

32
utilizator. Asemenea fire sunt create, rulate i apoi distruse de nucleu, pentru a executa
anumite funcii ale sistemului. Utilizarea de fire nucleu n locul proceselor, contribuie la
reducerea costurilor de comutare n interiorul nucleului.

Figura 2.1.3. Modelul firelor de execuie


Exemplu. Procesul 1 din figura 2.1.3 este un proces "clasic": el are un singur fir de
execuie la nivelul utilizatorului, legat cu un LWP. Procesul 2 este o ilustrare a
situaiei n care firele de execuie multiple sunt vizibile numai n spaiul utilizator:
toate sunt puse n coresponden cu un singur LWP, deci la un moment dat numai
unul dintre firele procesului 2 poate fi n execuie, pentru c planificarea se face la
nivelul LWP. Procesul 3 are mai multe fire de execuie, multiplexate pe un numr
mai mic de LWP. Aplicaiile de acest gen conin paralelism, al crui grad poate fi
controlat prin numrul de LWP puse la dispoziie. Procesul 4 are fiecare fir de
execuie pus n coresponden cu un LWP, ceea ce face ca nivelul de paralelism din
aplicaie s fie egal cu cel din nucleu. Acest aranjament este util dac firele de
execuie ale aplicaiei sunt frecvent suspendate cu blocare(fiecare fir suspendat cu
blocare ine blocat i LWP-ul asociat). Procesul 5 conine att fire care
multiplexeaz un numr de LWP, ct i un fir asociat permanent cu un LWP, care la
rndul su este asociat permanent cu un procesor.
S ne reamintim...
Un fir de execuie (thread) corespunde unei activiti din cadrul programului; mai
multe asemenea fire pot coexista ntr-un proces, utiliznd n comun resursele
procesului. Avantajele utilizrii firelor de execuie sunt: eliminarea costului crerii
de noi procese, simplificarea comutrii, posibilitatea ca o aplicaie interactiv
s-i continue execuia, chiar dac o parte a ei este blocat sau execut o operaie
mai lung n timp, utilizarea arhitecturilor multiprocesor, care permit ca fiecrui

33
fir de control s-i fie alocat un procesor.
Firele de execuie pot coexista ntr-un proces(n acelai spaiu de memorie), evident
cu necesitatea de a fi sincronizate atunci cnd solicit acces la resurse partajate, ca i
n cazul proceselor. Firele de execuie se mpart n fire ale utilizatorului i fire ale
nucleului SO. Prin intermediul proceselor uoare firele utilizator acceseaz firele
nucleului sistemului de operare.
nlocuii zona punctat cu termenii corespunztori.
1. Pe calculatoarele moderne se execut aplicaii care, din punct de vedere
........, sunt structurate pe .............., care se pot desfura ................
2. Firele de execuie ale utilizatorului sunt implementate de ctre o ............ ce
poate fi accesat de ctre ....... i care ofer posibiliti de ............................, fr a fi
necesar suportul ..............
3. Fire a de execuie le nucleului sistemului de operare sunt implementate de
ctre sistemul de operare, care realizeaz ............................. lor n spaiul ..............,
realiznd anumite operaii ................... cerute de ctre .................
4. Procesele uoare pot fi considerate ca o ............... ntre firele la nivelul
.............i firele din ................

M2.U1.8. Test de evaluare a cunotinelor


Selectai varianta corect.
1. Un proces blocat(aflat n starea wait) poate trece n starea:
a) Run. c) Ready.
b) New. d) Finish.
2. Structura de date care conine informaii despre un proces se numete:
a)Vectorul de control al c) Blocul de control al procesului.
procesului.
b)Vectorul de control al sistemului d) Blocul de control al sistemului.
3. n ce stare a unui proces se construiete blocul su de control.
a) Run. c) Ready.
b) New. d) Finish.
4. Trecerea unui proces n starea de blocare se poate realiza din starea:
a) Run. c) Ready.
b) New. d) Finish.
5.Care dintre tranziii conduc la creterea gradului de utilizare a CPU, n condiiile
multiprogramrii:
a) runready c) runfinish
b) runwait d) runnew.
6. Condiia de evoluie (progres) nsemn c:
a) Un proces care nu este n c) Un proces care nu este n
seciunea sa critic, nu poate s seciunea sa critic, nu poate s
blocheze ncrcarea unui alt blocheze accesul unui alt proces la
proces n memoria intern. imprimant.
b) Un proces care nu este n d) Un proces care nu este n
seciunea sa critic, nu poate s seciunea sa critic, nu poate s
blocheze intrarea altor procese n blocheze cititirea de date de la
propriile lor seciuni critice, atunci tastatur de ctre alt proces.
cnd acestea doresc acest lucru.

34
7. Condiia de ateptare limitat nseamn:
a) ntre momentul formulrii unei c) ntre momentul formulrii unei
cereri de acces n propria seciune cereri de acces n propria seciune
critic de ctre un proces i critic de ctre un proces i
momentul obinerii accesului, nu momentul obinerii accesului, nu
trebuie efectuate operaii de trebuie ncrcate n memorie alte
intrare/ieire. procese.
b) ntre momentul formulrii unei d) ntre momentul formulrii unei
cereri de acces n propria seciune cereri de acces n propria seciune
critic de ctre un proces i critic de ctre un proces i
momentul obinerii accesului, momentul obinerii accesului, nu
trebuie acordat un numr limitat trebuie acordat dreptul altor procese
de accese celorlalte procese n de a-i accesa propriile resurse
propriile lor seciuni critice. critice.
8. Excluderea mutual nseamn c:
a) La un anumit moment, un c) La un anumit moment, un singur
singur proces i execut propria proces se afl n starea run.
lui seciune critic.
b) La un anumit moment, un fiier d) La un anumit moment, un singur
poate fi accesat de un singur proces poate fi ncrcat n memorie.
proces.
9. Problema productor/consumator se refer la:
a) O metod de comunicare ntre c) O metod de gestionare a unei
procese. zone critice.
b) O metod de partajare a unui d) O metod de administrare a
fiier. memoriei interne.
10. Problema cititori/scriitori se refer la:
a)Partajarea unei resurse c) Partajarea unui fiier.
hardware.
b)Partajarea unei zone de d)Partajarea unui slot din memoria
memorie. cache.
11. Firele de execuie pot coexista:
a) n cadrul aceluiai fiier. c). n cadrul aceluiai proces.
b) n cadrul aceluiai program. d) n cadrul aceleiai pagini de
memorie.
12. Un fir de execuie corespunde:
a) Unei activiti din cadrul c). Unui fiier deschis n cadrul
aplicaiei respective. procesului respectiv.
b) Unui bloc de control al unui d) Unui periferic utilizat de ctre
proces. proces.
13. Procesele uoare pot fi considerate ca:
a) O coresponden ntre firele c)O coresponden ntre procesele
utilizatorului i firele din nucleu lansate n execuie de un utilizator
i fiierele lui.
b) O coresponden ntre ntre d) O coresponden ntre firele i
procesele lansate n execuie de procesele aceluiai utilizator.
un utilizator i discurile utilizate.

35
M2.U1.9. Rezumat
Procesele secveniale reprezint baza modelelor computaionale moderne;
comportarea unui proces secvenial este definit de programul pe care procesele l
execut. Administratorul proceselor rspunde de crearea mediului n care este
executat procesul, incluznd aici i administrarea resurselor. La rndul lui, sistemul
de operare se sprijin pe conceptul de proces. Toate procesele care formeaz
sistemul de operare sunt lansate n execuie dup ce a fost lansat procesul iniial
(boot), prin care este ncrcat sistemul de operare.
Pentru a ajunge fiier executabil, un program trece prin mai multe faze. Programul
este scris n limbaj surs. Dup faza de compilare, este transformat n modul obiect.
Prin editarea legturilor, se ajunge la fiierul executabil. Execuia proceselor este un
mecanism combinat hard i soft. Sistemul de operare este componenta soft care
particip la execuia proceselor. Execuia procesului presupune i alocarea unui
spaiu de memorie. n acest sens, putem spune c administratorul proceselor i cel al
memoriei interne conlucreaz n execuia proceselor.
n cursul execuiei proceselor, acestea trec dintr-o stare n alta n funcie de cererile
de resurse formulate, precum i de disponibilitatea sistemului de a aloca resursele
necesare la momentul respective.
n sistemele moderne, procesele nu lucreaz independent, ele reprezint entiti care
comunic ntre ele. Acestea ofer mecanisme prin care se poate crea o ierarhie de
procese, ceea ce reprezint o modalitate prin care un proces poate controla alte
procese, iar comunicaia ntre ele i gestionarea unor resurse partajate se poate
realiza mult mai eficient. n cursul execuiei lor, procesele concureaz la obinerea
de resurse ale sistemului de calcul. Sistemul de operare realizeaz sincronizarea
proceselor n accesarea acestor resurse.
Firele de execuie reprezint un mecanism pe care se sprijin sistemele de calcul
moderne, care ofer faciliti perfecionate de execuie simultan a mai multor
activiti, n cadrul aceleai sarcini i care permite o comutare mult mai eficient a
CPU, ntre elementele de calcul ce se execut la un moment dat.

36
Unitatea de nvare M2.U2. Planificarea execuiei proceselor
Cuprins
M2.U2.1. Introducere ............................................................................................................... 37
M2.U2.2. Obiectivele unitii de nvare ................................................................................ 37
M2.U2.3. Concepte introductive .............................................................................................. 38
M2.U2.4. Strategii fr evacuare ............................................................................................ 45
M2.U2.5. Strategii cu evacuare................................................................................................ 44
M2.U2.6. Teste de evaluare ..................................................................................................... 48
M2.U2.7. Rezumat ................................................................................................................... 49
M2.U2.1. Introducere
n condiiile multiprogramrii, decizia de a aloca procesorul ( sau unul dintre
procesoare n cazul sistemelor multiprocesor) unui anumit proces din sistem este o
decizie fundamental care este luat cu sprijinul sistemului de operare. Aceast
activitate urmrete ndeplinirea anumitor obiective ale sistemului: timp de rspuns
ct mai mic; cresterea productivitii sistemului, exprimat prin numrul de
procese sau thread-uri executate pe unitatea de timp (or); creterea gradului de
utilizare a CPU.
Planificariea execuiei proceselor poate fi mprit n:
planificare pe termen lung - se refer la decizia de a aduga un nou proces pentru
a fi executat, pe lng cele care se afl n execuie (trecerea n starea new);
planificare pe termen mediu - se refer la decizia de a aduga un nou proces
pentru a fi ncrcat n memorie n vederea execuiei (trecerea n starea ready);
planificare pe termen scurt - se refer la decizia de a selecta unul dintre procesele
aflate n starea ready pentru a primi serviciile CPU(trecerea n starea run).
n cadrul unitii de nvare sunt prezentate diverse strategii de planificare, care au
evoluat odat cu progresele realizate de ctre componentele software i hardware.
Dac prelucrarea serial folosea strategii prin care un proces nu ceda CPU pe toat
perioada execuiei lui, strategiile utilizate de sistemele care se bazeaz pe
partajarea timpului ncearc s rspund cerinelor servirii echitabile a tuturor
proceselor i realizrii unui timp de rspuns ct mai mic n cazul proceselor care au
o prioritate nalt.
n cele ce urmeaz, ne vom referi la metode de planificare pentru sistemele cu un
singur procesor.

M2.U2.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n planificarea execuiei proceselor. La sfritul acestei uniti de nvare
studenii vor fi capabili s:
identifice componentele a planificatorului;
neleag i s explice metodele de planificare a execuiei proceslor;
identifice implicaiile metodelor de planificare n creterea performanelor
sistemelor de calcul;
implementeze algoritmii prezentai.

Durata medie de parcurgere a unitii de nvare este de 2 ore.

37
M2.U2.3. Concepte introductive
Planificare pe termen lung se refer la ce programe sunt admise de sistem pentru a fi
prelucrate. Astfel, se controleaz gradul de multiprogramare. Odat admis, un program sau
job devine proces si el este adaugat la coada proceselor planificate pe termen scurt. n aceast
situaie sistemul trebuie s ia dou decizii:
1. Cnd sistemul de operare poate s ia n considerare unul sau mai multe programe sau job-ri
care s devin procese; o astfel de decizie ine cont de gradul de multiprogramare. Limitarea
gradului de multiprogramare de ctre planificator urmrete s asigure proceselor n curs de
execuie un timp rezonabil pe care s l petreac n sistem. De fiecare dat cnd se termin
execuia unui proces, planificatorul decide dac este cazul s creeze nc unul sau mai multe
procese, dac procentul de timp de lenevire al CPU depete un anumit prag.
2. Care dintre programe sau job-uri s devin procese. Aceast decizie se poate lua pe baza
mai multor criterii:
- mprirea pe clase de prioriti a programelor;
- ce resurse cerute sunt disponibile la momentul respectiv.
Exemplu. ntr-un sistem bazat pe partajarea timpului, atunci cnd un utilizator
ncearc s se logineze, cererea poate s fie respins, deoarece cererea de execuie
a procesului de loginare nu poate s fie satisfcut din cauza suprasaturrii
sistemului, urmnd ca cererea respectiv s fie luat n consideraie dup o nou
ncercare de loginare a utilizatorului.

Planificarea pe termen mediu se poate realiza din diverse motive:


- trecerea din starea new n starea ready;
- revenirea din starea de blocare;
- rencrcarea unui proces care a fost salvat pe disc(swaped); se ntlnea mai ales la sistemele
care nu aveau memorie virtual.
Planificarea pe termen scurt. Obiectivul principal al planificrii pe termen scurt este de a
aloca proceselor timpul CPU astfel nct s se optimize unul sau mai multe aspecte ale
funcionrii sistemului de calcul. n acest sens, sunt stabilite unul sau mai multe criterii, pe
baza crora se evalueaz politicile de planificare. Aceste criterii pot fi orientate ctre utilizator
sau ctre sistem.
Criteriile orientate ctre utilizator sunt:
Timpul petrecut n sistem de proces - intervalul de timp dintre momentul transmiterii
procesului i cel al terminrii execuiei; include timpul necesar execuiei, plus timpul petrecut
pentru a atepta la diverse resurse, inclusive procesorul. Este potrivit mai ales pentru sistemele
cu prelucrare n loturi.
Timpul de raspuns - este indicat pentru sistemele interactive i reprezintn intervalul de timp
dintre momentul lansrii procesului i cel al terminrii lui.
Termenul limit la care un proces trebuie executat. Cnd este prevzut, celelalte criterii sunt
subordonate.
Criteriile orientate ctre sistem sunt:
Productivitatea - reprezint numrul de procese executate pe unitatea de timp.
Gradul de utilizare al procesorului - procentul de timp n care procesorul este ocupat.

38
Evitarea nfometrii - timpul de ateptare al proceselor pentru a fi servite de processor este
suficient de mic.
Utilizarea prioritilor - procesele cu prioritate mai nalt s fie servite preferenial de CPU.
ncrcarea (Utilizarea) echilibrat a resurselor - resursele s nu fie ocupate pentru un interval
de timp mare ( sunt implicate i celelalte strategii de planificare).
Structura planificatorului. n figura 2.2.1 sunt scoase n eviden componentele
planificatorului precum i conexiunile dintre ele.

D in a lte
st r i E lib e r a r e C P U

D e s c r ip to r ii d e
P r o c e s e c a r e tr e c n p rocese
sta r e a R E A D Y

G e s tio n a r u l L is ta
c o z ii READY

C o m u ta to r
D is p e c e r d e c o n te x t CPU

Figura 2.2.1. Structura planificatorului


Gestionarul cozii proceselor care atept s primeasc serviciile CPU. Cnd un proces trece
n starea READY, descriptorul su este prelucrat i este introdus ntr-o coad nlnuit
numit lista READY; aceast coad este organizat pe prioriti, care sunt calculate de ctre
gestionarul cozii, ori la introducerea procesului n coad sau n momentul selectrii unui
proces pentru a fi servit de ctre CPU.
Comutatorul de context (CS-Context Switcher). n momentul cnd planificatorul comut
CPU de la execuia unui procesului, la un alt proces, salveaz coninuturile tuturor regitrilor
CPU (PC, IR, starea procesului, starea ALU etc.) relative la procesul n execuie. Exist dou
modaliti prin care se execut aceast comutare de context:
- voluntar, care presupune c procesul care deine CPU, cere el nsui eliberarea acesteia
pentru a fi acordat unui alt proces.
- involuntar, care presupune c eliberarea CPU se face prin intermediul unei ntreruperi.
Aceast metod presupune existena unui dispozitiv de msurare a intervalelor de timp,
care s genereze o ntrerupere oricnd expir intervalul de timp alocat procesului. O astfel de
metod de planificare se mai numete i planificare cu evacuare sau cu forare.
Salvarea contextului procesului. Cnd CPU este multiplexat, apar dou tipuri de comutare
a contextului. n primul caz, se realizeaz salvarea contextului procesului care este n curs de
execuie de ctre SO i este ncrcat cel al dispecerului. A doua situaie const n cedarea CPU
de ctre dispecer i ncrcarea procesului care urmeaz s fie servit de ctre CPU. Salvarea
contextului este o operaie destul de costisitoare, care poate afecta performanele sistemului.
Dac notm cu n, numrul regitrilor generali i cu m numrul regitrilor de stare i dac
presupunem c pentru a salva un singur registru sunt necesare b operaii, fiecare instruciune
de stocare necesitnd K uniti de timp, atunci pentru salvarea strii procesului sunt necesare
(n+m)bK uniti de timp.

39
Dispecerul este cerut pentru a selecta un nou proces aflat n lista READY, pentru a fi servit
de ctre CPU, indiferent de modalitatea de eliberare a CPU. Acest lucru se poate realiza n
dou moduri:
Procesul elibereaz n mod voluntar CPU, cnd face o cere de resurs, trecnd astfel
controlul administratorului resurselor; CPU fiind eliberat, alte procese o pot utiliza. Dup
terminarea utilizrii resursei cerute, procesul revine n starea READY. Dac resursa cerut nu
este disponibil, procesul este blocat (starea WAIT), pn cnd resursa devine liber, iar dup
alocarea i utilizarea ei trece n starea READY.
Procesul poate fi evacuat n mod involuntar din utilizarea procesorului.
Performane. Planificatorul are o influen major asupra performanelor unui calculator,
care lucreaz n regim de multiprogramare, deoarece el decide cnd un proces este servit de
ctre CPU. Dac momentul cnd un proces este selectat s fie servit, tinde ctre momentul
cnd este introdus n lista READY, atunci putem spune c el va fi servit aprope cnd dorete.
n schimb, dac un proces este neglijat de ctre dispecer(fenomenul de nfometare), atunci
va sta destul de mult n starea READY, deci timpul su de execuie va fi destul de mare. De
asemenea, performanele planificatorului sunt influenate de timpul necesar pentru comutarea
contextului. Toate aceste aspecte sunt influenate att de componentele hardware, ct i de
cele software, reprezentate de componenta de planificare a SO.
Notaii.n cele ce urmeaz vom nota cu P = { p0 ,.., pn 1} mulimea celor n procese din sistem,
S ( pi ) este starea procesului pi , i = 0 ,..,n-1, S(pi ) {RUN, READY, WAIT} . De asemenea
( pi ) este timpul efectiv de servire, adic intervalul de timp ct procesul pi va fi n starea
RUN; W ( pi ) este intervalul de timp petrecut de proces n starea READY pna la prima
tranziie n starea RUN. De asemenea, T ( pi ) reprezint timpul total petrecut n sistem de
proces, din momentul cnd procesul intr pentru prima dat n starea READY, pn cnd este
executat.
Partiionarea unui proces n procese mai mici. Presupunem c un proces intercaleaz
efectuarea de calcule, cu cereri de efectuare a unor operaii de I/O, astfel nct el solicit CPU
pentru k periode de timp distincte i, deci va executa k cereri de efectuare a unor operaii de
I/O. Atunci, timpul total de servire ct i este alocat CPU va fi ( pi ) = 1 + ... + k
De asemenea, dac d1,..,dk sunt timpii necesari efecturii operaiilor de I/O, atunci timpul
ct procesul va sta n sistem va fi 1 + d1 + ... + k + d k
Presupunem c procesul pi este descompus n k procese pi1,...,pik, n care ij este
timpul de servire pentru pij. De asemenea, fiecare proces pij este executat printr-o
prelucrare care nu este ntrerupt de alte procese. Reamintesc c orice proces poate fi orientat
ctre efectuarea de calcule sau de operaii de I/O. O astfel de descompunere urmrete ca
procesele mai mici s fie orientate spre calcule sau spre operaii de I/O, n scopul de a se evita
ct mai mult operaiile costisitoare de comutare.
Un model simplificat de planificare a proceselor. Cererile de servicii adresate unitii
centrale se intercaleaz cu cereri de alocri de resurse. Pe baza consideraiilor anterioare,
modelul de planificare al proceselor poate fi simplificat, nelund n consideraie efectele
datorate competiiei pentru alocarea resurselor, exceptnd CPU(figura 2.2.2). n cadrul acestui
model, procesul poate fi numai ntr-una din strile RUN sau READY.

40
Numai pentru algoritmi cu evacuare

Proces nou Executat


Lista Ready Planificator CPU

Figura 2.2.2. Structura planificatorului simplificat


S ne reamintim...
Planificariea execuiei proceselor poate fi mprit n planificare pe termen lung,
planificare pe termen mediu i planificare pe termen scurt.
Planificare pe termen lung se refer la ce programe sunt admise de sistem pentru a fi
prelucrate.
Planificarea pe termen mediu se refer la ce procese urmeaz s concureze pentru a fi
servite de CPU.
Planificarea pe termen scurt are ca obiectiv principal alocarea proceselor timpul CPU,
astfel nct s se optimize unul sau mai multe aspecte ale funcionrii sistemului de
calcul.
Planificatorul este format din: gestionarul cozii proceselor care atept s primeasc
serviciile CPU, comutatorul de context i dispecer.

I. Rspundei la urmtoarele ntrebri.


1. Care dintre tipurile de planificare controleaz gradul de multiprogramare al
sistemului.
2. Din ce motive este necesar planificarea pe termen mediu.
3. Care dintre tipurile de planificare urmarete modalitille de alocare a timpului
CPU proceselor.
4. n cadrul planificrii pe termen scurt, care criteriu de eficien este specific
sistemelor interactive.
5. Care este diferena dintre gestionarul cozii proceselor i dispecer.
6. Ce este comutarea de context? n cazul cror metode de planificare capt o
importan major comutarea de context..
7. n cadrul modelului simplificat de planificare, n ce stri se poate afla un proces.
M2.U2.4. Strategiile fr evacuare
Aceste strategii permit unui proces ca atunci cnd i este alocat CPU s fie executat complet,
deci nu mai exist procesul de comutare i nici cel de introducere i extragere din lista
READY. Aceste metode se bazeaz pe modelele de ateptare.
Algoritmul FCFS(First Come First Served) sau FIFO (First In First Output). Conform
acestui algoritm, lucrrile sunt servite n ordinea lor cronologic n care cer procesorul.
Dispecerul va selecta lucrarea pentru care timpul de ateptare este cel mai lung. Lista READY
este organizat pe principiul FIFO, administratorul cozii adugnd lucrri la sfritul cozii, iar
dispecerul scoate lucrrile pentru a fi servite de CPU din capul cozii. Este un algoritm simplu,
dar nu foarte eficient.

41
Exemplu. S presupunem c exist 5 joburi n sistem, p0,p1,p2,p3,p4 cu
timpii de execuie 350, 125, 475, 250 respectiv 75. Dac acestea sosesc n
ordinea prezentat, ordinea temporal a execuiei lor, este reliefat prin diagrama
Gantt din figura 2.2.3. Avem:
T ( p0 ) = ( p0 ) = 350
T ( p1 ) = ( p1 ) + T ( p0 ) = 125 + 350 = 475
T ( p2 ) = ( p2 ) + T ( p1 ) = 475 + 475 = 950
T ( p3 ) = ( p3 ) + T ( p2 ) = 250 + 950 = 1200
T ( p4 ) = ( p4 ) + T ( p3 ) = 75 + 1200 = 1275
Media timpilor petrecui n sistem va fi deci
T = (350 + 475 + 950 + 1200) / 5 = 850
De asemenea timpii de ateptare vor fi: W ( p0 ) = 0 , W ( p1 ) = T ( p0 ) = 350 ,
W ( p2 ) = T ( p1 ) = 475 , W ( p3 ) = T ( p2 ) = 950 , W ( p4 ) = T ( p3 ) = 1200
Deci media timpului de ateptare pn la servire, va fi
W = (0 + 350 + 475 + 950 + 1200) / 5 = 595 .
Dac ordinea de sosire este p4,p1,p2,p3,p0 vom avea
T ( p4 ) = ( p4 ) = 75
T ( p1 ) = ( p1 ) + T ( p4 ) = 125 + 75 = 200
T ( p2 ) = ( p2 ) + T ( p1 ) = 200 + 475 = 675
T ( p3 ) = ( p3 ) + T ( p2 ) = 250 + 675 = 925
T ( p0 ) = ( p0 ) + T ( p3 ) = 75 + 925 = 1000
Media timpilor petrecui n sistem va fi deci
T = (75 + 200 + 675 + 925 + 1000) / 5 = 2875 / 5 = 575
De asemenea timpii de ateptare vor fi: W ( p4 ) = 0 , W ( p1 ) = T ( p4 ) = 75 ,
W ( p2 ) = T ( p1 ) = 200 , W ( p3 ) = T ( p2 ) = 675 , W ( p1 ) = T ( p3 ) = 925
Deci media timpului de ateptare pn la servire, va fi
W = (0 + 75 + 200 + 675 + 925) / 5 = 1875 / 5 = 355

p4

p3

p2

p1

p0

0 350 475 950 1200 1275

Figura 2.2.3. Ordinea execuiei proceselor folosind strategi FCFS

42
Observaie. Mediile timpilor petrecui n sistem precum i a timpilor de ateptare sunt mai
mici n cazul al doilea. Mai mult, aceste medii descresc, dac ordinea de mrime a timpilor de
servire respect ordinea de sosire.
Algoritmul SJN (Shortest Job Next) se bazeaz pe observaia anterioar. De fiecare dat,
jobul care se execut primul este cel care consum cel mai puin timp CPU. Probabil c acest
algoritm este cel mai bun, ns are dezavantajul c ar trebui s se cunoasc dinainte timpul
CPU necesar al fiecrui proces.
Exemplu. Considernd procesele prezentate n exemplul anterior, conform
acestei metode ordinea de execuie este p4,p1,p3,p0,p2 , reliefat n diagrama
Gantt din figura 2.2.4 i atunci:
T ( p4 ) = ( p4 ) = 75
T ( p1 ) = ( p1 ) + T ( p4 ) = 125 + 75 = 200
T ( p3 ) = ( p3 ) + T ( p1 ) = 250 + 200 = 450
T ( p0 ) = ( p0 ) + T ( p3 ) = 350 + 450 = 800
T ( p2 ) = ( p2 ) + T ( p0 ) = 475 + 800 = 1275
Media timpilor petrecui n sistem va fi deci
T = (75 + 200 + 450 + 800 + 1275) / 5 = 2450 / 5 = 490
De asemenea timpii de ateptare vor fi: W ( p4 ) = 0 , W ( p1 ) = T ( p4 ) = 75 ,
W ( p3 ) = T ( p1 ) = 200 , W ( p0 ) = T ( p3 ) = 450 , W ( p2 ) = T ( p0 ) = 800
Deci media timpului de ateptare pn la servire, va fi
W = (0 + 75 + 200 + 450 + 800) / 5 = 1525 / 5 = 305 .
Se observ c valorile calculate ale factorilor de eficien sunt mult mai mici dac
se folosete aceast metod fa de cea anterioar.

p2

p0

p3

p1

p4

0 75 200 450 800 1275

Figura 2.2.4. Ordinea temporal a execuiei proceselor folosind strategia SJN


Algoritmul bazat pe prioriti. n funcie de importana lor, job-urile sunt mprite n clase
de prioriti. Fiecare job are asociat o prioritate. Aceste prioriti sunt numere naturale, un
proces avnd prioritate fa de altul dac numrul alocat are o valoare mai mic. Toate
joburile care au asociat o aceeai prioritate formeaz o clas. Prioritile job-urilor sunt
calculate de administratorul cozii, atunci cnd intr n lista READY. Joburile se ordoneaz
dup aceste prioriti, apoi se execut n aceast ordine. n cadrul aceleiai clase se aplic
disciplina FIFO.
Se disting dou tipuri de prioriti: interne i externe. Prioritile interne sunt acordate pe
baza unor particulariti ale procesului, relative la mediului de calcul respectiv, cum ar fi de

43
exemplu timpul de execuie. Prioritile externe reflect importana sarcinii pe care
procesul respectiv o execut, stabilit pe baza anumitor informaii cum ar fi de, exemplu
numele utilizatorului(cui aparine procesul respectiv), natura sarcinii(ct de important este
problema pe care o rezolv) etc.
Exemplu. Presupunem c avem 5 procese p0,p1,p2,p3,p4 ale cror prioriti
sunt 5,2,3,1,4 iar timpii de execuie sunt cei din exemplul anterior. Diagrama
Gantt din figura 2.2.5 descrie ordinea execuiei proceselor.
Vom avea:
T ( p0 ) = ( p0 ) + ( p4 ) + ( p2 ) + ( p1 ) + ( p3 ) = 350 + 75 + 475 + 125 + 250 = 1275
T ( p1 ) = ( p1 ) + ( p3 ) = 125 + 250 = 375
T ( p2 ) = ( p2 ) + ( p1 ) + ( p3 ) = 475 + 125 + 250 = 850
T ( p3 ) = ( p3 ) = 250
T ( p4 ) = ( p4 ) + ( p2 ) + ( p1 ) + ( p3 ) = 75 + 475 + 125 + 250 = 925
Deci media timpului de ateptare va fi
T = (1275 + 375 + 850 + 250 + 925) / 5 = 735
De asemenea, timpii de ateptare se pot detemina ntr-un mod asemntor celui
din exemplul anterior, acetia fiind: W(p0)=925, W(p1)=250, W(p2)=375,
W(p3)=0,W(p4)=850. Deci media timpului de ateptare va fi
W(p0)=(925+250+375+0+850)/5=480
Alegerea prioritilor pentru procese este o problem important, pentru ca aceast metod de
planificare s fie eficient. Exist pericolul apariiei fenomenului de nfometare, adic s
existe o mulime nevid de procese care au o prioritate slab pentru un interval de timp
suficient de mare i deci, care s atepte un timp prea mare pn cnd vor fi executate. Pentru
a se evita acest fenomen, se poate considera drept criteriu de acordare a prioritilor timpul de
cnd jobul respectiv se afl n sistem.
Toate celelalte strategii folosite, sunt cazuri particulare ale acestora. n cadrul strategiei FIFO,
prioritile sunt alocate n funcie de ordinea sosirii n sistem, pe cnd n cazul SJN
prioritile sunt alocate n funcie de dimensiunea timpului procesor necesar execuiei job-ului
respectiv.

P0

p4

p2

p1

p3

0 250 375 850 925 1275

Figura 2.2.5. Ordinea temporal a execuiei proceselor folosind strategia bazat pe prioriti

44
S ne reamintim...
Strategiile fr evacuare permit unui proces ca atunci cnd i este alocat CPU
s fie executat complet.
Conform algoritmului FCFS, lucrrile sunt servite n ordinea lor cronologic n
care cer procesorul.
Algoritmul SJN presupune execuia job-urilor n ordinea cresctoare a timpilor
lor de execuie.
Algoritmul bazat pe prioriti presupune mprirea lucrrilor n clase de
prioriti i execuia lor conform apartenenei la acest clas. Celelalte metode
sunt cazuri particulare ale acesteia.

I. Rspundei la urmtoarele ntrebri.


1. Crui tip de prelucrare sunt specifice strategiile fr evacuare.
2. Care este dezavantajul metodei FCFS.
3. Care sunt avantajele i dezavantajele metodei SJN.
4. Care sunt avantajele metodei bazat pe mprirea job-urilor n clase de
prioriti.
5. Cum se poate evita apariia fenomenului de nfometare n cazul folosirii
metodei bazat pe mprirea job-urilor n clase de prioriti.
6. Justificai de ce metoda bazat pe mprirea job-urilor n clase de prioriti
este o generalizare a celorlalte metode.
II. 1. Presupunem c ntr-un sistem cu un singur procesor sosesc 5 job-uri p0,
p1, p2, p3, p4 i timpii de servire sunt 80, 20, 10, 20, 50.
i) Dac strategia de servire a joburilor este FCFS iar ordinea este cea specificat
anterior, s se descrie ordinea temporal a execuiei cu ajutorul unei diagrame
Gantt i s se determine factorii de eficien ai sistemului. Discuie.
ii) Aceleai cerine dac politica de servire este SJN. Discuie.
2. Dac sistemul folosete planificarea bazat pe prioriti, n care prioritatea
este implementat prin asocierea unui numr natural fiecrui job, n care un
numr mai mic nseamn o prioritate mai nalt i secvena de job-uri i timpii
de execuie sunt cei din problema anterior, iar prioritile asociate job-urilor
sunt 3, 1, 4, 5, 2 s se descrie ordinea execuiei proceselor cu ajutorul unei
diagrame Gantt i s se determine factorii de eficien ai sistemului.

M2.U2.5. Strategii cu evacuare.


n cazul algoritmilor cu evacuare, CPU este alocat procesului cu prioritatea cea mai nalt,
dintre toate procesele care sunt n starea READY. Toate procesele cu prioritatea mai mic
cedeaz CPU procesului cu prioritatea cea mai nalt, atunci cnd acesta o cere. Oricnd un
proces intr n starea READY, el poate ntrerupe imediat procesul servit de ctre CPU, dac
acesta are o prioritate mai slab. Aceasta nseamn c planificatorul este apelat de fiecare dat
cnd un proces intr n starea READY. De asemenea, el declaneaz msurtorul de intervale
de timp atunci cnd cuanta de timp a trecut.
Strategiile cu evacuare sunt adesea folosite pentru a se asigura un rspuns rapid proceselor cu
o prioriate nalt i pentru a se asigura o bun partajare a CPU ntre toate procesele. Exist
versiuni cu evacuare pentru unele dintre strategiile fr evacuare prezentate anterior. n cazul
strategiei SJN, procesului cu cererea de timp cea mai mic i este alocat CPU. Dac pi este n
curs de execuie i intr n starea READY un alt proces, pj, atunci prin metoda SJN este

45
necesar compararea lui ( pi ) cu ( p j ) . Acest lucru este posibil deoarece se cunote c
timpul de servire al lui pi este cel mai mic, dintre timpii tuturor proceselor aflate n starea
READY. Dac pj cere un timp de execuie mai mic dect timpul rmas pn la terminarea
execuiei lui pi, atunci lui pj i se va aloca CPU, iar pi va fi introdus n lista READY, cu
( pi ) fiind timpul rmas pn la terminarea execuiei lui. ntr-un mod similar, se procedeaz
i n cazul strategiei bazat pe mprire proceseloe gata de execuie n clase de prioriti.
n cazul algoritmilor fr evacuare, nu am considerat costul schimbrii de context ntre
procese, deoarece atunci am presupus c odat ce unui proces i este alocat CPU, acesta va fi
executat pn la capt. Aceat problem capt o importan deosebit n cazul strategiilor cu
evacuare, datorit faptului c pe durata execuiei unui proces acesta poate fi evacuat de mai
multe ori, iar fiecare evacuare este nsoit de o schimbare de context, al crei cost nu poate fi
neglijat.
Planificarea circular(RR-Round Robin) este poate cea mai utilizat dintre toi algoritmii de
planificare, n special de SO care lucreaz n time-sharing. Principala ei caracteristic, este
servirea echitabil a tuturor proceselor care cer alocarea CPU. S presupunem c n sistem
avem n procese p0,..,pn-1, ordonate dup indicele lor. Se definete o cuant de timp,
dependent de sistem i pe durata unei cuante se aloc procesorul unui proces. Coada READY
a proceselor este tratat circular; mai nti este servit p0, apoi p1, .a.m.d pn-1, dup care este
servit din nou p0. Dac procesorul termin de servit un proces nainte de expirarea cuantei de
timp alocate, o nou cuant de timp este definit i aceasta este alocat procesului urmtor.
Cnd se termin execuia unui proces, el este scos din lista READY. Cnd un nou proces este
introdus n lista READY, este inserat ultimul n aceast coad circular. De fiecare dat cnd
apare un astfel de eveniment, planificatorul este apelat imediat, i eventual se definete o nou
cuant de timp i se selecteaz un nou proces.
n cazul acestui algoritm, trebuie s lum n consideraie efectul schimbrii de context ntre
procese. Fie C timpul necesr efecturii acestei operaii. Dac fiecruia dintre cele n procese i
sunt alocate q uniti de timp CPU, atunci timpul total de servire al celor n procese va fi
n(q+C).
Exemplu. S considerm procesele p0,p1,p2,p3,p4 care au timpii de execuie
definii n exemplele anterioare, iar cuanta de timp este de 50 de uniti i
presupunem c se neglijeaz timpul necesar schimbrii de context. n figura 2.2.6
este prezentat ordinea servirii proceselor i momentele terminrii execuiei lor.
Din diagrama din figura 2.2.6 putem deduce:
-Timpii petrecui n sistem de fiecare proces: T(p0)=1100, T(p1)=550,
T(p2)=1275, T(p3)=950, T(p4)=475 i media timpului petrecut n
sistem de un proces T=(1100+550+1275+950+475)/5=870.
-Timpii de ateptare pn la prima servire: W(p0)=0,W(p1)=50,
W(p2)=100,W(p3)=150,W(p4)=200 i media acestor timpi
W=(0+50+100+150+200)/5=100.
-Dac considerm i timpul de comutare ntre procese, ca fiind de 10 uniti de
timp, obinem: T(p0)=1320,T(p1)=660,T(p2)=1535,
T(p3)=1140,T(p4)=565,T=(1320+660+1535+1140+565)/5=1044,
W(p0)=0, W(p1)=60, W(p2)=120, W(p3)=180, W(p4)=220 i
W=(0+60+120+180+240)/5=120.

46
P4

P3

p2

p1

p0

0 100 200 300 400 450 475 550 650 750 850 950 1050 1150 1250 1275

Figura 2.2.6. Planificare RR cu cuanta de timp de 50 de uniti


Metoda cozilor pe mai multe niveluri este o extensie a planificrii bazate pe prioriti, care
presupune c toate procesele care au aceeai prioritate sunt plasate n aceeai coad. ntre
cozi, planificatorul aloc CPU folosind o anumit strategie, iar n interiorul cozii o alt
strategie. De exemplu, la un SO de tip mixt, interactiv i serial, pot fi create 5 cozi distincte:
taskuri sistem, lucrri interactive, lucrri n care se editeaz texte, lucrri seriale
obinuite, lucrri seriale ale studenilor etc. Aceste cozi se bazeaz pe mprirea proceselor
(lucrrilor) n clase de prioriti; n cadrul fiecrei clase se poate utiliza o anumit strategie
(FIFO, SJN, RR).
S ne reamintim...
n cazul algoritmilor cu evacuare, CPU este alocat procesului cu prioritatea cea
mai nalt, dintre toate procesele care sunt n starea READY.
Strategiile cu evacuare sunt adesea folosite pentru a se asigura un rspuns rapid
proceselor cu o prioriate nalt sau pentru a se asigura o bun partajare a CPU
ntre toate procesele.
Metoda cozilor pe mai multe niveluri este o extensie a planificrii bazate pe
prioriti, care presupune c toate procesele care au aceeai prioritate sunt plasate
n aceeai coad
I. Rspundei la urmtoarele ntrebri.
1. Cum se poate implementa strategia SJN folosind o strategie cu evacuare.
2. Planificarea execuiei proceselor bazat politica de servire RR(Round Robin)
presupune acordarea unei cuante fixe de timp fiecrui proces. Care sunt
avantajele folosirii unei cuante de dimensiune mic, respectiv a unei cuante de
dimensiune mare.
3 Metoda RR presupune existena unei liste a proceselor din sistem, n care
fiecare proces apare o singur dat n list. Ce se poate ntmpla dac un proces
apare de dou sau mai multe ori? Argumentai de ce ar trebui s se permit acest
lucru.
II. i) Dac n sistem sunt lansate n acelai timp 5 procese p0, p1, p2, p3, p4 i
timpii de servire sunt 75, 40, 25, 20, 45, iar politica de servire este RR, cu
cuanta de timp alocar unui job de 15, fr a se considera timpul necesar
comutrii de context, s se descrie ordinea temporal a execuiei cu ajutorul unei
diagrame Gantt i s se determine factorii de eficien ai sistemului.
ii) Aceleai cerine, dac presupunem c se ia n consideraie costul comutrii de
context, acesta fiind de 5 uniti.

47
M2.U2.6. Test de evaluare a cunotinelor
I. . Selectai varianta corect.
1. De fiecare dat cnd se termin execuia unui proces, dac procentul de timp de
lenevire al CPU depete un anumit prag, planificatorul poate decide:
a) S distribuie mai multe resurse b) S creeze nc unul sau mai
proceselor n execuie multe procese .
c) S aloce mai mult memorie d) S aloce mai mult spaiu pe disc
proceselor n execuie proceselor n execuie
2. Planificare pe termen lung se refer la:
a) Ce programe sunt admise de b) Ce zone de memorie sunt
sistem pentru a fi prelucrate. alocate.
c) Ce fiiere sunt salvate. d) Ce periferice vor fi alocate.
Planificarea pe termen mediu se poate realiza din diverse motive:
3. Trecerea din starea new n starea ready se refer la:
a) Planificarea pe termen lung. b) Planificarea pe termen mediu
c) Planificarea pe termen scurt. d) Planificarea pe termen nedefinit
4. Obiectivul principal al planificrii pe termen scurt este de:
a) A aloca proceselor timpul CPU b) A aloca proceselor timpul CPU
astfel nct s se optimize spaiul de astfel nct s se optimize
pe discuri. consumul de memorie intern.
c) A aloca proceselor timpul CPU d) A aloca proceselor timpul CPU
astfel nct s se optimize timpii astfel nct s se optimize unul sau
necesari schimbului de informaii mai multe aspecte ale funcionrii
ntre procese. sistemului de calcul.
5. Care dintre componentele planificatorului prelucreaz descriptorul unui proces
trecut n starea ready i l introduce n lista READY:
a) Dispecerul b) Gestionarul cozii proceselor
c) Comutatorul de context d) ncrctorul
6. Care dintre componentele planificatorului este cerut pentru a selecta un nou
proces aflat n lista READY
a) Dispecerul b) Gestionarul cozii proceselor
c) Comutatorul de context d) ncrctorul
7. Care dintre componentele planificatorului este necesar relurii corecte a
execuiei unui proces.
a) Dispecerul b) Gestionarul cozii proceselor
c) Comutatorul de context d) ncrctorul

48
8. Principala ei caracteristic a planificrii circulare este:
a) Servirea echitabil a tuturor b) Servirea echitabil a tuturor
proceselor care cer alocarea CPU. proceselor nucleului sistemului de
operare.
c) Servirea pe baz de prioriti a d) Servirea pe baz de prioriti a
tuturor proceselor care cer alocarea tuturor proceselor nucleului
CPU. sistemului de operare.
9. Strategiile cu evacuare sunt adesea folosite pentru:
a) A se asigura un rspuns rapid b) A se asigura un rspuns rapid
proceselor cu o prioriate nalt i proceselor cu o prioriate slab i
pentru a se asigura o bun partajare a pentru a se asigura o bun
CPU ntre toate procesele partajare a CPU ntre toate
procesele
c) A se asigura un rspuns rapid d) A se asigura un rspuns rapid
proceselor cu o prioriate nalt i proceselor cu o prioriate slab i
pentru a se asigura o bun partajare a pentru a se asigura o bun
CPU ntre procesele nucleului partajare a CPU ntre procesele
sistemului de operare nucleului sistemului de operare

M2.U2.7. Rezumat
Planificatorul este responsabil de multiplexarea CPU de ctre o mulime de
procese care sunt gata de execuie. Oricnd un proces aflat n execuie, dorete s
cedeze CPU sau cnd este selectat un proces gata de execuie, pentru a primi
serviciile CPU, intervine planificatorul pentru a lua decizia potrivit.
Planificarea execuiei proceselor este de mai multe tipuri. Planificarea pe termen
lung urmrete s creasc gradul de multiprogramare a sistemului de calcul, prin
crearea de noi procese atunci cnd sistemul dispune de resursele necesare.
Planificarea pe termen mediu decide cnd un proces intr n competiie pentru a
primi serviciile CPU. Planificarea pe termen scurt decid alocarea timpului CPU
ctre procese, astfel nct s se optimizeze anumite obiective de eficien ale
sistemului de calcul i utilizatorului.
Strategiile de planificare pot fi mprite n strategii fr forarea, respectiv cu
forarea procesului de a ceda CPU; n acest sens, FCFS, SJN, mprirea proceselor
n clase de prioriti, sunt cele mai importante metode utilizate de strategiile fr
forare, pe cnd RR i cozile multiple sunt procedeele cele mai utilizate de
strategiile cu forarea procesului de cedare a CPU.

49
Unitatea de nvare M2.U3. Starea de interblocare
Cuprins
M2.U3.1. Introducere ............................................................................................................... 50
M2.U3.2. Obiectivele unitii de nvare ................................................................................ 50
M2.U3.3. Concepte introductive .............................................................................................. 50
M2.U3.4. Evitarea interblocrii pentru resurse cu mai multe elemente................................... 52
M2.U3.5. Evitarea interblocrii pentru resurse cu un singur element...................................... 54
M2.U3.6. Detectarea interblocrii pentru resurse cu mai multe elemente ...............................56
M2.U3.7. Detectarea interblocrii pentru resurse cu un singur element.................................. 57
M2.U3.8. Alte metode de rezolvare a problemei interblocrii................................................. 59
M2.U3.9. Teste de evaluare a cunotinelor............................................................................. 60
M2.U3.10. Rezumat ................................................................................................................. 61
M2.U3.1. Introducere
n cursul execuiei lor, procesele solicit diverse resurse ale sistemului de calcul.
Alocarea acestora trebuie s se fac dup anumite reguli, astfel nct sistemul s
nu intre n starea de interblocare. Aceast situaie apare atunci cnd exist o
mulime de procese, astfel nct fiecare proces din aceast mulime, pentru a-i
continua execuia, ateapt eliberarea unei resurse de ctre un alt proces care
aparine acestei mulimi.
Exist mai multe metode de rezolvare a acestei probleme. Evitarea interblocrii
presupune c de fiecare dat cnd se cere de ctre un proces alocarea de resurse se
verific dac sistemul intr n starea de interblocare dup ce se aloc resursele
respective. Detectarea interblocrii presupune c pe baza comportamentului
sistemului, se deduce c acesta se afl n aceast stare i apoi se aplic algoritmii
necesari determinrii proceselor care provoac aceast stare a sistemului.

M2.U3.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n rezolvarea problemei interblocrii proceselor. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice problema interblocrii proceselor;
identifice condiiile n care poate apare interblocarea proceselor;
neleag i s explice metodele evitrii interblocrii;
neleag i s explice metodele detectrii interblocrii;
neleag i s aplice algoritmii prezentai.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

50
M2.U3.3. Concepte introductive
Resursele logice (fiiere, baze de date, semafoare etc.) sau fizice (imprimante, spaiul de
memorie intern, memorii externe, cicluri UC etc.) pot fi formate din unul sau mai multe
elemente. Etapele parcurse de un proces n cursul utilizrii unei resurse sunt:
cerere de acces: dac cererea nu poate fi satisfcut imediat, procesul care a formulat-o va
fi nevoit s atepte pn cnd poate dobndi resursa;
utilizare: procesul poate folosi resursa;
eliberare: procesul elibereaz resursa.
Cererea i eliberarea de resurse se face prin apeluri de sistem. Evidena alocrii resurselor se
realizeaz prin intermediul unei tabele de sistem. Dac un proces cere o resurs ale crei
elemente sunt alocate altor procese din sistem, atunci procesul care a efectuat cererea va fi pus
ntr-o coad de ateptare, asociat resursei respective.
Se spune c un set de procese se afl n stare de interblocare atunci cnd orice proces din
setul respectiv se afl n ateptarea unui eveniment de eliberare a unei resurse cerute, ce poate
fi produs numai de ctre un proces aflat n mulimea respectiv. Pentru rezolvarea problemei
interblocrii se folosesc, n principiu dou metode. Prima const n utilizarea unui protocol
care s nu permit niciodat sistemului s intre n starea de interblocare. Acest lucru se
realizeaz fie prin prevenirea, fie prin evitarea interblocrii. Cea de a doua metod permite
sistemului intrarea n starea de interblocare i apoi rezolv aceast problem.
Condiii necesare pentru apariia interblocrii.
excludere mutual: exist cel puin o resurs ocupat n mod exclusiv, adic fr a putea fi
folosit n comun de ctre un singur proces; dac un alt proces formuleaz o cerere pentru
aceeai resurs, va fi nevoit s atepte pn n momentul eliberrii ei;
ocupare i ateptare: exist cel puin un proces care ine ocupat cel puin o resurs i
ateapt s obin resurse suplimentare ocupate n acel moment de ctre alte procese;
imposibilitatea achiziionrii forate: resursele nu pot fi achiziionate forat de ctre un
proces de la un alt proces care le ocup n acel moment; resursele pot fi eliberate numai de
ctre procesele care le ocup, dect dup ce acestea i-au ndeplinit sarcinile;
ateptare circular: n sistem exist un set de procese aflate n starea de ateptare,
(p1,p2,..,pn), astfel nct p1 ateapt eliberarea unei resurse ocupate de ctre p2, p2
ateapt eliberarea unei resurse ocupate de ctre p3, .a.m.d. pn ateapt eliberarea unei
resurse ocupate de ctre p1.
Observaie. Ultima condiie implic i cerina de ocupare i ateptare, astfel nct cele patru
condiii nu sunt complet independente; cu toate acestea este util ca fiecare condiie s fie
discutat i tratat separat.
Evitarea interblocrii. Starea alocrii resurselor este definit de numrul de resurse
disponibile i alocate i de numrul maxim de cereri de resurse formulate de ctre procese. Se
spune c o stare este sigur dac sistemul poate aloca fiecrui proces resursele cerute (pn la
numrul maxim), ntr-o anumit ordine i evitnd apariia interblocrii.
Mai exact, sistemul se afl ntr-o stare sigur numai dac exist o secven sigur. Se spune
c o secven de procese (p1,p2,..,pn) este o secven sigur pentru starea de alocare
curent dac, pentru fiecare proces pi, resursele pe care acesta le-ar mai putea cere pot fi
alocate dintre resursele disponibile, la care se mai adaug resursele deinute de ctre toate
celelalte procese pj, cu j<i. n acest caz, dac resursele cerute de ctre procesul pi nu sunt
disponibile imediat, acesta va trebui s atepte pn cnd toate procesele pj, cu j<i i
ncheie execuia. n acest moment pi poate obine toate resursele de care are nevoie, i

51
termin sarcina, elibereaz resuirsele i se ncheie, dup care procesul pi+1 poate obine
resursele pe care le dorete .a.m.d. n cazul n care nu exist o astfel de secven, se spune c
starea sistemului este nesigur. O stare de interblocare este o stare nesigur; nu toate strile
nesigure sunt interblocri, dar o stare nesigur poate conduce la interblocare. ntr-o stare
nesigur, sistemul de operare nu poate mpiedica procesele s formuleze n aa fel cererile de
alocare a resurselor nct acestea s duc la interblocare.
Exemplu: S considerm un sistem n care 4 procese p1,p2,p3,p4 folosesc n
comun o resurs cu 20 de elemente. Pe durata ntregii execuii procesele au nevoie
de maximum 14,6,10 i respectiv 9 elemente. Iniial, procesele formuleaz o
cerere pentru 7, 3, 4 i respectiv 2 elemente. Analiznd situaia sistemului la
momentul iniial, se constat c el se afl ntr-o stare sigur, deoarece, de exemplu,
secvena p2,p1,p3,p4 este o secven sigur.
Justificare. Dup alocarea iniial, mai rmn 20-16=4 elemente. Pentru a fi
executat p2, exist suficiente elemente ale resursei (6<4+3), adic elementele
resursei deinute de proces dup alocarea iniial, la care se adaug cele disponibile.
Dup ce procesul p2 i termin execuia, sunt disponibile 7 elemente ale resursei,
care adugate la cele 7 alocate iniial lui p1 fac posibil execuia acestuia .a.m.d.
Detectarea interblocrii. Atunci cnd sistemul nu utililizeaz algoritmi de evitare a
interblocrii, deorece utilizarea lor ar mri costurile, se pot utiliza metodele de detectare i
revenire, care ns, pe lng cheltuielile datorate utilizrii unor structuri de date suplimentare,
presupun i cheltuieli datorate revenirii din starea de interblocare. Problema care se pune, este
cnd s fie apelat algoritmul de detectare a interblocrii i n cazul n care apare aceast
situaie, s existe o metod de ieire. Dac acest lucru se face ori de cte ori se formuleaz o
cerere de resurse, efectul este creterea substanial a timpului de calcul. O variant mai puin
costisitoare este apelarea algoritmului la anumite intervale de timp sau atunci cnd gradul
de utilizare a CPU scade sub un anumit prag (de exemplu 40 la sut), justificarea fiind c o
parte dintre procese nu avanseaz n execuia lor din cauza unei interblocri, deci CPU nu mai
este solicitat de acestea i deci scade gradul de utilizare a CPU.
S ne reamintim...
Etapele parcurse de un proces n cursul utilizrii unei resurse sunt: cerere de acces,
utilizare, eliberare.
Se spune c un set de procese se afl n stare de interblocare atunci cnd orice proces
din setul respectiv se afl n ateptarea unui eveniment de eliberare a unei resurse
cerute, ce poate fi produs numai de ctre un proces aflat n mulimea respectiv.
Condiii necesare pentru apariia interblocrii: excludere mutual, ocupare i
ateptare, imposibilitatea achiziionrii forate: resursele nu pot fi achiziionate forat
de ctre un proces de la un alt proces care le ocup n acel moment; resursele pot fi
eliberate numai de ctre procesele care le ocup, dect dup ce acestea i-au
ndeplinit sarcinile,ateptare circular.
Prin evitarea interblocrii, atunci cnd un proces cere resurse se verific dac dup
alocare sistemul intr ntr-o stare nesigur, care poate fi o stare de interblocare.
Detectarea interblocrii permite ca sistemul s intre n stare de interblocare i atunci
cnd se constat existena acesteia se aplic algoritmi de ieire din aceast stare.

Legat de exemplul anterior, justificai c dac procesului p4 i sunt alocate iniial mai
mult cu 2 elemente, se trece nu numai ntr-o stare nesigur dar i ntr-o stare de
interblocare., deoarece numrul de resurse libere, egal cu 2, este insuficient pentru
oricare dintre procesele aflate n ateptare.

52
M2.U3.4. Evitarea interblocrii pentru resurse cu mai multe elemente
Algoritmul de evitare a interblocrii, pentru cazul resurselor cu mai multe elemente se
numete algoritmul bancherului. Pentru implementarea algoritmului, sunt necesare cteva
structuri de date care s codifice starea de alocare a resurselor sistemului. Dac n este
numrul de procese din sistem i m este numrul de resurse, se definesc:
D(Disponibil): vector de dimensiune m care indic numrul de elemente disponibile ale
resurselor: D(j) conine numrul elementelor disponibile ale resursei rj, j=1,..,m.
M(Maxim): matrice de dimensiune nxm care indic numrul maxim de cereri care pot fi
formulate de ctre fiecare proces; M(i,j) conine numrul maxim de elemente ale resursei
rj(j=1,..,m) cerute de procesul pi(i=1,..,n).
A(Alocare): matrice de dimensiune nxm care indic numrul de elemente din fiecare
resurs care sunt alocate n mod curent fiecrui proces; A(i,j) conine numrul de elemente
ale resursei rj(j=1,..,m) alocate procesului pi(i=1,..,n).
N(Necesar): matrice de dimensiune nxm care indic numrul de elemente ce ar mai putea
fi necesare fiecrui proces; N(i,j) conine numrul de elemente ale resursei
rj(j=1,..,m) de care ar mai avea nevoie procesul pi(i=1,..,n) pentru a-i realiza
sarcina; evident c
N(i,j)= M(i,j)- A(i,j)
Fie Ci vectorul cererilor formulate de ctre procesul pi(i=1,..,n); Ci(j) este numrul
cererilor formulate de procesul pi din resursa rj(j=1,..,m); n momentul n care
procesul pi formuleaz o cerere de resurse, vor fi parcurse urmtoarele etape:
Pas 1. Dac CiNi, se execut pasul 2, altfel se consider c a aprut o eroare, deoarece
procesul a depit cererea maxim admisibil.
Pas 2. Dac CiD, se execut pasul 3, altfel pi este nevoit s atepte (resursele nu sunt
disponibile).
Pas 3. Se simuleaz alocarea resurselor cerute de procesul pi i starea se modific astfel:
D:=D-Ci; Ai:= Ai+Ci; Ni:= Ni-Ci.
Pentru verificarea strii de siguran a sistemului se folosete algoritmul urmtor. Acesta
const n parcurgerea secvenei de procese i simularea terminrii execuiei unui proces, adic
adugarea la disponibilul de resurse existent naintea terminrii procesului de la pasul
respectiv a resurselor procesului care tocmai i-a terminat execuia. Algoritmul folosete:
- vectorul de lucru L, de dimensiune m ale crui componente vor corespunde resurselor
sistemului, componenta L(i) va conine numrul resurselor ri disponibile la un moment
dat.
- un vector T de dimensiune n, care corespunde proceselor i care va marca procesele
parcurse.
- un vector s de dimensiune n; componenta s(i) va conine indicele (poziia) din secven a
procesului.
Pas 1 (Iniializri). L=D; citete s.
pentru i=1,..,n; T(i):=0;
Pas 2. (Parcurgerea secvenei de procese)
k=0;
do
{k=k+1;
if (Ns(k) <=L) then { L:=L+A s(k); T(s(k)):=1 }
}
until k>n or not T(s(k))

53
Pas 3. (Verificare dac toate procesele din secven au fost marcate cu true). Dac T(i)=1
pentru i=1,..,n, atunci sistemul se afl ntr-o stare sigur.
Dac starea de alocare a resurselor rezultat este sigur, se aloc procesului pi resursele
cerute. n caz contrar, procesul pi este nevoit s atepte, iar sistemul reface starea de alocare
a resurselor existent nainte de execuia pasului 3.
Exemplu: S presupunem c n sistem avem 5 procese p1,p2,p3,p4,p5 i 4
resurse r1,r2,r3,r4, care au 3, 14, 12 respectiv 13 elemente. Se consider
c starea iniial este definit de:
0 0 1 2 0 0 1 2 0 0 0 0

1 0 0 0 1 7 5 0 0 7 5 0
A = 1 3 5 4 , M = 2 3 5 6 , N = 1 0 0 2 , D = (1 5 2 0 ) .

0 6 3 2 0 6 5 2 0 0 2 0
0 0 1 4 0 6 5 6 0 6 4 2

S verificm c sistemul se afl ntr-o stare sigur. S considerm secvena
(p1,p3,p4,p5,p2) i s artm c este sigur. Dup pasul 1 al algoritmului de
verificare a strii de siguran, vom avea L = (1 5 2 0) , T = (0 0 0 0 0) ,
s = (0 2 3 4 1) . Aplicarea pasului 2, conduce la:
Iteraia 1(procesul p1): (0 0 0 0) (1 5 2 0) , T = (1 0 0 0 0) ,
L = (0 0 1 2) + (1 5 2 0) = (1 5 3 2) .
Iteraia 2(procesul p3): (1 0 0 2) (1 5 3 2) , T = (1 0 1 0 0) ,
L = (1 5 3 4) + (1 5 3 2) = (2 8 8 6) .
Iteraia 3(procesul p4): (0 0 0 2) (2 8 8 6) , T = (1 0 1 1 0) ,
L = (0 6 3 2) + (2 8 8 6) = (2 14 11 8) .
Iteraia 4(procesul p5): (0 6 4 2) (2 14 11 8) , T = (1 0 1 1 1) ,
L = (0 0 1 4) + (2 14 11 8) = (2 14 12 12) .
Iteraia 5(procesul p2): (0 7 5 0) (2 14 12 12) , T = (1 1 1 1 1) ,
L = (1 0 0 0) + (2 14 12 12) = (3 14 12 12) .
Pasul 3 T = (1 1 1 1 1) , deci sistemul se afl ntro stare sigur
n cazul n care procesul p2 formuleaz o cerere suplimentar pentru 4, repectiv 2
elemente din r2 , respectiv r3, trebuie s se verifice dac aceast cerere poate fi
satisfcut. Conform algoritmului bancherului, se verific ndeplinirea relaiilor:
C2N2, adic (0,4,2,0) (0,7,5,0)
C2D, adic (0,4,2,0) (1,5,2,0)
Cum inegalitile sunt ndeplinite, se simuleaz alocarea. Starea sistemului devine:
0 0 1 2 0 0 0 0

1 4 2 0 0 3 3 0
A = 1 3 5 4 , N = 1 0 0 2 , D = (1 1 0 0 )

0 6 3 2 0 0 2 0
0 0 1 4 0 6 4 2

Pentru a arta c starea sistemului este sigur, se aplic algoritmul de verificare a
siguranei strii pe secvena (p1,p3,p4,p2,p5).

54
Algoritmul bancherului are o complexitate de ordinul m x n2; pentru evitarea interblocrii,
n cazul resurselor cu un singur element se utilizeaz un algoritm de complexitate mult mai
mic, care va fi descris n continuare.
Relativ la exemplul anterior:
i) n starea de alocare iniial a resurselor, verificai c secvenele(p1,p4,
p3,p5,p2) i (p1,p3,p4,p2,p5)sunt sigure.
ii) Dup cererea suplimentar de resurse, verificai sigurana secvenelor: (p1,
p3, p4, p5, p2)i (p1,p3,p2,p4,p5).
iii) Gsii i alte secvene sigure, relativ la cele dou stri.

S ne reamintim...
Algoritmul de evitare a interblocrii, pentru cazul resurselor cu mai multe
elemente se numete algoritmul bancherului. Algoritmul presupune c exist o
ordine a execuiei proceselor. Cnd un proces cere un numr de elemente dintr-o
resurs, sistemul verific dac resursele disponibile, la care se adaug cele
eliberate de procesele care au fost executate, la momentul respectiv, sunt
suficiente; n caz afirmativ se face alocarea resurselor.

M2.U3.5. Evitarea interblocrii pentru resurse cu un singur element


Graful de alocare a resurselor este de forma G=(N,A), n care N=PR, P={p1,..,pn}
fiind mulimea proceselor iar R={r1,..,rm} mulimea resurselor. Un arc poate fi de forma
(pi,rj) sau (rj,pi); arcul (pi,rj), numit arc cerere, are semnificaia c procesul pi a
cerut un element al resursei rj, iar arcul (rj,pi), numit arc alocare, nseamn c un
element al resursei rj a fost alocat procesului pi. n cadrul grafului, procesele sunt
reprezentate grafic prin cercuri, iar resursele prin ptrate sau dreptunghiuri. Deoarece
resursele pot fi formate din mai multe elemente, fiecare element se reprezint cu ajutorul unui
punct plasat n interiorul ptratului sau dreptunghiului respectiv. Atunci cnd procesul pi
formuleaz o cerere pentru un element al resursei rj, se insereaz n graful alocare a
resurselor un arc cerere. n momentul n care cererea este satisfcut, arcul cerere este
transformat n arc alocare. Atunci cnd procesul elibereaz resursa, arcul alocare este ters din
graf.
Exemplu: Considerm un sistem cu dou resurse r1 i r2 care au cte un
element, i o resurs r3 cu dou elemente n care exist dou procese, p1 i p2.
Avem deci: P={p1,p2},R={r1,r2,r3}. Dac
A={(p1,r1),(r1,p2),(r2,p1), (r3,p1),(r3,p2)}, reprezentarea
grafic a grafului este cea din figura 2.3.1. Mulimea de arce ilustreaz starea
proceselor; n acest caz:
procesul p1 are alocat cte un element al resurselor r2 i r3 i ateapt
obinerea unui resursei r1;
procesul p2 are alocat resursa r1 i un element al resursei r3.
Cunoscnd definiia grafului de alocare a resurselor, se poate arta c dac graful nu conine
circuite, n sistem nu exist interblocare. Dac exist un circuit, atunci poate s apar
interblocarea. Dac exist resurse cu mai multe elemente, atunci existena unui circuit nu
implic n mod necesar apariia interblocrii, aceasta fiind doar o condiie necesar dar nu i
suficient. Dac resursele au numai cte un element, atunci existena unui circuit arat c n
sistem exist interblocare i fiecare dintre procesele care fac parte din circuit se afl n aceast
stare.

55
r1

p2
p1


r2
r3

Figura 2.3.1. Graf de alocare a resurselor


Exemplu. n plus fa de exemplul anterior, presupunem n plus procesul p2
formuleaz o cerere suplimentar, aa cum este redat n figura 2.3.2. Deoarece
resursa de tip r2 cerut de procesul p2 nu este disponibil, fiind deja alocat
procesului p1, n graf se insereaz arcul cerere (p2,r2), formndu-se circuitul (p1, r1,
p2, r2, p1). n acest moment, cele dou procese intr n starea de interblocare,
ateptndu-se reciproc pentru eliberarea resurselor de care au nevoie n vederea
continurii propriei execuii.

r1

p2
p1


r2
r3

Figura 2.3.2. Graf de alocare a resurselor cu interblocare


Exemplu: Existena unui circuit n graful alocrii resurselor nu implic apariia
interblocrii. n figura 2.3.3 procesele p1 i p2 nu sunt interblocate, dei fac parte
din circuitul (p1,r1,p2,r2,p1). n momentul n care p3 va elibera un element al
resursei r2, acesta va putea fi alocat procesului p2. Cu alte cuvinte nu exist
ateptare reciproc ntre procese.
Existena unui circuit n graful alocrii resurselor nu implic apariia interblocrii. n figura
2.3.3 procesele p1 i p2 nu sunt interblocate, dei fac parte din circuitul (p1,r1,p2,r2,p1). n
momentul n care p3 va elibera un element al resursei r2, acesta va putea fi alocat procesului
p2. Cu alte cuvinte nu exist ateptare reciproc ntre procese.

56
r1

p2
p1


p3
r2

Figura 2.3.3. Graf de alocare a resurselor cu un circuit, fr interblocare


S ne reamintim...
Evitarea interblocrii pentru resurse cu un singur element se bazeaz pe graful
de alocare a resurselor. Dac exist un circuit n acest graf care conine numai
resurse cu un singur element, atunci procesele care fac parte din acest circuit
sunt n stare de interblocare.

Dai exemple de situaii similare celor prezentate, relativ la un sistem cu 4


procese i 3 resurse.

M2.U3.6. Detectarea interblocrii pentru resurse cu mai multe elemente


Algoritmul de detectare pentru resurse cu mai multe elemente folosete structurile de date
D, A i C care au aceei semnificaie ca i n cazul algoritmului de evitare a interblocrii.
Algoritmul prezentat n continuare, ia n consideraietoate procesele a cror execuie nu s-a
ncheiat nc i analizeaz toate secvenele posibile de alocare a resurselor pentru aceste
procese.
Pas 1. Fie L i T doi vectori de dimensioune m i respectiv n. Pentru i=1,..,n se
iniializeaz L(i):=D(i). Pentru i=1,..,n, dac Ai0, atunci T(i):=0, altfel,
T(i):=1.
Pas 2. Se caut o valoare i astfel nct: T(i)=0 i CiL. Dac o astfel de valoare nu exist,
se execut pasul 4.
Pas 3. Se execut secvena: L:=L+Ai; T(i):=1; Se execut pasul 2.
Pas 4. Dac exist i(i=1,..,n) astfel nct T(i)=0, sistemul se afl n starea de
interblocare. n plus procesul pi pentru care T(i)=0, provoac interblocarea.
Observaie. Motivul pentru care la pasul 3 sunt preluate resursele deinute de procesul pi, n
cazul n care la pasul 2 se ndeplinete condiia CiL, este c pi nu este implicat n mod
curent ntr-o interblocare; deci, se poate face presupunerea c pi nu va mai cere alte resurse
pentru a-i termina execuia i va elibera toate resursele care i-au fost alocate. n caz contrar,
se poate ca mai trziu s apar o interblocare care va fi depistat la urmtoarea utilizare a
algoritmului.

57
Exemplu: Presupunem c avem trei procese p1,p2,p3, care folosesc n comun
trei resurse r1,r2,r3, avnd cte 4, 2 i respectiv 2 elemente.
De asemenea, valorile structurilor de date, care dau starea iniial sunt:
2 2 1 0 0 1

A = 1 0 1 , C = 0 0 0 , D = (0 0 0 ) .
1 0 0 2 1 0

S verificm c nu exist interblocare; vom aplica algoritmul prezentat pe
secvena (p2,p1,p3).
Pas 1. T=(0,0,0); L=(0,0,0).
Paii 2 i 3.
Iteraia 1. Pentru procesul p2 avem (0 0 0 ) (0 0 0 ) , deci L := (1 0 1) ,
T := (0 1 0 )
Iteraia 2. Pentru procesul p1 avem (0 0 1) (1 0 1) , deci
L := (1 0 1) + (2 2 1) = (3 2 3) , T := (1 1 0 )
Iteraia 3. Pentru procesul p3 avem (1 0 0 ) (3 2 3) , deci
L := (1 0 0 ) + (3 2 3) = (4 2 3) , T := (1 1 1)
Pas 4. T := (1 1 1) , deci nu exist interblocare n sistem.
Dac procesul p1 formuleaz o cerere suplimentar pentru 2 elemente ale lui r1,
modificnd prima linie a matricii C , care va conine acum valorile 2,0,1,
sistemul intr n starea de interblocare. Chiar dac procesul p2 i ncheie
execuia i elibereaz resursele care i-au fost alocate (1,0,1), numrul total
de resurse disponibile nu este suficient pentru a putea acoperi necesarul formulat
de oricare dintre celelalte dou procese. Deci procesele p1 i p3 sunt
interblocate.
Algoritmul de detectare a interblocrii pentru resurse cu mai multe elemente necesit un
numr de operaii de ordinul mxn2. n cele ce urmeaz, va fi prezentat un algoritm de
complexitate mai mic, ce se sprijin pe graful de alocare a resurselor.
Ce se ntmpl dac procesul p1 formuleaz o cerere suplimentar pentru 2
elemente ale lui r1?
Indicaie: prima linie a matricii C va conine acum valorile 2,0,1.

S ne reamintim...
Algoritmul de detectare a interblocrii pentru resurse cu mai multe elemente
folosete structurile care au aceei semnificaie ca i n cazul algoritmului de
evitare a interblocrii. Algoritmul prezentat ia n consideraietoate procesele a
cror execuie nu s-a ncheiat nc i analizeaz toate secvenele posibile de
alocare a resurselor pentru aceste procese.

M2.U3.7. Detectarea interblocrii pentru resurse cu un singur element


Dac toate resursele au cte un singur element, se poate defini un algoritm care utilizeaz o
variant a grafului de alocare a resurselor, numit graful ateapt-pentru. Acesta se obine
din graful de alocare a resurselor prin eliminarea nodurilor resurs i transformarea arcelor
corespunztoare: un arc (pi,pj) indic faptul c pi ateapt ca pj s elibereze resursa care
i este necesar. ntr-un graf ateapt-pentru, se obine un arc (pi,pj) exist dac i

58
numai dac, exist o resurs oarecare rk, astfel nct s existe dou arce (pi,rk) i (rk,pj)
n graful alocrii resurselor asociat.
Folosind aceast metod, se poate afirma c n sistem exist interblocare dac i numai dac
graful ateapt-pentru conine un circuit. Pentru a detecta interblocrile, sistemul trebuie s
actualizeze graful ateapt-pentru i s apeleze periodic un algoritm care s testeze dac
exist circuite n acest graf. Acest algoritm necesit un numr de n2 operaii, deci
complexitatea este mai mic dect a algoritmului general. Dezavantajul metodei l reprezint
operaiile suplimentare necesare reprezentrii i actualizrii grafului ateapt-pentru. Pentru
a se iei din starea de interblocare, se elimin noduri din graf mpreun cu arcele adiacente,
pn cnd se elimin toate ciclurile. Acest lucru corespunde suspendrii proceselor
corespunztoare.
Exemplu: n figura 2.3.4 este prezentat un graf de alocare a resurselor iar n
figura 2.3.5 graful ateapt-pentru asociat. n acest graf avem circuitele:
(p1,p2,p3,p1),(p2,p3,p2). Dac se suspend execuia procesului p2,
adic se elimin nodul corespunztor i arcele adiacente lui, n graf nu mai exist
cicluri i deci se iese din interblocare.

r1 r2

p1

p4 p2

r3

p3
r4

Figura 2.3.4. Graf de alocare a resurselor


p2

p1 p3

p4
Figura 2.3.5. Graf ateapt-pentru asociat

59
Adugai la graful din figura 2.3.4. o resurs r5 i un proces p5, astfel nct
resursa r5 este alocat procesului p5 i cerut i de p1; p5 cere i el r1. Scriei
graful ateapt-pentru corespunztor; specificai dac exist interblocare i
cum se poate iei din aceast stare.

S ne reamintim...
Pentru detectarea interblocrii, n cazul resurselor cu un singur element se
utilizeaz o variant a grafului de alocare a resurselor, numit graful ateapt-
pentru. Dac n acest graf exist un circuit, atunci n sistem exist interblocare
generat de procesele care fac parte din acest circuit.

M2.U3.8. Alte metode de rezolvare a problemei interblocrii


Achiziionarea forat a resurselor. Aceast metod asigur eliminarea strii de interblocare
prin achiziionarea succesiv a resurselor utilizate de anumite procese i alocarea lor altor
procese, pn cnd se elimin interblocarea. Principalele probleme care trebuie rezolvate n
acest caz sunt:
alegerea proceselor crora li se vor lua resursele, dup criterii care s conduc la costuri
minime(numrul resurselor ocupate, timpul de execuie consumat);
reluarea execuiei: un proces cruia i s-au luat forat anumite resurse nu-i mai poate
continua normal execuia, ea trebuie reluat dintr-un moment anterior, cnd a primit prima
dintre resursele luate;
evitarea nfometrii , adic s nu fie selectat pentru achizionare forat a resurselor un
acelai proces.
Metode mixte de tratare a interblcrilor. Practica a dovedit c nici una dintre metodele de
baz prezentate anterior, nu poate acoperi toate cauzele care produc interblocarea n cadrul
sistemelor de operare. O modalitate de rezolvare a acestei probleme, este combinarea
algoritmilor de baz prezentai. Metoda propus are la baz ideea c resursele pot fi grupate n
clase i n fiecare clas se utilizeaz metoda de gestionare a resurselor cea mai adecvat.
Datorit gruprii resurselor n clase, o interblocare nu poate implica mai mult dect o clas de
resurse i, cum n interiorul unei clase se aplic una dintre metodele de baz, n sistem nu pot
s apar interblocri.
Exemplu. Se poate considera un sistem format din patru clase de resurse:
1. Resurse interne, adic resursele utilizate de ctre sistem(de exemplu, blocul
de control al procesului);
2. Memoria central;
3. Resursele job-ului: dispozitive (discurile) i fiiere;
4. Spaiul din memoria auxiliar alocat fiecrui job utilizator.
O metod mixt pentru rezolvarea interblocrii n cazul acestui sistem, ordoneaz clasele
descrise anterior, folosind n cadrul fiecrei clase urmtoarele abordri:
prevenirea interblocrii prin ordonarea resurselor interne deoarece, n timpul execuiei, nu
este necesar alegerea uneia dintre cererile nerezolvate;
prevenirea interblocrii prin achiziionare forat a memoriei centrale, deoarece se poate
evacua oricnd un job n memoria auxiliar, astfel nct memoria central alocat acestuia s
fie folosit n alt scop;
evitarea interblocrii n cazul resurselor job-ului, deoarece informaiile necesare despre
formularea cererilor de resurse pot fi obinute din liniile de comand;

60
alocarea prealabil a spaiului din memoria auxiliar asociat fiecrui job utilizator deoarece,
n general, se cunoate necesarul maxim de memorie extern al fiecrui job.
S ne reamintim...
Alte soluii de rezolvare a problemei interblocrii se bazeaz pe permiterea
achiziionrii forate a resurselor i utilizarea metodelor mixte de tratare a
interblocrilor.

M2.U3.9. Test de evaluare a cunotinelor


Probleme propuse.
1.S considerm un sistem cu 5 procese p1,p2,p3,p4,p5 i trei resurse r1,r2,r3,
care au 10,5 respectiv 7 elemente. Se consider c starea iniial este definit de:
0 1 0 7 5 3 7 4 3

2 0 0 3 2 2 1 2 2
A = 3 0 2 , M = 9 0 2 , N = 6 0 0 , D = (2 3 0) .

2 1 1 2 2 2 0 1 1
0 0 2 4 3 3 4 3 1
i) S se verifice c sistemul se afl ntr-o stare sigur.
Indicaie: Se va verifica sigurana secvenei (p2,p4,p5,p3,p1).
ii) Care va fi starea sistemului dac procesul p2 cere n plus 1 element al resursei r1
i 2 elemente ale resursei r2. Verificai dac starea sistemului este sigur, prin
testarea siguranei secvenei (p2,p4,p5,p1,p3) .
iii) Indicai alte secvene sigure, corespunztoare celor dou stri ale sistemului.
iv) Ce se ntmpl dac procesul p5 face o cerere suplimentar de resurse, exprimat
prin vectorul (3,3,0).
2.Considerm un sistem n care la un moment dat sunt n execuie procesele p1,
p2,p3,p4,p5, i trei resurse r1,r2,r3, care au 10, 2 respectiv 6 elemente. Se
consider c starea iniial este definit de:
0 1 0 0 0 0

2 0 0 2 0 2
A = 3 0 3 , C = 0 0 0 , D = (2 3 0) .

2 1 1 1 0 0
0 0 2 0 0 2
i) Folosind algoritmul de detectare, s se verifice dac sistemul se afl n aceast
stare sau nu.
ii) Ce se ntmpl dac procesul p3 face o cerere suplimentare care const ntr-un
element al resursei r3.
3. Considerm graful de alocare a resurselor prezentat n figura 2.3.6. i) Scriei care
sunt mulimile P, R i A. ii) Descriei starea resurselor. iii) Descriei starea
proceselor. iv) Adugai o cerere de resurs a unui proces astfel nct s obinei un
ciclu n graf.
4. Dai exemplu de un graf de alocare a resurselor care s conin cicluri i s nu
genereze interblocare.
5. i) Care este graful ateapt-pentru al grafului de alocare a resurselor prezentat n
figura 2. 3.7. ii) Exist interblocare ?

61
R1 R3

P1 P2 P3


R2
R4

Figura 2.3.6. Graf de alocare a resurselor


P5

R 1 R 3 R 4

P1 P2 P3

R 2 P4 R 5

Figura 2.3.7. Graf de alocare a resurselor cu un singur element

M2.U3.10. Rezumat
n condiiile multiprogramrii, procesele partajeaz resursele oferite de un sistem de
calcul. Se spune c un set de procese se afl n stare de interblocare atunci cnd orice
proces din setul respectiv se afl n ateptarea unui eveniment de eliberare a unei
resurse cerute, ce poate fi produs numai de ctre un proces aflat n mulimea
respectiv.
De-a lungul evoluiei sistemelor de calcul, au fost propuse mai multe metode de
rezolvare a problemei interblocriiproceselor. Pentru sistemele cu prelucrare serial,
o metod potrivit este evitarea interblocrii, care presupune c atunci cnd un
proces cere resurse se verific dac dup alocare sistemul intr ntr-o stare nesigur,
care poate fi o stare de interblocare. Aceast metod are dezavantajul ncrcrii cu
sarcini suplimentare a CPU, de fiecare dat cnd se solicit noi resurse de ctre
procese.
Calculatoarele moderne folosesc metoda detectrii interblocrii, care permite ca
sistemul s intre n stare de interblocare i atunci cnd se constat existena acesteia
se aplic algoritmi de ieire din aceast stare.
Alte soluii de rezolvare a problemei interblocrii se bazeaz pe permiterea
achiziionrii forate a resurselor i utilizarea metodelor mixte de tratare a
interblocrilor.

62
Modulul 3. Gestiunea memoriei
Cuprins
Introducere .................................................................................................................... 63
Competene ................................................................................................................... 63
U1. Metode clasice de alocare a memoriei ................................................................... 65
U2. Segmentarea i paginarea menmoriei .................................................................... 78
Introducere
n conformitate cu arhitectura von Neumann, memoria primar mpreun cu
regitrii CPU i memoria cache formeaz memorie executabil, deoarece aceste
componente sunt implicate n execuia unui proces. CPU poate ncrca
instruciunile acestuia numai din memoria primar. Unitile de memorie extern
(secundar) sunt utilizate pentru a stoca date pentru o mai lung perioad de timp.
Fiierele executabile, pentru a deveni procese, precum i informaiile prelucrate de
acestea, trebuie s fie ncrcate n memoria primar.
Aministratorul memoriei interne este responsabil de alocarea memoriei primare
proceselor i de a acorda asisten programatorului n ncrcarea/salvarea
informaiilor din/n memoria secundar. Astfel, partajrea memoriei interne de ctre
mai multe procese i minimizarea timpului de acces sunt obiective de baz ale
administratorului memorie interne.
Componentele unui program surs sunt nume simbolice i formeaz spaiul de
nume al programului surs. Faza de compilare transform un text surs ntr-un
modul obiect, adic fiecare nume simbolic este translatat ntr-o adres relativ la
modulul obiect. Faza de editare de legturi grupeaz mai multe module, formnd
un fiier, numit modul absolut, stocat pe un suport extern pn cnd se cere
execuia lui. Editorului de legturi transform adresele din cadrul modulelor n
aa-zisele adrese relocabile. Faza de translatare (relocare) a adresei const n
transformarea adreselor relative la fiierul executabil, n adrese de memoria
intern, realizndu-se astfel imaginea executabil a programului. Acest lucru este
realizat de o component a SO, numit ncrctor(loader). Spaiul de adrese al
unui proces este mulimea locaiilor alocate acestuia, att din memoria primar,
ct i din cea secundar, servicii ale SO i resurse. Cea mai mare parte a spaiului
de adrese al unui proces se proiectez n locaii de memorie primar.
nainte ca un program s fie executat, trebuie s-i fie alocat un spaiu din memoria
primar. n condiiile multiprogramrii, este posibil ca n memorie s fie prezente
simultan mai multe programe. Fiecare program folosete zona(zonele) de memorie
alocat(alocate) lui. De asemenea, pe durata execuiei unui program, necesarul de
memorie variaz. Odat ce sistemul cunoate care locaii de memorie urmeaz s
fie folosite pentru execuia programului, poate s realizeze corespondena dintre
adresele de memorie primar alocate procesului respectiv i spaiul su de adrese.
Deci programul executabil este translatat ntr-o form final accesibil unitii de
control a CPU i ncrcat n memoria primar, la o anumit adres de memorie.
Cnd contorul de program este iniializat cu adresa primei instruciuni
executabile(principalul punct de intrare din program), CPU ncepe s execute
programul.
n anumite SO, administratorul memoriei poate s tearg o parte din programul
executabil din memoria primar, s-l salveze n memoria secundar i s elibereze
zona de memorie ocupat, astfel nct aceasta s poat fi alocat altor procese.

63
Astfel, chiar dup ce un program a fost convertit ntr-o form executabil n
memoria intern, el poate fi stocat i n memoria extern, atta timp ct este
necesar. Totui, odat cu execuia procesului, imaginea sa din memoria intern se
schimb, fr a se modifica i copia existent pe disc. De exemplu, copia unei date
din memoria secundar va fi modificat numai dac procesul execut o comand
de scriere, prin care n mod explicit modific zona de pe disc ocupat de data
respectiv.
Principalele obiective ale gestiunii memoriei sunt: calculul de translatare a
adresei(relocare); protecia memoriei; organizarea i alocarea memoriei operative;
gestiunea memoriei secundare; politici de schimb ntre procese, memoria operativ
i memoria secundar. Realizarea acestor funcii este un mecanism combinat soft
i hard, la care particip administratorul memoriei interne (component a SO) i
CPU. Odat cu evoluia componentelor hardware ale SC, s-au schimbat i
strategiile de administrare a memoriei, pentru a se valorifica aceste mbuntiri.
Reciproc, strategiile privind gestiunea memoriei au evoluat n timp, ceea ce a
condus la evoluia componentelor hardware ale sistemelor de calcul.

Competene
La sfritul acestui modul, studenii vor fi capabili:
s neleag conceptele de memoria primar(intern) i memorie executabil;
s neleag conceptul de spaiu de adrese al unui proces;
s identifice principalele probleme legate de administrarea memoriei;
s explice alocarea memoriei la sistemele monoutilizator;
s explice alocarea memoriei bazat pe partiii;
s explice conceptul de memorie virtual
s explice translatarea adreselor fizice n adrese virtuale;
s implementeze algoritmii prezentai ntr-un limbaj de programare cunoscut.

64
Unitatea de nvare M3.U1. Metode clasice de alocare a memoriei
Cuprins
M3.U1.1. Introducere ............................................................................................................... 65
M3.U1.2. Obiectivele unitii de nvare ................................................................................ 65
M3.U1.3. Alocarea memoriei pentru sistemele monoutilizator ............................................... 66
M3.U1.4. Alocarea static a memoriri ..................................................................................... 67
M3.U1.5. Alocarea dinamic a memoriri................................................................................. 70
M3.U1.6. Metoda alocrii memoriei prin camarazi ................................................................ 73
M3.U1.7. Teste de evaluare ..................................................................................................... 75
M3.U1.8. Rezumat ................................................................................................................... 77
M3.U1.1. Introducere
Pentru fiecare sistem de operare, specific unei generaii de calculatoare, alocarea
memoriei interne a constituit una dintre sarcinile principale. Conform arhitecturii
von Neumman, informaiile legate de orice proces care se execut sunt ncrcate n
memoria intern. Dimensiunea memoriei interne este mult mai mic dect cea a
spaiilor externe de memorare. De asemenea, n condiiile multiprogramrii
memoria intern trebuie partajat de ctre mai multe procese.
La generaia a doua de calculatoare, prima la care apare sistemul de operare ca
parte a componentei software, memoria este mprit ntre sistemul de operare i
job-ul n curs de execuie. Deoarece dimensiunea memoriei este mic, apare
problema faptului c dimensiunea spaiului de memorie necesar job-ului poate fi
mai mare dect cel oferit de sistem. Sistemul de operarea a oferit programatorilor
posibilitatea mpririi programelor n uniti logice, crora le corespund segmente
de date, care se ncarc n memorie numai atunci cnd este nevoie de ele.
Odat cu generaia a treia de calculatoare apare multiprogramarea i necesitatea ca
spaiul de memorie intern s fie divizat n partiii i fiecrui proces s-i fie alocat
o partiie. O prim metod este alocarea static a memoriei, care presupune c
adresele i dimensiunile partiiilor sunt fixe. Aceast metod nu folosete memoria
eficient. Dac dimensiunile i adresele partiiilor se schimb n timpul execuiei, se
utilizeaz alocarea dinamic a memoriei, care presupune o utilizare mai eficient a
acesteia.

M3.U1.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n studiul alocrii memoriei la sistemele monoutilizator i la cele multiutilizator
bazate pe partiionarea memoriei.. La sfritul acestei uniti de nvare studenii
vor fi capabili s:
neleag i s explice alocarea memoriei interne pentru sistemele
monoutilizator;
neleag i s explice alocarea static a memoriei interne;
neleag i s explice alocarea dinamic a memoriei interne;
neleag i s explice metodele de eviden a spaiilor libere i ocupate din
memorie;
neleag i s explice conceptele de frsgmentare a memoriei.
.

65
Durata medie de parcurgere a unitii de nvare este de 3 ore.

M3.U1.3. Alocarea memoriri pentru sistemele monoutilizator


n cazul sistemelor cu prelucrare n loturi (monoprogramare), spaiul de memorie intern
este mprit n trei zone (figura 3.1.1):
- o zon este alocat nucleului sistemului de operare (spaiul de adrese 0,.., a-1);
- urmtoarea zon este alocat job-ului n curs de execuie (spaiul de adrese a, a+1,..,c-
1);
- zona cuprins ntre adresele c i m-1, reprezint un spaiu nefolosit (memoria are
capacitatea de m locaii).

0 a b c m
Figura 3.1.1 Alocarea memoriei la sistemele monoutilizator
La un moment dat, exist un singur job n execuie, care are disponibil ntreg spaiul de
memorie, care ncepe la adresa a. Aceast metod este specific generaiei a II-a de
calculatoare. Memoria intern a calculatoarelor din aceast generaie avea o dimensiune mic.
Gestiunea spaiului de adrese a, ..,c-1 cade n sarcina utilizatorului; pentru a-i putea rula
programele de dimensiune mare, el folosete tehnici de suprapunere (overlay). Orice
program este format dintr-o parte rezident, care este prezent n memorie pe ntreaga durat
a execuiei (adresele a, ..,b-1) i o parte de suprapunere (adresele b, ..,c-1), n care se
aduc pri ale programului (segmente), de care este nevoie la momentul respectiv.
Programatorul dispune de comenzi pentru definirea segmentelor.
Exemplu: S presupunem c avem un program care calculeaz suma i produsul
a dou matrici precum i norma matricilor. Partea rezident, va fi alocat unei
funcii principale n care se fac iniializri (citirea componentelor matricilor), se
memoreaz i se afieaz valorile obinute. Vom avea cte un modul pentru cele
trei funcii carecalculeaz valorile indicate. La un moment dat, numai unul dintre
module se poate afla n partea rezident.

S ne reamintim...
n cazul sistemelor care lucreaz n regim de monoprogramare, spaiul de
memorie intern este mprit n trei zone: o zon este alocat nucleului
sistemului de operare; urmtoarea zon este alocat job-ului n curs de execuie;
ultima zon reprezint un spaiu nefolosit.
La un moment dat, exist un singur job n execuie, care are disponibil ntreg
spaiul de memorie.
Pentru a-i putea rula programele de dimensiune mare utilizatorul folosete
tehnici de suprapunere.

66
nlocuii zona punctat cu termenii corespunztori.
1. n cazul sistemelor cu prelucrare n loturi, spaiul de memorie intern este
mprit n ..................
2. La un moment dat, exist un singur job ............, care are disponibil ntreg
...............
3. Pentru a-i putea rula programele de dimensiune mare, utilizatorul
folosete ..................
4. Orice program este format dintr-o .........., care este prezent n memorie
pe ntreaga durat a execuiei i o .............

M3.U1.4. Alocarea static a memoriei


Alocrii cu partiii fixe i se mai spune i alocare static (MFT-Memory Fix Tasks). Este prima
metod introdus pentru sistemele care lucreaz n regim de multiprogramare. Se presupune
c memoria este mprit n N zone disjuncte, de lungime fix numite partiii i fiecare
partiie este identificat cu un numr i (i=1,..,N). Presupunem c dimensiunea unei
partiii i este Ni i este alocat unui proces pe toat durata execuiei lui, indiferent dac o
ocup complet sau nu. Partiiile pot avea acceai dimensiune sau dimensiuni diferite.
Exemplu. n figura 3.1.2. avem dou tipuri de partiionri. n ambele situaii,
dimensiunea memoriei este de 64 de Mb i sistemului de operare i este alocat o
partiie de 8 Mb. n cazul a) toate partiiile au aceeai lungime iar n cazul b)
partiiile au dimensiuni diferite.

Sistemul de operare Sistemul de operare


8 Mb 8 Mb

Partiia 1 Partiia 1
8 Mb 2 Mb

Partiia 2 Partiia 2
8 Mb 4 Mb

Partiia 3 Partiia 3
8 Mb 6Mb

Partiia 4 Partiia 4
8 Mb 8Mb

Partiia 5 Partiia 5
8 Mb 10 Mb

Partiia 6 Partiia 6
8 Mb 12 Mb

Partiia 7 Partiia 7
8 Mb 14 Mb

Figura 3.1.1. a) Partiii cu aceeai lungime b) Partiii cu lungimi diferite


Dac partiiile au lungimi diferite, acestea sunt alocate proceselor n funcie de dimensiunile
lor. Dac un proces k are nevoie de nk locaii de memorie ele poate fi ncrcat n oricare

67
dintre partiiile i, pentru care N i nk . n timpul execuiei procesului, un spaiu de memorie
de dimensiune N i nk , din partiia alocat procesului poate rmne neutilizat. Acest fenomen
se numete fragmentare intern. Problema care se pune este s se aleag partiia astfel nct
s se minimizeze diferenele de forma N i nk .
Dac un proces nu ncape n nici una dintre partiiile existente, el nu poate fi executat. O
problem dificil a alocrii cu partiii fixe este stabilirea dimensiunii fiecrei partiii. Alegerea
unor dimensiuni mari scade probabilitatea ca unele procese s nu poat fi executate, dar scade
i numrul proceselor active din sistem. n cazul n care exist job-uri n sistem care ateapt
s fie executate, dar toate partiiile libere existente la momentul respectiv sunt prea mici,
apare fenomenul de fragmentare extern a memoriei.
Selectarea job-urilor care urmeaz s fie executate se face de ctre planificator, n funcie de
necesarul de memorie cerut de acestea (pe baza informaiilor transmise de ctre utilizator sau
determinate automat de ctre sistem) i de partiiile disponibile la momentul respectiv; exist
dou moduri de legare a proceselor la partiii:
Fiecare partiie are coad proprie; legarea la o anumit partiie a proceselor se va face pe
baza necesitii diferenei minime ntre dimensiunea partiiei i a procesului (best fit-cea mai
bun potrivire).
O singur coad pentru toate partiiile; SO va alege pentru procesul care urmeaz s intre
n lucru, n ce partiie se va executa. Selectarea lucrrii se poate face prin:
- o strategie de tip FCFS(First Come First Served), care are dezavantajul c o anumit lucrare
trebuie s atepte n coad chiar dac exist o partiie disponibil n care ar ncpea iar n faa
lui n coad se afl job-uri care necesit partiii de dimensiuni mai mari;
- pe baza mpririi job-urilor n clase de prioriti, n funcie de importana lor, care poate
avea dezavantajul prezentat mai sus;
- pe baza celei mai bune potrivirii ntre dimensiunea job-ului cu dimensiunea partiiei.
Evident c metodele prezentate pot fi combinate. De exemplu, dac avem mai multe job-uri n
sistem care au aceeai prioritate, va fi ales cel care se potrivete cel mai bine peste partiia
care devine disponibil. Legarea prin cozi proprii partiiilor este mai simpl din punctul de
vedere al SO; n schimb, legarea cu o singur coad este mai avantajoas din punctul de
vedere al fragmentrii mai reduse a memoriei.
Alocarea cu partiii fixe a fost folosit la sistemele generaiei a III-a de calculatoare(IBM 360,
Felix C256/512/1024), dar ea nu este recomandat pentru utilizarea n cadrul sistemelor unde
nu se cunoate dinainte de ce spaiu de memorie are nevoie procesul pentru a fi executat,
aspect ntlnit adesea n cadrul sistemelor de operare moderne.
Interschimbarea job-urilor(job-swapping) apare n cazul sistemelor cu organizarea
memoriei n partiii fixe, din necesitatea ca la anumite momente unele dintre ele s fie
evacuate din memorie iar altele s fie introduse n memorie. Interschimbarea joburilor
necesit o memorie extern cu acces direct i rapid, care s poat ngloba copii ale tuturor
imaginilor de memorie utilizator. Toate procesele ale cror imagini de memorie se afl pe disc
i care sunt gata s intre n execuie se grupeaz ntr-o coad, n timp ce procesele existente n
memorie la momentul respectiv formeaz alt coad. Atunci cnd planificatorul dorete s
lanseze n execuie un proces, el apeleaz dispecerul care verific dac procesul se afl n
memorie. Dac nu i dac nu exist nici o partiie liber, dispecerul evacueaz din memorie
unul dintre procese, introduce n locul su procesul dorit, rencarc registrele i transfer
controlul procesului selectat. Bineneles c o aciune de acest fel presupune i cea de salvare
a contextului procesului n execuie(a coninuturilor regitrilor utilizai de ctre acesta),
aciune care este destul de complex.

68
Deoarece n memorie exist mai multe job-uri n execuie, trebuie rezolvate dou probleme:
relocarea i protecia memoriei. O soluie a rezolvrii ambelor probleme este ca CPU s
conin dou registre speciale: registrul de baz i registrul limit (figura 3.1.2). ntr-un
fiier executabil, locaiile au adrese relative la nceputul fiierului (prima locaie are adresa 0,
a doua 1 .a.m.d.). Cnd lucrarea este planificat pentru execuie, n registrul de baz este
ncrcat adresa primei instruciuni din fiierul executabil, iar registrul limit va conine
adresa ultimei locaii din partiia respectiv. Cnd o locaie din fiierul executabil trebuie
relocat, adresa ei relativ se adaug la adresa coninut n registrul de baz; dac valoarea
astfel obinut depete coninutul registrului limit, atunci are loc o eroare de adresare, altfel
se obine adresa unei locaii din memoria intern, n care va fi ncrcat locaia din fiierul
executabil.
Registru Limit

Registru Baz

CPU Adres < DA Locaie din


+ memoria fizic

NU

Eroare de adresare
Figura 3.1.2. Relocarea adreselor cu registru limit i registru de baz
Exemplu. Dac se execut un job i apare un alt job de prioritate mai nalt,
jobul de prioritate mai slab va fi evacuat pe disc. n mod normal, un job care a
fost evacuat va fi readus n aceeai partiie, restricie impus att strategia de
alocare, ct i de metoda de relocare. Dac relocarea se face n momentul
asamblrii sau n momentul ncrcrii(relocare static), job-ul nu poate fi
transferat ntr-o alt partiie; dac se folosete relocarea dinamic(cu registru de
baz i registru limit, de exemplu) acest lucru este posibil.

S ne reamintim...
Alocrii cu partiii fixe i se mai spune i alocare static . Este prima metod
introdus pentru sistemele care lucreaz n regim de multiprogramare. Se
presupune c memoria este mprit n zone disjuncte, de lungime fix numite
partiii.
n timpul execuiei unui proces, dac un spaiu de memorie din partiia
respectiv rmne neutilizat, apare fenomenul de fragmentare intern.
n cazul n care exist job-uri n sistem care ateapt s fie executate, dar toate
partiiile libere existente la momentul respectiv sunt prea mici, apare fenomenul
de fragmentare extern a memoriei.
Interschimbarea job-urilor(job-swapping) apare n cazul sistemelor cu

69
organizarea memoriei n partiii fixe, din necesitatea ca la anumite momente
unele dintre ele s fie evacuate din memorie iar altele s fie introduse n
memorie.
Relocarea i protecia memoriei se realizeaz folosind dou registre speciale,
registrul de baz i registrul limit.
nlocuii zona punctat cu termenii corespunztori.
1. Alocrii cu partiii fixe i se mai spune i...........
2. Se presupune c memoria este mprit n N zone disjuncte, de lungime
fix numite
3. n cazul n care exist job-uri n sistem care ateapt s fie executate, dar
toate partiiile libere existente la momentul respectiv sunt prea mici, apare
fenomenul de ..................
4. n timpul execuiei unui proces, un spaiu de memorie din partiia alocat
procesului poate rmne neutilizat. Acest fenomen se numete ..................
5. Deoarece n memorie exist mai multe job-uri n execuie, trebuie
rezolvate dou probleme: ............... i .................. O soluie a rezolvrii ambelor
probleme este ca CPU s conin dou registre speciale: ................... i
..........................

M3.U1.5 Alocarea dinamic a memoriei


Alocare dinamic sau alocarea cu partiii variabile (MVT Memory Variable Task),
reprezint o extensie a alocrii cu partiii fixe, care permite o exploatare mai eficient a
memoriei SC. n cazul multiprogramrii cu partiii fixe, problema cea mai dificil este
optimizarea dimensiunii partiiilor, astfel nct s se minimizeze fragmentarea memoriei. De
asemenea, se presupune c joburile au o dimensiune cunoscut, ipotez care nu este n general
adevrat.
Aceste inconveniente pot fi rezolvate dac se admite modificarea dinamic a dimensiunii
partiiilor i adreselor lor de nceput i de sfrit, n funcie de solicitrile adresate
sistemului i de capacitatea de memorie nc disponibil la un moment dat. Prin folosirea
acestei metode, numrul i dimensiunea partiiilor se modific n timp.
n momentul n care procesul intr n sistem, el este plasat n memorie ntr-un spaiu n care
ncape cea mai lung ramur a sa. Spaiul liber n care a intrat procesul, este acum descompus
n dou partiii: una n care se afl procesul, iar cealalt ntr-un spaiu liber care poate fi alocat
altui proces. De asemenea, cnd un proces i termin execuia, spaiul din memorie ocupat de
el este eliberat, urmnd a fi utilizat de ctre un alt proces. Astfel, apare o alternan a spaiilor
libere cu cele ocupate. Pentru a se obine spaii libere de dimensiune ct mai mare, SO va
declana operaia de alipire a unor spaii libere vecine sau de compactare a memoriei,
adic de deplasare a partiiilor alocate proceselor ctre partiia ocupat de ctre nucleul SO,
pentru a se concatena toate fragmentele de memorie neutilizate.
Operaia de compactare este complex, presupunnd efectuarea de operaii de modificare a
adreselor; n practic se aleg soluii de compromis, cum ar fi:
Se lanseaz periodic compactarea, la un interval de timp fixat, indiferent de starea
sistemului. Procesele care nu au loc n memorie ateapt compactarea sau terminarea altui
proces.
Se realizeaz o compactare parial pentru a asigura loc numai procesului care asteapt.
Se ncearc numai mutarea unuia dintre procese, cu concatenarea spaiilor rmase libere.

70
Exemplu. Presupunem c dimensiunea memoriei interne este de 64 Mo. La
nceput, n memorie este ncrcat numai sistemul de operare (figura 3.1.3. a).
Apoi se ncarc procesul 1 care solicit 10 Mo, spaiu care i se aloc (figura
3.1.3. b) i procesul 2 care solicit 30 Mo, spaiu care i se aloc (figura 3.1.3.
c). Procesul 1 i termin execuia i elibereaz spaiul ocupat. n acest moment,
n memorie sunt dou spaii libere, de 10 Mo respectiv de 18 Mo. Apare un
proces care cere 20 Mo. Deoarece nu exist o partiie de dimensiune suficient
de mare, se face compactarea memoriei, dup care procesului 3 i se poate aloca
spaiul cerut.

Sist. de Sist. Sist. Sist. Sist.


8 Mo de op. de op. de op. de op.
op.
Proc. Proc. Proc.
1 1 2
10 Mo 10 Mo 30 Mo

Proc. Proc. Proc.


2 2 3
64 Mo 30 Mo 30 Mo 20 Mo

56Mo

a) b) c) d) e)
Figura 3.1.3. Exemplu de partiionare a memoriei
Administrarea spaiului din memoria intern. La un moment dat memoria se prezint ca o
alternan a spaiilor libere cu cele ocupate. Cele libere vor fi alocate proceselor care cer
memorie, iar cele ocupate, cnd sunt eliberate trebuie, eventual s fie concatenate cu alte
spaii libere, pentru a obine zone contigue de dimensiune ct mai mare, care s poat fi
alocate proceselor. Deci, sunt necesare metode prin care s se in evidena spaiilor libere i a
celor ocupate i s se aloce spaiile de memorie solicitate. Att spaiile libere ct i cele
ocupate pot fi considerate ca fiind nodurile a dou liste dinamice. Fiecare partiie ncepe cu un
cuvnt de control, care conine un pointer ctre urmtoarea poriune liber i un cmp care
conine lungimea zonei respective (figura 3.1.4). La fel se ntmpl n cazul unei zone
ocupate. Administratorul memoriei interne trebuie s rezolve urmtoarele probleme:
- Dup eliberarea unui spaiu de ctre un proces care i-a terminat execuia, se pot obine dou
spaii de memorie libere adiacente; este necesar concatenarea lor, pentru a se obine un
spaiu suficient de mare care poate fi alocat unui proces.
- Cutarea unui spaiu liber care s poat fi alocat unui proces, se realizeaz prin parcurgerea
listei, utiliznd informaiile din cuvintele de control ale partiiilor.
Ppartiia care va fi alocat procesului se selecteaz dup urmtoarele strategii:
Metoda primei potriviri (First-Fit): partiia solicitat este alocat n prima zon liber n
care ncape procesul. Principalul avantaj al metodei este simplitatea cutrii de spaiu liber.

71
Metoda celei mai bune potriviri (Best-Fit): cutarea acelei zone libere care las dup
alocare cel mai puin spaiu liber. Avantajul metodei const n economisirea zonelor de
memorie mai mari. Dezavantajul este legat de timpul suplimentar de cutare i generarea
blocurilor de lungime mic, adic fragmentarea intern excesiv. Primul neajuns este
eliminat parial, dac lista de spaii libere se pstreaz nu n ordinea cresctoare a adreselor, ci
n ordinea cresctoare a lungimilor spaiilor libere, dar algoritmul se complic.
Metoda celei mai rele potriviri (Worst-fit) este dual metodei Best-Fit; se caut acele zone
libere care las dup alocare cel mai mult spaiu liber. Dup alocare rmne un spaiu liber
mare, n care poate fi plasat o alt partiie.
- divizarea unei partiii libere n dou spaii, unul care poate fi alocat unui proces (introdus n
lista spaiilor ocupate) i unul care s rmn liber.
Toate aceste operaii se pot realiza prin folosirea operaiilor cu pointeri i prelucrarea
cuvntului de control.
S ne reamintim...
Alocare dinamic sau alocarea cu partiii variabile reprezint o extensie a alocrii cu
partiii fixe, care permite o exploatare mai eficient a memoriei SC. Aceast metod
permite modificarea dinamic a dimensiunii partiiilor, n funcie de solicitrile
adresate sistemului i de capacitatea de memorie disponibil la un moment dat. Prin
folosirea acestei metode, se optimizeaz dimensiunile partiiilor, astfel nct s se
minimizeze fragmentarea memoriei.
Pentru a se obine spaii libere de dimensiune ct mai mare, SO va declana operaia
de alipire a unor spaii libere vecine sau de compactare a memoriei, adic de
deplasare a partiiilor active ctre partiia ocupat de ctre nucleul SO, pentru a se
concatena toate fragmentele de memorie neutilizate.
Evidena spaiilor libere i a celor ocupate din memoria intern se face folosind liste
nlnuite.
nlocuii zona punctat cu termenii corespunztori.
1. Alocare dinamic sau alocarea cu ........... , reprezint o extensie a alocrii cu
partiii fixe, care permite o exploatare .......... a memoriei SC. Prin folosirea acestei
metode, ................ se modific n timp.
2. Att spaiile libere ct i cele ocupate pot fi considerate ca fiind ......... a dou
liste dinamice. Fiecare zon liber ncepe cu un .................., care conine un ..........
ctre urmtoarea poriune liber i un cmp care conine .............. zonei respective
3. Dup eliberarea unui spaiu de ctre un proces care i-a terminat execuia, se
pot obine dou ............. libere adiacente; este necesar .............. lor, pentru a se
obine un ............... de mare care poate fi ..............unui proces.
4. Prin metoda primei potriviri (First-Fit) ............ este alocat n prima zon
liber n care ncape. Principalul avantaj al metodei este .................. de spaiu liber.
5. Prin metoda celei mai bune potriviri (Best-Fit) se caut acea .............. care
las dup alocare ....................... Avantajul metodei const n ...................zonelor de
memorie mai mari. Dezavantajul este legat de ..................... i generarea blocurilor
de lungime mic, adic .......................
6. Metoda celei mai rele potriviri (Worst-fit) este .......... metodei Best-Fit; se
caut acele zone libere care las dup alocare ................. Dup alocare rmne un
spaiu liber mare, n care poate fi plasat .............

72
Cuvnt de Partiie
control

Partiie
Lungime Urmtoarea
partiie

Figura 3.1.4. nlnuirea a dou partiii


M3.U1.6. Metoda alocrii memoriei prin camarazi
Cele dou metode de alocare a memoriei interne prezentate au anumite deficiene. Alocarea
cu partiii fixe genereaz fenomenele de fragmentare a memoriei iar alocarea dinamic
presupune o schem relativ complicat de eviden i compactare a spaiilor libere i ocupate.
Metoda alocrii prin camarazi (Buddy-system) se bazeaz pe reprezentarea binar a
adreselor i faptul c dimensiunea memoriei interne este un multiplu al unei puteri a lui 2.
Presupunem c se dimensiunea memoriei interne este de forma cx2n, iar unitatea de alocare
a memoriei este de forma 2m.
Exemplu. Dac sistemul are o memorie intern de 32 Mo, atunci c=1 i
n=25. Dac dimensiunea memoriei interne este de 192 Mo, c=3 i n=26.
Dac dimensiunea memoriei este de 1Go, atunci c=1 i n=30.De asemenea, se
poate considera c unitatea de alocare este de 256 Ko, adic 28.
innd cont de proprietile operaiilor cu puteri ale lui 2, att dimensiunile spaiilor alocate,
ct i ale celor libere sunt de forma 2k, cu km n; sistemul va pstra liste separate ale
adreselor spaiilor disponibile, n funcie de dimensiunea lor exprimat ca putere a lui 2. Vom
numi lista de ordin k, lista tuturor adreselor unde ncep spaii libere de dimensiune 2k. Vor
exista astfel n-m+1 liste de spaii disponibile.
Exemplu. Dac considerm c dimensiunea memoriei interne este de 192 Mo,
vom avea 17 liste: lista de ordin 8, avnd dimensiunea unui spaiu de 256
octei; lista de ordin 9, cu spaii de dimensiune 512 .a.m.d.

Presupunem c, fiecare spaiu liber(ocupat) de dimensiune 2k, are adresa de nceput un


multiplu de 2k. Dou spaii libere se numesc camarazi de ordinul k, dac adresele lor A1 i
A2 verific una dintre proprietile urmtoare:
A1<A2 , A2=A1+2k i A1 mod 2k+1=0
A2<A1, A1=A2+2k i A2 mod 2k*1=0
Observaie. Atunci cnd ntr-o list de ordinul k apar doi camarazi, sistemul i concateneaz
ntr-un spaiu de dimensiune 2k+1 i reciproc, un spaiu de dimensiune 2k+1 se poate mpri
n dou spaii de dimensiune 2k.
Algoritmul de alocare de memorie.
Pas 1. Fie o numrul de octei solicitai. Se determin min{p/ m p n, o 2p}.
Pas 2. Se determin k=min{i/p i n i lista de ordin i este nevid}.

73
Pas 3. Dac k=p, atunci aceasta este alocat i se terge din lista de ordinul p altfel se aloc
primii 2p octei, se terge zona din lista de ordinul k i se creeaz n schimb alte k-p zone
libere, avnd dimensiunile 2p, 2p+1,...,2k-1.
Observaie. Pasul 3 al algoritmului se bazeaz pe egalitatea
2k-2p=2p+2p+1+...+2k-1.
Exemplu. Se dorete alocarea a 1000 octei, deci p=10. Nu s-au gsit zone libere
de dimensiune 210 sau 211 sau 212. Prima zon liber de dimensiune 213 are adresa
de nceput 5x213 i o notm cu I. Ca rezultat al alocrii a fost ocupat zona A de
dimensiune 210 i au fost create nc trei zone libere: B de dimensiune 210, C de
dimensiune 211 i D de dimensioune 212. Zonele B, C i D se trec respectiv n
listele de ordine 10, 11 i 12, iar zona I se terge din lista de ordin 13.
Algoritmul de eliberare.
Pas 1. Fie 2p dimensiunea zonei eliberate. Se introduce zona respectiv n lista de ordinul p.
Pas 2. k=p
Pas 3. Verific dac exist camarazi de ordin k:
Dac da, efectueaz comasarea lor; terge cei doi camarazi; Introdu noua zon
liber de dimensiune 2k+1 n lista de ordin k+1.
Pas 4. k=k+1; goto Pas 3.
Exemplu.
S presupunem c la un moment dat zonele A , C i D de adrese 5x213, respectiv
21x211 i 11x212 sunt libere, iar zona B de adresa 41x211 este ocupat (figura
3.1.4 ). Avem: 41*210-5*213=210; 21*211-41*210=210; 11*212-21*211=211.
Se observ c zonele sunt adiacente, n ordinea A, B, C, D. n conformitate cu
paii descrii mai sus, se execut urmtoarele aciuni:
- Se trece zona B n lista de ordin 10.
- Se observ c zonele A i B sunt camarazi; cele dou zone sunt comasate i
formeaz o nou zon X. Zona X se trece n lista de ordin 11, iar zonele A i
B se terg din lista de ordin 10.
- Se observ c zonele X i C sunt camarazi; ele sunt comasate i formeaz o
zon Z care se trece n lista de ordin 12, nlocuind zonele X i C din lista de
ordin 11.
- Se observ c Z i D sunt camarazi; ele sunt terse din lista de ordin 12, iar
n lista de ordin 13 se introduce rezultatul comasrii lor.

A B C D

5x213 41x210 21x211 11x212


Figura 3.1.4. Exemplu de camarazi

74
S ne reamintim...
Metoda alocrii prin camarazi (Buddy-system) se bazeaz pe reprezentarea
binar a adreselor i faptul c dimensiunea memoriei interne este un multiplu al unei
puteri a lui 2.
Sistemul pstreaz liste separate ale adreselor spaiilor disponibile, n funcie de
dimensiunea lor exprimat ca putere a lui 2. Vom numi lista de ordin k, lista tuturor
adreselor unde ncep spaii libere de dimensiune 2k.

nlocuii zona punctat cu termenii corespunztori.


1. Metoda alocrii prin camarazi (Buddy-system) se bazeaz pe ................ a
adreselor i faptul c dimensiunea memoriei interne este un ................... a lui 2.
2. Dou spaii libere se numesc camarazi de ordinul k, dac adresele lor A1 i A2
verific una dintre proprietile urmtoare:
...............................
...............................
3. Atunci cnd ntr-o list de ordinul k apar doi camarazi, sistemul i concateneaz
ntr-un spaiu de dimensiune 2k+1 i reciproc, un spaiu de dimensiune 2k+1 se poate
mpri n dou spaii de dimensiune 2k.

M3.U1.7. Test de evaluare a cunotinelor


I. Selectai varianta corect.
1. Sistemele pentru care la un moment dat, exist un singur job n execuie, care are
disponibil ntreg spaiul de memorie, este specific:
a) generaiei a I-a de calculatoare. b) generaiei a II-a de calculatoare.
c)generaiei a III-a de calculatoare. d) generaiei a IV-a de calculatoare.
2. Fragmentarea memoriei apare:
a) n cazul alocrii cu partiii. b) n cazul alocrii paginate.

c) n cazul alocrii de memorie d) n cazul alocrii de memorie


cache. secundar.
3. Fragmentare intern nseamn:
a) Un fiier executabil este b)Un fiier executabil este memorat
memorat pe mai multe discuri care pe mai multe blocuri fizice care nu
nu sunt ocupate complet. sunt ocupate complet.
c) Rmne spaiu liber pe disc d) Rmne spaiu liber de memorie
alocat unui fiier executabil intern alocat unui proces neutilizat
neutilizat n cursul execuiei n cursul execuiei acestuia.
acestuia.
4.Fragmentare extern este specific:
a) Alocrii dinamice a memoriei c) Alocrii dinamice a memoriei
interne proceselor. interne fiierelor executabile.
b) Alocrii statice a memoriei d) Alocrii statice a memoriei
interne proceselor. interne fiierelor executabile.

75
5.Fragmentare extern nsemn:
a) Unui proces i sunt alocate mai c) n memoria intern exist partiii
multe partiii din memoria intern libere a cror dimensiune este
pe care nu le folosete n totalitate. insuficient pentru ca un proces s
fie executat.
b) Unui fiier executabil i sunt d) n memoria extern exist partiii
alocate mai multe blocuri fizice libere a cror dimensiune este
din memoria extern pe care nu le insuficient pentru ca un proces s
folosete n totalitate. fie executat.
6. Compactarea memoriei nseamn:
a) Deplasarea partiiilor alocate c) Deplasarea partiiilor alocate
proceselor ctre partiia ocupat proceselor ctre locaia de memorie
de ctre nucleul SO. cu valoarea cea mai mare.
b) Deplasarea partiiilor alocate d) Deplasarea partiiilor alocate
proceselor ctre partiia ocupat proceselor ctre locaia de memorie
de ctre compilatorul SO. cu valoarea cea mai mic.
7. Fiecare partiie ncepe cu un cuvnt de control, care conine:
a) Un pointer ctre urmtoarea b) Un pointer ctre urmtoarea
partiie din list i un cmp care partiie din list i un cmp care
conine lungimea fiierului conine lungimea zonei respective.
executabil care va fi ncrcat n
partiia respectiv.
c) Un pointer ctre fiierul d) Un pointer ctre fiierul executabil
executabil care va fi ncrcat n care va fi ncrcat n partiie i un
partiie i un cmp care conine cmp care conine lungimea fiierului
lungimea partiiei. respectiv.
8. Care strategie de alocare a unei partiii unui proces, poate lsa un spaiu suficient
de mare care poate fi o partiie pentru un alt proces:
a) Metoda primei potriviri. b) Metoda celei mai bune potriviri.

c) Metoda celei mai rele potriviri. d) Metoda potrivirii optime.

II. Problem propus.


Dac ntr-un sistem partiiile au dimensiunile de 150 Ko, 520 Ko, 230 Ko, 350 Ko
i 620 Ko i poziionarea lor n memorie este n aceast ordine i se pune problema
ncrcrii n memorie a 4 procese a cror dimensiune este de 138 Ko, 477 Ko, 192
Ko i 396 Ko s se specifice partiia n care va fi plasat fiecare proces, considernd
cele trei metode (first-fit, best-fit, worst-fit ) de alocare. Comentai eficiena
alocrii.

76
M3.U1.8. Rezumat
n cazul sistemelor care lucreaz n regim de monoprogramare, spaiul de memorie
intern este mprit n trei zone: o zon este alocat nucleului sistemului de operare;
urmtoarea zon este alocat job-ului n curs de execuie; ultima zon reprezint un
spaiu nefolosit. La un moment dat, exist un singur job n execuie, care are
disponibil ntreg spaiul de memorie. Pentru a-i putea rula programele de
dimensiune mare utilizatorul folosete tehnici de suprapunere.
Alocrii cu partiii fixe i se mai spune i alocare static. Este prima metod introdus
pentru sistemele care lucreaz n regim de multiprogramare. Se presupune c
memoria este mprit n zone disjuncte, de lungime fix numite partiii. n timpul
execuiei unui proces, dac un spaiu de memorie din partiia respectiv rmne
neutilizat, apare fenomenul de fragmentare intern.
n cazul n care exist job-uri n sistem care ateapt s fie executate, dar toate
partiiile libere existente la momentul respectiv sunt prea mici, apare fenomenul de
fragmentare extern a memoriei.
Interschimbarea job-urilor(job-swapping) apare n cazul sistemelor cu organizarea
memoriei n partiii fixe, din necesitatea ca la anumite momente unele dintre ele s
fie evacuate din memorie iar altele s fie introduse n memorie.
Alocarea dinamic sau alocarea cu partiii variabile reprezint o extensie a alocrii
cu partiii fixe, care permite o exploatare mai eficient a memoriei. Aceast metod
permite modificarea dinamic a dimensiunii partiiilor, n funcie de solicitrile
adresate sistemului i de capacitatea de memorie disponibil la un moment dat. Prin
folosirea acestei metode, se optimizeaz dimensiunile partiiilor, astfel nct s se
minimizeze fragmentarea memoriei.
Pentru a se obine spaii libere de dimensiune ct mai mare, sistemul de operare va
declana operaia de alipire a unor spaii libere vecine sau de compactare a
memoriei, adic de deplasare a partiiilor active ctre partiia ocupat de ctre
nucleul sistemului de operare, pentru a se concatena toate fragmentele de memorie
neutilizate. Evidena spaiilor libere i a celor ocupate din memoria intern se face
folosind liste nlnuite.

77
Unitatea de nvare M3.U2. Segmentarea i paginarea memoriei
Cuprins
M3.U2.1. Introducere ............................................................................................................... 78
M3.U2.2. Obiectivele unitii de nvare ................................................................................ 78
M3.U2.3. Memoria virtual...................................................................................................... 79
M3.U2.4. Alocarea paginat a memoriei ................................................................................. 81
M3.U2.5. Alocare segmentat.................................................................................................. 84
M3.U2.6. Algoritmi statici de paginare.................................................................................... 87
M3.U2.7. Algoritmi dinamici de paginare ............................................................................... 91
M3.U2.8. Memoria cu acces rapid ........................................................................................... 95
M3.U2.9. Teste de evaluare ..................................................................................................... 95
M3.U2.10. Rezumat ................................................................................................................. 97
M3.U2.1. Introducere
Chiar i calculatoarele moderne au o dimensiune a memoriei interne relativ mic,
dac o raportm la spaiile de memorie extern. n condiiile multiprogramrii,
sistemul de operare trebuie s satisfac cerinele de memori ale mai multor
procese. n acest sens, memoria intern intern este o resurs care trebuie gest
Calculatoarele moderne folosesc conceptul de memorie virtual, ce reprezint
extinderea spaiului de adrese al memoriei fizice i care se sprijin pe ideea
asocierii de adrese fizice obiectelor programului n timpul execuiei lui.
Compilatorul i link-editorul creeaz un modul absolut, cruia ncrctorul i
asociaz adrese fizice nainte ca programul s fie executat. Facilitile hardware
permit administratorului memoriei s ncarce automat poriuni ale spaiului de
adrese virtuale n memoria primar, n timp ce restul spaiului de adrese este
pstrat n memoria secundar.
Sistemele cu paginare transfer blocuri de informaie de dimensiune fix ntre
memoria secundar i cea primar. Datorit dimensiunii fixe a paginii virtuale i a
celei fizice, translatarea unei adrese virtuale ntr-una fizic devine o problem
reletiv simpl, prin mecanismele tabelei de pagini i memoriei virtuale.Politicile de
ncrcare i de nlocuire a paginilor, permit ca paginile s fie ncrcate n memorie,
numai atunci cnd se face o referin la o locaie de memorie pe care o conin.
Politicile de plasare i de nlocuire a paginilor, definesc reguli prin care se
optimizeaz transferul de informaii din memoria virtual n memoria primar i
reciproc.
Segmentarea este o alternativ la paginare. Ea difer de paginare prin faptul c
unitile de transfer dintre memoria secundar i cea primar variaz n timp.
Dimensiunea segmentelor trebuie s fie n mod explicit definit de ctre
programator sau sistem. Translatarea unei adrese virtuale segmentate ntr-o adres
fizic este mult mai complex dect translatarea unei adrese virtuale paginat.
Segmentarea se sprijin i pe sistemul de fiiere, deoarece segmentele sunt stocate
pe memoriile externe sub form de fiiere. Segmentarea cu paginare valorific
avantajele oferite de cele dou metode, fiind utilizat de sistemele de calcul
moderne.
Memoriile cu acces rapid cresc performanele unui sistem de calcul. Metodele de
proiecie a spaiului din memoria intern n memoria cache, permite ca orice
locaie fizic s fie accesat mult mai rapid.

78
M3.U2.2. Obiectivele unitii de nvare
Aceast unitate de nvare i propune ca obiectiv principal o introducere a
studenilor n problematica sistemelor de operare. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice conceptul de memorie virtual;
neleag i s explice translatarea adreselor virtuale n adrese fizice;
neleag i s explice alo;
neleag i s explice tipurile de sisteme de operare;
neleag i s explice ncrcarea sistemului de operare.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

M3.U2.3. Memoria virtual


Dac presupunem c n este dimensiunea magistralei de adrese, atunci numrul maxim de
locaii adresabile este 2n . Dimensiunea memoriei interne este mult mai mic dect aceast
valoarea. Acest fapt sugereaz prelungirea spaiului de adrese pe un disc rapid. Mulimea
acestor locaii de memorie formeaz memoria virtual.
Utilizarea memoriei virtuale este o tehnic ce permite execuia proceselor fr a impune
necesitatea ca ntreg fiierul executabil s fie ncrcat n memorie i capacitatea de a adresa un
spaiu de memorie mai mare dect cel din memoria intern a unui SC.
Spaiul de adrese al procesului este divizat n pri care pot fi ncrcate n memoria intern
atunci cnd execuia procesului necesit acest lucru i transferate napoi n memoria
secundar, cnd nu mai este nevoie de ele. Spaiul de adrese al unui program se mparte n
partea de cod, cea de date i cea de stiv, identificate att de compilator ct i de
mecanismul hardware utilizat pentru relocare. Partea (segmentul) de cod are un numr de
componente mai mare, fiind determinat de fazele de execuie (logica) ale programului.
Exemplu: Aproape toate programele conin o faz necesar iniializrii
structurilor de date utilizate n program, alta pentru citirea datelor de intrare, una
(sau mai multe) pentru efectuarea unor calcule, altele pentru descoperirea erorilor
i una pentru ieiri. Analog, exist partiii ale segmentului de date.
Aceast caracteristic a programului se numete localizare a referinelor n spaiu i este
foarte important n strategiile utilizate de ctre sistemele de memorie virtual. Cnd o
anumit parte a programului este executat, este utilizat o anumit poriune din spaiul su de
adrese, adic este realizat o localizare a referinelor. Cnd se trece la o alt faz a calcului,
corespunztoare logicii programului, este refereniat o alt parte a spaiului de adrese i se
schimb aceast localizare a referinelor.
Exemplu: n figura 3.2.1, spaiul de adrese este divizat n 5 pri. Numai prile
1 i 4 din spaiul de adrese corespund unor faze ale programului care se execut
la momentul respectiv, deci numai acestea vor fi ncrcate n memoria intern.
Pri diferite ale programului vor fi ncrcate n memoria primar la momente
diferite, n funcie de localizarea n cadrul procesului.

79
P a rte a 0
P a rte a 4

P a rte a 1

P a rte a 2

P a rte a 3

P a rte a 4 P a rte a 1

S p a iu l d e a d re se

M e m o ria in te rn

Figura 3.2.1 Memoria fizic i cea virtual


Sarcina administratorului memoriei este de a deduce localizarea programului i de a urmri
ncrcarea n memorie a partiiilor din spaiul de adrese corespunztoare, precum i de a ine
evidena acestora n memoria intern, atta timp ct sunt utilizate de ctre proces.
Administratorul memoriei virtuale aloc poriuni din memoria intern, care au aceeai
dimensiune cu cele ale partiiilor din spaiul de adrese i ncarc imaginea executabil a prii
corespondente din spaiul de adrese ntr-o zon din memoria primar. Acest lucru are ca efect
utilizarea de ctre proces a unei cantiti de memorie mult mai reduse.
Translatarea adreselor virtuale. Funcia de translatare a adreselor virtuale, notat cu t
este o coresponden variabil n timp a spaiului de adrese virtuale ale unui proces, n
spaiul de adrese fizice, adic mulimea tuturor locaiilor din memoria intern alocate acelui
proces. Se cunosc dou metode de virtualizare: alocare paginat i alocare segmentat.
Deci:
t :< Spatiul _ de _ adrese _ relative >< Spatiul _ de _ adrese _ fizice > {}
n care: t este un numr ntreg, care reprezint timpul virtual al procesului iar este un
simbol care corespunde adresei nule. Cnd un element i al spaiului de adrese virtuale este
ncrcat n memoria intern, t (i ) este adresa fizic unde adresa virtual i este ncrcat.
Dac la momentul virtual t , t (i ) = i procesul face referin la locaia i, atunci sistemul
ntreprinde urmtoarele aciuni:
1. Administratorul memoriei cere oprirea execuiei procesului.
2. Informaia refereniat este regsit n memoria secundar i ncrcat ntr-o locaie de
memorie k.
3. Administratorul memoriei schimb valoarea funciei , t (i ) = k .
4. Administratorul memoriei cere reluarea execuiei programului.
Observm c locaia refereniat din spaiul de adrese virtuale nu este ncrcat n memoria
primar, dup ce s-a declanat execuia instruciunii cod main respective. Acest lucru va
declana reexecutarea instruciunii dup ce locaia respectiv a fost ncrcat din memoria
virtual n memoria primar. De asemenea, dimensiunea spaiului de adrese virtuale ale unui

80
proces, este mai mare dect dimensiunea spaiului de adrese fizice alocat procesului, spre
deosebire de metodele cnd ntregul fiier executabil era ncrcat n memorie.
S ne reamintim...
Dimensiunea memoriei interne este mult mai mic dect numrul maxim de
locaii adresabile aceast valoarea. Acest fapt sugereaz prelungirea spaiului de
adrese pe un disc rapid. Mulimea acestor locaii de memorie formeaz memoria
virtual.
Spaiul de adrese al unui program se mparte n partea de cod, cea de date i cea
de stiv, identificate att de compilator ct i de mecanismul hardware utilizat
pentru relocare. Cnd o anumit parte a programului este executat, este utilizat
o anumit poriune din spaiul su de adrese, adic este realizat o localizare a
referinelor.

nlocuii zona punctat cu termenii corespunztori.


1. Dac presupunem c n este dimensiunea ......................, atunci numrul maxim
de locaii adresabile este ...........
2. Spaiul de adrese al unui program se mparte n ................, cea .............. i cea
............., identificate att de compilator ct i de mecanismul hardware utilizat
pentru relocare.
3. Cnd o anumit parte a programului este executat, este utilizat o anumit
poriune din ............., adic este realizat o ...........................
4. Funcia de translatare a adreselor virtuale este o coresponden variabil n
timp a ........................... ale unui proces, n .............................
5. Dimensiunea spaiului de adrese virtuale ale unui proces este ....................
dect dimensiunea spaiului de adrese fizice alocat procesului
M3.U2.4. Alocarea paginat a memoriei
Paginarea memoriei a aprut la diverse SC pentru a evita fragmentarea memoriei interne, care
apare la metodele anterioare de alocare. Memoria virtual este mprit n zone de lungime
fix numite pagini virtuale. Paginile virtuale se pstreaz n memoria secundar. Memoria
operativ este mprit n zone de lungime fix, numite pagini fizice. Paginile virtuale i cele
fizice au aceeai lungime, lungime care este o putere a lui 2 i care este o constant a
sistemului.
Exemplu: Lungimea poate fi 1Ko, 2Ko etc.

S presupunem c 2k este dimensiunea unei pagini; daca n este adresa unei locaii din
memoria fizic, atunci conform teoremei de mprire cu rest, n=f2k+d ; f este numrul de
pagin n care se afl locaia de adres n iar d este adresa (deplasamentul) din cadrul paginii;
f2k este adresa din memoria primar a primei locaii din pagina fizic. Perechea (f,d) se
numete adresa paginat fizic a locaiei de memorie. Analog se definete notiunea de adres
paginat a unei locaii din memoria virtual, pe care o vom nota cu (p,d). Deoarece fiecare
pagin are aceeai dimensiune 2k, adresa virtual i poate fi convertit ntr-un numr de
pagin i un deplasament n cadrul paginii, numrul de pagin fiind i div 2k, iar
deplasamentul i mod 2k.

81
Orice pagin virtual din spaiul de adrese al procesului, poate fi ncrcat n oricare din
paginile fizice din memoria intern alocate acestuia. Acest lucru este realizat printr-o
component hardware numit MMU(Memory Management Unit), care implementeaz
funcia t (figura 3.2.2).

A d r e s a v ir t u a l A d r e s a fiz ic M e m o r ia in t e r n

MMU (p d ) ( f, d

f
f

T a b e la d e p a g in i

Figura 3.2.2. Translatarea unei pagini virtuale ntr-una fizic


Dac este refereniat o locaie dintr-o pagin care nu este ncrcat n memoria intern,
MMU oprete activitatea CPU, pentru ca SO s poat executa urmtorii pai:
1. Procesul care cere o pagin nencrcat n memoria intern este suspendat.
2. Administratorul memoriei localizeaz pagina respectiv n memoria secundar.
3. Pagina este ncrcat n memoria intern, eventual n locul altei pagini, dac n
memoria intern nu mai exist pagini fizice libere alocate procesului respectiv i n
acest caz, tabela de pagini este modificat.
4. Execuia procesului se reia din locul n care a fost suspendat.
Fiecare proces are propria lui tabel de pagini, n care este trecut adresa fizic a paginii
virtuale, dac ea este prezent n memoria operativ. La ncrcarea unei noi pagini virtuale,
aceasta se depune ntr-o pagin fizic liber. Deci, n memoria operativ, paginile fizice sunt
distribuite n general necontinuu, ntre mai multe procese. Spunem c are loc o proiectare a
spatiului virtual peste cel real. Acest mecanism are avantajul c folosete mai eficient
memoria operativ, fiecare program ocupnd numai memoria strict necesar la un moment
dat. Un alt avantaj este posibilitatea folosirii n comun, de ctre mai multe programe, a
instruciunilor unor proceduri. O procedur care permite acest lucru se numeste procedur
reentrant.
Evidena paginilor virtuale ncrcate n pagini fizice se poate realiza prin tabela de pagini,
ncrcat n memorie.Tabela de pagini poate fi privit ca o funcie, care are ca argument
numrul de pagin virtual i care determin numrul de pagin fizic. Pe baza
deplasamentului se determin locaia din memoria fizic unde se va ncrca locaia virtual
refereniat. Aceast metod ridic dou mari probleme:
1.Tabela de pagini poate avea un numr mare de intrri. Calculatoarele moderne folosesc
adrese virtuale pe cel puin 32 de bii.
Exemplu: Dac o pagin are dimensiunea de 4K, atunci numrul intrrilor n
tabel este mai mare dect 1000000. n cazul adreselor pe 64 de bii numrul
intrrilor n tabel va fi mult mai mare.

82
2. Corespondena dintre locaia de memorie virtual i cea din memoria fizic trebuie s se
realizeze ct mai rapid posibil; la un moment dat, o instruciune cod main poate referenia
una sau chiar dou locaii din memoria virtual.
O metod mult mai eficient, care nlocuiete cutarea secvenial cu cea arborescent este
organizarea tabelei pe mai multe niveluri. Astfel, o adres virtual pe 32 de bii este un
triplet (Pt1,Pt2,d), primele dou cmpuri avnd o lungime de 10 bii, iar ultimul de 12
bii. n figura 3.2.3 este ilustrat o astfel de tabel de pagini. Observm c tabela este
organizat pe dou niveluri. Numrul de intrri n tabela de nivel 1 (corespunztoare lui Pt1 )
este de 210=1024; fiecare intrare n aceast tabel conine un pointer ctre o tabel a
nivelului 2(corespunztoare lui Pt2 ). Cnd o adres virtual este prezentat MMU, se extrage
valoarea cmpului PT1, care este folosit ca index n tabela de la nivelul 1. Pe baza acestuia, se
gsete adresa de nceput a uneia dintre tabelele de la nivelul 2. Cmpul PT2 va fi un index n
tabela de la nivelul 2 selectat, de unde se va lua numrul de pagin fizic corespunztor
numrului de adres virtual coninut n adresa refereniat. Pe baza acestui numr i a
deplasamentului d, se determin locaia de memorie fizic n care va fi ncrcat respectiva
locaie din memoria virtual.
Observaii.
1. Dimensiunea unei pagini este de 212=4x210=4K.
2. n condiiile specificate, o tabel de la nivelul 2 va gestiona o zon de memorie de
capacitate 1024 x 4 K=4 M..
3. Tabela de pagini se poate organiza i pe 3 sau 4 niveluri, n funcie de dimensiunea
memoriei virtuale i a celei fizice. Dac tabela are o dimensiune mare, ea poate fi pstrat pe
un disc rapid.
4. Fiecare pagina virtual conine un bit numit generic present/absent, pe baza valorii cruia
se determin dac pagina virtual este (sau nu) adus n memoria fizic.
Nivelul 1 Nivelul 2
0
1
. Deplasament
0 .
1 1023
2 .
. 0
. .
1023 .
1023
Figura 3.2.3. Tabela de pagini pe dou niveluri.
Exemplu: Fie adresa virtual Ox00A0B00C. Dac se face transformarea n
binar se obine: 0000000010 1000001011 0000 0000 1100.
Apoi se separ cele trei cmpuri i se obin valorile n zecimal.
PT1=0000000010(2)=2(10); PT2=1000001011(2)=523(10);
d=000000001100(2)=10
Pe baza valorii lui PT1, MMU va selecta a patra linie din tabela ne nivel 1, care
conine un pointer ctre o tabel de nivel 2 ; componenta PT2 a adresei indic a
524-a intrare din tabela de la nivelul 2 selectat. Aceasta conine un pointer ctre
o pagin din memoria fizic. Valoarea deplasamentului calculat, indic a 11-a
locaie din pagina respectiv, care corespunde adresei virtuale de adres dat.

83
S ne reamintim...
Paginarea memoriei a aprut la diverse SC pentru a evita fragmentarea memoriei
interne, care apare la metodele anterioare de alocare. Memoria virtual este
mprit n zone de lungime fix numite pagini virtuale. Paginile virtuale se
pstreaz n memoria secundar. Memoria operativ este mprit n zone de
lungime fix, numite pagini fizice. Paginile virtuale i cele fizice au aceeai
lungime, lungime care este o putere a lui 2 i care este o constant a sistemului.
Orice adres paginat este format din dou componente: numrul de pagin i
deplasamentul n cadrul paginii.
Translatarea adreselor virtuale n adrese fizice se realizeaz pe baza unei structuri
arborescente.
1. Presupunem c ntr-un sistem de calcul dimensiunea paginii este de 4 Ko.
Care este numrul de pagin i deplasamentul pentru adresa 23955. Dac locia
de adres dat este din memoria virtual, descriei translatarea ei ntr-o adres
fizic.
2. Presupunem c ntr-un sistem de calcul dimensiunea paginii este de 1 Ko. Care
este numrul de pagin i deplasamentul pentru urmtoarele adrese: 1099;
23955; 0x00FC1.
M3.U2.5. Alocare segmentat
Din punctual de vedere al utilizatorului, o aplicaie este format dintr-un program principal i
o mulime de subprograme(funcii sau proceduri). Acestea folosesc diferite structuri de date
(tablouri, stive etc), precum i o mulime de simboluri (variabile locale sau globale). Toate
sunt identificate printr-un nume.
Pornind de la aceast divizare logic a unui program, s-a ajuns la o metoda alocrii
segmentate a memoriei. Spre deosebire de metodele de alocare a memoriei bazate pe
partiionare, unde fiecrui proces trebuie s i se asigure un spaiu contiguu de memorie,
mecanismul de alocare segmentat, permite ca un proces s fie plasat n zone de program
distincte, fiecare dintre ele coninnd o entitate de program, numit segment. Segmentele pot fi
definite explicit prin directive ale limbajului de programare sau implicit prin semantica
programului. Deosebire esenial dintre alocarea paginat i cea segmentat este aceea c
segmentele sunt de lungimi diferite.
Exemplu: Un compilator poate crea segmente de cod pentru fiecare procedur
sau funcie, segmente pentru variabilele globale, segmente pentru variabilele
locale, precum i segmente de stiv.

n mod analog cu alocarea paginat, o adres virtual este o pereche (s,d), unde s este
numrul segmentului iar d este deplasamentul din cadrul segmentului. Adresa real (fizic)
este o adres obisnuit. Transformarea unei adrese virtuale ntr-o adres fizic, se face pe baza
unei tabele de segmente. Fiecare intrare n acest tabel este compus dintr-o adres de baz
(adresa fizic unde este localizat segmentul n memorie) i lungimea segmentului(limit). n
figura urmtoare este ilustrat modul de utilizare a tabelei de segmente.
Componenta s a adresei virtuale, este un indice n tabela de segmente. Valoarea
deplasamentului d trebuie s fie cuprins ntre 0 i lungimea segmentului respectiv (n caz
contrar este lansat o instruciune trap, care genereaz o ntrerupere). Dac valoarea d este
valid, ea este adugat adresei de nceput a segmentului i astfel se obine adresa fizic a
locaiei respective (figura 3.2.4).

84
s
lim it b az

CPU s d

M em -
< da + o r ia
f iz ic
nu

L a n s a r e in s tr u c iu n e tr a p
(E r o a r e d e a d r e sa r e )

Figura 3.2.4. Translatarea unei adrese segmentate


Exemplu: S presupunem c avem un proces care, din punct de vedere logic este
format dintr-un program principal, un subprogram i n care se apeleaz o
procedur de sistem. Corespunztor celor trei entiti vom avea trei segmente, la
care se adaug un segment pentru stiv i unul pentru tabele de simboluri. Figura
3.2.5 red alocarea de spaiu n memoria intern pentru acest proces. Segmentul
2 are o lugime de 400 octei i ncepe la locaia 4300. Astfel, unei referine la
locaia 53 a segmentului 2, i corespunde locaia din memoria intern
4500+53=4353.
Num r L im it B az
seg m en t
0 1000 1400 1400
1 400 6300 se g m e n t 0
2 400 4300 2400
3 1100 3200
4 1000 4700
T a b e la d e s e g m e n te 3200

se g m e n t 3
4300
se g m e n t 2
4700
se g m e n t 4

5700

6300

se g m e n t 1

6700
M e m o r ia fiz ic

Figura 3.2.5. ncrcarea segmentelor n memoria fizic

85
Avantajele alocrii segmentate, fa de cea bazat pe partiii sunt:
- se pot creea segmente reentrante, care pot fi partajate de mai multe procese. Pentru
aceasta este suficient ca toate procesele s aib n tabelele lor aceeai adres pentru segmentul
respectiv.
- se poate realiza o bun protecie a memoriei. Fiecare segment n parte poate primi
alte drepturi de acces, drepturi trecute n tabela de segmente. De exemplu, un segment care
conine instruciuni cod main, poate fi declarat read-only sau executabil. La orice calcul
de adres, se verific respectarea modului de acces al locaiilor din segmental respectiv.
Alocarea segmentat cu paginare. Cele dou metode de alocare a memoriei au avantajele i
dezavantajele lor. n cazul segmentrii poate s apar fenomenul de fragmentare. n cazul
paginrii, se efectueaz o serie de operaii suplimentare de adresare. De asemenea, unele
procesoare folosesc alocarea paginat (Motorola 6800), iar altele folosesc segmentarea (Intel
80x86, Pentium). Ideea segmentrii cu paginare, este aceea c alocarea spaiului pentru
fiecare segment s se fac paginat.
Spaiul de adrese virtuale al fiecrui proces este mprit n dou zone; prima zon este
utilizat numai de ctre procesul respectiv, iar cealalt este partajat mpreun cu alte procese.
Informaiile despre prima partiie, respective a doua partiie sunt pstrate n descriptorul
tabelei locale (LDT Local Descriptor Table), respectiv descriptorul tabelei globale (GDT
Global Descriptor Table). Fiecare proces are propria LDT (caracter local), care conine
informaii despre segmentele locale ale procesului (cod, date, stiv etc); GDT este gestionat
la nivel de sistem (caracter global) i conine informaii despre segmente de sistem, inclusiv
ale sistemului de operare. Fiecare intrare n LDT/GDT conine informaii despre un anumit
segment, printre care adresa de nceput i lungimea acelui segment.
Adresa virtual este o pereche (g,s,p,d), n care:
- g indic dac segmentul este local sau global (se selecteaz LDT sau GDT);
- s este numrul de segment;
- p specific pagina;
- d valoarea deplasamentului
La nivelul fiecrui segment, exist o tabel de translatare a adreselor virtuale n adrese fizice,
organizat arborescent, pe trei niveluri, descris n seciunea anterioar. Translatarea unei
adrese virtuale n adres fizic se realizeaz astfel:
- pe baza valorii g se alege tabela de segmente;
- pe baza valorii s se alege intrarea corespunztoare segmentului, de unde se iau adresa
de nceputa i lungimea segmentului;
- prin utilizarea tabelei de pagini, pe baza valorilor p,d se obine adresa fizic a
locaiei virtuale respective.
S ne reamintim...
Un segment reprezint o entitate de program. Segmentele pot fi definite explicit
prin directive ale limbajului de programare sau implicit prin semantica
programului. Deosebire esenial dintre alocarea paginat i cea segmentat este
aceea c segmentele sunt de lungimi diferite.
n mod analog cu alocarea paginat, o adres virtual este o pereche (s,d),
unde s este numrul segmentului iar d este deplasamentul din cadrul
segmentului. Adresa real (fizic) este o adres obisnuit. Transformarea unei
adrese virtuale ntr-o adres fizic, se face pe baza unei tabele de segmente.
Ideea segmentrii cu paginare, este aceea c alocarea spaiului pentru fiecare

86
segment s se fac paginat. Aceast metod este utilizat de sistemele de operare
actuale.

nlocuii zona punctat cu termenii corespunztori.


1. Transformarea unei adrese virtuale ntr-o adres fizic, se face pe baza unei
................... Fiecare intrare n acest ..........este compus dintr-o ................. i
.........................
2. Componenta .......a adresei segmentate virtuale, este un .......... n tabela de
segmente.
3. Valoarea .................. d trebuie s fie cuprins ntre .....i ...................respectiv.
4. ntr-o adres virtual segmentat cu paginare, g indic dac segmentul
este........ sau .........; s este ..............; p specific .............; d este ..............
M3.U2.6. Algoritmi statici de paginare
Algoritmii statici aloc un numr fix de pagini fizice fiecrui proces n timpul execuiei.
Oricare algoritm de paginare este definit trei politici:
- politica de extragere (fetch): decide cnd o pagin va fi ncrcat n memoria
primar;
- politica de nlocuire: determin care pagin va fi mutat din memoria intern atunci
cnd toate paginile acesteia sunt pline cu informaii ale proceselor n execuie;
- politica de plasare: determin unde va fi plasat o pagin extras din memoria
intern.
Deoarece numrul paginilor fizice este fixat n cadrul alocrii statice, pagina fizic unde va fi
adus o pagin virtual, va trebui s fie ori o pagin liber, ori una n care se va nlocui
informaia deja existent, care fac parte din spaiul de adrese al procesului respectiv. Deci
politica de plasare este aceeai, celelate dou politici difereniaz algoritmii statici de
paginare.
Model matematic utilizat n descrierea algoritmilor statici de paginare. Presupunem c N
este mulimea paginilor din spaiul de adrese virtuale; este irul referinelor de pagini, fiind
o secven de pagini din N, de forma:
=r1, r2,..., ri,...
care sunt refereniate de ctre proces n timpul execuiei sale. Timpul virtual al procesului este
indicele din irul de referine de pagini. Fie m numrul de pagini din spaiul de adrese fizice i
Si(m) mulimea paginilor fizice ncrcate. La momentul 0 avem S0(m)= i la momentul
virtual t, St(m)= St - 1(m) U Xt - Yt , Xt , respectiv Yt fiind mulimea paginilor
extrase, respectiv nlocuite la timpul virtual t.
Politici de extragere. Aducerea unei pagini la cerere, este politica de extragere utilizat;
deoarece nu se cunoate apriori evoluia unui proces, nu se poate stabili dinainte o politic de
pre-extragere a paginilor. Exist unele sisteme care utilizeaz metode de ncrcare prin care se
aduc pagini n avans. Astfel, odat cu o pagin se aduc i cteva pagini vecine, n ipoteza c
ele vor fi invocate n viitorul apropiat. Principiul vecintii afirm c adresele de memorie
solicitate de un program nu se distribuie uniform pe ntreaga memorie folosit, ci se grupeaz
n jurul unor centre. Apelurile din jurul acestor centre sunt mult mai frecvente dect apelurile
de la un centru la altul. Acest principiu sugereaz o politic simpl de ncrcare n avans a
unor pagini. Se stabilete o aa zis memorie de lucru compus din cteva pagini. Atunci cnd
se cere aducerea unei pagini virtuale n memoria executabil, sunt ncrcate cteva pagini
vecine acesteia. n conformitate cu principiul vecintii, este foarte probabil ca urmtoarele

87
referiri s fie fcute n cadrul memoriei interne. O eviden statistic a utilizrii paginilor,
poate furniza, cu o anumit probabilitate care vor fi paginile cerute n viitor.
Algoritmi de nlocuire. Dac considerm =r1, r2,..., ri,...un ir de referire a
paginilor i {St(m)} secvena de stri ale memoriei interne atunci
St(m)= St - 1(m) U Xt Yt
n care Xt i Yt au semnificaia urmtoare:
- dac la momentul t procesul cere o pagin rt care nu se gsete n memoria fizic i
yt este pagina care va fi nlocuit atunci Xt ={rt}, Yt = {yt};
- dac la momentul t procesul cere o pagin rt care se gsete n memoria fizic atunci
Xt = , Yt = .
Problema care se pune, este cum s fie selectat pagina yt care va fi nlocuit n memoria
fizic.
nlocuirea aleatoare nseamn c yt este aleas cu o probabilitate 1/m dintre oricare
paginile fizice alocate procesului. n practic, s-a dovedit c aceast metod nu este eficient.
Algoritmul optimal al lui Belady. La la un moment t, pentru ncrcarea unei pagini rt,
pagina fizic yt care urmeaz s fie nlocuit, va fi determinat astfel: dintre paginile rt+1,
rt+2,..., care fac parte din irul de referine, se va alege acea pagin rk pentru care
diferena k-t+1, k t+1, considernd primele apariii ale paginilor, este maxim, sau
t=max{k/rk St-1(m)} sau cu alte cuvinte se nlocuiete pagina care nu va fi folosit
pentru cea mai lung perioad de timp.
Observaie. Aceast metod nu poate fi aplicat direct, deoarece presupune c se cunoate
apriori care pagini vor fi solicitate de ctre procesul respectiv, fapt imposibil, deoarece
evoluia unui program este determinat de datele de intrare. Aceast algoritm poate fi o surs
de inspiraie pentru alte metode.

Exemplu: Presupunem c numrul de pagini fizice alocate unui proces este 3.


Este prezentat un ir de referine de pagini (prima linie), precum i paginile fizice
n care ele se ncarc, folosind algoritmul lui Belady. a II-a linie coresp. primei
pagini fizice alocate, a III-a linie corespunde celei de-a II-a pagini fizice alocate, a
IV-a linie corespunde celei de-a III-a pagini fizice alocate. Am marcat cu * atunci
cnd are loc fenomenul de lips de pagin.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
*
7* 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7* 7 7
0* 0 0 0 0 0 4* 4 4 0* 0 0 0 0 0 0 0 0 0 pagini fizice
1* 1 1 3* 3 3 3 3 3 3 3 1* 1 1 1 1 1 1

Primele 3 pagini din irul de referin sunt ncrcate fr probleme n memoria


fizic. Cnd se ajunge la a patra pagin virtual din ir (pagina 2), va fi nlocuit
pagina 7, deoarece, n viitor, ea va fi ultima la care se va face o referin, dintre
paginile care sunt ncrcate n memoria fizic. A cincea pagin virtual din ir este
deja ncrcat n memoria intern, deci nu va mai fi necesar nlocuirea unei
pagini .a.m.d.
nlocuirea n ordinea ncrcrii paginilor(FIFO). Se creaz i se ntreine o list a paginilor
n ordinea ncrcrii lor. Un nod al listei conine numrul paginii virtuale ncrcate, timpul
virtual al ncrcrii i un pointer ctre nodul urmtor ( nul pentru ultimul nod). Aceast list

88
se actualizeaz la fiecare nou ncrcare de pagin i funcioneaz pe principiul cozii.
Atunci cnd se cere nlocuirea, este substituit prima (cea mai veche) pagin din list care va
fi i tears din list.
Exemplu: n condiiile aceluiai ir de referine i aceluiai numr de pagini fizice
alocate unui proces, ca n exemplul anterior este prezentat un ir de referine de
pagini, precum i paginile fizice n care ele se ncarc, folosind algoritmul FIFO.

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7* 7 7 2* 2 2 2 4* 4 4 0* 0 0 0 0 0 0 7* 7 7
0* 0 0 0 3* 3 3 2* 2 3 3 3 2 2 2 2 2 0* 0 pagini fizice
1* 1 1 1 0* 0 0 3* 4 4 2* 1* 1 1 1 1 1 1

Prima ncrcare de pagin virtual, cu nlocuirea unei pagini fizice, are loc atunci
cnd se ncarc prima dat pagina 2; lista conine paginile 7,0, 1, pagina nlocuit
fiind 7 (prima din list) i lista va conine paginile 0,1,2. La urmtoarea
nlocuire de pagin, cnd este adus n memorie pagina virtual 3, este nlocuit
pagina 0 i lista va conine paginile 1,2,3 .a.m.d.
nlocuirea paginii nesolicitate cel mai mult timp (LRU Least Recently Used) are la baz
observaia c o pagin care a fost solicitat mult n trecutul imediat, va fi solicitat mult i n
continuare i invers. Problema este cum s se in evidena utilizrilor. Fiecare pagin are
alocat o locaie n tabela de pagini, care se incrementeaz la fiecare accesare a acesteia..
Atunci cnd se impune o nlocuire, este nlocuit pagina cu cea mai mic valoare a contorului.
Dac exist mai multe pagini cu aceeai valoare minim a numrului de accesri, se aplic
metoda FIFO, n selectarea paginii care va fi nlocuit.
Exemplu: n condiiile aceluiai ir de referine i aceluiai numr de pagini
fizice alocate unui proces, ca n exemplul anterior, este prezentat un ir de
referine de pagini, precum i paginile fizice n care ele se ncarc, folosind
algoritmul LRU.

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7* 7 7 2* 2 2 2 4* 4 4 0* 0 0 1* 1 1 1 1 1 1
0* 0 0 0 0 0 0 0 3* 3 3 3 3 3 0* 0 0 0 0 pagini fizice
1* 1 1 3* 3 3 2* 2 2 2 2 2 2 2 2 7* 7 7

Cnd este adus pentru prima dat n memoria fizic pagina virtual 2, este
nlocuit pagina 7, deoarece ea nu a mai fost utilizat de cel mai mult timp; din
acelai motiv, cnd este refereniat pentru prima dat pagina 3, ea nlocuiete
pagina 1 .a.m.d.

Fiecare pagin fizic are asociai doi bii; bitul R (refereniere), primete valoarea 0 la
ncrcarea paginii. La fiecare referire a paginii, acest bit este pus pe 1; periodic (constant de
sistem), bitul este pus iari pe 0. Bitul M (modificare), primete valoarea 0 la ncrcarea
paginii respective i este setat cu 1 la scriere n pagin; bitul M indic dac pagina trebuie sau
nu salvat naintea nlocuirii.

89
Metoda NRU( Not Recently Used). La fiecare valoare a timpului virtual, biii M i R mpart
paginile fizice n patru clase:
- clasa 0: pagini nereferite i nemodificate;
- clasa 1: pagini nereferite (n intervalul fixat), dar modificate de la ncrcarea lor;
- clasa 2: pagini referite dar nemodificate;
- clasa 3: pagini referite i modificate.
Atunci cnd o pagin trebuie nlocuit, pagina respectiv se caut mai nti n clasa 0, apoi n
clasa 1, apoi n clasa 2 i n sfrit n clasa 3. Dac pagina de nlocuit este n clasa 1 sau n
clasa 3, coninutul ei va fi salvat pe disc naintea nlocuirii.
Observaie. Algoritmul NRU se utilizeaz mpreun cu metoda FIFO, n sensul c se aplic
mai nti NRU, iar n cadrul aceleiai clase se aplic FIFO.
Metoda celei de-a doua anse este o extensie a metodei FIFO. Cnd se pune problema lipsei
de pagin, se testeaz bitul R al primei pagini din coad. Dac acesta este 0, atunci pagina
este nlocuit imediat. Dac este 1, atunci este pus pe 0 i pagina este pus ultima n coad,
avnd ca valoare a timpului virtual, timpul cnd se cere ncrcarea de pagin. Apoi cutarea
se reia cu nou pagin care a devenit prima din coad.
Alocarea cadrelor. n cazul sistemelor care utilizeaz multiprogramarea, fiecrui proces
trebuie s i se asigure un numr de pagini fizice, care nu pot fi utilizate de celelalte procese.
Prin alocare egal se aloc tuturor proceselor acelai numr de pagini fizice. Prin alocarea
proporional se aloc proceselor un numr de pagini fizice direct proporional cu
dimensiunea spaiului de memorie virtual utilizat de procesul respectiv. O alt metod de
alocare ine cont de prioritatea proceselor, n sensul c numrul paginilor fizice alocate unui
proces, s fie direct proporional cu prioritatea procesului. Cele dou criterii de alocare
proporional se pot combina.
Performanele sistemului de paginare. Atunci cnd un proces refereniaz o pagin virtual
care nu este prezent n memoria fizic, sistemul execut o serie ntreag de operaii, care au
fost amintite n seciunea 3. este evident c timpul de execuie al procesului ntr-un sistem cu
paginare, va fi mai mare dect timpul su de execuie, n cazul n care va avea la dispoziie un
spaiu de memorie suficient, astfel nct s nu se confrunte cu situaia de pagin lips
(pagin refereniat care nu este ncrcat n memoria fizic, i care trebuie adus n locul
unei pagini ncrcate n memoria fizic). Dac apare frecvent situaia c, la un anumit moment
al execuiei, o anumit pagin este evacuat pe disc, dup care, la un interval mic de timp ea
este din nou refereniat, eficiena utilizrii CPU va scade.
S ne reamintim...
Algoritmii statici aloc un numr fix de pagini fizice fiecrui proces n timpul
execuiei. Oricare algoritm de paginare este definit trei politici: politica de
extragere, politica de nlocuire, politica de plasare.
Algoritmul optimal al lui Belady nlocuiete pagina care nu va fi folosit pentru
cea mai lung perioad de timp.
nlocuirea n ordinea ncrcrii paginilor creaz i se ntreine o list a paginilor
n ordinea ncrcrii lor.
nlocuirea paginii nesolicitate cel mai mult timp are la baz observaia c o
pagin care a fost solicitat mult n trecutul imediat, va fi solicitat mult i n
continuare i invers.
Metoda NRU folosete biii M i R mpart paginile fizice n patru clase. Atunci
cnd o pagin trebuie nlocuit, pagina respectiv se caut mai nti n clasa 0,

90
apoi n clasa 1, apoi n clasa 2 i n sfrit n clasa 3. Dac pagina de nlocuit este
n clasa 1 sau n clasa 3, coninutul ei va fi salvat pe disc naintea nlocuirii.

Considerm irul urmtor de referine al paginilor:


5,0,1,2,3,4,6,2,3,1,0,1,6,0,2,3,1,4,6.
Presupunem c se aloc procesului 2,3, respectiv 4 pagini fizice.
i) S se descrie procesul de alocare a paginilor, folosind nlocuirea optim.
ii) Aceeai problem, dac politica de nlocuire este FIFO.
iii) Aceeai problem, dac politica de nlocuire este LRU.

M3.U2.7. Algoritmi dinamici de paginare


Prin utilizarea algoritmilor statici de alocare, se poate ajunge la situaia n care anumitor
procese nu li se asigur suficient memorie fizic, iar alte procese nu folosesc eficient
memoria fizic alocat. Problema care se pune, este gsirea unei strategii prin care se aduc n
memoria fizic numai acele pagini de care procesul va avea nevoie ntr-un viitor apropiat.
Numrul de pagini fizice de care va avea nevoie un proces pentru execuia lui, nu va mai fi o
constant, fiind modificat n funcie de necesiti.
Metoda setului de lucru(WS-Working Set) rezolv aceast problem. Ea are la baz modelul
localitii. Localitatea este un set de pagini care sunt utilizate mpreun ntr-un mod activ.
Un program este format din mai multe localiti, iar execuia programului presupune trecere
dintr-o localitate n alta.
Exemplu: Partea de instruciuni cod main care corespund unui subprogam;
aceste instruciunui se afl n pagini vecine, care dup execuia lor (terminarea
execuiei subrutinei) pot fi evacuate din memorie i posibilitatea referirii lor ntr-
un viitor apropiat este improbabil.
Cnd un proces trece dintr-o localitate n alta, se modific att paginile cerute de ctre proces,
ct i numrul de pagini fizice necesar procesului. Astfel, se poate considera c numrul de
pagini fizice alocat procesului este o entitate dinamic ce se modific n timpul execuiei
procesului. De asemenea, prin aceast metod problema alocrii de memorie fizic proceselor
are caracter global.
Modelul matematic. Presupunem c exist n procese care partajeaz memoria fizic a
sistemului. Fie mi(t) cantitatea de memorie alocat procesului i la momentul virtual t.
n 1
Avem mi(0)=0 i m (t) = k ,
i=0
i k fiind dimensiunea memoriei interne. Printr-un

raionament similar cu cel de la metodele statice de paginare, nlocuind pe m cu mi(t)


obinem:
S0(m0(t))=0
St(mi(t))= St - 1(mi(t)) U XtYt
St(mi(t)) reprezint starea memoriei la momentul t pentru procesul pi (St(mi(0))=).
Dac la momentul t procesul cere pagina rt i aceasta este deja ncrcat n memoria
fizic, atunci Xt=Yt=; dac pagina rt nu este ncrcar n memorie, atunci Yt = {yt} ,
sau pagina yt va fi evacuat din memorie, dac numrul de referine de la referirea paginii yt,
pn la cererea paginii curente rt este mai mare sau egal cu o valoare constant, notat cu ,
ce reprezint dimensiunea unei ferestere logice. mi(t) va reprezenta numrul de pagini fizice
alocat procesului pi i va fi ajustat astfel:

91
X t i Yt = , atunci m i (t ) = m i (t - 1) + 1 (se aloc o pagin fizic);
X t = i Yt = , atunci m i (t ) = m i (t - 1) ;
X t = i Yt atunci m i (t ) = m i (t - 1) 1 (una dintre paginile fizice este luat
procesului). S(mi(t)) rezultat este numit set de lucru al procesului pi la momentul t.
Vom nota cu W(t,) setul de lucru relativ la parametrul i la timpul virtual t al
procesului. W(t,) este mulimea de pagini pe care procesul le-a cerut n ultimele
uniti de timp virtual. Variabila este un interval de timp virtual (fereastr) n care
procesul este observat. Setul de lucru are proprietatea
W (t , + 1) W (t , )
adic dimensiunea setului de lucru este o funcie ne-descresctoare de .
Exemplu: Considerm =7 i irul de referine prezentat n figura 3.2.6; la
valorile timpului virtual al procesului t1 =6 i t2=15, WS(t1)={0, 1, 2, 3},
WS(t2)={4, 5, 6, 7, 8}.

103023167 64567846452


t1 t2

Figura 3.2.6. Valoarea setului de lucru n funcie de fereastr


Exemplu: n figura 3.2.7 sunt prezentate diverse moduri de alocare a spaiului de
memorie fizic al procesului pentru diverse valori ale lui .

0 1 2 3 0 1 2 3 0 1 2 3 4 5 6 7

0* 0 0 3* 3 3 2* 2 2 1* 1 1 4* 4 4 7*
1* 1 1 0* 0 0 3* 3 3 2* 2 2 5* 5 5 pagini fizice
2* 2 3 1* 1 1 0* 0 0 3* 3 3 6* 6

a) Setul de lucru cu =3.


0 1 2 3 0 1 2 3 0 1 2 3 4 5 6 7

0* 0 0 0 0 0 0 0 0 0 0 0 4* 4 4 4
1* 1 1 1 1 2 1 1 1 1 1 1 5* 5 5 pagini fizice
2* 2 2 2 2 2 2 2 2 2 2 2 6* 6
3* 3 3 3 3 3 3 3 3 3 3 3 7(
b) Setul de lucru cu =4.
Figura 3.2.7. Alocarea de pagini fizice prin metoda setului de lucru
Observm c n cazul a) numrul de situaii de pagin lips este 16, pe cnd n cazul b)
acesta se reduce la 6.
Observaie.
1. Cele dou seturi de lucru prezentate n exemplul anterior sunt disjuncte, adic ele
corespund la localiti diferite.
2. Sistemul de operare aloc fiecrui proces un numr de pagini fizice corespunztor
dimensiunii setului de lucru asociat; dac suma dimensiunilor seturilor de lucru

92
corespunztoare proceselor, este mai mic dect dimensiunea memoriei interne atunci
sistemul mai poate executa nc un proces. Reciproc, dac suma dimensiunilor seturilor de
lucru ale proceselor depete dimensiunea memoriei interne, atunci unul dintre procese va fi
suspendat.
3. n cursul execuiei lor, procesele trec dintr-o localitate n alta. Atunci cnd se afl ntr-o
localitate, numrul paginilor utilizate (setul de lucru) tinde s se stabilizeze; atunci cnd
procesele se afl ntr-o stare de tranziie dintr-o localitate n alta dimensiunea setului de lucru
crete, datorit faptului c se fac noi referine ctre pagini care corespund noii localiti.
Deoarece dimensiunea setului de lucru are o limit, se pune problema nlocuirii unor pagini
din setul de lucru curent cu alte pagini.
Conceptul de set de lucru poate fi folosit pentru a realiza o strategie pentru modificarea
mulimii paginilor rezidente din memoria intern alocate procesului. Astfel:
- se monitorizeaz setul de lucru al fiecrui proces,
- periodic, se scot dintre paginile rezidente ale proceselor, cele care nu mai sunt n setul
de lucru, pe baza unei strategii de tip LRU;
- un proces poate fi executat numai dac setul su de lucru este n memoria intern,
adic mulimea paginilor rezidente din memoria intern include setul de lucru.
Deoarece ine cont de principiul localitii, aceast strategie poate fi aplicat, conducnd la
minimizarea numrului situaiilor n care apare fenomenul de lips de pagin. Trebuie
rezolvate anumite probleme legate de:
- dimensiunea setului de lucru i paginile care fac parte din acesta se schimb n timp;
- nu se poate estima setul de lucru al fiecrui proces n timp;
- nu se poate stabili o valoare optim a parametrului .
Urmtorul algoritm de actualizare a setului de lucru nu se bazeaz direct pe referinele de
pagin, ci pe dimensiunea numrului de apariii(rata) a lipsei de pagin al procesului.
Algoritmul PFF (Page Fault Frequency) folosete un bit pentru fiecare pagin din memorie;
acest bit este setat cnd pagina este accesat. Cnd apare o lips de pagin, sistemul de
operare observ timpul virtual de la ultima lips de pagin a acelui proces. Pentru contorizarea
acestuia, se folosete o variabil care contorizeaz referinele la pagini. De asemenea, se
folosete un prag notat cu F. Dac valoarea timpului de la ultima lips de pagin este mai mic
sau egal cu F, atunci pagina este adaugat mulimii de pagini rezidente ale procesului din
memorie; n caz contrar, se renun la toate paginile cu bitul de utilizare setat pe 0 i se
micoreaz corespunztor mulimea paginilor rezidente. n acelai timp, se reseteaz bitul de
utilizare al paginilor rezidente rmase ale procesului.
Observaii.
1.Metoda poate fi mbuntit prin utilizarea a dou praguri: un prag superior, utilizat pentru
a declana o cretere a dimensiunii mulimii paginilor rezidente i un prag inferior, care este
utilizat pentru diminuarea numrului paginilor rezidente.
2. Metoda prezentat are dezavantajul urmtor: deoarece paginile nu sunt eliminate din
memorie dect dup F uniti de timp virtual, atunci cnd se trece dintr-o localitate n alta are
loc o succesiune de lips de pagin, corespunztoare noii localiti, fr ca paginile
corespunztoare localitii anterioare s fie eliminate; astfel mulimea paginilor rezidente din
memorie crete i unele dintre pagini nu mai sunt necesare.
Politica VSWS (Variable-interval Sampled Working Set) evaluez setul de lucru la anumite
instane pe baza valoarii timpului virtual trecut. La nceputul intervalului selectat, biii de
utilizare ai tuturor paginilor rezidente ale proceselor sunt resetate; la sfrit, numai paginile
care au fost cerute pe parcursul intervalului vor avea bitul de utilizare setat; aceste pagini sunt
reinute n setul rezident al procesului pe parcursul urmtorului interval, n timp ce la altele se

93
renun. Astfel, la sfritul intervalului setul rezident poate numai s scad. n decursul
fiecrui interval, orice pagin lips este adugat setului rezident; astfel, setul rezident poate
s rmn neschimbat sau s creasc pe parcursul intervalului.
Strategia VSWS utilizeaz trei parametri:
M::durata minim a intervalului de selecie;
L: durata maxim a intervalului de selecie;
Q: numrul situaiilor de lips de pagini care este permis s apar ntre dou intervale de
selecie.
Algoritmul VSWS este:
1. Dac timpul virtual de la ultima instan de selecie atinge L, atunci se suspend procesul i
se scaneaz biii de utilizare.
2. Dac, nainte de un timp scurs L, apar Q lips de pagin,
a. Dac timpul virtual trecut de la ultima instan de selecie este mai mic dect M, atunci
ateapt pn cnd timpul virtual trecut ajunge la valoarea M pentrua a suspenda procesul i
a scana biii de utilizare.
b. Dac timpul virtual trecut de la ultima instan de selecie este mai mare sau egal cu M, se
suspend procesul i se scaneaz biii de utilizare.
Valorile parametrilor sunt luate astfel nct setarea intervalul de observaie s fie declanat
dup apariia a Q lips de pagin dup ultima scanare.
S ne reamintim...

Metoda setului de lucru rezolv problema aducerii n memorie a paginilor de


care are nevoie un proces la un moment dat. Ea are la baz modelul localitii.
Localitatea este un set de pagini care sunt utilizate mpreun ntr-un mod activ.
Un program este format din mai multe localiti, iar execuia programului
presupune trecere dintr-o localitate n alta.
Cnd un proces trece dintr-o localitate n alta, se modific att paginile cerute de
ctre proces, ct i numrul de pagini fizice necesar procesului. Astfel, se poate
considera c numrul de pagini fizice alocat procesului este o entitate dinamic
ce se modific n timpul execuiei procesului.
Vom nota cu W(t,) setul de lucru relativ la parametrul i la timpul
virtual t al procesului. W(t,) este mulimea de pagini pe care procesul le-a
cerut n ultimele uniti de timp virtual. Variabila este un interval de timp
virtual (fereastr) n care procesul este observat.

I. nlocuii zona punctat cu termenii corespunztori.


1. Localitatea este un .............. care sunt utilizate mpreun ntr-un mod activ.
Un .............. este format din mai multe localiti, iar execuia programului presupune
............. dintr-o localitate n alta.
2. Cnd un ............trece dintr-o localitate n alta, se modific att ............cerute
de ctre ............., ct i numrul de ............. necesar procesului.
3. Dac W(t,) este setul de lucru relativ la ........... i la ............ t
al procesului, atunci W(t,) este ............... pe care procesul le-a cerut n ultimele
........................
II. Considerm irul urmtor de referine al paginilor:
1, 0, 1, 2, 3, 4, 5, 6, 7, 5, 6, 8, 1, 6, 5, 2, 3, 1, 0.
S se descrie procesul de alocare a paginilor, folosind metoda setului de lucru,
pentru {5,7}, dac se aloc procesului 3, respectiv 4 pagini fizice.

94
M3.U2.9. Memoria cu acces rapid
Memoria cu acces rapid(cache) conine copii ale unor blocuri din memoria operativ. Cnd
CPU ncearc citirea unui cuvnt din memorie, se verific dac acesta exist n memoria
cache. Dac exist, atunci el este livrat CPU. Dac nu, atunci el este cutat n memoria
operativ, este adus n memoria cache mpreun cu blocul din care face parte, dup care este
livrat CPU. Datorit vitezei mult mai mari de acces la memoria cache, randamentul general al
sistemului crete.
Memoria cache este mprit n mai multe pri egale, numite sloturi. Un slot are
dimensiunea unui bloc de memorie, a crui dimensiune este o putere a lui 2. ntr-un slot se
ncarc coninutul unui anumit bloc din de memorie operativ. Problema care se pune, este
modul n care se face corespondena dintre blocurile din memoria operativ i sloturile din
memoria cache, precum i politicile de nlocuire a sloturilor din memoria cache cu blocuri din
memoria fizic. Spunem c are loc o proiecie a spaiului memoriei operative n cel al
memoriei cache.
Proiecia direct. Dac c indic numrul total de sloturi din memoria cache, a este o adres
oarecare din memoria operativ, atunci numrul s al slotului n care se proiecteaz adresa a
este:
s= a mod c.
Dezavantajul metodei const n faptul c fiecare bloc are o poziie fix n memoria cache.
Exemplu: Dac se cer accese succesive la dou blocuri care ocup acelai slot,
atunci trebuie efectuate mai multe operaii de nlocuire a coninutului slotului
care corespunde celor dou blocuri.

Proiecia asociativ. Fiecare bloc de memorie este plasat n oricare dintre sloturile de
memorie cache, care sunt libere. nlocuirea coninutului unui slot, cu coninutul altui bloc din
memoria operativ, se face pe baza unuia dintre algoritmii NRU, FIFO sau LRU.
Proiecia set-asociativ combin cele dou metode prezentate anterior. Memoria cache este
mprit n i seturi, un set fiind compus din j sloturi. Avem relaia c=i x j. Dac a este
o adres de memorie, numrul k al setului n care va intra blocul, este dat de:
K=a mod i.
Cunoscnd numrul setului, blocul va ocupa unul dintre sloturile acestui set, pe baza unuia
dintre algoritmii de nlocuire prezentai anterior.

M3.U2.9. Test de evaluare a cunotinelor


Selectai varianta corect.
1.Dac presupunem c n este dimensiunea magistralei de adrese, atunci numrul maxim
de locaii adresabile este:
a) 2x2n. b) nx2n.
c) 2n. d) 2n+1.
2. Spaiul de adrese al unui proces conine adrese din:
a) Memoria extern. b) Memoria intern.
c) Memoria cache. d) Memoria primar i pe hard-discuri.

95
3. Funcia de translatare a adreselor virtuale este:
a) O coresponden constant n timp b) O coresponden variabil n timp a
a spaiului de adrese virtuale ale unui spaiului de adrese virtuale ale unui
proces, n spaiul de adrese fizice. proces, n spaiul de adrese fizice.
c) O coresponden variabil n timp a d) O coresponden constant n timp a
spaiului de adrese virtuale ale unui spaiului de adrese virtuale ale unui
proces, n spaiul de de adrese de pe proces, n spaiul de de adrese de pe
disc. disc.
4. O pagin virtual este:
a) O zon contigu din memoria c) O zon contigu dintr-un fiier
primar. executabil.
b) Un slot din memoria cache.. d) Un registru al CPU.
5. Paginile virtuale i cele fizice:
a) Au aceeai lungime, lungime care c) Au lungimi diferite, lungimi care
este o putere a lui 2 i care sunt setate sunt o putere a lui 2 i care sunt setate
de administratorul de sistem. de administratorul de sistem.
b) Au aceeai lungime, lungime care d) Au lungimi diferite, lungimi care
este o putere a lui 2 i care este o sunt o putere a lui 2 i care este o
constant a sistemului. constant a sistemului..
k
6. Dac 2 este dimensiunea unei pagini, atunci numrul de pagin n care se afl o locaie
de memorie de adres i este:
a) Restul mpririi lui i la 2k. b) i - 2k.

c) Ctul mpririi lui i la 2k. d) i +2k.


7. n cazul calculatoarelor pe 32 de bii, tabela de translatare a adreselor virtuale n adrese
fizice este organizat:
a) Pe 3 niveluri. b) Pe 2 niveluri..

c) Pe 4 niveluri.. d) Pe 5 niveluri..
8. O intrare n tabela de segmente este compus din:
a) Adres de baz i lungimea b) Adres tabelei de pagini a
segmentului. segmentului i lungimea segmentului.
c) Adres de baz i lungimea d) Adres de baz i lungimea
paginilor segmentului. fiierului executabil.
9. Comform algoritmului optimal al lui Belady, se nlocuiete pagina care:
a) Nu va fi folosit pentru cea mai b) Nu va fi folosit pentru cea mai
lung perioad de timp. scurt perioad de timp.
c)Este prima ncrcat n memorie. d) Este ultima ncrcat n memorie.
10. nlocuirea paginii nesolicitate cel mai mult timp are la baz observaia c
a) O pagin care a fost solicitat mult b) O pagin care a fost solicitat mult
n trecutul imediat, va fi solicitat n trecutul imediat, va fi solicitat mult
puin n continuare.. i n continuare.
c) O pagin care a fost solicitat mult d) O pagin care va fi solicitat mult n
la nceput, va fi solicitat mult i n viitor, nu a fost solicitat mult n
continuare. trecut.

96
11. Setul de lucru relativ la parametrul i la timpul virtual t al procesului, notat cu
W(t,) este:
a) Mulimea de pagini pe care b) Mulimea de pagini pe care
procesul le-a cerut n ultimele procesul le va cere n urmtoarele
uniti de timp virtual. . uniti de timp virtual.
c) Mulimea de pagini pe care d) Mulimea de pagini pe care
procesul le-a cerut n primele uniti procesul le va ncrca n
de timp virtual. urmtoarele uniti de timp
virtual.
12. n memoria cache se ncarc:
a) O pagin virtual. b) Coninutul regitrilor CPU.

c) Un bloc din memoria intern d) Coninutul unui fiier executabil.

M3.U2.10. Rezumat
Calculatoarele moderne folosesc conceptul de memorie virtual, ce reprezint
extinderea spaiului de adrese al memoriei fizice. Ea se sprijin pe ideea asocierii de
adrese fizice obiectelor programului n timpul execuiei lui. Compilatorul i link-
editorul creeaz un modul absolut, cruia ncrctorul i asociaz adrese fizice
nainte ca programul s fie executat. Facilitile hardware permit administratorului
memoriei s ncarce automat poriuni ale spaiului de adrese virtuale n memoria
primar, n timp ce restul spaiului de adrese este pstrat n memoria secundar.
Sistemele cu paginare transfer blocuri de informaie de dimensiune fix ntre
memoria secundar i cea primar. Datorit dimensiunii fixe a paginii virtuale i a
celei fizice, translatarea unei adrese virtuale ntr-una fizic devine o problem relativ
simpl, prin mecanismul tabelei de pagini sau al memoriei virtuale.
Politicile de ncrcare i de nlocuire a paginilor, permit ca paginile s fie ncrcate
n memorie, numai atunci cnd se face o referin la o locaie de memorie pe care o
conin. Politicile de plasare i de nlocuire a paginilor, definesc reguli prin care se
optimizeaz transferul de informaii din memoria virtual n memoria primar i
reciproc.
Segmentarea este o alternativ la paginare. Ea difer de paginare prin faptul c
unitile de transfer dintre memoria secundar i cea primar variaz n timp.
Dimensiunea segmentelor trebuie s fie n mod explicit definit de ctre programator
sau sistem. Translatarea unei adrese virtuale segmentate ntr-o adres fizic este mult
mai complex dect translatarea unei adrese virtuale paginat. Segmentarea se
sprijin i pe sistemul de fiiere, deoarece segmentele sunt stocate pe memoriile
externe sub form de fiiere. Segmentarea cu paginare valorific avantajele oferite
de cele dou metode, fiind utilizat de sistemele de calcul moderne.
Memoriile cu acces rapid cresc performanele unui sistem de calcul. Metodele de
proiecie a spaiului din memoria intern n memoria cache, permite ca orice locaie
fizic s fie accesat mult mai rapid, pentru a fi utilizat de unitatea central.

97
Modulul 4. Administrarea fiierelor
Cuprins
Introducere ............................................................................................................................... 98
Competenele modului ............................................................................................................. 98
U1. Administrarea fiierelor..................................................................................................... 98
Unitatea de nvare M4.U1. Administrarea fiierelor
Cuprins
M4.U1.1. Introducere ............................................................................................................... 98
M4.U1.2. Obiectivele unitii de nvare ................................................................................ 98
M4.U1.3. Conceptul de fiier ................................................................................................... 99
M4.U1.4. Operaii asupra fiierelor ....................................................................................... 102
M4.U1.5. Moduri de organizare a fiierelor........................................................................... 106
M4.U1.6. Conceptul de director(catalog)............................................................................... 109
M4.U1.7. Alocarea spaiului pentru fiiere disc..................................................................... 112
M4.U1.8. Evidena spaiului liber de disc.............................................................................. 115
M4.U1.9. Teste de evaluare ................................................................................................... 116
M4.U1.10. Rezumat .............................................................................................................. 118

Durata medie de parcurgere a unitii de nvare este de 3 ore.

Introducere.
Multe aplicaii care se execut pe un sistem de calcul prelucreaz un volum mare
de informaii. n timpul execuiei sale, un proces poate reine o parte din
informaiile pe care le prelucreaz n spaiul su de adrese virtuale. Acest spaiu
este limitat ca dimensiune i coninutul lui se terge atunci cnd se ncheie o
sesiune de lucru. O alt problem este necesitatea partajrii de ctre procese a unor
volume mari de informaii.
Sistemul de operare, prin componenta sa de gestiune a fiierelor rezolv aceste
probleme, prin stocarea datelor pe suporturi externe de informaie sub form de
fiiere. Aceast structur de date permite efectuarea de diverse operaii ( adugare,
modificare, tergere, localizare etc.), care vor fi prezentate n continuare.
De asemenea, sistemul de fiiere ofer o serie de apeluri de sistem prin care se
ofer o serie de faciliti de lucru cu fiiere, care ascund detaliile de implementare,
uurnd astfel munca utilizatorului.

Unele sisteme de operare privesc dispozitivele de I/O ca fiiere, n scopul de a


simplifica utilizarea acestora.

Obiectivele unitii de nvare


La sfritul acestei unitii de nvare studenii vor fi capabili:
s explice conceptul de fiier;
s explice operaiile care se pot efectua asupra fiierelor;
s explice modul de organizare a fiierelor;

98
s identifice diferena dintre discul fizic i cel logic;
s explice conceptul de director;
s explice metodele de gestionare a spaiului liber pe discuri;
s identifice interaciunea dintre sistemul de fiiere i celelalte componente ale
sistemului de operare.

M4.U1.3. Conceptul de fiier


Din punctul de vedere al sistemului exist dou modaliti de a gestiona spaiile de memorie
secundar: utilizarea memoriei virtuale i sistemul de fiiere. Dac memoria virtual este
utilizat de ctre un proces n timpul execuiei, fiierele sunt folosite pentru stocarea
informaiilor pentru o perioad mai lung de timp. Intuitiv, un fiier este un ansamblu de
elemente de date, grupate mpreun, avnd ca scop controlul accesului, regsirea i
modificarea elementelor componente. Aceste elemente de date pot fi octei sau
articole(nregistrri). n figura 4.1.1. se prezint transformrile pe care le sufer datele stocate
pe memorii secundare pentru a putea fi utilizate de ctre procese.

Fiier- Flux de articole

Translatarea fluxurilor de octei

Fiier-Flux de octei

Translatarea fluxului de blocuri

Uniti de destocare

Figura 4.1.1. Nivele de structurare a informaiei


La nivelul unui periferic, datele sunt stocate ca secvene de blocuri de informaie. Pentru a fi
utilizate de ctre aplicaii, informaiile sunt structurate sub form de fiiere; componenta SO
care se ocup de gestionarea lor se numete sistemul de fiiere. Cnd sunt folosite de aplicaii,
se presupune c fiierele sunt structurate sub forma unei colecii de articole i la rndul lor,
informaiile dintr-un articol sunt de regul grupate n subdiviziuni, numite cmpuri sau
atribute. Unele sisteme de operare furnizeaz numai faciliti de translatare a blocurilor n
fluxuri de octei, lsnd n seama aplicaiilor structurarea fiierelor ca flux de articole. Astfel
de sisteme de operare conin un sistem de fiiere de nivel sczut. Sistemele de operare

99
Windows, Linux i Unix fac parte din aceast clas. Sistemele de operare care privesc
fiierele ca flux de nregistrri conin un sistem de fiiere de nivel nalt.
Fiecare cmp(atribut) al unui articol, are o anumit valoare n cadrul fiierului. O pereche
(atribut, valoare) o vom numi cheie. Numim index de articol, un atribut cu proprietatea c
pentru oricare dou articole diferite ale fiierului, valorile atributului sunt diferite. Indexul de
articol se mai numete i cheie de articol.

Exemplu. Considerm un fiier care conine informaii despre studenii unei


universiti (numele, prenumele, numrul matricol, data naterii, locul naterii,
seria si numrul buletinului de identitate, sexul, facultatea din care face parte,
notele obinute la examene etc.). Perechile (nume, Ionescu), (sex, B), (matricol,
1089) sunt chei. Se observ c n acest fiier pot exista mai multe articole care
conin aceeai cheie (de exemplu mai muli studeni cu acelai nume) i de
asemenea, pot fi chei care s nu existe n fiier. Atributele numr matricol precum
i atributul obinut prin concatenarea cmpurilor seria si numrul buletinului de
identitate reprezint indexi.
De cele mai multe ori, numrul de cmpuri dintr-un articol este acelai pentru toate articolele
fiierului. Numrul de octei pe care se reprezint un atribut al lui, este constant sau variabil.
Exemplu. Un atribut care este un numar ntreg se reprezint pe doi octei,
indiferent de articol, dar un atribut care este un ir de caractere poate avea lungimi
diferite de reprezentare.

Lungimea de reprezentare a unui articol poate fi constant pentru toate articolele fiierului
sau poate s varieze de la un articol la altul, deci avem articole de format fix i articole de
format variabil. Pentru cele cu format variabil, trebuie s existe fie un cmp n care se trece
lungimea efectiv a articolului, fie o valoare special prin care s se marcheze terminarea
articolului.
Conceptul de fiier abstract. Un fiier f poate fi privit ca o funcie parial definit f:NT,
unde N este mulimea numerelor naturale, iar T este mulimea valorilor posibile pentru un
anumit tip de dat deja definit.
Exemplu. T poate fi mulimea valorilor posibile pentru date reprezentate pe un
octet, i atunci avem un fiier flux de octei, poate fi un tip de date i atunci avem
un fiier structurat ca un flux de articole; dac tipul de dat este la rndul lui un tip
fiier, avem de-a face cu o baz de date.
Un ntreg i ( i N) indic numrul de ordine al unui articol(octet) din fiier; primul articol
are numrul de ordine 0, al doilea are numrul de ordine 1 .a.m.d.; prin f(i) notm
valoarea articolului al i-lea, adic ansamblul valorilor cmpurilor acestui articol.
Descriptorul de fiier este o structur de date gestionat de SGF n care sunt pstrate
informaii despre un anumit fiier. Aceast structur difer de la un sistem de operare la altul,
dar sunt unele informaii comune coninute i anume:
Numele extern(simbolic) este un ir de caractere utilizat pentru a identifica un fiier n
comenzile utilizatorilor sau n programe. Orice fiier se identific prin perechea (N,I), unde
N reprezint numele simbolic al fiierului iar I este un numr prin care descriptorul este
reperat pe disc n mod direct. Prin N, sistemul de fiiere realizeaz legtura cu utilizatorul, iar
prin I cu celelalte componente ale SO.
Starea curent poate fi:
- arhivat, dac el nu poate fi deschis fr a se efectua un numr de operaii asupra sa;

100
- nchis, dac el se afl pe un suport magnetic on-line, i poate fi deschis ntrun timp
suficient de scurt;
- deschis pentru citire(scriere, execuie etc.) dac ele este alocat unui proces care poate
efectua una dintre operaiile specificate.
Partajare. Un cmp care specific faptul c mai multe procese pot utiliza n acelai timp
fiierul respectiv, putnd efectua una dintre operaiile specificate mai sus.
Proprietar. Conine identificatorul asociat utilizatorului al crui proces a creat fiierul.
Sistemul permite ca dreptul de proprietate s fie transferat i altor utilizatori.
Utilizator. Conine lista proceslor care la momentul respectiv au deschis fiierul.
ncuiat. SO poate s ncuie fiierul atunci cnd acesta este deschis.
Exemplu. Dac fiierul este partajat, numai procesul respectiv poate utiliza fiierul
atta timp ct acesta este ncuiat.

Protecie. Conine nite fanioane care indic modul n care fiierul respectiv poate fi folosit
de ctre diverse clase de utilizatori.
Lungime. Numrul de octei(articole) coninute n fiierul respectiv.
Data crerii (data ultimei modificri, data ultimei accesri). Conine datele sistem ale
crerii, ultimei modificri, respectiv ultimei accesri a fiierului repectiv.
Contorul de refereniere. Dac fiierul este partajat el conine numrul de procese care au
deschis fiierul respectiv simultan.
Detalii privind modul de stocare. Indic modul cum blocurile fiierului pot fi accesate, n
funcie de modul de administrare a unitii respective.
Clasificarea fiierelor se poate face dup mai multe criterii:
I. Dup lungimea unui articol, se disting:
fiiere cu articole de format fix;
fiiere cu articole de format variabil.
II. Dup posibilitatea de afiare sau tiprire a coninutului se disting: fiiere text i fiiere
binare.
Fiierele text sunt cele al cror coninut poate fi afiat pe ecran sau poate fi tiprit la
imprimant. El este format dintr-o succesiune de octei, fiecare coninnd codul unui caracter
tipribil. Codificarea caracterelor se face utiliznd unul dintre sistemele ASCII sau EBCDIC.
Articolul unui fisier text este caracterul. ntr-un fiier text, o linie este un ir de caractere,
care se termin cu un caracter special numit separator de linii, format de regul din dou
caractere funcionale: CR si LF.
Fiierele binare sunt formate din iruri de octei consecutivi fr nici o semnificaie pentru
afiare.
Exemplu. Fiierele obiect rezultate n urma compilrii i fiierele executabile
rezultate n urma editrii de legturi sunt fiiere binare.

III. Dup suportul pe care este rezident fiierul(fiiere pe hard disc; fiiere pe floppy disc;
fiiere pe imprimant; fiiere de la tastatur; fiiere pe monitor.)
Evident, c nu toate aceste tipuri de fiiere accept orice operaii i moduri de acces.
Exemplu. Numai suportul disc accept accesul direct, celelalte numai cel
secvenial. Fiierele de la tastatur accept numai citirea iar fiierele pe imprimant
numai scrierea.

IV. Dup modurile de acces permise de ctre un fiier se disting :


fiiere secveniale care permit numai accesul secvenial la nregistrri;

101
fiiere cu acces direct permit accesul direct la nregistrri, cel puin la citire.
S ne reamintim...
Intuitiv, un fiier este un ansamblu de elemente de date, grupate mpreun, avnd ca
scop controlul accesului, regsirea i modificarea elementelor componente. Aceste
elemente de date pot fi octei sau articole(nregistrri). Informaiile dintr-un articol
sunt de regul grupate n subdiviziuni, numite cmpuri sau atribute. Numim index
de articol, un atribut cu proprietatea c pentru oricare dou articole diferite ale
fiierului, valorile atributului sunt diferite. Descriptorul de fiier este o structur de
date gestionat de SGF n care sunt pstrate informaii despre un anumit fiier.

nlocuii zona punctat cu termenii corespunztori.


1. La nivelul unui periferic, datele sunt stocate ca secvene de ..........................
2. Cnd sunt folosite de aplicaii, se presupune c fiierele sunt structurate sub
forma unei .........................
3. Numim index de articol, un atribut cu proprietatea c pentru oricare dou
articole ................ ale fiierului, valorile atributului sunt ...............
4. Un fiier f poate fi privit ca ..................., unde N este ................., iar T este
mulimea valorilor posibile pentru ...........................
5. Prin f(i) notm valoarea ...................
6. Descriptorul de fiier este o structur de date gestionat de .......... n care
sunt pstrate ........................
7. Articolul unui fisier text este ................ ntr-un fiier text, o linie este un ir
de caractere, care se termin cu .............................

M4.U1.4. Operaii asupra fiierelor


Fiierul este un tip de date abstract, deci asupra lui se pot efectua o serie de operaii; sistemul
de operare ofer o serie de apeluri de sistem, prin care se pot lansa aceste operaii i al cror
efect va fi descris n cele ce urmeaz.
Deschiderea fiierului poate fi realizat explicit, printr-un apel de sistem (open) sau implicit
la prima referire a fiierului. Sistemul de operare pstreaz o tabel a fiierelor deschise i
fiecrui fiier deschis i corespunde un indice n aceast tabel. Cnd este lansat o operaie
asupra fiierului, acesta este selectat pe baza valorii indicelui din tabel, evitndu-se astfel
efectuarea unor operaii de cutare mult mai complexe. Operaia open returneaz un pointer
ctre intrarea corespunztoare din tabela fiierelor deschise. Acest pointer va fi utilizat n
toate operaiile de I/O care se vor efectua asupra fiierului.
Efectul operaiei open este diferit n funcie de natura fiierului. Exist aciuni comune,
indiferent de tipul fiierului. Att pentru un fiier nou creat, ct i unul existent:
- se face legtura dintre identificatorul logic, utilizat de program i descriptorul de fiier
aflat pe disc;
- se face alocarea de memorie intern pentru zonele tampon necesare accesului la fiier;
- se ncarc rutinele de acces la articolele.
- sunt efectuate o serie de controale asupra drepturilor de acces ale utilizatorului la fiier.
n plus, pentru un fiier nou creat se aloc spaiu pe disc pentru memorarea viitoarelor
articole ale fiierului.
nchiderea fiierului se poate realiza implicit, la terminarea execuiei procesului sau explicit
prin lansare unui apel de sistem (close). i aici se poate discuta efectul operaiei de nchidere,

102
n funcie de tipul fiierului. Pentru fiierele temporare se terge fiierul i se elibereaz
spaiul pe disc ocupat. Pentru toate fiierele care trebuie reinute, se efectueaz
urmtoarele aciuni:
- se actualizeaz informaiile generale despre fiier (lungime, adrese de nceput i de sfrit,
data modificrii etc.);
- se aduce capul de citire al discului n poziia zero;
- se elibereaz spaiile ocupate de zonele tampon n memoria operativ;
- se elibereaz perifericul sau perifericele suport ale fiierului.
n plus, pentru fiierele nou create i care trebuie reinute, se efectueaz operaiile:
- se creeaz o nou intrare n directorul discului (concept pe care l vom aborda mai trziu);
- se insereaz marcajul de sfrit de fiier (EOF) dup ultimul articol al fiierului;
- se golete tamponul adic ultimele informaii existente n zonele tampon, sunt transferate
pe periferic;
Dac fiierul a fost modificat, se marcheaz acest lucru i eventual se pune numele fiierului
ntr-o list a sistemului, n vederea unei salvri automate de ctre SO a tuturor fiierelor
modificate.
Observaie. ntr-un mediu multiusers mai muli utilizatori pot deschide acelai fiier n
acelai timp i, deci implementarea operaiilor open i close devine mult mai complicat.
Pentru rezolvarea acestei probleme, sistemul de operare folosete o tabel pe dou niveluri: o
tabel la nivel de proces i una la nivel de sistem.
Tabela asociat procesului ine evidena tuturor fiierelor deschise de procesul respectiv i
aici sunt stocate informaii care sunt utilizate numai de proces n lucrul cu fiierul
respectiv(drepturile de acces la fiier, valoarea pointerului care indic urmtorul articol ce
poate fi citit/scris etc.). n tabela de sistem, sunt memorate informaii care privesc partajarea
fiierului respectiv de ctre mai multe procese. Sistemul administreaz un cont de
deschidere, care este iniializat cu 1, cnd un proces deschide fiierul, este incrementat de
fiecare dat cnd un alt proces deschide acelai fiier, respectiv decrementat, atunci cnd un
proces execut un apel close asupra fiierului respectiv. Atunci cnd contorul devine 0,
nseamn c fiierul nu mai este folosit de nici un proces, deci intrarea corespunztoare lui va
fi tears din tabel.
Citirea(Read) celui de-al k-lea articol din fiier nseamn obinerea valorii f(k); k trebuie
s fie valoarea indicatorului de fiier.
Scrierea(Write) nseamn adugarea unui articol la sfritul fiierului. Deci fiierul f cu n
articole se transform ntr-un fiier f1 cu n+1 articole, definit astfel:
f1(i) = f(i), daca 0 i n
f1(n + 1) = x
unde x este valoarea articolului care trebuie introdus. Evident, valoarea x trebuie anterior s
fie iniializat.
Blocarea i deblocarea articolelor. Aa cum am menionat, pentru prelucrarea informaiilor
dintr-un fiier, trebuie efectuat o operaie de citire, prin care acestea sunt aduse n memoria
intern. De asemenea, pentru salvarea unor informaii ntr-un fiier trebuie efectuat o
operaie de scriere. Cele dou operaii sunt costisitoare din punctul de vedere al sistemului.
Deci, este indicat ca printr-o operaie de citire/scriere s fie aduse n memoria intern,
respective transferate pe disc, nu un articol ci mai multe articole. La nivel de disc, fiierul este
divizat n uniti(blocuri) fizice, care au aceeai dimensiune. Un astfel de bloc fizic, poate
conine un numr de articole ale fiierului. Un fiier se poate diviza astfel n blocuri logice.
Blocul este unitatea de schimb ntre suportul fiierului i memoria intern. Zona de memorie

103
n care este adus un bloc pentru a fi prelucrat, respectiv unde sunt pstrate informaiile care
urmeaz s fie transferate n fiiere se numete zon tampon(buffer).
Pentru fiierele pe disc, se cere ca blocurile s fie compuse dintr-un numr ntreg de sectoare
vecine. Mai mult, aceste sectoare trebuie s fie n ntregime cuprinse ntr-o pist sau ntr-un
cilindru. Fiecare SO are modaliti proprii de stabilire a dimensiunii blocului.
Observaii.
1. Citirile/scrierile economisite sunt nlocuite cu mutri ale unor octei dintr-o zon de
memorie n alta.
2. Prin blocarea articolelor poate apare fenomenul de fragmentare intern al discului,
datorit cerinei ca ntr-un bloc s intre un numr ntreg de articole.
3.n cazul unui fiier n care se scriu articole noi, este obli gatorie nchiderea acestuia, operaie
care va transfera i informaiile transferate n zona tampon, dup ultima operaie de scriere.
Inserarea(Insert) a unui nou articol cu valoarea x, dup articolul cu numrul de ordine k
nseamn obinerea unui nou fiier f1 cu n+1 articole, definit astfel:
f1(i) = f(i), daca 0 i k
f1(k + 1) = x
f1(i + 1) = f(i), daca k i n
Se observ c operaia de scriere este echivalent cu operaia de inserare dupa ultima poziie,
notat cu n. Prin definiie, inserarea dup poziia 0, nseamn plasarea unui articol nou la
nceputul fiierului. Inserarea unui articol trebuie fcut n aa fel nct celelalte articole s
rmn nemicate. Acest fapt este posibil numai dac articolele sunt legate ntre ele printr-o
list nlnuit. Aceasta permite ca dou articole s fie vecine logic, chiar dac ele ocup spaii
fizice ndeprtate.
tergerea(Delete) articolului k nseamn obinerea unui nou fiier f1 cu n-1 articole,
definit astfel :
f1(i) = f(i), daca 1 i k 1}
f1(i 1) = f(i), daca k + 1 i n}
tergerea poate fi logic sau fizic. Prin tergerea logic articolul respectiv continu s
ocupe zona fizic. Pentru aceasta, sistemul de fiiere adaug la fiecare articol cte un octet
numit indicator de tergere. Dac valoarea lui este 1, nseamn c articolul exist pentru
sistemul de fiiere, n caz contrar el este ignorat de sistem, considerndu-l ters. Pentru
tergerea fizic, trebuie recreat fiierul.
Observaii.
1. Operaiile efectuate asupra fiierului, nu construiesc de fiecare dat cte un nou fiier.
Sistemul de fiiere actioneaz local asupra informaiilor de pe suport i las nemicate
articolele neimplicate n operaie.
2. Operaiile descrise anterior se execut prin lansarea unor apeluri de sistem. Operaiile care
vor fi prezentate n continuare, se execut prin intermediul unor comenzi (fiiere de
comenzi) ale SO.
Crearea unui fiier. Pentru fiierele cu organizare mai simpl, aceast operaie coincide cu
deschiderea unui fiier nou n vederea scrierii n el. Pentru fiierele cu organizare mai
complicat crearea nseamn o formatare, care pregtete spaiul fizic n vederea ncrcrii lui
cu informaii, cum este cazul bazelor de date.
tergerea unui fiier. Atunci cnd informaiile dintr-un fiier nu mai sunt necesare,
utilizatorul poate cere o astfel de operaie. Ca efect, se elibereaz spaiul fizic ocupat de

104
articolele fiierului i se elimin din director intrarea care conine descriptorul fiierului
respectiv.
Copierea unui fiier n alt fiier prin care se realizeaz o copie fizic a fiierului emitor
sau surs ntr-un fiier receptor sau destinaie. Cele dou fiiere pot s se gseasc pe
acelai suport sau pe suporturi diferite. Elementele de identificare ale celor dou fiiere sunt
diferite, dei coninuturile lor sunt aceleai. Listarea unui fiier este un caz particular de
copiere, atunci cnd fiierul surs este un fiier care poate fi tiprit, iar fiierul destinaie este
imprimanta sau ecranul unui terminal.
Schimbarea numelui unui fiier (redenumirea sau mutarea) las neschimbat coninutul
fiierului, dar i schimb elementele de identificare.
Prin concatenarea mai multor fiiere f1,... ,fn(fiierele surs) se obine un nou fiier f,
n care coninutul fiierului fi+1 urmeaz pe cel al lui fi .
Compararea se face parcurgnd secvenial cele dou fiiere, octet cu octet. Dup depistarea
unui numr fixat de nepotriviri (de multe ori 10) compararea se oprete cu rezultat fals. De
regul, dac cele dou fiiere nu au aceiai lungime sau sunt de acelai tip, comparaia nu se
lanseaz.
Sortarea (ordonarea) articolelor unui fiier, se realizeaz dup valorile unuia sau mai
multor cmpuri. Este utilizat foarte frecvent, mai ales n aplicaiile cu caracter economic.
S ne reamintim...
Deschiderea fiierului poate fi realizat explicit, printr-un apel de sistem
(open) sau implicit la prima referire a fiierului. nchiderea fiierului se poate
realiza implicit, la terminarea execuiei procesului sau explicit prin lansare unui
apel de sistem (close). Citirea(Read) celui de-al k-lea articol din fiier nseamn
obinerea valorii f(k. Scrierea(Write) nseamn adugarea unui articol la
fiier.
La nivel de disc, fiierul este divizat n uniti(blocuri) fizice, care au aceeai
dimensiune. Un astfel de bloc fizic, poate conine un numr de articole ale
fiierului. Un fiier se poate diviza astfel n blocuri logice. Blocul este unitatea
de schimb ntre suportul fiierului i memoria intern.

nlocuii zona punctat cu termenii corespunztori.


1. Deschiderea fiierului poate fi realizat ............, printr-un ................ sau
implicit la ............. a fiierului.
2. Operaia open returneaz .............. ctre intrarea corespunztoare din
tabela fiierelor deschise.
3. nchiderea fiierului se poate realiza .., la terminarea execuiei
.. sau . prin lansare unui apel de sistem (close).
4. Citirea(Read) celui de-al k-lea articol din fiier nseamn obinerea
valorii ........
5. Scrierea(Write) nseamn adugarea unui articol la ......................
6. Un fiier se poate diviza astfel n ............logice. Blocul este ............. ntre
suportul fiierului i memoria intern.
7. Zona de memorie n care este adus un bloc pentru a fi prelucrat, respectiv
unde sunt pstrate informaiile care urmeaz s fie transferate n fiiere se
numete .....................

105
M4.U1.5. Moduri de organizare a fiierelor
Tipuri de acces la articole. S presupunem c exist un fiier f i se efectueaz numai
operaii de citire asupra lui. Accesul secvenial la un articol f(i), presupune realizarea
anterior n ordine a i-1 accese, la articolele cu numerele de ordine 0, 1,,i-1. Accesul
direct(random access) presupune existena unui mecanism de obinere a articolului cutat,
fr parcurgerea prealabil a tuturor articolelor care l preced. Mecanismele de acces direct
sunt:
Acces direct prin numr de poziie (adres), are loc atunci cnd se furnizeaz sistemului de
fiiere o valoare i i aceasta ntoarce o valoare f(i) a articolului reaspectiv.
Acces direct prin coninut are loc atunci cnd se furnizeaz SO o cheie (a,v), adic o
valoare v pentru un atribut a i aceasta ntoarce acel articol i pentru care are loc relaia
f(i).a=v, adic atributul a al articolului are valoarea cutat v.
Organizarea secvenial presupune c ntre articolele fiierului este stabilit o relaie de
ordine astfel: un articol X urmeaz altui articol Y, dac X a fost introdus n fiier dup
introducerea lui Y. Sistemul de fiiere scutete utilizatorul de a vedea aspectul fizic al
reprezentrii. Formatul articolelor la un fiier secvenial poate fi fix sau variabil. Accesul la
un articol al unui fiier secvenial se face, de regul, tot secvenial.
Fiiere cu acces direct prin poziie. Un astfel de fiier are articole de format fix i el este
stocat pe hard-disc. Pentru fiierele cu acces direct, operaiile de citire-scriere trebuie s
conin, ca parametru numrul blocului. Acest numr este furnizat de ctre utilizator
sistemului de operare i este un indice relativ la nceputul fiierului, primul bloc relativ este
1, al doilea este 2, .a.m.d. Dac lungimea unui articol este l i se cere articolul cu numrul
n, atunci printr-o operaie de I/O vor fi accesai l octei, ncepnd cu locaia lx(n-1). De
asemenea, presupunem c articolele sunt plasate pe suport unul dup cellalt, chiar dac un
articol ncepe pe un sector i se termin pe altul.
Observaii.
1. n cazul formatului variabil, aceast schem nu mai funcioneaz. Exist ns diverse
metode de acces direct i n acest caz, bazate fie pe o list a adreselor de pe disc unde ncepe
fiecare articol, fie pe lista lungimilor acestor articole.
2. Majoritatea implementrilor de limbaje de programare de nivel nalt au mecanisme
de acces direct prin poziie pentru articole de format fix (funcia seek).
Organizarea secvenial indexat a fiierelor se bazeaz pe conceptul index; indexul este un
atribut cu valori unice pentru fiecare articol. Deci, aceast metod este caracterizat de
accesul prin coninut.
Articolele sunt scrise pe suport n acces secvenial i sunt grupate n blocuri logice de
informaie(pagini), astfel nct valorile indexului tuturor articolelor dintr-o pagin sunt mai
mari sau mai mici dect valorile indexului articolelor dintr-o alt pagin. Odat cu crearea
fiierului, se creeaz i o tabel de indeci. Pentru fiecare pagin, n aceast tabel, se
memoreaz adresa de pe disc a paginii i valoarea maxim a indecilor din pagin.
Scopul acestui mod de organizare, este de a nlocui cutarea secvenial a articolelor, cu
cutarea binar sau arborescent. Prin aceste metode de cutare se determin pagina n care
se gsete articolul respectiv, dup care se efectueaz o cutare secvenial n pagina
respectiv. Din aceste motive, n funcie de dimensiunea fiierului, tabela de indeci poate fi o
list liniar sau o structur arborescent. Astfel, distingem urmtoarele cazuri:
i) Fiierul este memorat pe mai multe volume(partiii) de disc; n acest caz, vom avea o tabel
organizat pe trei niveluri.
Nivelul 3(fiier), are attea intrri cte volume disc ocup fiierul i fiecare intrare are forma :

106
Ultimul index Numrul
din volum volumului
Tabela este plasat pe ultimul volum al fiierului.
Nivelul 2(volum), are attea intrri ci cilindri sunt alocai fiierului n volumul respectiv i
are forma :
Ultimul index Numrul
din cilindru cilindrului
Tabela este plasat pe ultimul cilindru alocat fiierului n volumul respectiv.
Nivelul 1 cilindru, are attea intrri cte pagini din fiier exist pe cilindrul respectiv, i are
forma :
Ultimul index Adresa
din pagin paginii
Tabela este plasat pe ultimele sectoare ale cilindrului.
ii) Fiierul este memorat pe un singur volum de disc; n acest caz, vom avea o tabel
organizat pe dou niveluri, care au aceeai descriere cu nivelurile 1 i 2 descrise anterior.
iii) Fiierul este memorat pe un singur cilindru; n acest caz, vom avea o tabel ce reprezint o
list.
Observaie. Pentru cutarea unui articol, numrul de accesri ale discului depinde de
dimensiunea fiierului i de locul unde este memorat tabela respectiv.
Exemplu. Dac fiierul este multivolum i tabela de nivel 3 este ncrcat n
memoria intern, atunci pentru gsirea paginii unde se afl articolul respectiv sunt
necesare 5 accesri ale discului.

Pentru se putea realiza actualizarea unui fiier secvenial indexat, spaiul fizic alocat unei
pagini logice este divizat n dou pri: partea principal i partea de depire. Articolele
din partea de depire sunt organizate ca o list nlnuit. Astfel, pentru inserarea unui
articol, dac corespunztor cheii respective, articolul nu mai are loc n partea principal, el va
fi introdus n partea de depire. Dac ar exista un spaiu fizic de dimensiune fix,
corespunztor unei pagini logice, atunci ar exista posibilitatea ca articolul cu cheia respectiv
s nu mai aib loc n pagina fizic unde ar trebui introdus, deci ar trebui reorganizat tabela de
indeci. Dac se fac mai multe nserri ntre dou chei vecine din partea principal, atunci
lista leag mai multe articole n partea de depire, iar randamentul accesului la disc scade
considerabil.
tergerile de articole contribuie i ele la scderea randamentului global al fiierului. Prin
tergere, fie c rmne un loc nefolosit n partea principal, fie trebuie reorganizat o list
simplu nlnuit n partea de depire.
Din motivele prezentate, rezult necesitatea reorganizrii periodice a unui astfel de fiier.
Aceast reorganizare presupune:
- rescrierea ntregului fiier;
- eliminarea poriunilor terse;
- articolele din partea de depire trec n partea principal;
- se reface tabela de indeci.
Acest gen de fiiere prezint dou mari dezavantaje:
- necesitatea reorganizrii lor destul de frecvente;
- necesitatea efecturii de dou pn la cinci accese la disc pentru un articol.

107
Organizarea selectiv a fiierelor. Se presupune c articolele fiierelui conin un index. Fie
T tipul de date al indexului. Articolele fiierului se mpart n n clase de sinonimie. Clasa de
sinonimie creia i aparine articolului, se obine pe baza unei funci parial definite:
f :T{0,1,, n-1}
numit funcie de regsire(randomizare). Toate articolele pentru care se obine aceeai
valoare a funciei de randomizare, fac parte din aceeai clas de sinonimie. Deci, organizarea
selectiv folosete accesul direct prin coninut. O grupare logic de articole(clas de
sinonimie) trebuie s corespund unui bloc fizic de stocare pe disc.
Fiierele selective sunt o alternativ la fiierele indexat secveniale, n sensul urmtor: n timp
ce pentru fiierele indexatsecveniale cutarea paginii n care se afl articolul respectiv se
face prin tabelele de index, n cazul celor selective, pagina este clasa de sinonimie, care se
determin aplicnd funcia de regsire, ce reprezint un calcul efectuat de CPU, deci, mult
mai rapid.
Dezavantajul acestei metode, const n faptul c definirea funciei de regsire este foarte
puternic dependent de datele ce vor fi nmagazinate n fiierul respectiv.
Actualizarea fiierelor selective se realizeaz ntr-un mod analog celui al fiierelor indexat-
secveniale. Scrierea se realizeaz astfel: Se aplic funcia de randomizare valorii indexului i
se obine numrul clasei(de sinonime) n care se afl articolul. Partea principal a fiierului
este format din cte o pagin pentru fiecare clas. Dac pagina clasei respective nu este nc
plin, atunci articolul se depune n pagina respectiv pe disc. Dac pagina din partea
principal este plin, atunci articolul este pus n partea de depire. Ca i la fiierele
secvenialindexate, acest articol este legat printr-o list simplu nlnuit de ultimul articol
sinonim cu el din partea principal.
La citire, utilizatorul formeaz indexul articolului dorit a fi citit. sistemul de fiiere i aplic
acestuia funcia de randomizare, depistnd clasa de sinonimie din care face parte. n cadrul
clasei, cutarea articolului se face secvenial, mai nti n partea principal i apoi n partea de
depire.
Exemplu. S presupunem c se dorete crearea unui fiier selectiv pentru un
colectiv de 2000 de persoane. Fiecare persoan are un cod unic de identificare,
exprimat printr-un numr ntre 1 i 2500. Presupunem c se folosete drept suport
un disc cu 10 piste pe cilindru, iar pe o pist ncap 20 de articole. Vom alege drept
pagin fizic o pist, deci aproximativ 20 de articole ntr-o clas de sinonimie,
numrul claselor de sinonimie n=100, iar funcia de randomizare este:
f(x)=x (mod 100)
Dac, valorile indexului sunt 100, 200,.., 2000, 2100, 2200, 2300, 2400,
2500 (multiplu de 100), nseamn c toate aceste articole sunt sinonime (fac
parte din clasa 0) i sunt n numr de 25. Deci, aceast clas va avea 5 articole
plasate n partea de depire, numr care este destul de mare mare i care poate
crete dac sunt adugate articole n fiier al cror indice s fie multiplu de 100.

Exemplu. Presupunem c fiierul are 10000 de articole, ns indexul se reprezint


printr-un cod de 20 de cifre. S-ar impune o mprire n 500 de clase, ns de
aceast dat delimitarea superioar a prii de depire pentru o clas practic nu se
poate face. Este posibil ca toate cele 10000 de articole s fie sinonime, deci
cutarea s-ar face ntr-o singur clas, adic am avea de fapt un fiier secvenial.

108
Observaie. Din cele dou exemple prezentate, rezult c eficiena cutrii unui articol ntr-
un fiier selectiv este dependent de datele pe care le conine.

S ne reamintim...
Accesul secvenial la un articol presupune accesarea anterioar a articolelor cu
numere de ordine mai mici. Organizarea secvenial presupune c ntre
articolele fiierului este stabilit o relaie de ordine astfel: un articol X urmeaz
altui articol Y, dac X a fost introdus n fiier dup introducerea lui Y. Accesul
direct(random access) presupune existena unui mecanism de obinere a articolului
cutat, fr parcurgerea prealabil a tuturor articolelor care l preced.
n cazul organizarea secvenial indexate a fiierelor, pe baza tabelei de indexi, se
determin pagina n care se gsete articolul respectiv, folosind cutarea binar sau
arborescent; apoi, se efectueaz o cutare secvenial n pagina respectiv pentru
a se gsi nregistrarea de index dat.
Organizarea selectiv a fiierelor este o alternativ la fiierele indexat secveniale,
n sensul urmtor: n timp ce pentru fiierele indexatsecveniale cutarea paginii n
care se afl articolul respectiv se face prin tabelele de index, n cazul celor selective,
pagina este clasa de sinonimie, care se determin printr- un calcul efectuat de CPU,
deci, mult mai rapid.

nlocuii zona punctat cu termenii corespunztori.


1. Accesul secvenial la un articol f(i), presupune realizarea anterior n
ordine a ..... accese, la articolele cu numerele de ordine ........
2. Accesul direct presupune existena unui mecanism de obinere a articolului
cutat, fr ........... a tuturor articolelor care l preced.
3. Organizarea secvenial presupune c ntre articolele fiierului este stabilit o
.................. astfel: un articol X urmeaz altui articol Y, dac X a fost
introdus n fiier ...................... lui Y.
4. Organizarea secvenial indexat a fiierelor se bazeaz pe conceptul ............
5. Scopul organizrii secvenial indexate, este de a nlocui .............. a
articolelor, cu ..............
6. Tabela de indexi este organizat pe trei niveluri, dac fiierul este memorat
pe...
7. n cadrul organizrii secvenial indexate a fiierelor, spaiul fizic alocat unei
pagini logice este divizat n dou pri: ................ i .......................
8. n cadrul organizrii ................. clasa de sinonimie creia i aparine
articolului, se obine pe baza ...................
9. Dezavantajul organizrii selective a fiierelor, const n faptul c definirea
funciei de regsire este ................. ce vor fi nmagazinate n fiierul
respectiv.

M4.U1.6. Conceptul de director(catalog)


n seciunea anterioar am abordat problema gsirii unui mecanism ct mai eficient de
accesare a informaiilor dintr-un fiier. n continuare, ne vom ocupa de problema regsirii ct
mai rapide a fiierelor de pe un disc.

109
Orice disc este mprit n partiii logice sau discuri virtuale (una sau mai multe). Reciproc,
exist posibilitatea de a grupa mai multe discuri fizice ntrun disc logic. mprirea discului n
partiii, ofer utilizatorilor o serie de avantaje, cum ar fi:
- posibilitatea de funcionare a sistemului respectiv sub mai multe sisteme de operare;
- cnd se face reinstalarea sistemului de operare, nu se mai pierd prin formatarea discului
toate informaiile salvate pe discul respectiv, ci numai cele din partiia respectiv;
- fiecare partiie conine o tabel cu informaii despre fiierele care le conine, accesului la
aceste fiiere; astfel de tabel poart numele de catalog sau director i fiecare intrare
nter-un director conine un descriptor de fiier.
n cele ce urmeaz, vom studia diferite structuri de directoare, care au aprut odat cu
evoluia sistemelor de operare. Orice astfel de structur trebuie s respecte urmtoarele
cerine:
- cutarea unui fiier. O structur de directori conine cte o intrare pentru fiecare fiier, n
care se afl descriptorul de fiier (sau un pointer ctre el). Operaia trebuie s permit
identificarea unui fiier sau a unui grup de fiiere care fac parte din aceast familie;
- inserare. La crearea unui nou fiier, n sistemul de directori se va introduce o nou
intrare, care conine descriptorul fiierului respectiv;
- tergere. La tergerea unui fiier se terg din directori informaiile relative la fiierul
respectiv.
- listare. Fiecare SO dispune de comenzi care afieaz coninutul directorilor.
- salvarea-restaurarea de directori, mpreun cu fiierele subordonate(cele care corespund
unor intrri n directorul respectiv);
- parcurgerea directorului, adic posibilitatea accesrii fiecrui fiier din director.
Scheme de organizare a unui a unui sistem de directori. Sunt cunoscute patru tipuri de
structuri: structuri liniare(un singur nivel); structuri pe dou niveluri; structuri arborescente;
structur de graf aciclic.
Structura de directoare pe un singur nivel. Avem un singur director la nivelul discului i
fiecrui fiier i este asociat o intrare n acest director. Aceast organizare are dezavantajul c
limiteaz spaiul de nume al fiierelor, deoarece numele fiierelor trebuie s fie diferite, chiar
dac fiierele respective aparin unor utilizatori diferii. Deci, numrul de fiiere este limitat i
n cazul redenumirii unui fiier, exist pericolul ca noul nume s fie comun pentru dou
fiiere.
Structura de directoare pe dou niveluri. La primul nivel se afl directorul Master (MFD
- Master File Directory). Acesta conine cte o intrare pentru fiecare utilizator al sistemului,
intrare care puncteaz spre un director utilizator(UFD - User File Directory). Pentru fiecare
nou utilizator al sistemului, se creeaz o intrare n MFD i cnd un utilizator se loghineaz la
sistem, se face o cutare n UFD, pentru a se gsi directorul corespunztor numelui su. De
fiecare dat cnd un utilizator se refer la un fiier, cutarea se va face numai n directorul
asociat lui. Toate aceste probleme sunt rezolvate de ctre sistemul de operare, prin intermediul
sistemului de fiiere.
Aceast structur rezolv problema limitrii spaiului de nume al fiierului, dar prezint i un
mare dezavantaj; nu exist posibilitatea comunicrii ntre utilizatori, deci nu exist
posibilitatea partajrii resurselor ntre utilizatori. O alt problem apare atunci cnd un
utilizator dorete s utilizeze o component software de sistem. Pentru utilizarea acesteia,
trebuie realizat o copie, aflat n directorul utilizatorului respectiv.
Structura de directoare arborescent. Structura de directori pe dou niveluri, poate fi
privit ca un arbore a crui adncime este 2. n mod natural, s-a pus problema generalizrii
acestei structuri, adic de a reprezenta structura de directori ca un arbore de adncime

110
arbitrar. Aceast generalizare permite utilizatorilor s creeze propriile lor structuri de
directori. Sistemele de operare moderne folosesc o astfel de structur. Aceste SO mpart
fiierele n: obinuite i directori. Sistemul Unix folosete i un alt tip de fiiere, i anume
cel special.
Indiferent de sistemul de operare utilizat, fiierele obinuite sunt privite ca iruri de
nregistrri sau succesiuni de octei, accesul putndu-se realiza prin unul din mecanismele
prezentate. Sub Unix, dispozitivele de I/O sunt privite ca fiind fiiere speciale. Din punctul de
vedere al utilizatorului, nu exist deosebiri ntre lucrul cu un fiier disc obinuit i lucrul cu un
fiier. Aceast abordare are o serie de avantaje:
- simplitatea i elegana comenzilor;
- numele unui dispozitiv poate fi transmis ca argument n locul unui nume de fiier;
- fiierele speciale sunt supuse aceluiai mecanism de protecie ca i celelalte fiiere.
Un fiier director se deosebete de un fiier obinuit numai prin informaia coninut n el.
Un director(sau subdirector) conine lista de nume i adrese pentru fiierele sau subdirectoare
subordonate lui. De obicei, fiecare utilizator are un director propriu care puncteaz la fiierele
lui obinuite sau ali subdirectori definii de el. Toate directoarele au acelai format intern. O
intrare ntr-un director are forma:
Numele Descriptorul
fiierului fiierului(pointer spre el)
subordonat
Pentru a se face distincia dintre un subdirector i un fiier obinuit, se folosete un bit care
este setat pe 1 pentru un fiier, respectiv 0 pentru un subdirector.
Fiecare director are dou intrri cu nume special i anume :
- . (punct) care puncteaz spre nsui directorul respectiv;
- . . (dou puncte succesive), care puncteaz spre directorul printe.
Fiecare volum disc conine un director iniial numit root(rdcin). ntr-o sesiune, la orice
moment, utilizatorul se afl ntr-un director curent, care conine majoritatea fiierelor
utilizate la un moment dat. De asemenea, la intrarea n sistem, fiecare utilizator se afl ntr-un
director gazd (home directory. SO permite utilizatorului s-i schimbe directorul curent,
s-i creeze un nou director, s afieze calea de acces de la root la un director sau fiier etc.
Orice fiier este identificat prin calea ctre el care, care este un ir de directoare separate
printr-un caracter, ce poate porni de la rdcin(cale absolut) sau de la directorul curent(cale
relativ).
Observaii.
1. Directoarele cu structur de arbore au fost introduse pentru a nlocui cutarea
secvenial a fiierelor pe un disc cu cutarea arborescent.
2. Pe lng faptul c acest tip de directori nu mai limiteaz dimensiunea spaiului de
nume al fiierelor de pe un disc, permite utilizatorului s-i structureze propria ierarhie
de directoare n conformitate cu anumite criterii, s pstreze fiierele n anumite
directoare, n funcie de coninutul lor.
3. Sistemele de operare ofer o serie ntreag de operaii asupra directorilor: creare,
mutare dintr-un director n alt director, copierea unei structuri n alta, tergere etc.
Directori cu structur de graf. Aceast organizare este util, atunci cnd un fiier trebuie s
fie accesibil din mai muli directori printe, ceea ce permite partajarea unui fiier de ctre mai
muli utilizatori. Aceast structur este specific sistemului Unix.

111
S ne reamintim...
Orice disc este mprit n partiii logice sau discuri virtuale. Reciproc, exist
posibilitatea de a grupa mai multe discuri fizice ntrun disc logic. Fiecare
partiie conine o tabel cu informaii despre fiierele care le conine; o astfel de
tabel poart numele de catalog sau director i fiecare intrare nter-un director
conine un descriptor de fiier.
Directorul pe un singur nivel este o tabel i fiecrui fiier i este asociat o
intrare n acest director.
n cazul directorului pe dou niveluri, la primul nivel se afl directorul
master; acesta conine cte o intrare pentru fiecare utilizator al sistemului,
intrare care puncteaz spre un director utilizator(UFD - User File Directory).
Pentru fiecare nou utilizator al sistemului, se creeaz o intrare n MFD i cnd
un utilizator se loghineaz la sistem, se face o cutare n UFD, pentru a se gsi
directorul corespunztor numelui su.
n cazul structurii arborescente, exist un director rdcin al discului respectiv;
acesta are cte o intrare pentru fiecare fiier sau sub-director. La rndul lor, sub-
directoarele conin intrri pentru alte fiiere i directoare .a.m.d. Directorii cu
structur de arbore au fost introdui pentru a nlocui cutarea secvenial a
fiierelor pe un disc cu cutarea arborescent.
Directorul cu structur de graf este util, atunci cnd un fiier trebuie s fie
accesibil din mai muli directori printe, ceea ce permite partajarea unui fiier
de ctre mai muli utilizatori.

1. Orice disc este mprit n .......... sau ...............


2. Structura de directoare pe un singur nivel presupune c avem un
................ i fiecrui fiier i este asociat o ................. n ...................
3. Structura de directoare pe dou niveluri presupune c ............ se afl
.......... Acesta conine cte o intrare pentru fiecare ................, intrare care
puncteaz spre un ......................
4. Orice fiier este identificat prin ................. ctre el care, care este un ir
de ................ separate printr-un caracter, ce poate porni de la ...............
sau de la ................ curent.
5. Directoarele cu structur de arbore au fost introdue pentru a nlocui
...................a fiierelor pe un disc cu .........................

M4.U1.7. Alocarea spaiului pentru fiiere disc


Alocarea contigu cere ca fiecare fiier s ocupe un set de blocuri consecutive de pe disc.
Deoarece adresele de pe disc ale blocurilor care compun fiierul sunt n ordine, pentru a
accesa blocul de adres b, dup blocul b-1, nu necesit mutarea capului de citire, cu excepia
cazului cnd se trece de la ultimul sector al unui cilindru, la primul sector al urmtorului
cilindru. Astfel, pentru accesarea direct a blocurilor fiierului, numrul de mutri ale capului
discului este minimal.
Dac presupunem c fiierul conine n blocuri i adresa primului bloc este b, atunci fiierul
va ocupa blocurile de adrese b, b+1, ...,b+n-1; deci, n descriptorul de fiier din director,

112
trebuie s se memoreze adresa de nceput i lungimea zonei alocate. De asemenea, un astfel
de fiier accept att accesul secvenial, ct i cel aleator.
Problemele ridicate de acest fel de alocare, precum i modalitile lor de rezolvare, coincid cu
cele care apar la alocarea dinamic a memoriei operative. i aici apare fenomenul de
fragmentare. Opional i aici se efectueaz compactarea, n aceleai condiii i cu aceleai
metode ca i cele ntlnite la gestiunea memoriei.
Alocarea nlnuit rezolv problemele legate de alocare contigu (fenomenul de
fragmentare). Fiecare fiier este privit ca o list nlnuit de blocuri de pe disc. Directorul
conine cte un pointer ctre primul, respectiv ultimul bloc al fiierului i fiecare bloc conine
un pointer ctre urmtorul bloc al fiierului. Valoarea pointerului pentru ultimul bloc este
nil. Toate operaiile de gsire a blocurilor libere necesare fiierului, precum i realizarea
legturilor ntre blocuri sunt realizate de ctre sistemul de operare.
Avantajul aceastei metode este evitarea fragmentrii discului. Dezavantajele acestei metode
sunt:
- nu permite dect accesul secvenial la fiiere.
- se consum spaiu de pe disc pentru pointeri;
- fiabilitatea - pointerii se afl pe tot discul i tergerea unui pointer poate duce la distrugerea
fiierului; o soluie pentru evitarea acestui dezavantaj, este gruparea blocurilor ntr-o nou
unitate de alocare numit cluster.
Exemplu. Sistemul de fiiere poate defini clusterul ca avnd 4 blocuri.

Aceast metod are avantajul c diminueaz spaiul necesar memorrii pointerilor, c


micoreaz numrul acceselor la disc atunci cnd se citesc/scrie informaii de pe/pe disc.
Totui, aceast metod mrete gradul de fragmentare al discului.
Exemplu. Ordinea blocurilor pe care este memorat fiierul este: 9, 12, 1, 2, 11, 22,
25. n director, n intrarea corespunztoare fiierului, este trecut blocul 9 ca prim
bloc al fiierului i blocul 25, ca ultim bloc al fiierului. Fiecare bloc va conine un
pointer ctre urmtorul.

O variant a acestei metode, presupune utilizarea unei tabele de alocare a fiierelor(FAT-File


Alocation Table), aflat la nceputul fiecrui disc logic. Tabela este indexat dup numrul de
bloc i fiecare intrare va conine numrul blocului care urmeaz n fiier, blocului al crui
numr este index, dac acest bloc este ocupat. Indexului ultimului bloc din fiier, i
corespunde o valoare special, de sfrit de fiier(-1). Blocurile neutilizate sunt marcate n
tabel cu valoarea 0. Pentru alocarea unui nou bloc unui fiier, se caut prima intrare din
tabel care are valoarea 0, i se nlocuiete valoarea anterioar de sfrit de fiier, cu adresa
noului bloc, iar valoarea 0 este nlocuit cu marca de sfrit de fiier.
Exemplu. Presupunem c avem un disc cu 12 blocuri, n care sunt memorate dou
fiiere(fis1, fis2). Presupunem c, iniial fiierul fis1 ocup blocurile 5, 2, 4
iar fis2 blocurile 6, 3, 9. n figura 4.3.1.a sunt prezentate intrrile n director,
i coninutul FAT pentru aceast situaie. Dac fiierul fis1, va mai necesita un
bloc, acesta va fi blocul 1, tabela FAT fiind cea din figura 4.3.2.b.

113
Director
fis1 ... 5
fis2 ... 6

FAT FAT
1 0 1 -1
2 4 2 4
3 9 3 9
4 1 4 -1
5 2 5 2
6 3 6 3
7 0 7 0
8 0 8 0
9 1 9 1
10 0 10 0
11 0 11 0
12 0 12 0
a) b)
Figura 4.3.1. Structura unei tabele FAT
Alocarea indexat. Fiecare fiier are o tabel de index, n care se trec n ordine cresctoare
adresele tuturor blocurilor ocupate de fiierul respectiv. Cea de-a i-a intrare din tabela de
index conine un pointer ctre cel de-al i-lea bloc al fiierului; aceast tabel se pstreaz
ntr-un bloc separat. n intrarea corespunztoare fiierului din director, se pstreaz aceast
tabel. Aceast tabel poate avea o organizare arborescent, n funcie de dimensiunea
fiierului, similar tabelei utilizate n paginarea memoriei interne. Dac fiierul este mare i
ocup mai multe adrese dect ncap ntr-un bloc, atunci se creeaz mai multe blocuri de index,
legate ntre ele sub forma unei liste simplu nlnuite.
Exemplu. Presupunem c fiierul fis ocup blocurile 1, 9, 10, 14. Tabela de
index va conine 4 intrri. Prima intrare va conine adresa blocului 1, a 2-a intrare
adresa blocului 9 .a.m.d.

S ne reamintim...
Alocarea contigu cere ca fiecare fiier s ocupe un set de blocuri consecutive
de pe disc. Aici apare fenomenul de fragmentare. Opional se efectueaz
compactarea, n aceleai condiii i cu aceleai metode ca i cele ntlnite la
gestiunea memoriei.
Alocarea nlnuit rezolv problemele legate de alocare contigu. Fiecare fiier
este privit ca o list nlnuit de blocuri de pe disc. Directorul conine cte un
pointer ctre primul, respectiv ultimul bloc al fiierului i fiecare bloc conine un
pointer ctre urmtorul bloc al fiierului. O variant a acestei metode, presupune
utilizarea unei tabele de alocare a fiierelor (FAT-File Alocation Table), aflat la
nceputul fiecrui disc logic.
Alocarea indexat presupune c fiecare fiier are o tabel de index, n care se
trec n ordine cresctoare adresele tuturor blocurilor ocupate de fiierul respectiv.
Cea de-a i-a intrare din tabela de index conine un pointer ctre cel de-al i-lea
bloc al fiierului; aceast tabel se pstreaz ntr-un bloc separat. n intrarea
corespunztoare fiierului din director, se pstreaz aceast tabel.

114
I. nlocuii zona punctat cu termenii corespunztori.
1. n cazul alocrii contigui dac presupunem c fiierul conine ...... i
adresa primului bloc este ....., atunci fiierul va ocupa blocurile de adrese
..........
2. Alocarea nlnuit rezolv problemele legate de alocare contigu
(.........). Fiecare fiier este privit ca ............. de blocuri de pe disc.
Directorul conine cte un pointer ctre ........, respectiv ............ bloc al
fiierului i fiecare bloc conine un pointer ctre ................ al fiierului.
3. Tabela de alocare a fiierelor este indexat dup i fiecare
intrare va conine ., blocului al crui numr este index,
dac acest bloc este ocupat. Indexului ultimului bloc din fiier, i
corespunde ... Blocurile neutilizate sunt marcate n tabel cu ...
Pentru alocarea unui nou bloc unui fiier, se caut ., i se
nlocuiete valoarea anterioar de sfrit de fiier, cu adresa noului bloc,
iar valoarea 0 este nlocuit cu ..
4. n cazul alocrii indexate, fiecare fiier are o , n care se trec n
ordine cresctoare adresele tuturor .. ocupate de fiierul respectiv.
II. Presupunem c avem un disc cu 32 blocuri (numerotate 1,2,..,32), n
care sunt memorate dou fiiere (fis1, fis2). Presupunem c, iniial fiierul
fis1 ocup blocurile 15, 2, 4, 6 iar fis2 blocurile 16, 3, 1.
a) Sa se scrie tabela FAT pentru aceast situaie.
b) Care vor fi tabelele FAT, dac fiierul fis1 va mai necesita un bloc i fis2
dou blocuri. Discuie.
M4.U1.8. Evidena spaiului liber de disc
Deoarece spaiul de pe disc este limitat i se modific n timp (alocarea de spaiu pentru
fiierele nou create sau pentru fiierele n care se adaug informaii i reutilizarea spaiului
datorat tergerii unor fiiere), sunt necesare metode prin care s se cunoasc blocurile libere
de pe discuri.
Evidena spaiului printr-un vector de bii. Tabela(vectorul de bii) care ine evidena
blocurilor libere, este indexat dup numrul de bloc. Dac un bloc este liber, atunci
componenta corespunztoare a vectorului este setat pe 0, iar n caz contrar pe 1.
Exemplu. Presupunem c avem un disc cu 32 de blocuri, numerotate cu
1,..,32, n care fiierele ocup blocurile:
2, 3, 6, 7, 14, 15, 16, 19, 20, 21, 22, 28, 29, 30.
Atunci vectorul spaiilor libere va fi:
(0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,
1,1,1,0,0 )

Evidena prin list nlnuit. n directorul volumului exist un pointer ctre primul bloc
liber. Acest bloc conine un pointer ctre urmtorul bloc .a.m.d. Ultimul bloc liber conine
un pointer nul.
Observaie. Ordinea de apariie a blocurilor libere n list, este dat de aciunile de cerere i
eliberare a blocurilor efectuate pn la momentul respectiv. Lista este organizat pe principiul
cozii. Astfel, dac se cere ocuparea unui bloc, se va lua primul bloc din list i se va actualiza
valoarea pointerului din director, al doile bloc devenind primul. Eliberarea unui bloc

115
presupune adugarea unui nou element n list, la cellalt cap. Deficiena acestei metode
const n operaiile cu pointeri care sunt foarte costisitoare pe disc.
Exemplu. Presupunem c avem un disc cu 32 de blocuri, numerotate cu
1,..,32, n care blocurile libere (n ordinea eliberrii) sunt: 18, 17, 15, 21, 22,
23, 6, 7, 8, 25, 26, 27. Directorul conine un pointer ctre blocul 18, care este
primul bloc liber, blocul 18 puncteaz ctre blocul 17 .a.m.d.. Blocul 27 este
ultimul din list, deci va conine valoarea nil n zona alocat pointerului.

Evidena nlnuit i indexat constituie o mbuntire a metodei anterioare. Directorul


conine un pointer ctre primul bloc liber, acesta conine n pointeri ctre alte n blocuri libere,
dintre care al n-lea va conine ali n pointeri ctre alte n blocuri libere .a.m.d. n acest mod,
numrul operaiilor de I/O necesare pentru cutarea de spaiu liber se micoreaz n medie de
n-1 ori.
I. Presupunem c avem un disc cu 32 de blocuri, numerotate cu 1,..,32, n
care fiierele ocup blocurile:
1, 5, 6, 7, 11, 15, 17, 19, 20, 21, 22, 28, 29, 30.
Scriei vectorul de bii corespunztor discului.
M4.U1.9. Test de evaluare a cunotinelor
Marcai varianta corect.

1. Un sistem de fiiere de nivel sczut presupune:


a) Translatarea articole n fluxuri de octei, c) Translatarea blocurilor n fluxuri de
lsnd n seama aplicaiilor structurarea octei, lsnd n seama aplicaiilor
fiierelor ca flux de blocuri. structurarea fiierelor ca flux de articole.
b) Deschiderea fiierelor la prima d) nhiderea fiierelor la ultima referin la
referin la acestea. acestea.
2. Numim index de articol:
a) Numrul de ordine al articolului. c) Primul atribut al unei nregistrri.
b) Un atribut cu proprietatea c pentru d) Un atribut cu proprietatea c pentru
oricare dou articole diferite ale fiierului, oricare dou articole diferite ale fiierului,
valorile atributului sunt diferite. valorile atributului sunt egale.

3. Accesarea secvenial a unui fiier presupune parcurgerea nregistrrilor n ordinea dat de:
a) Succesiunea temporal a scrierii c) Ordinea descresctoare a adreselor
nregistrrilor din fiier. nregistrrilor din fiier.
b) Ordinea cresctoare a adreselor d) Ordinea lungimii nregistrrilor.
nregistrrilor din fiier.
4. Unitatea de schimb ntre suportul fiierului i memoria intern este:
a) nregistrarea. c) Blocul logic.
b) Articolul. d) ntregul fiier.
5. Att pentru un fiier nou creat, ct i unul existent, operaia de deschidere face:
a) Legtura dintre identificatorul logic, c) Legtura dintre identificatorul logic, utilizat
utilizat de program i descriptorul de fiier de program i adresa de pe disc a fiierului.
aflat pe disc
b) Legtura dintre identificatorul logic, d) Legtura dintre identificatorul logic, utilizat
utilizat de program i directorul tat al de program i tabela fiierelor deschise.
fiierului.

116
6. Care operaie se execut la nchiderea fiierului, pentru fiierele nou create i care trebuie
reinute:
a) Se golete tamponul adic ultimele c). Se golete tamponul adic
informaii existente n zonele tampon ultimele informaii existente n
sunt transferate pe periferic. zonele tampon sunt terse.
b). Se golete tamponul adic ultimele d) Se golete tamponul adic
informaii existente n zonele tampon ultimele informaii existente n
sunt afiate. zonele tampon sunt transferate n
memoria virtual .
7. Organizarea indexat-secvenial urmrete:
a) Minimizarea numrului de c) Optimizarea procesului de
comparaii necesare accesrii unei cutare a fiierelor de pe un
nregistrri dintr-un fiier. director.
b) Optimizarea procesului de cutare a d) Optimizarea alocrii de spaiu
fiierelor pe un disc. pe disc.
8. n cadrul tabelei de indeci, pentru fiecare pagin se memoreaz:
a). Adresa de pe disc a paginii i c). Adresa de pe disc a paginii i
dimensiunea paginii. adresa primului articol din pagin.
b). Adresa de pe disc a paginii i d) Adresa de pe disc a paginii i
valoarea minim a indecilor din valoarea maxim a indecilor din
pagin . pagin.
9. Clasa de sinonimie se refer la:
a) Organizarea secvenial a fiierelor. c) Organizarea indexat
secvenial a fiierelor.
b) Organizarea selectiv a fiierelor. d) Organizarea aleatoare a
fiierelor.
10. Directoarele cu structur de arbore au fost introduse pentru:
a) Minimizarea numrului de c) Optimizarea alocrii de spaiu
comparaii necesare accesrii unei pe disc.
nregistrri dintr-un fiier.
b) A nlocui cutarea secvenial a d) A nlocui cutarea secvenial a
fiierelor pe un disc cu cutarea nregistrrilor dintr-un fiier pe un
arborescent. disc cu cutarea arborescent.
11. Directoarele sub form de structur de graf permit:
a) Partajarea unui disc c) Partajarea unui fiier..
b) Accesarea mai rapid a d) Evidena utilizatorilor unui
nregistrrilor unui fiier. fiier.
12 n cadrul crui tip de alocare a spaiului pentru fiiere pe disc, n descriptorul de fiier din
director, trebuie s se memoreze adresa de nceput i lungimea zonei alocate:
a) Contigu. c) nlnuit.
b) Secvenial. d) Indexat secvenial.

117
M4.U1.10 Rezumat
Fiierele reprezint mijloacele principale prin care se stocheaz i manipuleaz
cantiti mari de informaie pe un sistem de calcul. Fiierele pe care le poate gestiona
un sistem de operare pot fi fluxuri de octei sau fluxuri de nregistrri, care la rndul
lor pot avea o structur liniar sau arborescent. n prima situaie, sistemul de operare
ofer mijloace generice i flexibile pentru manipularea datelor, aplicaiile fiind cele
care ofer posibiliti de structurare a datelor. A doua situaie, presupune un sistem de
operare destul de voluminos, ale crui faciliti suplimentare nu sunt ntotdeauna
necesare.
Sistemul de fiiere ofer faciliti de transformare a fiierelor din flux de bii/articole
n succesiuni de blocuri, form sub care sunt manipulate la nivel de disc i care
permite o utilizare mai eficient a operaiilor de citire/scriere.
Modurile de accesare a informaiilor din fiier a evoluat n timp, de la fiier cu acces
secvenial la fiiere cu acces indexat-secvenial sau selectiv, sau direct, n scopul
diminurii timpului de cutare a informaiei ntr-un fiier.
Pentru o regsire mai rapid a fiierelor de pe disc i pentru o gestionare a lor mai
eficient a aprut conceptul de director cu structur arborescent sau graf aciclic.
Evidena spaiului liber de pe disc i a blocurilor utilizate de ctre fiiere sunt alte
sarcini pe care le rezolv sistemul de fiiere.
.

118
Modulul 5. Administrarea perifericelor
Unitatea de nvare M5U1. Administrarea perifericelor
Cuprins
M5.U1.1. Introducere ............................................................................................................. 119
M5.U1.2. Obiectivele unitii de nvare .............................................................................. 119
M5.U1.3. Organizarea sistemului de I/O ............................................................................... 120
M5.U1.4. Controller de unitate .............................................................................................. 123
M5.U1.5. Metode clasice de administrare a I/O .................................................................... 125
M5.U1.6. Utilizarea ntreruperilor ......................................................................................... 127
M5.U1.7. I/O cu corespondenta in memorie (Memory-Mapped I/O).................................... 130
M5.U1.8. Utilizarea zonelor tampon(buffering) ................................................................ 133
M5.U1.10.Teste de evaluare .................................................................................................. 135
M5.U1.11. Rezumat .............................................................................................................. 137
Introducere.
Una dintre sarcinile principale ale sistemului de operare este controlul
echipamentelor de intrare-ieire (I/O). El trebuie s transmit comenzi ctre
acestea, s trateze eventuale ntreruperi sau erori. De asemenea, sistemul de
operare trebuie s furnizeze o interfa simpl, uor de utilizat de ctre utilizator.
n acest sens, controlul perifericelor unui calculator este o preocupare important a
proiectanilor de sisteme de operare.
O alt problem care trebuie rezolvat este creterea vitezei de lucru a sistemelor
de calcul, printr-o bun gestionare a operaiilor de I/O, datorit colaborrii
eficiente dintre CPU i subsistemul de administrare a unitilor de I/O, care este o
component a sistemului de operare.
Un alt aspect este diversitatea din punct de vedere hardware a perifericelor, att ca
funcii ct i ca vitez de lucru; astfel, este necesar o interfa software care s
poat gestiona aceste diferene, care s omogenizeze utilizarea lor de ctre
aplicaiile software.

Obiectivele unitii de nvare.


La sfritul acestei unitii de nvare studenii vor fi capabili:
s explice legtura dintre driver, ca i component a SO i controllerul de
unitate, ca interfa hardware;
s explice modalitile prin care CPU particip la efectuarea operaiilor de I/O,
precum i rolul sistemului de operare ca interfa ntre programe i periferice;
s explice conceptul de utilizare a zonelor tampon i se evideniaz implicaiile
lui asupra creteri performanelor n executarea operaiilor de I/O;
s explice conceptele de acces direct la memoria intern al perifericelor i
proiecia n memorie a I/O, specifice calculatorelor moderne i implicaiile lor
asupra creterii vitezei de prelucrare.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

119
M5.U1.3. Organizarea sistemului de I/O
Unitile de I/O(perifericele) sunt folosite pentru a plasa date n memoria primar i pentru a
stoca cantiti mari de informaii pentru o perioad lung de timp.
Ele pot fi:
- Uniti de stocare (uniti bloc): dispozitivele bloc stocheaz informaia sub forma unor
blocuri de dimensiune fix, care pot fi accesate individual, prin intermediul unei adrese.
Exemplu. Discurile

- Uniti caracter: lucreaz cu iruri de caractere care nu sunt structurate ca blocuri.


Exemplu. Tastatura, mouse-ul, display-ul terminalului

- Uniti de comunicaie:portul serial conectat la un modem sau o interfa la reea.


Exemplu. Portul serial conectat la un modem sau o interfa la reea

n general, unitile de I/O sunt formate din:


- o componenta mecanic - echipamentul propriu-zis;
- o componenta electronic, numit controller de echipament; la calculatoarele personale
acesta este prezent uneori sub forma unei plci cu circuit electronic ce poate fi introdus
ntr-un slot de expandare; de multe ori, controloarele au conectori la care pot fi conectate prin
cablu echipamentele i mai multe echipamente de acelai fel pot fi conectate la un acelasi
controlor.
Un sistem de I/O trebuie s rspund la cerinele urmtoare:
S poat recunoate caractere, indiferent de codul n care acestea sunt reprezentate.
S realizeze independena fa de dispozitvele periferice a programelor, n sensul c acestea
nu trebuie s sufere modificri importante atunci cnd tipul dispozitivului periferic utilizat
este altul dect cel prevzut iniial. Acest lucru este posibil prin furnizarea unor operaii a
cror sintax i semantic s fie acceai pentru o clas ct mai mare de uniti de I/O, precum
i denumirea uniform a perifericelor, lucru realizat prin asocierea de fiiere acestor
dispozitive.
Realizarea operaiilor ntr-un timp ct mai mic, adic gsirea unor metode care s anihileze
diferenele ntre viteza de operare a CPU i cea a perifericelor.
Figura 5.1.1 ilustreaz componentele implicate n realizarea operaiilor de I/O.
Exemplu. S aloce/elibereze o unitate, s pun sub/scoat de sub tensiune un disc,
s modifice imaginea pe un anumit display etc.

API (Application Programming Interface) furnizeaz un set de funcii pe care un programator


le poate apela pentru a utiliza o unitate. Proiectantul SO trebuie s furnizeze i alte funcii API
care s permit unui proces s efectueze i alte operaii.
Componenta sistemului de operare care manipuleaz dispozitivele de I/O este format din
driverele de unitate. Driverul are dou sarcini principale:
Implementeaz o interfa API la care procesul are acces.

120
Furnizeaz operaii dependente de unitate, corespunztoare funciilor implementate de API.

Proces(aplicaie program)
API

Administratorul
de fiiere
Driverul de unitate

Interfaa Hardware

Comand Stare Date

Controllerul de unitate

Figura 5.1.1. Componentele implicate n realizarea operaiilor de I/O


Fiecare driver de unitate furnizeaz funcii care s permit unui program s citeasc/scrie de
pe/pe o unitate. Funciile de citire/scriere difer din punct de vedere sintactic n funcie de
tipul unitii(caracter sau bloc). Semantica fiecrei funcii depinde de modul de accesare a
unitii (secvenial sau direct).
Exemplu. Unitile de tip bloc conin comenzi de tipul read(), write() i
seek(), pentru a citi, scrie de pe/pe unitatea respectiv i pentru a accesa direct
un bloc de informaii. n cazul unitilor de tip caracter, cum este cazul tastaturii
sau ecranului unui monitor, apelurile de sistem ale acesteia permit comenzi de tipul
get() sau put(), pentru citirea/scrierea caracter cu caracter.

Fiecare sistem de operare definete o arhitectur pentru sistemul su de administrare a


unitilor. Nu exist un model universal, dar fiecare din aceste sisteme conine o API i o
interfa ntre driver i nucleul sistemului de operare.
Administratorul unitii trebuie s urmreasc starea unitii, cnd este liber, cnd este
folosit i care proces o folosete. Acesta poate ntreine, n plus fa de informaiile pstrate
n tabela de stare a unitii, un descriptor de unitate care specific alte caracteristici ale
unitii, determinate de proiectantul de software. Deci interfeele driverelor includ funciile de
deschidere(open) i nchidere(close) pentru a permite administratorului s nceap/termine
utilizarea unitii de ctre un proces. Comanda open aloc perifericul i iniializeaz tabelele
i unitatea pentru utilizare iar close terge informaiile scrise n tabele, elibernd astfel
unitatea.
Interfaa cu nucleul. Atunci cnd interacioneaz cu controllerul de unitate, driverul de
unitate execut instruciuni privilegiate Deci, driverul trebuie s fie executat ca parte a
sistemului de operare i nu ca parte a programului.
Driverul trebuie s fie capabil s citeasc/scrie informaii din/n spaiile de adrese ale
diferitelor procese, deoarece aceeai unitate poate fi folosit de ctre diferite procese.

121
n sistemele mai vechi, driverul este ncorporat n sistemului de operare prin modificarea
codului surs al sistemului de operare i, apoi recompilarea acestuia. Deci, proprietarul
sistemului de calcul trebuie s dein sursele sistemului de operare i s cunoasc modul cum
trebuie realizat compilarea lui. n condiiile existenei sistemelor deschise, acest mod de
lucru devine inacceptabil.
Sistemele de operare moderne simplific instalarea driverelor prin utilizarea driverelor de
unitate reconfigurabile. Astfel de sisteme permit adugarea unui driver de unitate fr a fi
necesar recompilarea sistemului de operare, fiind necesar numai reconfigurarea sistemului
printr-un set de operaii oferite chiar de ctre sistemul de operare. Pentru aceasta, la nivelul
fiecrei uniti, exist o tabel care conine pointeri ctre modulele surs ale funciilor
interfeei. Un driver de unitate reconfigurabil trebuie s fie standardizat, adic s ofere aceeai
interfa.
Deoarece driverul de unitate este adugat nucleului dup ce acesta a fost compilat, nucleul
trebuie s furnizeze o interfa care s permit driverului de unitate s aloce spaiu pentru
buffere, s manipuleze tabele ale nucleului etc.
Interfaa cu CPU. Perifericele i CPU sunt componente distincte care sunt capabile s
lucreze independent. Administratorul unitii trebuie s furnizeze metodele prin care s se
coordoneze execuia procesului i operaiile de I/O.
n efectuarea operaiilor de I/O sunt implicate trei componente: controllerul, driverul i apeluri
de funcii de I/O coninute n programul n execuie. ntre acestea trebuie s existe o bun
coordonare. Deoarece controllerul este o component hardware, el ori execut o operatie de
I/O, ori este n ateptare activ pentru a primi n registrul de comenzi codul unei operaii.
Driverul unitii este o component software a sistemului de operare invocat de ctre
procesul n execuie. Fiecare funcie a driverului este o procedur apelat de ctre procesul n
execuie. Toate aceste componente software implicate n lucrul cu controllerul unitii sunt
nite procese, gestionate de ctre CPU pe baza algoritmilor de planificare studiai.
S ne reamintim...
Unitile de I/O(perifericele) sunt folosite pentru a plasa date n memoria primar i
pentru a stoca cantiti mari de informaii pentru o perioad lung de timp.Ele pot fi:
uniti de stocare (uniti bloc), uniti caracter, uniti de comunicaie.
n general, unitile de I/O sunt formate dintr-o componenta mecanic i o
componenta electronic, numit controller de echipament.
API (Application Programming Interface) furnizeaz un set de funcii pe care un
programator le poate apela pentru a utiliza o unitate. Componenta SO care
manipuleaz dispozitivele de I/O este format din driverele de unitate. Fiecare driver
de unitate furnizeaz funcii care s permit unui program s citeasc/scrie de pe/pe
o unitate.

nlocuii zona punctat cu termenii corespunztori.


1. Unitile de I/O(perifericele) sunt folosite pentru ...................... i pentru a
stoca .............pentru ..................
2. Dispozitivele bloc stocheaz informaia sub forma unor ................, care pot fi
accesate ..........., prin intermediul unei ...............
3. Un sistem de I/O trebuie s poat recunoate ......, indiferent de ....... acestea
sunt reprezentate.
4. Un sistem de I/O trebuie s realizeze .............. fa de dispozitvele periferice
a programelor.

122
5. Realizarea operaiilor de I/O trebuie s se fac .........., adic s se gsesc
care s anihileze diferenele ntre .......... i cea a ...........
6. Driverul implementeaz o la care procesul are acces.
7. Driverul furnizeaz operaii ., corespunztoare funciilor .
8. Driverul trebuie s fie executat ca parte a ................ i nu ca parte a
programului.

M5.U1.4. Controller de unitate


Fiecare unitate folosete controllerul de unitate pentru a o conecta la adresele calculatorului
i la magistrala de date. Controller-ul ofer un set de componente fizice pe care instruciunile
CPU le pot manipula pentru a efectua operaii de I/O. Ca i construcie, controller-ele difer,
dar fiecare ofer aceeai interfa de baz.
SO ascunde aceste detalii de funcionare ale controller-lor, oferind programatorilor funcii
abstracte pentru accesul la o unitate, scrierea/citirea de informaii etc. n timpul lucrului, orice
unitate ar trebui monitorizat de ctre CPU. Acest lucru este fcut de ctre controller-ul de
unitate.
Interfaa ntre controller i unitate caut s rezolve problema compatibilitii ntre uniti
fabricate de diveri productori. O astfel de interfa este SCSI (Small Computer Serial
Interface). Interfaa ntre magistral i controller este important pentru cei care se ocup cu
adugarea unei noi uniti la arhitectura existent, pentru ca unitatea adugat s poat lucra
mpreun cu celelalte componente.
Interfaa ntre componenta software i controller se realizeaz prin intermediul regitrilor
controller-ului. Aceast interfa definete modul cum componenta soft manipuleaz
controller-ul pentru a executa operaiile de I/O. Figura 5.1.2 ilustreaz interfaa software cu
un controller.
Unitile conin dou fanioane n registrul lor de stare: busy i done. Dac ambele fanioane
sunt setate pe 0(false), atunci componenta software poate plasa o comand n registrul de
comenzi pentru a activa unitatea. Dup ce componenta software a pus informaii ntr-unul sau
mai muli regitri de date, pentru o operaie de ieire, unitatea este disponibil pentru a fi
utilizat. Prezena unei noi comenzi de I/O are ca efect poziionarea fanionului busy pe true,
nceperea efecturii operaiei i datele din registrul de date sunt scrise pe unitate.
O operaie de citire se efectueaz dual. Procesul poate detecta starea operaiei verificnd
registrul de stare. Cnd operaia de I/O a fost terminat(cu succes sau eec), controller-ul
terge fanionul busy i seteaz fanionul done. Odat cu terminarea unei operaii read,
respectiv write datele sunt copiate de pe unitate n registrul de date, respectiv invers. Dac
dup o operaie de scriere ambele fanioane ale unitii au fost setate pe false, scrierea de noi
informaii n registrul de date va fi sigur. Cnd procesul citete date din controller, acesta
terge registrul done, adic controller-ul este din nou gata de utilizare. Dac operaia se
termin eronat, cmpul cod de eroare va fi setat. Controller-ele pot conine o mic zon de
memorie (buffer), pentru a stoca datele dup ce au fost citite, nainte de a fi transmise CPU
pentru prelucrare. Invers, n memorie pot fi pstrate datele care ateapt s fie scrise.

123
bus y done Cod de e roare .

Comand Stare D ata 0 B us y D one


0 0 libe r
D ata 1 0 1 te rminat
1 0 lucru
1 1 ne de finit
D ata n-1

Figura 5.1.2. Interfaa controllerului de unitate


Prezena unitilor, controllerelor i driverelor(figura 5.1.3) permite ca dou pri ale aceluiai
program s poat lucra n paralel, o parte folosind CPU iar alt parte folosind unitile.
Driverul corespunztor unei anumite interfee poate fi relativ complex, n sensul c trebuie
setai mai muli parametri nainte de pornirea controllerului i trebuie verificate mai multe
aspecte ale strii atunci cnd operaia a fost terminat. Driverele pentru diferite uniti
implementeaz o interfa similar, deci programatorii care lucreaz cu limbaje de nivel nalt
nu trebuie s fie preocupai de detaliile unei anumite uniti. Scopul este de a simplifica ct
mai mult posibil interfaa cu unitile.
Driverele de unitate sunt entiti ale SO care controleaz paralelismul, ntre activitile
efectuate de CPU i operaiile de I/O. O unitate poate fi activat prin intermediul driverului
corespunztor ei i procesul care a generat activarea poate fi executat n continuare, n
paralele cu operaiile asupra unitii. Problema care se pune, este de a semnala procesului care
a generat execuia driverului(a activat unitatea), cnd se termin operaia de I/O respectiv.
Write(...)

Driver Driver de Driver


de terminal imprimant de disc

Controller Controller Controller


De terminal de imprimant de disc
Figura 5.1.2. Corespondena dintre operaii, drivere i controllere de unitate
Observaii.
- Se reduce cantitatea de informaii pe care procesul (aplicaia) trebuie s le cunoasc pentru a
utiliza unitatea respectiv.
- Fiecare driver este specific unei anumite uniti, fiind capabil s furnizeze controllerului
comenzile corespunztoare, s interpreteze corect coninutul registrului de stare al
controllerului i s transforme date la/de la regitrii de date ai controllerului, n confomitate cu
cerinele operaiei respective.
- Un proces care folosete o unitate, i transmite acesteia comenzi i schimb date cu driverul
de administrare al unitii respective.
- Driverele sunt componente ale administratorului de unitate folosite de ctre un proces pentru
a cere efectuarea unei operaii de I/O. Cnd procesul face o cerere ctre driverul de unitate,
acesta o translateaz ntr-o aciune dependent de controller, pentru a realiza interaciunea cu

124
unitatea respectiv. Dup ce unitatea i ncepe lucrul, driverul fie testeaz periodic
controllerul pentru a detecta sfritul operaiei, fie plaseaz informaii n tabela de stare a
unitii pentru a pregti lansarea unei ntreruperi.
S ne reamintim...
Fiecare unitate folosete controllerul de unitate pentru a o conecta la adresele
calculatorului i la magistrala de date. Controller-ul ofer un set de componente
fizice pe care instruciunile CPU le pot manipula pentru a efectua operaii de I/O. SO
ascunde aceste detalii de funcionare ale controller-lor, oferind programatorilor
funcii abstracte pentru accesul la o unitate, scrierea/citirea de informaii.
Interfaa ntre controller i unitate caut s rezolve problema compatibilitii ntre
uniti fabricate de diveri productori. Interfaa ntre componenta software i
controller se realizeaz prin intermediul regitrilor controller-ului. Prezena
unitilor, controllerelor i driverelor permite ca dou pri ale aceluiai program s
poat lucra n paralel, o parte folosind CPU iar alt parte folosind unitile.

nlocuii zona punctat cu termenii corespunztori.


1. Fiecare unitate folosete .......... pentru a o conecta la ............. i la ............
2. Interfaa ntre controller i unitate caut s rezolve problema ............ ntre
uniti fabricate de diveri productori.
3. Interfaa ntre componenta software i controller se realizeaz prin
intermediul ............ controller-ului.
4. Dac fanioanele busy i done ale controllerului sunt ......., atunci
componenta software poate plasa o comand n .........pentru a activa
unitatea.
5. Driverele de unitate sunt ......... care controleaz paralelismul, ntre
activitile efectuate de ......i ...........

M5.U1.5. Metode clasice de administrare a I/O


Administrarea direct a I/O cu testare periodic(polling) se refer la efectuarea operaiilor
de I/O cu participarea CPU, care este responsabil de transferul datelor ntre memoria intern
a SC i regitrii de date ai controllerului. CPU pornete unitatea i testeaz periodic registrul
de stare al acesteia, pentru a determina momentul cnd operaia s-a terminat.
n cazul efecturii unei operaii de citire, aceast metod const n urmtorii pai:
1. Procesul n execuie(corespunzator unei aplicaii) cere efectuarea unei operaii read.
2. Driverul de unitate(specificat n comanda de citire) testeaz registrul de stare pentru a
vedea dac unitatea este liber. Dac unitatea este ocupat, driverul asteapt pn cnd
aceasta se elibereaz (ateptare activ), dup care se trece la pasul urmtor.
3. Driverul pune codul comenzii de intrare n registrul comand al controllerului, pornind
astfel unitatea.
4. Driverul citete n mod repetat registrul de stare, atta timp ct este n ateptarea
terminrii operaiei.
5. Driverul copiaz coninutul regitrilor de date ai controlerului n spaiul de memorie al
procesului utilizator.
6. Dup terminarea operaiei, se revine la urmtoarea instruciune din program.
Paii necesari pentru a executa o operaie de scriere sunt:
1. Procesul n execuie(aplicaia) cere execuia unei operaii write.

125
2. Driverul unitii specificate interogheaz registrul de stare al acesteia, pentru a vedea
dac unitatea este liber. Dac unitatea este ocupat, driverul ateapt pn cnd aceasta
devine liber, dup care se trece la pasul urmtor.
3. Driverul transfer date din spaiul de memorie al procesului n regitrii de date ai
controllerului.
4. Driverul scrie un cod de comand de ieire n registrul comand, pornind astfel unitatea.
5. Driverul citete n mod repetat registrul de stare, atta timp ct ateapt terminarea
operaiei.
6. Dup terminarea operaiei, se revine la urmtoarea instruciune din program.
Observaii.
- Fiecare operaie de I/O necesit o coordonare a componentelor software i hardware
implicate. Prin metoda anterioar, aceast coordonare este realizat prin ncapsularea prii
soft a interaciunii (driverul), cu controllerul unitii respective.
- Aceast metod duce la ncrcarea CPU cu sarcini suplimentare, i anume verificarea
periodic a strii controllerului.
Administrarea operaiilor de I/O orientat pe ntreruperi. Din punct de vedere funcional,
operaia de I/O este realizat prin cooperarea mai multor componente hard i soft, i anume:
Driverul de unitate, care declaneaz operaia.
Tabela de stare a unitii.
Administratorul (handler-ul) ntreruperilor.
Administratorul unitii.
Pentru a realiza o operaie de intrare sunt efectuai urmtorii pai:
1. Procesul cere efectuarea unei operaii read.
2. Driverul interogheaz registrul de stare pentru a vedea dac unitatea este liber. Dac este
ocupat, driverul ateapt ca aceasta s devin liber (ateptare activ), dup care se trece la
pasul urmtor.
3. Driverul pune codul operaiei n registrul comand al controllerului, pornind astfel
unitatea.
4. Driverul i termin sarcina, salveaz informaia cu privire la operaia pe care a nceput-o n
intrarea din tabela de stare a unitilor, corespunztoare unitii folosite; aceasta conine
adresa de retur din procesul care a lansat operaia i ali parametri speciali ai operaiei de
I/O. Astfel, din acest moment, CPU poate fi folosit de ctre alte programe, deci
administratorul unitii transmite un mesaj corespunztor componentei de planificare a
administratorului de procese.
5. Unitatea termin de efectuat operaia i atunci lanseaz o ntrerupere ctre CPU; de
rezolvarea acesteia se va ocupa mai departe handler-ul de ntreruperi.
6. Administratorul(handler-ul) ntreruperilor determin care unitate a cauzat ntreruperea,
dup care face un salt la administratorul (handler-ul) acelei uniti.
7. Administratorul unitii gsete informaiile de stare ale unitii de I/O n tabela de stare a
unitilor; sunt utilizate pentru terminarea operaiei.
8. Administratorul unitilor copiaz coninutul regitrilor de date ai controllerului n spaiul
de memorie al procesului.
9. Administratorul unitii transfer controlul procesului apelant.
Observaii.
- Operaia de ieire se desfoar similar. Din punctul de vedere al procesului n execuie,
aceast activitate are aceeai semnificaie ca oricare apel de procedur.
- Cnd este folosit o instruciune read ntr-un program, aceasta trebuie s se termine nainte
ca urmtoarea instruciune s fie executat. Dac CPU a nceput s execute o instrucuine n
care este implicat o variabil n care s-a efectuat citirea, dup ce driverul de unitate a nceput

126
s execute operaia de citire, dar nainte ca ea s se termine, atunci instruciunea respectiv va
fi executat folosind o valoare veche a variabilei respective, nu cea care este n curs de citire
de la unitate. Pentru a preveni aceasta situaie SO blocheaz explicit procesul care a iniiat
apelul read. SO ateapt ca procesul s termine operaia de I/O nainte de a executa
instruciunea urmtoare.
- Dei procesul nsui nu este capabil s obin avantajele desfurrii n paralel a activitii
CPU i a operaiilor de I/O, totui SO poate comuta CPU la un alt proces, oricnd un proces
cere efectuarea unei operatii de I/O. Astfel, perfomanele generale ale sistemului pot fi
mbuntite prin lucrul n paralel al CPU, cu efectuarea unei operaii de I/O. Cnd operaia de
I/O s-a terminat, procesul care a iniiat operaia va fi replanificat. Mecanismul de planificarea
al proceselor va interveni att n momentul terminrii operaiei de I/O, ct i atunci cnd se
realizeaz o serializare a operaiei de I/O i a instruciunii imediat urmtoare acesteia.
Administrarea direct a I/O cu testare periodic(polling) se refer la efectuarea
operaiilor de I/O cu participarea CPU, care este responsabil de transferul datelor
ntre memoria intern a SC i regitrii de date ai controllerului. CPU pornete
unitatea i testeaz periodic registrul de stare al acesteia, pentru a determina
momentul cnd operaia s-a terminat.
Administrarea operaiilor de I/O orientat pe ntreruperi este realizat prin
cooperarea mai multor componente hard i soft, i anume:driverul de unitate, care
declaneaz operaia; tabela de stare a unitii; administratorul (handler-ul)
ntreruperilor i administratorul unitii.
nlocuii zona punctat cu termenii corespunztori.
1. n cazul administrarrii directe a I/O cu testare periodic, pentru a lansa o
operaie de citire ........ cere efectuarea unei operaii ..............
2. n cazul administrarrii directe a I/O cu testare periodic, driverul de unitate,
specificat n ........ testeaz ......... pentru a vedea dac unitatea este liber.
3. n cazul administrarrii directe a I/O cu testare periodic, n cazul operaiei
de citire driverul copiaz coninutul .................. ai ................... n ..................
al procesului utilizator.
4. n cazul administrarrii directe a I/O cu testare periodic, , n cazul operaiei
de citire driverul transfer date din ........ al procesului n .................. ai
controllerului.
5. n cazul administrarrii operaiilor de I/O orientat pe ntreruperi, n cazul
operaiei de citire, driverul interogheaz .............. pentru a vedea dac
..............este liber.
6. n cazul administrarrii operaiilor de I/O orientat pe ntreruperi, cnd
unitatea termin de efectuat operaia lanseaz ................. ctre .........
7. n cazul administrarrii operaiilor de I/O orientat pe ntreruperi,
administratorul unitii gsete informaiile de stare ale unitii de I/O
.............., care sunt utilizate pentru ................operaiei.

M5.U1.6. Utilizarea ntreruperilor


Execuia unui program. CPU extrage i execut instruciunile cod main ale procesului
ncrcat n memoria intern. n acest sens, CPU conine:
o component care extrage o instruciune memorat ntr-o locaie de memorie;
o component care decodific instruciunea;
o component care se ocup de execuia instruciunii, mpreun cu alte componente ale SC.

127
Registrul contor de program PC (Program Counter) conine adresa de memorie a
instruciunii care urmeaz s fie executate iar registrul instruciune IR (Instrucion
Register) o copie a instruciunii n curs de prelucrare.
Modul de operare al CPU se desfoar dup urmtorul algoritm:
PC = <Adresa de nceput a procesului> ;
IR = M[PC];
HaltFlag = CLEAR;
While (HaltFlag nu este setat n timpul execuiei )
{
PC = PC+1;
Execute(IR);
IR = M[PC];
}
Vectorul M identific locaiile de memorie intern ale SC, adic M[i] reprezint locaia de
memorie i. Cnd un proces urmeaz s fie executat, PC este ncrcat cu adresa primei sale
instruciuni, iar n IR este ncrcat codul instruciunii respective. Dup terminarea execuiei
unei instruciuni, PC este incrementat, adic se trece la execuia urmtoarei instruciuni,
.a.m.d. Fanionul HaltFlag este testat nainte de a se trece la execuia instruciunii, pentru a se
verifica dac CPU este oprit. Execute reprezint procedura care corespunde instruciunii
extrase.
Testarea fanioanele busy-done de ctre CPU prin intermediul driverelor de unitate duce la
utilizarea ineficient a CPU. Cea mai bun soluie pentru desfurarea paralel a operaiilor de
I/O i a activitii CPU, este ca atunci cnd operaia de I/O se termin, s se semanaleze acest
lucru procesorului, lucru care se realizeaz prin intermediul ntreruperilor. n partea de
hardware este ncorporat un fanion InReq (Interrupt Request) i unitatea de control este astfel
conceput nct s poat verifica fanionul IR de fiecare dat cnd extrage o nou instruciune.
Algoritmul de extragere i execuie al instruciunilor procesului atunci cnd SC folosete
ntreruperi este:
While (HaltFlag nu este setat)
{
IR = M[PC];
PC = PC + 1;
Execute(IR);
If (InReq) // Are loc ntrerupere procesului curernt
{M[0] = PC;//Salveaz val. curent a lui PC la
adresa 0
PC=M[1]}
}
Partea de hardware conecteaz toate fanioanele done ale unitilor la fanionul InReq prin
efectuarea unei operaii SAU. Oricnd este setat un fanion done al unui controller, fanionul
InReq va fi i el setat. CPU va fi atenionat despre terminarea operaiei de I/O n intervalul
de timp ct execut o instruciune, urmnd ca dup terminarea acesteia s trateze ntreruperea
respectiv. Semnalul de la componenta hardware, la cea software (ntreruperea) are ca efect
oprirea execuiei secvenei de instruciuni ale procesului respectiv de ctre processor (adresate
de ctre PC) i saltul la o nou secven de instruciuni, a crei adres este coninut la o
adres de memorie(de exemplu M[1]). nainte de a se efectua saltul, valoarea lui PC (adresa
instruciunii care urmez s fie executat) mpreun cu starea procesului sunt salvate prin
intermediul hardwarelui. Adresa componentei SO care manipuleaz ntreruperile (IH -
Interrupt Handler) este memorat n locaia de memorie M[1].

128
Cnd IH i ncepe execuia, regitrii CPU conin valori care urmeaz s fie folosite de ctre
procesul care a fost ntrerupt. IH trebuie s execute o comutare de context pentru a salva
coninutul tuturor regitrilor de stare i generali utilizai de proces i s-i pun propriile valori
n regitrii CPU pentru a putea realiza terminarea operaiei de I/O corespunztoare ntreruperii
lansate. Algoritmul dup care lucreaz IH este:
SaveProcessorState();
For (i=0;i<Numrul de uniti; i++)
If (Device[i].done == 1) goto device_handler(i);
If (InReq && InterruptEnabled)
{
DisableInterrupts();
M[0] = PC;
PC = M[1]
}
IH testeaz valorile fanioanelor done ale controllerelor de unitate pentru a determina care
unitate a terminat operaia de I/O(a cauzat ntreruperea). Dac dou sau mai multe uniti
termin operaia de I/O n timpul execuiei aceleiai instruciuni cod main, atunci, se va
detecta numai prima dintre ele. Odat ce cauza ntreruperii a fost determinat, IH face un salt
la codul ntreruperii corespunztor unitii a crei terminare a operaiei de I/O trebuie tratat.
Dac o ntrerupere este declanat n momentul cnd IH este n timpul execuiei, adic
trateaz o ntrerupere aprut anterior, aceasta va atepta pn la terminarea ntrerup. ant.
Dac IH ar trata ambele ntreruperi n paralel, ar exista posibilitatea ca apariia unor erori n
execuia uneia dintre ntruperi s duc la eecul execuiei ambelor ntreruperi.
Orice instruciune care seteaz fanionul HaltFlag al CPU este o instruciune privilegiat,
deoarece poziionarea pe TRUE a lui HaltFlag are ca efect oprirea execuiei oricrei
instruciuni. Dac CPU lucreaz n mod utilizator i un proces dorete s nceap execuia n
modul supervizor, mediul trebuie s se asigure c atunci cnd modul de lucru este comutat din
modul utilizator n cel supervizor, CPU va ncepe s execute instruciunile nucleului
sistemului. Modul supervizor este setat de ctre instruciune cod main trap de forma:
trap argument
Mai nti CPU comut din modul utilizator n supervizor, dup care va sri la o adres care
conine adresa acelei secvene de instruciuni(ntreruperi) corespunztoare argumentului
instruciunii trap
S ne reamintim...
Pentru execuia unui program, CPU extrage i execut instruciunile cod main
ale procesului ncrcat n memoria intern. n acest sens, CPU conine:o
component care extrage o instruciune memorat ntr-o locaie de memorie;o
component care decodific instruciunea; o component care se ocup de
execuia instruciunii, mpreun cu alte componente ale SC. Regitrii contor de
program, respectiv registrul instruciune , conin adresa de memorie, respectiv
o copie a instruciunii n curs de prelucrare.
Testarea fanioanele busy-done de ctre CPU prin intermediul driverelor de
unitate duce la utilizarea ineficient a CPU. Cea mai bun soluie pentru
desfurarea paralel a operaiilor de I/O i a activitii CPU, este ca atunci cnd
operaia de I/O se termin, s se semanaleze acest lucru procesorului, lucru care
se realizeaz prin intermediul ntreruperilor. n partea de hardware este
ncorporat un fanion InReq (Interrupt Request) i unitatea de control este astfel
conceput nct s poat verifica fanionul IR de fiecare dat cnd extrage o nou
instruciune.

129
nlocuii zona punctat cu termenii corespunztori.
1. Registrul contor de program conine ........... a instruciunii care
..................
2. Registrul instruciune o ........a instruciunii n ............
3. Partea de hardware conecteaz toate fanioanele done ale unitilor la
............ prin efectuarea unei operaii ............
4. CPU va fi atenionat despre .................. n intervalul de timp ct execut
.............., urmnd ca dup terminarea acesteia s trateze ...................
respectiv.
5. Manipulatorul ntreruperilor testeaz ................. ale controllerelor de
unitate pentru a determina care ........................

M5.U1.7. I/O cu corespondenta in memorie (Memory-Mapped I/O)


Fiecare controller conine regitri de control folosii pentru a comunica cu procesorul; prin
aceti regitri SO poate transmite comenzi sau poate consulta starea echipamentului. De
asemenea, multe echipamente au o memorie tampon de date in care SO poate citi sau scrie

Exemplu. Memoria video este o memorie tampon de tip RAM, n care se scriu date
ce se vor transforma n pixeli pe ecran.

Procesorul poate comunica cu regitrii de control i memoria tampon a unui echipament prin
trei modaliti, care vor fi prezentate n continuare.
(i) Fiecrui registru i se asociaz un numr de PORT DE I/O, care este un ntreg reprezentat
pe 8 sau 16 bii; folosind instructiuni speciale de I/O ca: IN REG, PORT i OUT PORT,
REG procesorul poate copia registrul de control PORT n registrul su REG, respectiv poate
scrie coninutul registruluin REG ntr-un registru de control.
Spaiul de adrese pentru memorie i cel pentru I/O sunt diferite.
Exemplu. Instruciunile "IN REG,6" si "MOV REG,4" au semnificaii diferite:
prima citete n registrul REG coninutul portului 6; a doua citeste n REG cuvntul
de memorie de la adresa 6; deci cei doi 6 se refer la zone de adrese de memorie
diferite i independente.

Aceasta metoda a fost folosita de cele mai multe dintre primele calculatoare, inclusiv IBM
360 si succesorii sai.
(ii) Regitrii de control sunt pui n spaiul de adrese de memorie. Fiecrui registru de control
i este repartizat o adres unic de memorie, creia nu-i corespunde o locaie de memorie.
Aceste sisteme se numesc I/O CU CORESPONDENTA IN MEMORIE (MEMORY-
MAPPED I/O). Aceast metod a fost introdus de minicalculatorul PDP-11. De regul
adresele alocate regitrilor de control se afl la sfritul spaiului de adrese.
(iii) O schema hibrid folosete o memorie tampon de I/O n spaiul de adrese de memorie i
porturi de I/O pentru regitrii de control;
Exemplu Pentium utilizeaz aceast arhitectur, cu adresele 640K - 1M
rezervate pentru memoriile tampon ale echipamentelor compatibile cu IMB PC i
porturi de I/O de la 0 la 64K.

130
Toate aceste scheme functioneaza astfel:
- Cnd procesorul vrea s citeasc un cuvnt, fie din memorie fie dintr-un port de I/O, pune
adresa dorit pe liniile de adres ale magistralei (bus) i apoi transmite un semnal de citire pe
linia de control a magistralei. Pe o alt linie a magistralei pune specificaia dac este vorba de
spaiul de adrese de memorie sau spaiul de I/O. Atunci fie memoria, fie echipamentul de I/O
va rapunde cererii.
- Daca exista doar spatiu de memorie (varianta (b)), atunci fiecare modul de memorie si
fiecare echipament de I/O compara liniile de adresa cu domeniul de adrese pe care il
foloseste; daca adresa se afla in domeniul sau, raspunde cererii (deoarece nici o adresa nu este
repartizata atat memoriei cat si echipamentelor de I/O, nu exista ambiguitate).
Avantajele sistemului I/O cu coresponden n memorie. n cazul (i) sunt necesare
instruciuni speciale de I/O pentru citirea/ scrierea la porturi (IN/OUT), care nu se regsesc n
limbajele C/C++, astfel nct este necesar folosirea limbajului de asamblare; n cazul (ii)
regitrii de control ai echipamentelor se pot asimila cu simple variabile alocate n memorie i
se pot accesa n C/C++ ca orice alta variabil, deci driverele pentru echipamente pot fi scrise
n aceste limbaje evoluate.
Nu este necesar un mecanism de protecie suplimentar pentru a mpiedica procesele utilizator
s efectueze operatii de I/O. E suficient ca SO s nu permit includerea poriunii de spaiu de
adrese ce conine regitrii de control n spaiul virtual de adrese ale vreunui utilizator. Mai
mult, dac fiecare echipament are regitrii de control n pagini diferite ale spaiului de adrese,
SO poate permite unui utilizator s controleze anumite echipamente, incluznd paginile
respective n tabela lui de pagini.n felul acesta, drivere diferite pot fi plasate in spaii de
adrese diferite, reducndu-se dimensiunea nucleului i fcnd totodat ca driverele s nu
intefereze ntre ele.
Aceleai instruciuni care pot referenia memoria pot iniializa i regitrii de control.

Exemplu. Dac exist o instruciune "TEST" care testeaz dac un cuvnt de


memorie este 0, ea poate testa i dac un registru de control este 0, adic
echipamentul este nefolosit i poate accepta o nou comand. Codul n limbaj de
asamblare ar putea arta astfel:
LOOP: TEST PORT_4 // verifica daca portul 4 este liber
BEQ READY // daca este 0, salt la eticheta
BRANCH LOOP // altfel salt la LOOP (continua sa
testezi)
READY:

Observaie. n cazul (i) trebuie o instruciune n plus, care s citeasc registrul de control ntr-
un registru al procesorului i apoi sa fie testat, deci detectarea unui echipament nefolosit se va
face mai lent.
Dezavantajele sistemului I/O cu corespondenta in memorie. Calculatoarele moderne au
posibilitatea pstrrii ntr-o memorie intermediar (cache) a unor cuvinte din memorie; dac
am pstra n memoria cache valoarea unui registru de control, atunci n codul assembler de
mai sus prima referire la PORT_4 va face ca coniuntul lui s fie pus n memoria cache, iar
urmtoarele referiri vor lua valoarea din cache fara a consulta echipamentul (deci, cand
echipamentul va fi la un moment dat pregatit, softul nu va afla ci va cicla la infinit); de aceea,
n cazul (ii) hardware-ul trebuie s poat opri selectiv pstrarea n cache, cum ar fi pe baza
numrului de pagin. Acest lucru adaug complexitate suplimentar atat la hardware ct i la
SO, care va trebui s gestioneze pstrarea selectiv n cache.

131
Dac exist un singur spaiu de adrese, toate modulele de memorie i toate echipamentele de
I/O trebuie s examineze toate referinele la memorie pentru a vedea care din ele trebuie s
raspund; daca masina are o singura magistrala, acest lucru e simplu; daca are mai multe
magistrale (o magistrala dedicata memoriei, care este mai rapida si nu ia n consideraie faptul
c echipamentele de I/O sunt mai lente), atunci echipamentele de I/O nu vad adresele ce trec
prin magistrala memoriei, deci nu pot raspunde.
Soluia de rezolvare a problemei anterioare este de a avea mai multe magistrale, unele de
mare vitez dedicate accesrii memoriei interne, iar altele s fie dedicate operaiilor de I/O:
- referintele la memorie se transmit intai memoriei, apoi pe celelalte magistrale, pana
cand cineva raspunde; este insa necesara o complexitate hardware suplimentara;
-se plaseaza pe magistrala memoriei un echipament de supraveghere ce transmite
adresele catre echipamentele de I/O potential interesate; atunci insa s-ar putea ca
echipamentele sa nu poata procesa cererile cu viteza cu care poate face acest lucru memoria;
- solutia folosita de Pentium, care are o magistrala locala, din care se ramifica 3
magistrale externe: memorie, PCI, ISA; pe magistrala locala exista un chip punte PCI (PCI
bridge) la ramificatia catre magistrala PCI; chipul are niste registri de domeniu (range
registers), preincarcati la pornirea sistemului (boot-are), prin care marcheaza anumite domenii
de adrese (de ex. 640K - 1M) ca neapartinand memoriei; chipul filtreaza adresele venite pe
magistrala locala, iar adresele din domeniile marcate sunt transmise magistralei PCI, nu
memoriei; de asemenea, pe magistrala PCI exista un chip punte la ramificarea catre magistrala
ISA (si mai lenta); dezavantajul este necesitatea de a descoperi la boot-are care sunt
intervalele de adrese.
Accesul direct la memorie. n cazul accesrii directe a perifericelor de ctre CPU cu testare
periodic, CPU este utilizat pentru a transfera date ntre regitrii de date ai controllerului i
memoria primar. Driverul de unitate copiaz date din zona de date a procesului, n controller
pentru fiecare operaie de ieire i invers, pentru operaiile de intrare. n cazul utilizrii
ntreruperilor, administratorul unitii se ocup cu sarcina de transfer. Ambele modaliti
presupun implicarea CPU, deci un consum al timpului su.
Multe dintre calculatoarele moderne folosesc un alt mecanism care cere o implicare a CPU
mai redus n efectuarea acestor operaii, prin utilizarea unui procesor specializat numit
controller DMA (Direct Memory Access). Mecanismul DMA presupune c operaia de
copiere n memorie s fie efectuat de ctre controller i nu de ctre unitatea central.
nelegerea ntre controllerul DMA i controllerul de unitate este realizat prin intermediul
unei perechi de semnale numite cerere DMA i confirmare DMA. Cnd are date de transmis,
controllerul de unitate iniiaz o cerere DMA i ateapt pn cnd primete o confirmare
DMA. Dup ce s-a efectuat transferul, controllerul DMA semnaleaz terminarea operaiei
printr-o ntrerupere. Dei controllerul DMA lucreaz fr a ine ocupat CPU, totui cele dou
concureaz pentru obinerea accesului la magistral. Cu toate acestea, DMA crete
performanele calculatorului, n sensul c operaiile de I/O se fac printr-o participare mai
restrns a CPU.
Procesul de transfer al informaiilor de pe disc, folosind DMA se desfoar astfel:
1. Driverului de unitate i se comunic s transmit date n bufferul de la adresa x.
2. Driverul de unitate transmite controllerului de disc s transfere c cuvinte de memorie de pe
disc n bufferul de la adresa x.
3. Controllerul de disc ncepe transferul DMA.
4. Controllerul de disc transmite fiecare cuvnt controllerului DMA.
5. Controllerul DMA transfer cuvintele primite n bufferul de la adresa x, incrementnd
adresa de memorie i decrementnd c, pn cnd c=0.

132
6. Cnd c=0, controllerul DMA semnaleaz CPU prin intermediul unei ntreruperi, c
transferul de date s-a terminat.
Observaii.
- Folosind DMA, controllerul de unitate nu trebuie s conin obligatoriu regitrii de date,
deoarece controllerul DMA poate face transferul direct de la/la unitate.
- Controllerul trebuie s conin un registru de adrese, n care se ncarc un pointer ctre un
anumit bloc de memorie, de unde controllerul preia informaii sau depune informaii.
- De asemenea, trebuie s cunoasc numrul de octei ai blocului pe care trebuie s-l
manevreze.
-Anumite calculatoare folosesc adrese de memorie fizic pentru DMA; altele, mai
perfecionate execut transferul folosind adrese virtuale, adic adrese din memoria secundar,
prin mecanismul denumit DVMA(Direct Virtual Memory Acces).
S ne reamintim...
Fiecare controller conine regitri de control folosii pentru a comunica cu
procesorul; prin aceti regitri SO poate transmite comenzi sau poate consulta
starea echipamentului. De asemenea, multe echipamente au o memorie tampon
de date in care SO poate citi sau scrie
Multe dintre calculatoarele moderne folosesc un alt mecanism care cere o
implicare a CPU mai redus n efectuarea acestor operaii, prin utilizarea unui
procesor specializat numit controller DMA (Direct Memory Access).
Mecanismul DMA presupune c operaia de copiere n memorie s fie efectuat
de ctre controller i nu de ctre unitatea central.
I. nlocuii zona punctat cu termenii corespunztori.
1. Fiecrui registru i se asociaz ., care este un ..........
reprezentat pe ...........
2. Fiecrui ............. i este repartizat o adres unic de memorie, creia nu-i
corespunde ..................
3. nelegerea ntre .................. i controllerul de unitate este realizat prin
intermediul unei perechi de semnale numite ........... i ......................
4. Folosind DMA, .............. nu trebuie s conin obligatoriu .....................,
deoarece controllerul DMA poate face transferul ...............
5. Controllerul trebuie s conin un .................., n care se ncarc un
............. ctre un anumit ................., de unde controllerul preia ...............
sau depune ................

M5.U1.8. Utilizarea zonelor tampon(buffering)


Utilizarea zonelor tampon la intrare (input buffering) este tehnica prin care informaiile
citite de la un dispozitiv de intrare sunt depuse ntr-o zon de memorie primar, nainte ca
procesul s le solicite pentru a le prelucra. Utilizarea zonelor tampon la ieire (output
buffering) este metoda prin care datele de ieire sunt salvate n memorie i apoi scrise pe o
anumit unitate, n acelai timp cu continuarea execuiei procesului. Buffering-ul are ca scop
lucrul n paralel al CPU i unitilor periferice.
Pentru a nelege mai bine cum buffering-ul poate crete performanele sistemului de calcul,
s considerm cteva caracteristici ale proceselor. Anumite procese sunt orientate ctre
operaii de I/O, consumnd o mare cantitate de timp pentru a efectua aceste operaii. Alte
procese sunt orientate spre calcule. Multe procese conin faze n care sunt orientate ctre
operaii de I/O sau faze cnd sunt orientate ctre calcule.

133
Driverul poate gestiona unul sau mai multe buffere, unde depune caracterele citite, nainte ca
acestea s fie prelucrate de ctre procesul care a iniiat cererea, respectiv de unde preia
caracterele depuse de CPU(procesul utilizator) la scriere.
Numrul de buffere poate fi extins de la 2 la n.
Productorul de date (controllerul n cazul operaiilor de citire, respectiv CPU pentru
operaiile de scriere) scrie n bufferul i n timp ce consumatorul (controllerul n cazul
operaiilor de scriere, respectiv CPU n cazul operaiilor de citire) citete din bufferul j.
n aceast configuraie, bufferele de la j la n-1 i de la 0 la i-1 sunt pline. n timp ce
productorul introduce date n bufferul i, consumatorul citete date din bufferele j,
j+1,...,n-1 i 0,1,...,i-1. Reciproc, productorul poate umple bufferele i,
i+1,...,j-1 n timp ce consumatorul citete bufferul j.
n aceast tehnic de dispunere circular a bufferelor, productorul nu poate trece n zona
bufferelor administrate de consumator, deoarece el poate scrie peste buffere care nu au fost
nc citite. Productorul poate scrie date numai n bufferele pn la j-1 n timp ce datele din
bufferul j ateapt s fie prelucrate. n mod similar, consumatorul, nu poate trece n zonele
administrate de productor deoarece el ar atepta s citeasc informaii, nainte ca acestea s fi
fost plasate n zonele respective de ctre productor.
Observaii. Numrul bufferelor de citire, respectiv de scriere trebuie ales n funcie de tipul
proceselor. Pentru un proces orientat ctre I/O este mai potrivit s se aloce un numr ct mai
mare de buffere de citire, pe cnd pentru un proces orientat spre calcule este necesar ca
numrul de buffere de scriere s fie mai mare.
Orice proces poate fi la un moment dat orientat ctre I/O, ca mai trziu s devin orientat
ctre calcule i reciproc. Deci se impune un mecanism de comutare a procesului dintr-o stare
n alta i, corespunztor de modificare a configuraiei zonelor tampon.
S ne reamintim...
Utilizarea zonelor tampon la intrare (input buffering) este tehnica prin care
informaiile citite de la un dispozitiv de intrare sunt depuse ntr-o zon de
memorie primar, nainte ca procesul s le solicite pentru a le prelucra. Utilizarea
zonelor tampon la ieire (output buffering) este metoda prin care datele de
ieire sunt salvate n memorie i apoi scrise pe o anumit unitate, n acelai timp
cu continuarea execuiei procesului. Buffering-ul are ca scop lucrul n paralel al
CPU i unitilor periferice.

I. nlocuii zona punctat cu termenii corespunztori.


1. Driverul poate gestiona ...................., unde depune ................, nainte ca
acestea s fie prelucrate de ctre procesul care a iniiat cererea, respectiv de unde
preia ................la scriere.
2. Numrul ............ de citire, respectiv de scriere trebuie ales n funcie de
............
3. Orice proces poate fi la un moment dat orientat ctre ........, ca mai trziu s
devin orientat ctre ............. i reciproc.

134
M5.U1.9. Test de evaluare a cunotinelor
Marcai varianta corect.
1. Independena fa de dispozitvele periferice a programelor nseamn:
a)Acestea pot utiliza orice c) Acestea nu trebuie s sufere
periferic.. modificri importante atunci cnd
se adaug un nou periferic.
b) Acestea nu trebuie s sufere d) Acestea nu trebuie s sufere
modificri importante atunci modificri importante atunci cnd
cnd tipul dispozitivului se elimin un periferic.
periferic utilizat este altul dect
cel prevzut iniial.
2. API furnizeaz:
a) Un set de apeluri ctre c) Un set de funcii pe care un
sistemul de operare. programator le poate apela pentru
a utiliza o unitate.
b) Un set de apeluri ctre d) Un set de funcii pe care un
compilatoare. programator le poate apela pentru
a utiliza un fiier.
3. Driverele sunt:
a) Componente hardware. c) Componente ale SO folosite
pentru gestiunea fiierelor.
b) Componente software d) Componente ale SO folosite
utilizate pentru execuia pentru gestiunea perifericelor.
proceselor.
4. Operaiile de I/O se execut:
a) n mod utilizator. c) Prin lansarea n execuie a unui
compilator.
b) n mod supervizor. d) Prin lansarea n execuie a unui
link-editor.
5. n care dintre metodele de execuie a operaiilor de intrare/ieire CPU este
implicat cel mai mult:
a) Bazat pe testarea periodic c) Bazat pe accesul direct la
a strii unitii. memorie.
b) Bazat pe drivere i d) Bazat pe salvarea regitrilor
ntreruperi. UC.
6. Componenta software poate plasa o comand n registrul de comenzi pentru a
activa unitatea, atunci cnd fanioanele busy i done sunt setate:
a) busy pe 0 i done pe 1. c) busy pe 1 i done pe 0.
b) Ambele pe 1. d) Ambele pe 0.
7. Care este componenta sistemului de operare de interfa cu regitrii controlerului
de unitate:
a) Driverul de unitate. c) Compilatorul unitii.
b) ntreruperea unitii. d) Link-editorul unitii.
8. API este o interfa ntre:
a) Procesul(aplicaia) n c) SO i controller.
execuie i drivere
b) Procesul(aplicaia) n d) CPU i unitatea de I/O.
execuie i CPU.

135
9. Un driver se execut:
a) Ca parte a sistemului de c). Ca parte a programului.
operare.
b) Prin lansarea n execuie a d) Prin lansarea n execuie a
unui compilator. unui link-editor.
10. Interfaa ntre controller i unitate caut:
a) S rezolve problema c) S rezolve problema
compatibilitii ntre diverse compatibilitii ntre uniti
uniti. fabricate de diveri productori.
b) S rezolve problema d) S optimizeze alocarea de
compatibilitii ntre diverse spaiu pe disc.
sisteme de fiiere.

136
M5.U1.10 Rezumat
Administrarea unei uniti de I/O este implementat prin cooperarea dintre
administratorului de resurse, driverelor de uniti i manipulatorului de ntreruperi.
n ceea ce privete modul cum se va face referire la o anumit unitate, proiectantul
sistemului de calcul va alege ntre includerea acesteia n spaiul de adrese de
memorie, sau alocarea unui spaiu separat, cu instruciuni specifice. Anumite
sisteme permit accesul direct la memorie, astfel nct controllerul poate citi/scrie
informaii direct din/n memorie, fr intervenia procesorului.
Tendina actual spre sisteme deschise, a ncurajat proiectanii de calculatoare s
creeze faciliti prin care administratorii de sistem s poat aduga noi uniti n
configuraie sau drivere, fr a fi necesar s se modifice codurile surs ale
sistemelor de operare. Linux i Windows sunt dou exemple de sisteme de operare
larg rspndite care care furnizeaz faciliti de asistare a administratorului n
configurarea de noi uniti la adugarea lor n configuraia deja existent.
Deoarece multe dintre fazele de execuie ale proceselor sunt orientate ctre
efectuarea unor operaii de I/O, perifericele fiind des solicitate de mai multe procese
simultan, s-au depus eforturi considerabile de ctre proiectanii de sisteme de calcul
pentru a crete performanele subsistemelor de intrare/ieire.
Utilizarea zonelor tampon este o metod tradiional folosit pentru a crete
performanele sistemului, exprimate prin reducerea dimensiunii timpului de rspuns,
prin suprapunerea efecturii operaiilor de I/O cu cele de calcul, att la nivelul unui
singur proces ct i ntre procese.
Pornind de la necesitatea prelucrrii unui volum mare de informaii, unitile de
stocare a datelor sunt componente fundamentale ale calculatoarelor din zilele
noastre, implicate din ce n ce mai mult n rezolvarea unor probleme de prelucrare.
Deci tehnologiile hardware privind stocarea datelor se perfecioneaz din ce n ce
mai rapid prin apariia de noi medii de stocare, a discurilor cu o nalt densitate, cu
un timp de acces rapid, ceea ce trebuie s conduc la mbuntiri ale
componentelor sistemului de operare care le administreaz.

137
Modulul 6. Studii de caz
Cuprins
Introducere .................................................................................................................. 138
Competenele modului ................................................................................................ 138
U1. Sistemele Linux.................................................................................................... 139
U2. Sistemele Windows.............................................................................................. 168
Introducere.
n modulele anterioare am prezentat principiile, algoritmii, abstractizrile i n
general conceptele fundamentale pe care se sprijin sistemele de operare. n acest
modul, vom vedea cum sunt aplicate principiile prezentate n cazul a dou dintre
cele mai rspndite familii de sisteme de operare: Linux i Windows.
Foarte multe persoane i pun ntrebarea de ce este necesar studiul sistemelor
Linux de ctre viitorii specialiti n informatic. Aprut la nceputul anilor 90,
Linux este un continuator al sistemului Unix. nc de la apariia sa, Unix a introdus
concepte revoluionare n lumea sistemelor de operare i a progresat odat cu
evoluia sistemelor de calcul, bucurndu-se de un succes deosebit n lumea
specialitilor. Datorit faptului c a fost creat de programatori pentru
programatori, Unix a oferit faciliti de operare mult superioare altor sisteme de
operare. Datorit portabilitii sale, el a fost utilizat pe cele mai diverse arhitecturi
hardware. Din aceast cauz, a avut i un real succes comercial.
Din punctul de vedere al utilizatorului, diferena esenial dintre Linux i Unix,
este c utilizarea Linuxului este liber, pe cnd Unix este un produs comercial.
Linux este unul dintre cele mai cunoscute produse Open Source. Aceasta este
una dintre cauzele pentru care a progresat foarte rapid, s-a adaptat evoluiilor din
tiina calculatoarelor i a ajuns s implementeze marea majoritate a facilitilor i
mecanismelor din Unix.
Sistemele de operare Windows este au fost create de compania Microsoft.
Evoluia acestor sisteme, este legat de dezvoltarea calculatoarelor personale.
Microsoft a introdus Windows pe pia pentru prima dat n noiembrie 1985, ca o
interfa grafic pentru MS-DOS, iar la nceputul anilor `90 a lansat prima
versiune de sistem de operare Windows. Sistemele de operare Windows au cucerit
o foarte mare parte a pieii. Se estimeaz c astzi peste 85 % din calculatoarele
Personale funcioeaz sub Windows. Windows ofer o interfa grafic prietenoas
i mecanisme de gestiune a resurselor interne care l fac competitiv. ntreaga
filozofie a interfeelor Windows este subordonat conceptului de birou
electronic.

Competene
La sfritul acestui modul studenii vor fi capabili:
s explice evoluia sistemelor Linux i Windows;
s explice interfeele cu utilizatorii a celor dou sisteme de operare;
s explice mecanismele interne ale Linux i Windows, prin care sunt gestionate
resursele sistemelor de calcul.

138
Unitatea de nvare M6.U1. Sistemele Linux
Cuprins
M6.U1.1. Introducere ............................................................................................................ 139
M6.U1.2. Obiectivele unitii de nvare ............................................................................. 139
M6.U1.3. Concepte introductive ........................................................................................... 140
M6.U1.4. Interfaa sistemului cu utilizatorii ......................................................................... 144
M6.U1.5. Tipuri de fiiere i sisteme de fiiere .................................................................... 147
M6.U1.6. Administrarea proceselor...................................................................................... 157
M6.U1.7. Gestiunea memoriei sub Linux ............................................................................. 160
M6.U1.8. Teste de evaluare a cunotinelor.......................................................................... 164
M6.U1.9. Rezumat ................................................................................................................ 166
M6.U1.1. Introducere
Linux este un sistem multiuser si multitasking, adic mai muli utilizatori pot rula
mai multe programe n acelai timp. Ofer suport pentru lucrul n reea, acces la
Internet i este unul dintre cele mai folosite sisteme de operare pentru
administrarea serverelor din reele de calculatoare.
Termenul Linux se refer i la nucleul Linux, ns n mod uzual este folosit pentru
a descrie ntregul sistem de operare pentru calculatoare, compus din nucleul Linux,
biblioteci software i diverse unelte. O "distribuie Linux" adaug acestor
componente de baz o mare cantitate de programe, organizate n pachete.
Nucleul Linux a fost dezvoltat iniial pentru microprocesorul Intel 386, dar n
prezent ruleaz pe o mare gam de microprocesoare i arhitecturi de calculatoare.
Este folosit pe calculatoare de tip personal, pe supercomputere, dar i pe sisteme
ncapsulate, cum ar fi unele telefoane mobile sau recordere video.
Iniial dezvoltat i utilizat de ctre programatori voluntari, Linux a ctigat
suportul industriei IT i al marilor companii ca IBM, Hewlett-Packard, Dell, Sun
Microsystems, Google, Novell sau Nokia i a depit ca folosire versiunile
proprietare de Unix. Analitii atribuie succesul sistemului faptului c este
independent de furnizor, implementarea are un cost sczut iar securitatea i
fiabilitatea sistemului sunt considerate de ctre specialiti drept foarte bune.

M6.U1.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n conceptele generale asupra sistemelor Linux. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice evoluia sistemelor Linux;
neleag i s explice organizarea sistemelor Linux;
neleag i s explice structura nucleului Linux;
neleag i s explice interfaele oferite de sistemul Linux;
neleag i s explice organizarea sistemului de fiiere sub Linux;
neleag i s explice administarea proceselor sub Linux;
neleag i s explice gestiunea memoriei sub Linux.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

139
M6.U1.3. Concepte introductive.
Evoluia sistemelor de operare Unix i Linux. n 1969 apare prima versiune a sistemului de
operare UNIX. Aceast realizare este legat de dou evenimente importante:
- realizarea de ctre MIT (Massachusets Institute of Technology) a produsului MULTICS,
care a implementat o serie de indei noi, printre care: introducerea unui interpretor de comenzi
care s fie un proces utilizator; fiecare comand s fie un proces; introducere unor caractere
de interpretare a liniilor; sistem multi-utilizator i interactiv.
- n cadrul firmei Bell Labs (laboratoarele de cercetare ale firmei AT&T) a fost lansat un
proiect de cercetare care a avut ca efect realizarea unui sistem ierarhic de organizare a
fiierelor.
Aceste concepte au stat la baza primei versiuni a sistemului UNIX, scris n limbaj de
asamblare i implementat pe un sistem PDP-7.
n 1971 apare urmtoarea versiune a sistemului de operare UNIX. Acesta a fost implementat
pe un calculator mai puternic ( PDP-11/20). Este rescris pentru noul sistem i apare o
documenraie a sistemului. n 1974 sunt prezentate n Communications of the ACM ideile
revoluionare ale acestui nou sistem de operare. De asemenea, au fost dezvoltate nc trei
versiuni ale sistemului i autorii sistemului l pun gratuit la dispoziia universitilor
americane i au fost furnizate licene de UNIX unor instituii comerciale.
n 1976 apare versiunea 6, care a fost prima lansat n afara Bell Labs i ale crei
componente sunt majoritar scrise n limbajul C. n felul acesta, sistemul devine portabil,
adic poate fi instalat cu eforturi minime pe platforme de calcul diferite.
Dup aceast dat, sunt dezvoltate n paralel, de ctre Universitatea Berkeley i Bel Labs
diverse versiuni, n concordan cu evoluia sistemelor de calcul. Versiunea 7, aprut n 1978
a devenit comercial, iar din punct de vedere conceptual a adugat organizarea sistemului de
I/O sub form de fluxuri, care permite o configurare mai flexibil a administrrii comunicaiei
ntre procese, precum i un sistem de fiiere care s permit apelul de proceduri la distan. Ea
a fost predecesorul UNIX BSD (Berkeley Software Distribution). Dintre urmtoarele
implementri, cele mai semnificative sunt BSD 4.1, BSD 4.2, BSD 4.3 realizate la
Universitatea Berkeley i Sistem III, Sistem V ale Bell Labs.
Urmtoarele relizri au ncercat s standardizeze sistemul, ceea ce adus la o form general
acceptat denumit UNIX System V Release 4 (prescurtat SVR4). i alte firme realizeaz
propriile versiun de UNIX, care respect standardele SVR4, dintre care cele mai semnificative
sunt Ultrix i OSF(firma DEC- Digital Equiment Corporation), HP/UX(firma Hewlett-
Packard), IRIX(firma SGI-Silicon Graphics Incorporated), AIX(firma IBM), SunOS i
Solaris(firma SUN Microsystems) etc. Dintre facilitile adugate de aceste versiuni se
remarc introducerea interfeelor grafice cu utilizatorul i cele legate de lucrul n reele de
calculatoare.
Standardizarea diferitelor variante de UNIX s-a realizat sub auspiciile unui comitet de
standarde al IEEE. Acest proiect a fost denumit POSIX (Portable Operating System UNIX)
i, n timp a devenit o colecie de standarde pe care le respect toate sistemele de operare
moderne. El este format din mai multe componente, dintre care cele mai importante sunt:
POSIX.1 definete procedurile care cer apeluri de sistem;
POSIX.2 se refer la interfaa cu sistemul(shell);
POSIX.3 metode de testare a sistemului;
POSIX.4 componentele specifice ale sistemelor de operare pentru calculatoare n
timp real;
POSIX.6 elemente de securitate;

140
POSIX.7 elemente de administrare
etc.
n 1987 a aprut sistemul MINIX, lansat n scopuri didactice la Universitatea Vrije din
Amsterdam, care este compatibil cu UNIX la nivel de comenzi i apeluri de sistem, dar este
original din punctual de vedere al proiectrii i implementrii.
n 1991, pornind de la MINIX, apare prima versiune (0.01) a sistemului LINUX, realizat de
un student finlandez, Linus Torvalds. El a fost creat pentru sistemele de calcul pe 32 de bii,
compatibile IBM PC. Sursele lui au fost puse la dispoziia tuturor celor interesai, fiind libere
pe Internet. Fiind un produs Open source, s-a dezvoltat rapid ajungnd o adevrat clon a
sistemului Unix. Marea majoritate a funcionalitilor Unix au fost implementate pe Linux.
Urmtoarea versiune important(1.0) a fost lansat n 1994; a venit cu un nou sistem de fiiere
(inclusiv maparea fiierelor n memorie), a introdus suportul pentru lucru n reea ( inclusiv
Internet), a inclus noi drivere de dispozitiv. O alt versiune important(2.0) a fost lansat n
1996; a inclus suportul necesar arhitecturilor pe 64 de bii, multiprogramare simetric, noi
protocoale pentru lucru n reea etc. Foarte multe componente software au fost portate din
Unix, printre care i aplicaia de interfa grafic X Window System.
Evoluia sistemului LINUX a fost ncurajat de majoritatea firmelor de software importante
(cu excepia Microsoft), o parte dintre ele oferind-ul la preuri foarte mici. Urmnd filozofia
UNIX-ului, LINUX este mai degrab un nucleu, care implementeaz funciile de baz, fiind
deschis tuturor celor care doresc s adauge noi module care s extind sistemul.
Caracteristici generale ale sistemelor Linux
- Linux-ul este gratuit, spre deosebire fa de Unix.
- Linux-ul este un sistem de operare multi-user i multi-tasking ce ofer utilizatorilor
numeroase utilitare interactive.
- Linux este un mediu de dezvoltare; cnd ne referim la Linux, ne referim la nucleu
(kernel), care are rolul de a gestiona memoria i operatiile I/O de nivel scazut, precum i
planificarea i controlul execuiei diferitelor task-uri (procese). Utilizatorii au la dispozitie un
numr mare de utilitare pentru munca lor: editoare de text, limbaje de comand (shell-uri),
compilatoare, debugger-e, sisteme de prelucrare a textelor, protocoale diverse pentru acces la
Internet etc.
- UNIX-ul a aprut n perioada cnd sistemele de operare foloseau prelucrarea serial a
lucrrilor. De la nceput el a fost un sistem interactiv, cu divizarea timpului. Interactivitatea
sistemului este facilitat i de interfaa cu utilizatorul, care poate fi nlocuit sau dezvoltat,
fiind ea nsi un proces. Bazndu-se pe divizarea timpului, UNIX a fost primul sistem de
operare multi-utilizator i multi-proces.
- Linux este un sistem portabil; perifericele sunt tratate ca fiiere iar driverele sunt singurele
componente ale sistemului care sunt scrise in limbaj cod main.
Organizarea ierarhic a sistemelor Unix/Linux. n figura 6.1.1 este prezentat organizarea
pe niveluri a unui sistem care lucreaz sub Unix sau Linux. Sistemul ofer o interfa de
comunicare att cu utilizatorii, ct i cu diverse aplicaii ale acestora.
Nucleul Linux. Orice proces lansat n execuie n mod utilizator interacioneaz cu nucleul
prin intermediul apelurilor de sistem, care pot fi grupate n mai multe categorii:
- apeluri de sistem pentru accesarea sistemului de fiiere ;
- apeluri de sistem pentru lucru cu procese ;
- apeluri de sistem legate de planificarea execuiei proceselor ;
- apeluri de sistem pentru comunicarea ntre procese;
- alte diverse apeluri.

141
Interfaa cu Utilizatori
utilizatorii

Interfaa Programe utilitare standard


cu bibliotecile (console, editoare, compilatoare mod
) utilizator
Interfaa
cu apelurile Biblioteca de funcii standard
(open, close, read, write, fork etc)
de sistem

Sistemul de operare Linux


(administrarea proceselor, administrarea memoriei, sistemul de mod
fiiere, administrarea I/O etc.) nucleu

Hardware(CPU, memorie, discuri, terminale etc)

Figura 6.1.1 Organizarea sistemului sub Linux

Din clasificarea prezentat, rezult c nucleul realizeaz urmtoarele funcii:


- Gestiunea proceselor i a memoriei: prin apeluri de sistem, un proces cere serviciile
componentei de creare, administrare i planificare a execuiei proceselor; aceasta intr
n contact cu componenta de administrare i alocare a memoriei virtuale, care lucreaz
mpreun cu componenta de administrare a paginilor din memoria fizic, realizndu-se
astfel ncrcarea paginilor virtuale n pagini fizice; de asemenea, prin intermediul CPU
se transmite un semnal procesului cu privire la rezolvarea apelului solicitat.
- Accesarea controlat a dispozitivelor de tip caracter i bloc prin intermediul driverelor.
- Gestiunea fiierelor: prin apeluri de sistem, un proces cere serviciile sistemului de
fiiere, care gestioneaz o structur ierarhic de nume de directoare i fiiere, cu
informaii despre fiecare entitate a structurii respective; pe baza acestor informaii,
folosind driverele de dispozitiv se acceseaz un anumit periferic, pe care se afl
fiierul cutat, unde se execut operaia cerut n apelul de sistem specificat.
- Accesarea mediului de reea prin intermediul protocoalelor de reea, care acceseaz
driverele dispoziticvelor specifice lucrului n reea.
Distribuii Linux. Sistemele de operare Linux sunt disponibile sub form de "distribuii".
Unele dintre acestea sunt orientate spre utilizatorul particular, altele ctre servere sau ctre
utilizatorii cu calculatoare mai vechi. Cele mai folosite distribuii de Linux sunt:
- Ubuntu este un proiect orientat spre utilizatorul, uor de utilizat i configurat, fiind n acelai
timp puternic i stabil. O distribuie nrudit cu ubuntu este Kubuntu, care folosete KDE.
- SuSE Linux este o distribuie orientat att ctre servere ct i spre staii de lucru sau
desktopuri, fiind caracterizat de uurina n utilizare i configurare.
- Fedora este continuatoare a proiectului Red Hat Linux, care conine software liber i
disponibil gratuit de pe Internet.
- Debian GNU/Linux este una din distribuiile cele mai complexe care conine un numr
foarte mare de pachete de programe, precum i un manager propriu de pachete.
- Mandriva Linux (denumit anterior Mandrake Linux) este o distribuie uor de utilizat,
orientat spre utilizatorii desktop; a fost creat de compania francez Mandriva.

142
- PCLinuxOS este o distribuie derivat din Mandriva Linux, destinat mediului desktop i
care se remarc prin usurina instalrii, fiind adecvat pentru utilizatorii nceptori.
- Slackware Linux este una din cele mai vechi distribuii. Distribuiei i lipsesc unelte de
configurare uoar, dar beneficiaz de vitez mare de rulare, posibilitate a de a fi instalat pe
hardware mai vechi i o organizare simpl a sistemului.
- Gentoo Linux este destinat utilizatorilor avansai, fiind orientat spre realizarea i rularea
unor aplicaii complexe.
- Knoppix este o distribuie live care ruleaz direct de pe CD sau DVD, fr a instala nimic
pe hard disk, ce poate fi utilizat, pentru diagnosticri de sistem, reparri, recuperri de date
etc.
- RedHat Linux este una din cele mai cunoscute distribuii; n prezent este o distribuie
comercial, orientat exclusiv spre piaa serverelor i spre mediul de afaceri. Este distribuia
care a dat natere proiectului Fedora Core.
- Slax este o distribuie "live" bazat pe Slackware, care poate rula de pe CD sau DVD sau de
pe o memorie Flash de 256 MB.
S ne reamintim...
n 1969 apare prima versiune a sistemului de operare UNIX. La baza lui a stat
produsul MULTICS, care a introdus un interpretor de comenzi care s fie un proces
utilizator i fiecare comand s fie un proces i avut ca efect realizarea un sistem
ierarhic de organizare a fiierelor.
LINUX este un continuator al UNIX, dar spre deosebire de acesta ete un produs
liber, fiind puse la dispoziia tuturor celor interesai pe Internet. Multe dintre
funcionalitile Unix au fost portate pe Linux.
Linux -ul este un sistem de operare multi-user i multi-tasking ce ofer utilizatorilor
numeroase utilitare interactive.
Unix i Linux au fost proiectate de programatori pentru programatori. Pornind de la
acest fapt, interactivitatea i facilitile de dezvoltare ale programelor au fost
elemente prioritare ale proiectanilor sistemului. Interactivitatea sistemului este
facilitat i de interfaa cu utilizatorul, care poate fi nlocuit sau dezvoltat, fiind ea
nsi un proces.
Sistemele de operare Unix/Linux au organizarea ierarhic, pe niveluri. Sistemul
ofer o interfa de comunicare att cu utilizatorii, ct i cu diverse aplicaii ale
acestora.
Nucleul Linux este monolitic, adic, pentru a rezolva anumite necesiti ale
sistemului, el se execut ca unic proces, ntr-un singur spaiu de memorie.
Orice modificare a nucleului, presupune o nou editare de legturi, reinstalarea i,
evident o nou ncrcare ale sistemului de operare.
Sistemele de operare Linux sunt disponibile sub form de distribuii. Cele mai
folosite distribuii de Linux sunt: Ubuntu, SuSE Linux, Fedora, Debian
GNU/Linux, Mandriva Linux, PCLinuxOS, Slackware Linux, Gentoo Linux,
Knoppix, RedHat Linux, Slax, NimbleX, TFM/GNU Linux
I. ntrebri.
1. Care sunt cele mai importante faciliti introduse de versiunile Linux care respect
standardele SVR4.
2. Care versiune de Linux a introdus suportul pentru lucru n reea.
3. Ce versiune de Linux a portat din Unix interfaa grafic X Window System.
4. Prin ce se asigur portabilitatea sistemului Linux.

143
5 La ce componente ale unui sistem Linux au acces utilizatorii.
6.Ce operaii trebuie s se efectueze atunci cnd se face o modificare a nucleului.
7. Cum se face legarea la nucleu a unor module noi.
8. Cum interacioneaz procesele cu nucleul.
9. Explicai organizarea ierarhic a sistemelor Linux.
10. Care este considerat una dintre cele mai populare distribuii de Linux.
11. Specificai distribuiile care ruleaz direct de pe CD sau DVD.
12. Care distribuie este continuatoarea liber a proiectului RedHat.
M6.U1.4. Interfaa sistemului cu utilizatorii
Interfaa cu utilizatorii se poate face n mod text sau grafic. Componenta care permite acest
lucru este consola, care joac un rol esenial n introducerea i afiarea de text folosit n
utilizarea i administrarea sistemului. Terminalele virtuale sunt utilizate pentru introducerea
de comenzi sub form de texte.
Interfee grafice. Interfaa grafic oferit de sistemele Linux se bazeaz pe X Window
System (se utilizeaz i denumirea scurt X sau X11); acesta este un cadru ce permite
desenarea de ferestre pe un afiaj n care imaginea este reprezentat ca o matrice de puncte.
X ofer un cadru de baz pentru crearea unor interfee grafice: desenarea i mutarea
ferestrelor pe ecran, interaciunea cu mouse-ul, interaciunea cu tastatura. Restul de primitive
sunt coninute n diverse programe de interfa, aceasta fiind cauza pentru care aspectul vizual
difer de la o distribuie Linux la alta sau chiar n cadrul aceleiai distribuii.
X Window System are o arhitectur de tip client-server. Serverul X primete de la clieni
(procese) cereri de desenare a unor obiecte grafice i trimite napoi la acetia intrrile de la
utilizator, preluate de la tastatur, mouse etc. n acest sens, serverul X este responsabil de
administrarea resurselor care permit interaciunea cu utilizatorul (ecranul, tastatura, mouse-ul
etc.). Serverul X ruleaz pe calculatorul la care s-a conectat utilizatorul; el preia date de
intrare (cereri) ale acestora, pe care le trimite aplicaiilor client, care proceseaz mesajele
primite de la serverul X i i returneaz acestuia rezultatul prelucrrii, pe care acesta, mai
departe l transmite cttre utilizator prin afiare pe ecran. Clienii X pot rul local, pe acelai
sistem cu serverul X, la care s-a conectat utilizatorul sau pe un alt calculator din reea.
Fa de aplcaiile clasice de tip client-server, aici avem o diferen, n sensul c clienii se pot
afla pe calculatorul local sau la distan, iar serverul se execut pe calculatorul local. Serverul
X nu conine nici o specificaie legat de felul cum arat interfaa cu utilizatorii (modul n
care arat butoanele, ferestrele, meniurile etc.); aceste specificaii sunt realizate de ctre alte
componente: administratorul de ferestre (window manager), mediul de ecran (desktop
environment) i aplicaiile specifice de interfa grafic cu utilizatorul (GUI specific
application ).
Administratorul de ferestre controleaz amplasarea i modul n care arat ferestrele
aplicaiilor; astfel, toate ferestrele clienilor au caracteristici comune: bara de titluri a ferestrei,
butoanele de maximizare i minimizare etc. Aspectul vizual al ferestrelor este controlat de o
component a administratorul de ferestre, numit window decorator.
Exemplu.
Kwin este managerul de ferestre folosit de KDE; metacity este managerul de
ferestre folosit de gnome. Despre gnome i KDE vom discuta n cele ce urmeaz.

Mediul de ecran include un administrator de ferestre, mai multe aplicaii i o interfa vizual
atractiv. Marea majoritate a sistemelor Linux, pun la dispoziia utilizatorului dou medii de
ecran: Gnome i KDE.

144
Interfaa GNOME const dintr-un panel i un desktop. Panelul se gsete n partea de sus a
ecranului i conine meniuri, progame i appleturi. Un ecran GNOME afieaz trei meniuri:
Applications, Places i System.
Din meniul Applications se poate selecta orice orice aplicaie care se execut pe calculatorul
respectiv. Cu meniul Places se pot accesa cteva locaii foarte utilizate: directorul gazd al
utilizatorului (despre care vom discuta n al doilea modul), catalogul desktop, care conine
fiierele afiate pe ecran i fereastra Computer prin care putem accesa dispozitivele
periferice, fiierele partajate din sistem i toate directoarele din calculatorul respectiv. Meniul
System include sub-meniurile Preferences i Administration. Meniul Preferences este
folosit pentru configurarea GNOME.
Pentru a muta o ferestr, cu click stnga pe mouse se trage fereastra respectiv. Fiecare
fereastr are butoane pentru maximizare, minimizare i nchidere. Cu un Dublu-click pe
bara de titluri maximizm fereastra. Fiecare ferestr are un buton corespunztor n panelul de
subsol. Putem folosi acest buton pentru a minimiza sau restaura fereastra respectiv. Interfaa
GNOME suport facilitile drag-and-drop; se pot trage pe ecran sau dintr-o fereastr n
alta: directoare, icon-uri i aplicaii .
GNOME furnizeaz tool-uri de configurare. Acestea sunt afiate n meniul System
Preferences, fiind organizate n mai multe sub-meniuri: Personal, Look and Feel, Internet
and Network, Hardware i System. Cele ce nu se ncadreaz n niciuna dintre categoriile
enunate, sunt afiate direct. Fiecare asfel de fereastr are un buton Help, care prezint o
descriere a acesteia. Unele dintre cele mai importante astfel de tool-uri sunt:
- Personal Keyboard Shortcuts realizeaz corespondene ntre taste i anumite task-uri.
- Personal File Management determin modul de afiarea al directoarelor i fiierelor.
- Look and Feel Windows permite adugarea de faciliti sporite n manipularea
ferestrelor (definirea unor taste pentru modificarea ferestrelor, selectarea cu mouse-ul a
ferestrelor etc.)
Utilizarea applet-urilor GNOME. Pentru adugarea applet-urilor, la panelul respectiv se d
click dreapta pe acesta i se selecteaz intrarea Add, care listeaz toate applet-urile
disponibile. Cteva dintre cele mai folositoare applet-uri sunt: cutare n dicionar, gradul de
utilizare a CPU, verificarea funcionrii monitorului etc.
Interfaa grafic KDE afieaz un panel n partea de jos a ecranului care are un aspect similar
cu partea de sus a ecranului n cazul GNOME. Administratorul de fiiere apare puin diferit,
dar opereaz n acelai mod cu cel din GNOME. n meniul principal, exist o component
Control Center, din care se pot configura fiecare component KDE. ntr-un mod asemntor
cu GNOME, se pot selecta applet-uri, pentu utilizri identice.
Interpretorul de comenzi. Sub Linux, att comenzile ct i interpretoarele de comenzi
(shell) sunt procese care se execut n spaiul de memorie utilizator. Exist mai multe
interpretoare de comenzi care funcioneaz sub Linux; cele mai utilizate sunt sh, tcsh,
bash.Pe un sistem de calcul, se poate lansa n execuie oricare dintre shell-urile amintite.
Dup lansarea n execuie, shell-ul deschide un terminal virtual, de la care utilizatorul poate
introduce propriile comenzi, recunoscute de limbajul de operare al sistemului. Aceste comenzi
devin procese, care sunt procese fiu ale shell-ului. Despre noiunea de proces fiu vom discuta
n modulul patru.
Pentru a se deschide un terminal virtual, se selecteaz din interfaa grafic Applications ->
System Tools -> Terminal. Implicit, acesta va afia o linie care conine numele de user,
introdus cnd utilizatorul s-a conectat la sistem, numele directorului gazd (despre care vom
discuta n modulul urmtor) i prompterul (de obicei caracterul $, pentru utilizatorul

145
obinuit, respectiv #, pentru utilizatorul cu drepturi de root ) care indic locul de unde se
poate introduce o comand. Caracterul utilizat ca prompter i mesajul care apare naintea lui,
pot fi setate de utilizator, prin actualizarea unei variabile de sistem, care va fi descris n
modulul trei.
Forma unei comenzi Linux. n intrducerea i editarea comenzilor se pot utiliza anumite
combinaii de taste, prezentate n tabelul 6.1.1.
Tasta comb. de taste Efectul
Ctrl-A Mut cursorul la nceputul liniei de comand
Ctrl-C Termin executia programului i afieaz prompterul
Ctrl-D Se iese din sesiunea shell curent (acelai efect cu comenzile
exit sau logout)
Ctrl-E Mut cursorul la sfritul liniei de comand
Ctrl-H Genereaz caracterul Backspace
Ctrl-L terge terminalul curent
Ctrl-R Caut istoricul comenzilor introduse la acel terminal
Ctrl-Z Suspend execuia unui program
Sgeat stnga / Mut cursorul pe linia de comand cu o poziie la stnga,
Sgeat dreapta respectiv dreapta, loc n care se pot insera caractere
Sgeat sus/ Afieaz comanda anterioar sau urmtoarea
Sgeat jos
Tab Terminarea comenzii sau a numelui de fiier
Tab Tab Arat fiierul sau posibilitile de terminare a comenzii
Tabelul 6.1.1. Combinaii de taste
O comanda Linux are 4 zone sau cmpuri:
Primul cmp conine numele propriu-zis al comenzii, care indic ce aciune realizeaz
comanda respectiv.
Al doilea este cmpul de opiuni; o opiune este de obicei o liter, care poate fi urmat de
un argument ir de caractere sau un numr ntreg. Un grup de opiuni poate ncepe cu semnul
- sau +.
Zona de expresii conine un ir de caractere cerute ca argumente pentru comanda
respectiv.
Zona de fiiere conine numele fiierelor utilizate n cadrul comenzii lansate.
Obinerea de informaii despre comenzi. Utilizarea paginilor manualelor se face cu
comanda:
man [optiuni]nume_comanda
n care nume_comanda este numele comenzii despre care dorim s aflm informaii.
Informaiile obinute sunt complexe, dar bine structurate. Dac se tasteaz comanda man
man se obine o imagine a modului cum sunt structurate informaiile din manualele Linux.
Afiarea paginilor din manuale, relativ la comanda specificat ca argument, se face la
terminalul de la care a fost tastat comanda man.
Exemplu. Comanda passwd este utilizat pentru schimbarea parolei de ctre un
utilizator. Informaii despre aceast comand putem gsi n seciunile 1 i 5. Dac
tastm: man 1 passwd
Sunt afiate informaiile din seciunea 1, cea cu numrul cel mai mic. Acelai
efect se obine dac se tastez man 1 passwd.
Cu man -a passwd, se afieaz poate informaiile despre comanda
passwd.

146
Utilizarea comenzii Info. Informaiile obinute cu aceast comand sunt mai recente i mai
uor de utilizat n multe cazuri, paginile din manuale fac trimitere la paginile info. Prin
tastarea comenzii info info sunt prezentate informaii despre comanda info .
Cu comanda whatis se pot obine explicaii scurte despre comenzi. De asemenea, este
afiat seciunea de manual n care se gsesc informaii despre comanda respectiv. Cu
opiunea help, care urmeaz o comand, se obin explicaii scurte despre utilizarea
comenzii i o list a opiunilor disponibile.

S ne reamintim...
Interfaa cu utilizatorii se poate face n mod text sau grafic. Componenta care
permite acest lucru este consola. Terminalele virtuale sunt utilizate pentru
introducerea de comenzi sub form de texte.Interfaa grafic oferit de sistemele
Linux se bazeaz pe X Window System; acesta este un cadru ce permite desenarea
de ferestre pe un afiaj n care imaginea este reprezentat ca o matrice de puncte.
Mediul de ecran include un administrator de ferestre, mai multe aplicaii i o
interfa vizual atractiv. Cele mai utilizate sunt Gnome i KDE. Sub Linux, att
comenzile ct i interpretoarele de comenzi (shell) sunt procese care se execut n
spaiul de memorie utilizator.
Utilizarea paginilor manualelor se face cu comanda man nume_comanda, n
care nume_comanda este numele comenzii despre care dorim s aflm
informaii. Afiarea paginilor din manuale, relativ la comanda specificat ca
argument, se face la terminalul, de la care a fost tastat comanda man.Aceste pagini
sunt organizate pe seciuni. Comenzile pot avea pagini n mai multe seciuni
(paginile din seciunea utilizatori, paginile din seciunea administratorului de sistem,
paginile din seciunea programatorilor).
Informaiile obinute cu comanda info sunt mai recente i mai uor de utilizat n
multe cazuri, paginile din manuale fac trimitere la paginile info.
Cu comanda whatis se pot obine explicaii scurte despre comenzi. Cu opiunea
help,care urmeaz o comand, se obin explicaii scurte despre utilizarea
comenzii i o list a opiunilor disponibile.

I. ntrebri.
1. Care este deosebirea dintre serverul X i o aplicaie client-server obinuit.
2. Care componente conin specificaiile legate de felul cum arat interfaa cu
utilizatorii.
3. Cum se lanseaz un terminal virtual.
M6.U1.5. Tipuri de fiiere i sisteme de fiiere
n cadrul unui sistem de fiiere, apelurile sistem Linux gestioneaz urmtoarele tipuri
principale de fiiere:
- Fiierele obinuite sunt privite ca iruri de octei; accesul la un octet se face fie secvenial,
fie direct prin numrul de ordine al octetului.
- Fiierele directori. Un fiier director se deosebete de un fiier obinuit numai prin
informaia coninut n el. Un director conine lista de nume i adrese pentru fiierele
subordonate lui. Uzual, fiecare utilizator are un director propriu care puncteaz la fiierele lui
obinuite, sau la ali subdirectori definii de el.

147
- Fiierele speciale. Linux privete fiecare dispozitiv de I/O ca un fiier de tip special. Aceste
fiiere sunt de tip bloc sau caracter. Din punct de vedere al utilizatorului, nu exist nici o
deosebire ntre lucrul cu un fiier disc normal i lucrul cu un fiier special. Se realizeaz
astfel simplitatea i elegana comenzilor i numele unui dispozitiv poate fi transmis ca
argument.
- Fiierele legturi simbolice sunt un fel de alias-uri pentru fiiere.
- Fiierele fifo sunt folosite pentru comunicaia ntre procese care se execut pe acelai
calculator.
- Fiierele socket sunt folosite pentru comunicaia ntre procese care se execut ntr-o reea de
calculatoare.
Tipuri de sisteme de fiiere. Sistemele de fiiere cele mai ntlnite sunt de tipul ext; ext3
este continuatorul lui ext2, care la rndul lui este o perfecionare a lui ext. Sistemul ext a fost
unul din primele sisteme fisiere din Linux; el recunoate sistemele de fiiere din UNIX. El a
a fost nlocuit de ext2. Acesta a fost unul dintre cele mai rapide sisteme de fiiere. El a
introdus suportul pentru volume pna la 4 TB, gestiunea numelor lungi si suportul complet al
fisierelor UNIX. Pentru a putea fi compatibil cu viitoarele versiuni, utilizeaza hook, un fel de
plug-in ce permite extinderea functionalitilor, mentinnd structura de baz a sistemelor de
fiiere. ext3 introduce caracteristici de journalizare pentru metadate (atributele fiierului) sau
pentru copierea fiierului n timpul fazei iniiale de actualizare a jurnalului; aceast ultim
opiune, garanteaz o mai bun recuperare a datelor.
Directori i inoduri. O intrare ntr-un fiier director conine numele fiierului i numrul
nodului de index (inod) al acestuia. Inodul (nodul de index) reprezint o structur de date care
conine informaiile despre un anumit fiier (sub-director) din directorul respectiv.
Informaiile cele mai importante coninute n nodul de index sunt sunt:
- Drepturile de acces i tipul fiierului.
- Numrul de legturi spre acest fiier (contor de legare).
- Numrul (UID) de identificare al proprietarului(user ID).
- Numrul (GID) de identificare a grupului(group ID).
- Lungimea fiierului.
- Momentul ultimului acces la fiier.
- Momentul ultimei modificri a fiierului.
- Momentul ultimei modificri a structurii inodului.
- Lista adreselor disc pentru primele blocuri care aparin fiierului.
- Referine ctre celelalte blocuri care aparin fiierului.
Structura arborescent de directoare i fiiere. Directoarele se deosebesc de un fiier
obinuit prin informaiile coninute. Fiecare disc conine un director propriu numit rdcin
(Root), specificat prin \. Orice director conine lista de nume i adrese pentru fiierele
subordonate lui. Se creaz astfel o structur arborescent a sistemului de fiiere corespunztor
unui disc.
Orice utilizator are un director gazd (home directory) n care i poate crea propria
structur de directoare i fiiere, ataat utilizatorului la intrarea n sistem, la care se poate face
referin prin caracterul ~. Directorul are dou intrri speciale:
''.'' conine o referin ctre nsui directorul respectiv;
'' .. '' conine un pointer ctre directorul printe.
La intrarea n sistem, directorul curent este directorul gazd. Acesta se poate modifica i
referina la el se face prin caracterul ''.'' .
n cadrul unui sistem de fiere, orice fiier(sau director), este identificat prin calea ctre el.
Calea reprezint un drum n structura arborescent de fiiere a discului respectiv. O cale poate

148
fi absolut (dac pornete din directorul rdcin) sau relativ (dac pornete dintr-un alt
director). Specificarea unei ci este de forma:
[\]dir_1\dir_2\...\dir_n\nume
Dac directorul rdcin lipsete, atunci calea este relativ. n plus fa de MS-DOS sau
Windows, este permis i structura de graf aciclic. Astfel, un fiier poate aparine mai multor
directoare, iar dac directoarele aparin mai multor utilizatori, acesta poate fi partajat.
Sub Linux exist o structur predefinit de directoare, dintre care cele mai importante sunt:.
/bin conine programe executabile (compilatoare, asambloare, interfee etc.
/boot conine fiierul executabil de bootare al sistemului de operare.
/dev conine conine fiierele speciale de dispozitiv.
/etc conine fiiere destinate configurrii sistemului (conine informaii similare celor din
Control Panel din Windows); dintre acestea amintim:
/home conine directoarele gazd ale utilizatorilor.
/lib conine biblioteca cu fiiere utilizate att de sistem ct i de utilizatori.
/lost+found conine fiierele salvate cnd apare o cdere a sistemului.
/mnt este punctul de montare standard pentru alte sisteme de fiiere.
/proc conine un sistem de fiiere virtual. El nu exist pe disc, fiind creat de nucleu n
memorie. Este folosit pentru a pstra informaii despre sistem, dintre care amintim:
/sbin conine comenzi de administrare, care pot fi folosite de utilizatorii obisnuiti, numai
dac li se permite.
/tmp conine fisiere de manevr folosite de utilitarele de sistem, fiind terse atunci cnd nu
mai sunt necesare.
/usr conine programe, biblioteci, documentatii etc. pentru toti utilizatorii.
/var conine fiiere temporare create de utilizatori, cum ar fi fiierele de log, cele
descrcate de pe Internet, imaginea unui CD nainte de creare.
Partiii i blocuri. Un sistem de fiiere Linux este gzduit fie pe un periferic oarecare (hard-
disc, CD, dischet etc.), fie pe o partiie a unui hard-disc; att partiiilor, ct i suporturilor
fizice reale li se spune discuri Linux.
Un disc Linux conine:
- un bloc de boot;
- un superbloc
- mai multe blocuri care conin inod-uri;
- mai multe blocuri care conin fiiere.
Administrarea sistemului de fiiere. n sistemele Linux, accesul la dispozitivele periferice
se realizeaz n mod diferit de sistemele de tip Windows. Nu exist volume separate de genul
A:,C: etc ; orice astfel de dispozitv este integrat n sistemul de fiiere local printr-o operaie
numit montare. Montarea asociaz unui director ntregul sistem de fiiere aflat pe
dispozitivul montat. Mecanismul de montare ofer posibilitatea de a avea o structur de
directoare unitar, care grupeaz fiiere de pe mai multe partiii sau discuri. Prin utilizarea
sistemului de fiiere NFS (Network File System), aceast structur de directoare va putea
conine i sisteme de fiiere de pe un alt calculator din reea. Caracterul unitar este dat de
faptul c la o structura arborescent, se adaug un subarbore n cadrul arborelui deja existent,
legdu-l de un nod ales de noi (n acest caz directorul n care l montm), care trebuie s fie
vid nainte de montare.
Operaia de montare are rolul de a face disponibil coninutul unui sistem de fiiere,
asimilndu-l n cadrul structurii de directoare a sistemului. Un sistem de fiiere poate fi
montat/demontat la/de la ierarhia sistemului. Partiia rdcin este ntotdeauna montat la

149
pornirea sistemului. Este imposibil demontarea partiiei rdcin n timpul funcionrii
sistemului.
Ierarhia de fiiere de pe o partiie poate fi montat n orice director al sistemului rdacin,
acesta numindu-se punct de montare. Dup montare, directorul radcin al sistemului de
fiiere montat, nlocuiete coninutul directorului unde a fost montat. Pentru identificarea
dispozitivelor periferice, sistemele Linux folosesc intrri speciale n directoare, numite fiiere
dispozitiv (device files). Fisierele speciale care indic unitai de disc sau partiii sunt folosite
la montare. n general aceste fiiere se gsesc n directorul /dev i au denumiri standardizate.
Numele de discuri care pot fi utilizate sunt prezentate n tabelul 6.1.2.
Nume Descriere
/dev/hda Primul hard disc IDE din sistem (Integrated Drive Electronics) (omologul
lui C: din DOS i Windows), conectat la IDE ca master drive.
/dev/hdb Al doilea hard disc IDE din sistem, conectat la IDE ca slave drive.
/dev/hdc Primul hard disc, conectat la al doilea controller IDE ca master drive.
/dev/hdd Al doilea hard disc, conectat la al doilea controller IDE ca slave drive.
/dev/sda Primul disc SCSI (Small Computer System Interface).
/dev/sdb Al doilea disc SCSI.
/dev/fd0 Primul floppy disc (A: din DOS).
/dev/fd1 Al doilea floppy disc (B:din DOS).
/dev/lp0 Primul port paralel GNU/Linux
/dev/lp1 Al doilea port paralel GNU/Linux
/dev/ttyS0 Port serial
Tabelul 6.1.2. Nume de discuri.

Observaii.
1. Hard discurile pot fi partiionate; prima partiie din a discului hda este hda1, a doua este
hda2 .a.m.d.
2. n general, avem urmtoarele denumiri standardizate (tabelul 6.1.3.).
Nume Descriere
fdX Uniti de floppy
hdX Uniti HDD sau CDROM pe IDE .
cdromX Uniti cdrom (n general, este o legatur simbolic).
scdX Discuri SCSI sau uniti CDROM emulate SCSI sau pe USB.
sdaX Uniti de stocare pe USB ( HDD-uri , ZIP-uri , FDD-uri, Card Readere, Flash-
uri)
Tabelul 6.1.3. Denumiri standardizate de discuri.
Exemplu. X -urile de mai sus sunt numere corespunztoare unitii respective.
Presupunem c avem dou hard-disk-uri IDE, care vor fi identificate de Linux ca
fiind hda i hdb. n Windows ne-am referit la o partiie ca fiind C:, D:, E: etc. n
Linux, dac vrem s ne referim la partiia a 3-a de pe hard-disk-ul IDE slave, de pe
controler-ul IDE primar, vom folosi hdb3 ; hd se refer la tipul unitaii, b se
refer poziia unitii, iar 3 este numrul partiiei. Pentru aflarea partiiilor de pe
sistem i a tipului lor se folosete comanda fdisk l
Partiiile specificate n fiierul fstab, pe care l vom studia imediat devin stabile i pot fi
folosite n formele prescurtate ale comenzii mount.Sintaxa comenzii mount este de forma:
mount [opiuni] [<dispozitiv>] [director]

150
Opiunile sunt:
-a monteaz toate intrrile din fstab;
-t tip_sist_fis specific tipul sistemului de fiiere care este montat;
-o optiuni specific opiunile procesului de montare (de obicei sunt specifice tipului de
sistem de fiiere). n aceast situaie, opiunile cele mai utilizate sunt:
ro monteaz sistemul de fiiere numai pentru citire (read-only);
rw monteaz sistemul de fiiere pentru citire i scriere (read-write implicit);
exec permite execuia fiierelor binare (implicit);
loop permite montarea unui fiier ca i cnd ar fi un dispozitiv.
Observaie. Este permis montarea unei imagini ISO a unui CD fr a scrie pe un CD-ROM.
n general, comanda mount este utilizat n dou moduri:
- pentru a afia discurile, partiiile i sistemele de fiiere de la distan, care sunt
montate curent ( se tasteaz mount fr parametri );
- pentru a monta temporar un sistem de fiiere.
Exemplu.
#mount
va afia toate sistemele de fiiere montate n sistem.

Exemplu.
#mount t ext3
afieaz toate sistemele de fiiere de tip ext3.
Exemplu.
#mount t ext3 l
listeaz etichetele partiiilor montate.

Exemplu.
La ncrcarea sistemului de operare se execut automat:
#mount a
prin care se monteaz simultan toate sistemele de fiiere configurate n fstab.

Pentru montarea altor sisteme de fiiere este indicat s se creze cte un director separat pentru
fiecare dintre ele; se poate crea directorul /mnt i apoi n acest director s se creeze
subdirectoare separate:
/mnt/windows partitia pe care se afla Windows
/mnt/cdrom unitatea de cdrom
/mnt/floppy discheta de 1.44
Exemple.
Se tasteaz comenzile:
#mount /dev/hda t vfat /mnt/windows, pentru a monta partiia de
Windows
#mount /dev/cdrom r /mnt/cdrom , pentru a monta un CD
#mount /dev/fd0 t /mnt/floppy , pentru a monta o dischet

Dupa teminarea utilizrii unui sistem de fiiere montat parial sau pentru demontarea
temporar a unui sistem de fiiere se folosete comanda umount, a crei sintax este:
#umount [optiuni] director
n care director este directorul care urmeaz a fi demontat.

151
Exemple. Pentru demontarea dischetei montat n exemplul anterior, se tasteaz:
#umount /mnt/floppy
Acelai efect se obine dac se tasteaz:
#umount /dev/fd0

Scriei o secven de comenzi, prin care s se fac montarea unui sistem de fiiere
aflat pe un cdrom, ntr-un subdirector al directorului gazd.

Observaii. 1. Este indicat s se foloseasc prima variant (numele de director), deorece


demontarea va eua dac unitatea este montat n mai multe locuri.
2. Dac este afiat mesajul device is busy, nseamn c demontarea a euat datorit faptului
c un proces are un fiier deschis pe directoul (unitatea) care este obiectul demontrii sau
exist un fiier de comenzi, al crui director curent este cel care se dorete a fi demontat.
3. Dac se folosete umount l, demontarea se va realiza de ndat ce unitatea va deveni
liber. Pentru a se fora demontarea unui sistem de fiiere care nu este disponibil se folosete
umount f.
Utilizarea fiierului fstab pentru definirea sistemelor de fiiere utilizate. fstab este un
fiier de configurare, ce conine informaii despre toate partiiile i dispozitivele de stocare ale
calculatorului, precum i cele legate de locul unde acestea ar trebui montate. Acest fiier este
localizat n directorul /etc. Dac nu se poate accesa partiia Windows din Linux, nu se poate
monta unitatea CD-ROM sau cea de floppy, atunci cauza probabil este c fiierul
/etc/fstab este configurat necorespunzator. /etc/fstab este un fiier text, deci se
poate deschide i edita cu orice editor de text din Linux, numai de utilizatorul cu drepturi de
root. De asemenea, fiierul fstab este folosit pentru a monta la pornirea sistemului toate
partiiile configurate. Pe fiecare sistem exist un fiier /etc/fstab cu un coninut specific,
datorit partiiilor, dispozitivelor de stocare i proprietatilor lor, ce sunt diferite de la un
sistem la altul. n schimb, structura de baz a fiierului fstab este tot timpul aceeai.
Structura fiierului fstab. Fiecare linie conine informaii despre un dispozitiv sau o
partiie.
- Prima coloan conine numele dispozitivului ce reprezint sistemul de fiiere. Cuvntul
none indic sisteme de fiiere ( /proc, /dev/shm, /dev/pts ) care nu sunt asociate
cu dispozitive speciale. Cu opiunea label se poate indica o etichet de volum n locul unui
nume de dispozitiv. n felul acesta, se poate muta un volum pe un alt nume de dispozitiv, fr
a se face modificri n fstab.
- A doua coloan conine punctul de montare n sistemul de fiiere. Trebuie ca punctul de
montare s fie un director care exist n sistem, altfel el trebuie creat manual. Unele partiii i
dispozitive sunt montate automat la bootarea sistemului Linux.
- A treia coloan conine tipul sistemului de fisiere.
- A patra coloan conine optiunile de montare ( comanda mount ). Dac partiia respectiv
nu se monteaz la bootare, se specific opiunea noauto.
- A cincea coloan (un numr) este folosit de comanda dump pentru a determina care sistem
de fiiere trebuie salvat.
A asea coloan (un numr) este folosit de comanda fsck pentru a determina ordinea n
care va verifica sistemele de fiiere la rebootare. Sistemul pe care se gseste / va avea
valoarea 1 n acest cmp, iar celelalte vor avea n general valoare 2 (sau 0 n cazul n care nu
se dorete verificarea lor).

152
Exemplu de fiier fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
/dev/hda5 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,
kudzu,ro 0 0
/dev/hda1 /mnt/win vfat noauto 0 0

Adugai o linie la fiierul fstab prin care s se monteze la boot-are partiia a 3-a
de pe hard-disk-ul IDE slave, cu verificarea sistemului de fiiere.

Observaie. Partiiile hard-disc de pe rdcin, de ncrcare (/boot), sunt montate la


ncrcarea sistemului de operare.
Crearea unui sistem de fiiere se realizeaz cu comanda mkfs, a crei sintax este :
#mkfs t <tip_sist_de_fis> <dispozitiv>
Exemple
#mkfs t ext3 /dev/fd0
Creaz un sistem de fiiere ext3 pe dischet.
#mkfs t ext3 /dev/hda2
Creaz un sistem de fiiere ext3 pe a doua partiie a discului hda.

Creai un sistem de fiiere pe un cdrom.

Afiarea informaiilor despre partiii se face cu comanda df. Comanda afieaz informaii
despre partiiile active din sistem cu excepia celei de swap. Folosete opiunea h ( human
readable). Sunt incluse i partiiile de pe servere din reea.
Exemplu.
df h
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 496M 183M 288M 39% /
/dev/hda1 124M 8.4M 109M 8% /boot
/dev/hda5 19G 15G 2.7G 85% /opt
/dev/hda6 7.0G 5.4G 1.2G 81% /usr
/dev/hda7 3.7G 2.7G 867M 77% /var
fs1:/home 8.9G 3.7G 4.7G 44% /.automount/fs1/root/home
Observm c se listeaz un antet care conine mai multe cmpuri, care indic tipul
informaiei de pe coloana respectiv; pe ultima linie sunt trecute informaiile despre un
sistem de fiiere montat pe un server din reea.
Schema de alocare a blocurilor disc pentru un fiier. Fiecare sistem de fiiere Linux are
cteva constante proprii, printre care amintim:
- lungimea unui inod;

153
- lungimea unui bloc;
- lungimea unei adrese disc (implicit cte adrese disc ncap ntr-un bloc);
- cte adrese de prime blocuri din fiier se nregistreaz direct n inod;
- cte referine se trec n lista de referine indirecte.
n cele ce urmeaz, pentru nelegerea noiunilor, vom lucra cu urmtoarele setri,
specifice sistemelor Unix i Linux mai vechi:
- un inod se reprezint pe 64 octei;
- un bloc are lungimea de 512 octei;
- adresa disc se reprezint pe 4 octei, deci ncap 128 adrese disc ntr-un bloc;
- n inod se trec direct primele 10 adrese de blocuri;
- lista de adrese indirecte are 3 elemente.
Indiferent de valorile acestor constante, principiile dup care se realizeaz alocarea de spaiu,
scrierea informaiilor n fiier i regsirea informaiilor sunt aceleai. Cu aceste constante, n
figura 6.1.4. este prezentat structura pointerilor spre blocurile ataate unui fiier Linux.
n inodul fiierului se afl o list cu 13 intrri, care desemneaz blocurile fizice aparinnd
fiierului. Primele 10 intrri conin adresele primelor 10 blocuri de cte 512 octei care
aparin fiierului.
Intrarea numrul 11 conine adresa blocului de indirectare simpl. El conine adresele
urmtoarelor 128 blocuri de cte 512 octei, care aparin fiierului.
Intrarea numrul 12 conine adresa blocului de indirectare dubl. El conine adresele a 128
blocuri de indirectare simpl, care la rndul lor conin fiecare, adresele a cte 128 blocuri, de
512 octei, cu informaii aparinnd fiierului.
Intrarea numrul 13 conine adresa blocului de indirectare tripl. n acest bloc sunt coninute
adresele a 128 blocuri de indirectare dubl, fiecare dintre acestea coninnd adresele a cte
128 blocuri de indirectare simpl, care la rndul lor conin adresele a cte 128 blocuri, de cte
512 octei, cu informaii ale fiierului.
Observaie. Schema de alocare prezentat are drept caracteristic principal flexibilitatea ei,
n sensul c se folosete un anumit mod de indirectare n funcie de dimensiunea fiierului.
Astfel, pentru fiiere de dimensiuni mai mici, nu se recurge la anumite scheme de indirectare,
care presupun accesri ale discului.
n tabelul 6.1.4. sunt prezentate relaiile dintre lungimea maxim a fiierului, numrul de
accesri indirecte i numrul total de accesri. Setrile anterioare au fost utilizate de sistemele
Unix/Linux mai vechi. La sistemele Linux actuale lungimea unui bloc este de 4096 octei care
poate nregistra 1024 adrese, iar n inod se nregistreaz direct adresele primelor 12 blocuri. n
aceste condiii, tabelul 6.1.4 se transform n tabelul 6.1.5.
Observaie. Sub Linux mai exist i alte sisteme de fiiere:
- ReiserFS este un sistem de fisiere cu jurnalizare. Acesta lucreaz folosind metadate
particulare asociate fiierelor, ceea ce i permite s recupereze fisierele, dup eventualele
blocaje de sistem, cu o rapiditate i o fiabilitate superioar altor sisteme. ReiserFS este
disponibil ncepnd cu versiunea 2.4.1 a nucleuluilui i este folosit de multe distribuii (printre
care i Gentoo www.gentoo.org) ca sistem de fisiere implicit n locul clasicului ext3.
Avantajul acestui sistem de fiiere const n faptul c nu este legat de tehnologii anterioare,
cum este cazul lui ext3.
- iso9660 recunoate nume lungi de fiiere i informaii obinute n stil UNIX (permisiuni
pentru fiiere, proprietatea asupra fiierelor i legturi la fiiere).

154
- proc nu este un sistem de fiiere adevrat, ci o interfa de sistem de fiiere la nucleul
Linux. Multe utilitare Linux se bazeaz pe proc.
- swap este utilizat pentru partiiile de memorie virtual.
- nfs (Network File System) este utilizat pentru montarea sistemelor de fiiere de pe alte
calculatoare din reea.
Inod: Identificare 1 2 9 10 11 12 13

Indirectare simpla:
1 128

Indirectare dubla: Indirectare tripla:


1 128 1 128

1 128 1 128

1 128 1 128



1 128 1 128

1 128 1 128 1 128 1 128

Figura 6.1.2. Structura pointerilor spre blocurile ataate unui fiier Linux

Lungime Lungime maxima Accese Accese Total


maxima (blocuri) (octei) indirecte la informaii accese
10 5120 - 1 1
10+128 70656 1 1 2
10+128+ 8459264 2 1 3
+1282=16522
10+128+1282+ 1082201088 3 1 4
+1283=2113674

Tabelul 6.1.4. Legtura dintre dimensiunea fiierului i numrul de accesri ale discului

155
Lungime maxima Accese Accese la Total
Lungime maxima (blocuri)
(octei) indir. inform. acc.
12 49152 - 1 1
12+1024=1036 4243456 1 1 2
12+1024+10242= 4299210752 2 1 3
1049612
12+1024+10242+ 4398046511104 3 1 4
+10243=1073741824 (peste 5000Go)

Tabelul 6.1.5. Legtura dintre dimensiunea fiierului i numrul de accesri ale discului dac
se mrete dimensiunea blocului
Exemplu. Presupunem c avem un fiier de lungime 10 Mo. Ne propunem s
determinm ce tip de indirectare se folosete pentru alocarea de spaiu pentru acest
fiier, dac se folosete prima schem de alocare. Observm c:
10 Mo=10x1024x1024 octei=10x220 octeti
1 bloc=512 octeti=29 octei
Dup alocare direct mai rmn:
10x220-10x29 octei = 10x29x2043 octei
Dup indirectare simpl mai ramn:
10x29x2043-128x512 octei = 29x20302 octei
Prin redirectare dubl se mai poate aloca spaiu pentru:
128x128x512 octei=29x16384 octei.
Deoarece 20302>16384, rezult c este necesar indirectare tripl.

S ne reamintim...
Sub Linux nu exist noiune a de unitate; acestea sunt nlocuite de fiierele speciale.
n sistemele de fiiere Linux, avem o structur arborescent de fiiere, care se
definete asemntor cu structura din sistemele MSDOS i Windows. n cazul
Linux, pentru directorul rdcin i separatorul de cale se folosete caracterul /. Sub
Linux, exist un director gazd al fiecrui director, notat cu ~. De asemenea, exist o
structur predefinit de fiiere i directoare.
Sub sistemele Unix/Linux nu exist noiunea de identificator de dispozitiv. Fiecare
disc logic (partiie) este vzut ca un fiier special.
Pentru ca ntr-un sistem de fiiere s se integreze un alt sistem de fiiere, de pe un alt
suport, chiar de pe un alt calculator se folosete operaia de montare. Operaia
invers este operaia de demontare. Cele dou operaii se pot realiza prin comenzi
lansate de administratorul de sistem. Afiarea informaiilor despre partiii se face cu
comanda df.Crearea unui sistem de fiiere se realizeaz cu comanda mkfs.
fstab este un fiier de configurare, ce conine informaii despre toate partiiile i
dispozitivele de stocare ale calculatorului, precum i cele legate de locul unde
acestea ar trebui montate.
Schema de alocare a spaiului pe disc pentru fiiere sub sistemele de Linux i Unix,
folosete anumite setri care in cont de caracteristicile hardware a sistemului de
calcul respectiv.Schema este flexibil, deoarece tipul de indirectare utilizat depinde
de dimensiunea fiierului. Dac aceasta este mic, blocurile pot fi accesate direct,
prin pointeri care sunt memorai n inodul fiierului respectiv.

156
I. ntrebri.
1.n care sub-director predefinit se creaz directorul gazd al unui utilizator loginat.
2.Care dintre sub-directoarele predefinite conine un sistem de fiiere virtual.
3. n ce subdirectoare sunt plasate fiierele executabile.
4. Cum ne referim la partiia a doua de pe hard-disk-ul IDE slave, de pe controler-ul
IDE primar.
5. n cazul cror sisteme de fiiere se folosete pentru modificare comanda e2fsck
6. n care director se salveaz segmentele de fiier recuperate de fsck pe care nu le
poate reunifica cu fiierul din care provin.
II. Determinai tipul de indirectare folosit pentru un fiier a crui dimensiune este de
100 MO, folosind cele dou setri ale schemelor de alocare. Specificai cte blocuri
sunt ocupate prin ultima indirectare utilizat.
M6.U1.6. Administrarea proceselor
Strile unui proces i tranziia ntre stri. Un proces sub Linux se poate afla ntr-una dintre
urmtoarele stri:
New: procesul este creat, dar nc nu este gata de execuie.
ReadyMemory: procesul ocup loc n memoria RAM i este gata pentru a fi executat.
ReadySwapped: procesul ocup spaiu numai n memoria secundar (memoria virtual sau
zona swap pe disc), dar este gata de execuie.
RunKernel: instruciunile procesului sunt executate n mod nucleu sau protejat; astfel de
instruciuni corespund unui apel sistem, unui handler de ntreruperi etc.
RunUser: sunt executate instruciunile cod main ale procesului n mod utilizator.
Preempted:corespunde unui proces care a fost forat de ctre un alt proces cu o prioritate
superioar.
SleepMemory: procesul se afl n memorie, dar nu poate fi executat pn cnd nu se
produce un eveniment care s-1 scoat din aceast stare.
SleepSwapped: procesul este evacuat pe disc i el nu poate fi executat
pn cnd nu se produce un eveniment care s-1 scoat din aceast stare.
Zombie: s-a terminat execuia procesulului, naintea execuiei procesului printe (noiune
care o vom discuta n mai trziu).
n figura 6.1.3 este prezentat diagrama strilor n care se poate afla un proces i a tranziiilor
posibile ntre aceste stri.

Preempted
New

RunUser
ReadyMemory ReadySwap

RunKernel

Zombie
SleepMemory SleepSwap

Figura 6.1.3 Diagrama strilor i a tranziiilor ntre stri ale unui proces.

157
Tranziiile posibile sunt:
NewReadyMemory: exist suficient memorie intern pentru a fi alocat procesului.
NewReadySwap: Nu exist suficient memorie intern pentru a fi alocat procesului i
procesului i se aloc numai spaiu n memoria swap (virtual).
RunUserRunKernel: Procesul cere execuia unui apel de sistem.
RunKernelRunUser:Revenire dintr-o operaie executat n mod protejat.
RunKernelZombie:Se ateapt terminarea procesului printe, pentru a se actualiza
anumite statistici; procesul respectiv nu mai are alocate resurse, el exist numai n tabela cu
procese a sistemului.
RunKernelPreempted: Trecerea n starea Preempted apare atunci cnd n sistem
se impune execuia unui proces cu o prioritate mai nalt; acest lucru este decis de nucleu,
deoarece nu poate fi forat un proces care execut o operaie n mod nucleu.
PreemptedRunUser: Cnd procesul aflat n starea Preempted are prioritatea cea
mai nalt, este trecut n RunUser.
RunKernelSleepMemory:Se ateapt apariia unui eveniment ca s se continue
execuia procesului.
SleepMemoryReadyMemory: Procesul a fost trezit de evenimentul corespunztor i
concureaz pentru a fi servit de CPU.
SleepMemorySleepSwapped:Pentru procesul respectiv, nu mai exist suficient
memorie intern, aa c este trecut n memoria swapp.
SleepSwappedReadySwap:S-a ntmplat evenimentul necesar trezirii procesului, dar
nu exist suficient memorie intern pentru acesta.
Ierarhia de procese. Fiecare proces este reprezentat printr-un identificator unic numit PID
( Process Identification). Procesul cu pid-ul 0 (idle process) este procesul pe care nucleul l
execut cnd n sistem nu sunt procese executabile. Procesul cu pid-ul 1 este procesul init,
invocat de nucleu la sfritul procedurii de ncrcare a sistemului de operare. n afara cazului
n care utilizatorul specific explicit nucleului care este procesul pe care s-l execute (prin
intermediul comenzii init ), nucleul trebuie s identifice un proces corespunztor (init) al
crui proprietar este. Nucleul Linux ncearc unul dintre urmtoarele procese, n urmtoarea
ordine: /sbin/init, /etc/init,/bin/init,/bin/sh.Dac nici unul dintre
aceste patru procese nu poate fi executat, nucleul Linux intr ntr-o stare de ateptare. Dupa
gsirea de ctre nucleu, procesul init manipuleaz restul proceselor de boot-are.
Exemplu. Aciuni realizate de procesul init sunt iniializarea sistemului,
lansarea unor servicii, lansarea programului de loginare etc.

Alocarea PID-ului. Implicit, nucleul impune o valoare maxim a PID-ului, care este 32768
(pentru compatibilitate cu sistemele Unix mai vechi, care au functionat pe un procesor pe 16
bii). Administratorul de sistem poate seta valoarea maxima prin programul
/proc/sys/kernel/pid_max. Valorile PID se aloc secvenial de ctre sistemul de
operare; cele alocate anterior nu pot fi reutilizate.
Cu excepia procesului init, fiecare proces are un tat (procesul n interiorul cruia este
declarat); procesul respectiv este un proces fiu. n cadrul procesului fiu, este recunoscut
identificatorul procesului printe (PPID ). Fiecare proces aparine unui utilizator(user) i unui
grup de utilizatori(group). Aceast relaie este utilizat pentru a controla drepturile de acces.
Aceste valori sunt numere ntregi corespunztoare unor identificatori specificai in fiierele
/etc/passwd i /etc/group. Fiecare proces fiu moteneste user-ul i group-ul
tatlui.De asemenea, fiecare proces face parte dintr-un grup de procese, care exprim o

158
relaie cu alte procese. Procesele fiu i tat aparin aceluiai grup. Din perspectiva
utlizatorului, un grup de procese formeaz un job.
Exemplu. Dou sau mai multe procese legate prin pipe, formeaz un grup de
procese.

Planificarea sub linux. Sub Linux procesele/firele de execuie se mpart n 3 clase de


prioriti:
- n timp real, planificate dup strategia FIFO;
- n timp real, planificate dup strategia round-robin;
- cu partajarea timpului.
Procesele FIFO n timp real au cea mai mare prioritate i nu pot fi forate. Procesele round-
robin n timp real se execut dup metoda round-robin. Fiecare proces are o prioritate de
execuie, a crei valoare implicit este 20; aceast prioritate poate fi modificat folosind
comanda nice valoare, prin care prioritatea devine 20-valoare. Parametrul
valoare este un numr ntreg din mulimea {i / i N , 20 i 19}, deci prioritile sunt
din mulimea {i / i N , 1 i 40}. Scopul acestei metode, este de a face importana
serviciilor oferite de Linux proporional cu prioritatea; procesele cu prioritate mai mare
primesc un timp de rspuns mai rapid i un timp CPU mai mare. n plus fa de prioritate,
fiecare proces are asociat o cuant de timp, n cadrul planificrii execuiei dup metoda
round-robin. Cuanta reprezint un numr de tacte ale ceasului sistemului, ct CPU este alocat
procesului. Dac ceasul funcioneaz la 100 Hz, fiecare tact este de 10 msec., ceea ce se
numete jiffy(moment).
n cele ce urmeaz, este prezentat modul de utilizare de ctre planificator a prioritii i
cuantei. Mai nti se determin valoarea goodness (ct de bun) a fiecrui proces gata de
execuie, aplicnd urmtoarele reguli:
if (class == real_time) goodness = 100 + priority;
if (class == timesharing&& quantum > 0)
goodness=quantum+priority;
if (class == timesharing && quantum == 0) g goodness = 0;
Ambele clase de procese n timp real se ncadreaz n regula dat de primul if. Fiecare astfel
de proces primete o valoare goodness mai mare dect a tuturor proceselor. Dac
procesului care a fost ultimul servit de CPU, i-a mai rmas o parte din cuanta de timp, acesta
primete o valoare goodness mai mare, astfel nct dintre mai multe procese care au
aceeai valoare a prioritii, acesta va fi selectat pentru a fi executat, dac procesul respectiv
este gata de execuie.
Algoritmul de planificare se deruleaza astfel:
1. Se selecteaz procesul cu valoarea goodness cea mai mare.
2. n timpul execuiei procesului, cuanta sa este decrementata cu 1 la fiecare tact de ceas.
3. CPU este luat procesului, dac se ntmpl oricare dintre condiiile urmtoare:
- Cuanta sa ajunge la 0;
- Procesul intr n starea de blocare;
- Un proces blocat anterior cu o valoare goodness mai mare devine gata de execuie.
Cuantele proceselor tind s devin 0. Dac proceselor care urmeaz s efectueze o operaie de
I/O le mai ramne o parte din cuant alocat, planificatorul reseteaz toate valorile
Quantum, conform formulei: quantum = (quantum/2) + priority

159
S ne reamintim...
Un proces sub Linux se poate afla ntr-una dintre urmtoarele stri:Created,
ReadyMemory,ReadySwapped,RunKernel,RunUser,Preempted,
ReadyMemory,RunUser,SleepMemory,SleepSwapped,Zombie.
Fiecare proces este reprezentat printr-un identificator unic numit PID , alocat de
ctre nucleul Linux. Procesul cu pid-ul 0 este procesul pe care nucleul l
execut cnd n sistem nu sunt procese executabile. Procesul cu pid-ul 1 este
procesul init, invocat de nucleu la sfritul procedurii de ncrcare a sistemului
de operare.
Cu excepia procesului init, fiecare proces are un tat (procesul n interiorul
cruia este declarat); procesul respectiv este un proces fiu. n cadrul procesului
fiu, este recunoscut identificatorul procesului printe (PPID ). Fiecare proces
aparine unui user i unui group. Aceast relaie este utilizata pentru a controla
drepturile de acces. Fiecare proces fiu moteneste user-ul i group-ul tatlui.
Sub Linux procesele/firele de execuie se mpart n 3 clase de prioriti: n timp
real, planificate dup strategia FIFO; n timp real, planificate dup strategia
round-robin; cu partajarea timpului. Procesele FIFO n timp real au cea mai
mare prioritate i nu pot fi forate. Procesele round-robin n timp real se execut
dupa metoda round-robin. Fiecare proces are o prioritate de execuie, care poate
fi modificat folosind comanda nice.

I.ntrebri.
1.Care este diferena dintre strile ReadyMemory i
ReadySwapped.
2. Care este diferena dintre strile RunKernel i RunUser.
3. Care este diferena dintre strile SleepMemory i SleepSwapped.
4. Prin ce program administratorul de sistem poate seta valoarea maxima a PID-
ului.
5. Cum selecteaz nucleul Linux procesul init.
6. Ce relaie este utilizat pentru a controla drepturile de acces.
Care este n diferena ntre procesele n timp real, planificate dup strategia
FIFO i cele n timp real, planificate dup strategia round-robin.
7. Cum utilizeaz planificatorul prioritatea i cuanta.
8. Ce se ntmpl cu cuanta de timp, dac procesele care urmeaz s efectueze o
operaie de I/O le mai ramne o parte din cuant alocat.
M6.U1.7. Gestiunea memoriei sub Linux
Structura spaiului de memorie alocat unui proces. Fiecare proces are alocat un spaiu
de adrese din memoria intern i unul din memoria virtual. Procesul acceseaz memoria
intern n dou moduri: utilizator i nucleu. Poriunea accesat n mod utilizator este
format din:
- Partea de instruciuni cod main a procesului, care poate fi partajat cu alte procese.
- Datele iniializate numai pentru citire (constantele utilizate de ctre proces).
- Datele iniializate pentru citire i scriere (variabilele procesului iniializate la compilare).
- Date neiniializate este zona ocupat de ctre restul variabilelor, cu excepia celor crora li
se aloc spaiu pe stiv sau n zona heap.
-Heap este zona unde se aloc spaiu pentru variabilele dinamice.

160
- Stiva este zona de memorie folosit pentru transferul parametrilor, n cazul apelului de
funcii.
- Tabela proceselor conine cte o intrare pentru fiecare proces;
- Tabela paginilor de memorie virtual coine cte o intrare pentru fiecare pagin din
memorie, n care sunt pstrate diverse informaii, printre care: procesul care folosete pagina
respectiv, drepturi de acces etc. n cazul sistemelor Linux care folosesc o schem de
alocare segmentat i paginat, mai exist i o tabel de translatare segment - pagin de
memorie virtual.
- Tabela descriptorilor de fiiere deschise din sistem conine cte o intrare pentru fiecare
descriptor deschis.
- Tabela inodurilor conine cte o intrare pentru fiecare i-nod de pe disc.
Observaie.Coninutul primelor trei zone corespunde fiierului executabil corespunztor
procesului. Pe lng acestea, un fiier executabil mai conine i alte informaii care sunt
folosite de ctre nucleul Linux la iniializarea modului de lucru protejat (nucleu).
Poriunea utilizat n mod nucleu este administrat de ctre nucleul Linux i este accesibil
procesului numai n modul de execuie protejat, prin apeluri de sistem specifice. Ea are o parte
static (de dimensiune fix) i una dinamic (de dimensiune variabil). Aceast zon conine:
prioritatea procesului; un numr natural cuprins ntre 1 i 39 folosit la planificarea
execuiei;
semnalele netratate trimise procesului;
statistici de timp ( timpul de utilizare CPU, din momentul crerii lui, folosit de algoritmul
de planificare execuiei);
statutul memoriei procesului (imaginea procesului se afl n memoria principal sau n
memoria swap);
pointer la urmtorul proces din coada de procese aflate n starea Ready (dac procesul
curent este n starea Ready);
descriptorii evenimentelor care au avut loc ct timp procesul a fost n starea Sleeping.
Zona User: este memorat n spaiul de adrese al procesului, dar este accesibil numai din
modul de execuie nucleu (intrarea n tabela proceselor se afl n nucleu). Ea conine
informaii de control, care trebuie s fie accesibile nucleului sistemului de operare cnd se
execut n contextul acestui proces i anume:
pointer la intrarea n tabela proceselor care corespunde acestei zone;
UID, EUID, GID i EGID - folosite la determinarea drepturilor de acces ale procesului;
timpul de execuie al procesului, att n modul user, ct i n modul nucleu;
vectorul aciunilor de tratare a semnalelor; la recepionarea unui semnal, n funcie de
valorile acestui vector, procesul poate s se termine, s ignore semnalul sau s execute
o anumit funcie specificat de utilizator;
terminalul de control al procesului (cel de pe care a fost lansat n execuie, dac exist);
valorile returnate i posibilele erori rezultate n urma efecturii unor apeluri sistem;
directorul curent i directorul rdcin;
zona variabilelor de mediu;
restricii impuse de nucleu procesului (dimensiunea procesului n
memorie etc.);
tabela descriptorilor de fiiere conine datele relative la toate fiierele deschise de
ctre proces;
masca drepturilor implicite de acces pentru fiiere nou create de ctre proces.
tabela regiunilor din memorie ale procesului este o tabel de translatare a adreselor
virtuale n adrese fizice pentru regiunile (seciunile) programului, care este executat n
contextul acestui proces;

161
Exemplu. Regiuni din memorie ale proceselor sunt seciunea de text, de date
neiniializate, de date iniializate citire/scriere.

stiva nucleu este memoria alocat pentru stiva folosit de nucleul sistemului de operare n
modul de execuie nucleu;
Exemplu. Aplicaii care folosesc stiva nucleu sunt apelurile sistem.

contextul registru (hardware) este o zon de memorie unde se salveaz coninutul


regitrilor generali, de stiv, de execuie, de control i de stare n momentul n care
algoritmul de planificare decide s dea controlul procesorului unui alt proces. Aceti
regitrii ai procesorului se salveaz pentru a putea relua execuia procesului, de unde s-a
rmas.
Nucleul Linux trebuie s administreze toate aceste zone din memoria virtual ale unui proces.
n tabela procesului, exist un pointer ctre o structur numit mm_struct. Aceast structur
conine informaii despre imaginea executabil i un pointer ctre tabelele cu paginile
procesului. Ea conine pointeri ctre o list cu elemente de tipul vm_area_struct; cele
mai importante cmpuri ale structurii vm_area_struct sunt:
vm_start, vm_end; reprezint adresa de nceput, respectiv de sfrit ale zonei de memorie
(aceste cmpuri apar n /proc/*/maps);
vm_file, pointer-ul la structura de fiiere asociat (dac exist);
vm_pgoff, deplasamentul zonei n cadrul fiierului;
vm_flags, un set de indicatori;
vm_ops, un set de funcii de lucru asupra acestei zone.
Toate structurile vm_area_struct corespunztoare unui proces sunt legate printr-o list;
pentru ca regsirea datelor s se fac mai rapid, ordinea n list este odat de ordinea
cresctoare a adreselor virtuale de unde ncep zonele respective.
Zonele de memorie ale unui proces pot fi vizualizate inspectnd procfs.
Exemplu.
$cat /proc/1/maps
08048000-0804f000 r-xp 00000000 03:01 401624 /sbin/init
0804f000-08050000 rw-p 00007000 03:01 401624 /sbin/init
08050000-08071000 rw-p 08050000 00:00 0
40000000-40016000 r-xp 00000000 03:01 369654 /lib/ld-2.3.2.so
40016000-40017000 rw-p 00015000 03:01 369654 /lib/ld-2.3.2.so
40017000-40018000 rw-p 40017000 00:00 0
4001d000-40147000 r-xp 00000000 03:01 371432 /lib/tls/libc-2.3.2.so
40147000-40150000 rw-p 00129000 03:01 371432 /lib/tls/libc-2.3.2.so
40150000-40153000 rw-p 40150000 00:00 0
bffff000-c0000000 rw-p bffff000 00:00 0
ffffe000-fffff000 ---p 00000000 00:00 0

Relocarea paginilor virtuale de memorie sub Linux. n cazul sistemelor de calcul cu


procesor pe 64 de bii, o adres virtual este format din 4 cmpuri: director global, director
de mijloc, pagin i deplasament. Astfel, pentru translatarea unei adrese virtuale ntr-una
fizic se folosete o structur arborescent pe 3 niveluri (figura 6.1.4). Fiecare proces are
alocat o intrare n tabela director global. Aceast intrare conine un pointer ctre tabela
director de mijloc i n aceast tabel exist o intrare care conine un pointer ctre tabela de
pagini; n aceast tabel, exist o intrare care conine un pointer ctre o pagin din memoria
fizic, din care pe baza deplasamentului se obine o locaie fizic n care este ncrcat pagina

162
virtual respectiv.
Observaie. n cazul sistemelor care funcioneaz cu un microprocesor pe 32 de bii,
funcioneaz o schem pe dou niveluri.
Algoritmul de nlocuire a paginilor. Fiecare pagin virtual ncrcat ntr-o pagin fizic
alocat unui proces, are asociat o variabil reprezentat pe 8 bii. De fiecare dat cnd se
face referin la o pagin se incrementeaz variabila asociat. Aceste variabile, formeaz o
list. Periodic, sistemul parcurge aceast list i decrementeaz valorile acestor variabile.O
pagin pentru care variabila asociat are valoarea 0, este eligibil pentru a fi nlocuit n
momentul cnd se pune problema ncrcrii unei pagini virtuale. Dac exist mai multe pagini
eligibile, se alege una dintre ele folosind regula FIFO. Aceast metod este o variant a
algoritmului clasic LRU (Least Recently Used).
Observaie. Linuxul admite existena modulelor ncrcate dinamic, de obicei drivere de
dispozitiv. Acestea pot fi de o dimensiune arbitrar i necesit o zon contigu din memoria
intern gestionat de nucleu. Pentru a se obine astfel de zone de memorie, se folosete
metoda alocrii de memorie prin camarazi.
Director global
Director de
mijloc
Tabela de
pagini

Pagina

Deplasament

Locatie
fizica

Figura 6.1.4. Organizarea arborescent a schemei de translatare a paginilor virtuale


S ne reamintim...
Fiecare proces are alocat un spaiu de adrese din memoria intern i unul din
memoria virtual. Procesul acceseaz memoria intern n dou moduri:
utilizator i nucleu.
Translatarea adreselor virtuale n adrese fizice se face, n cazul sistemelor de
calcul pe 64 de bii pe baza unei structuri arborescente pe trei niveluri.
Algoritmul de nlocuire a paginilor se bazeaz pe selectarea paginii celei mai puin
utilizate.
ntrebri.
1.Coninutul cror zone corespunde fiierului executabil corespunztor
procesului.
2.Care este zona de memorie folosit pentru transferul parametrilor, n cazul
apelului de funcii.
3.Care zon este memorat n spaiul de adrese al procesului, dar este accesibil
numai din modul de execuie nucleu.
4.Cum se selecteaz o pagin pentru a fi nlocuit.

163
M6.U1.8. Test de evaluare a cunotinelor
Marcai varianta corect.

1. Serverul X ruleaz pe:


a) Calculatorul pe care se c) Calculatorul la care s-a
execut serverul de nume. conectat utilizatorul
b) Calculatorul pe care se d) Calculatorul la care lucreaz
execut serverul de samba. administratorul.
2. Care dintre componentele sistemului de operare sunt scrise n limbajul de asamblare al
calculatorului gazd:
a) Nucleul c) Driverele de memorie.
b) Bibliootecile d) Driverele de dispozitiv
3. Pentru a afia toate informaiile din paginile de manual, n comanda man se folosete opiunea:
a) -s c) -m
b) -p d) -a
4. Un i-nod reprezint:
a) Descriptorul unui fiier c) Ultimul bloc al unui fiier
b) Primul bloc al unui fiier d) Un nod de index al unui fiier
5. Subdirectorul gazd este asociat:
a) Unei gazde c) Unui server
b) Unui utilizator d) Unui grup de utilizatori
6.Simbolul ~ desemneaz:
a) Sub-directorul gazd al c) Sub-directorul gazd al
utilizatorului loginat administratorului
b) Sub-directorul gazd al d) Sub-directorul gazd al
grupului de utilizatori. utilizatorului cu drepturi de root.
7. Fisierele speciale identific:
a) Locaii unde se salveaz c) Discuri
informaiile despre utilizatori
b) Locaii unde se salveaz d) Socketuri.
informaiile despre procese.
8. /dev/hdc2 nsemn:
a) A doua partiie a primului c) A doua partiie a celui de-al
hard disc, conectat la al doilea treilea hard disc, conectat la al
controller SCSI ca master doilea controller SCSI ca master
drive. drive.
b) A doua partiie a primului d) A doua partiie a celui de-al
hard disc, conectat la al doilea treilea hard disc, conectat la al
controller IDE ca master drive. doilea controller IDE ca master
drive.
9. Starea Preempted:
a) corespunde unui proces care c) corespunde unui proces care a
a fost forat de ctre un alt fost evacuat din memorie.
proces cu o prioritate
inferioar.
b) corespunde unui proces care d) corespunde unui proces care
a fost forat de ctre un alt ateapt s execute un apel de
proces cu o prioritate sistem.
superioar.

164
10. Heap este:
a) zona de memorie virtual c) zona de memorie virtual unde
unde se aloc spaiu pentru se aloc spaiu pentru variabilele
variabilele statice. dinamice.
b) zona de memorie fizic unde d) zona de memorie fizic unde se
se aloc spaiu pentru aloc spaiu pentru variabilele
variabilele statice. dinamice.
11. n cazul sistemelor de calcul cu procesor pe 64 de bii, o adres virtual este format din 4
cmpuri:
a) director rdcin, director de c) director global, director de
mijloc, pagin i deplasament. mijloc, pagin i deplasament.
b) director rdcin, director de d) director global, director de
mijloc,segment i deplasament. mijloc, segment i deplasament.
12. Algoritmul de nlocuire a paginilor sub Linux o variant a algoritmului clasic:
a) NRU c) FIFO.
b) LRU d) Belady
13. Care procese au cea mai mare prioritate i nu pot fi forate:
a) Driverele. c) Procesele round-robin n timp
real
b) Apelurile de sistem. d) Procesele FIFO n timp real
14. Grupul de procese exprim:
a) o relaie ntre procese c) o relaie ntre procese i
utilizator.
b) o relaie ntre joburi d) o relaie ntre procese i un
grup de utilizatori.

M6.U1.9. Rezumat.
ntreaga evoluie a sistemelor de operare Unix i Linux este caracterizat de
introducerea unor concepte noi. Astfel, chiar prima versiune a sistemului de operare
UNIX a introdus un interpretor de comenzi care s fie un proces utilizator i fiecare
comand s fie un proces; de asemenea a implementat un sistem ierarhic de
organizare a fiierelor. Unele dintre marile firme de software i marile universiti
americane i-au adus contribuia la dezvoltarea Unix-ului. Un aspect important, este
standardizarea diverselor versiuni ale sistemului Unix. Linux este un continuator al
Unix, care a preluat facilitile oferite utilizatorilor, dar spre deosebire de acesta este
un produs liber, fiind pus la dispoziia tuturor celor interesai pe Internet.
Linux -ul este un sistem de operare multi-user i multi-tasking ce ofer utilizatorilor
numeroase utilitare interactive. Unix i Linux au fost proiectate de programatori
pentru programatori. Pornind de la acest fapt, interactivitatea i facilitile de
dezvoltare ale programelor au fost elemente prioritare ale proiectanilor sistemului.
Interactivitatea sistemului este facilitat i de interfaa cu utilizatorul, care poate fi
nlocuit sau dezvoltat, fiind ea nsi un proces.
Interfaa cu utilizatorii se poate face n mod text sau grafic. Terminalele virtuale sunt
utilizate pentru introducerea de comenzi sub form de texte. Sub Linux, att
comenzile ct i interpretoarele de comenzi (shell) sunt procese care se execut n
spaiul de memorie utilizator. Interfaa grafic oferit de sistemele Linux se bazeaz
pe X Window System; acesta este un cadru ce permite desenarea de ferestre pe un

165
afiaj n care imaginea este reprezentat ca o matrice de puncte.
O component esenial a sistemului Linux este nucleul, carea are o organizare
monolitic; pentru a rezolva anumite necesiti ale sistemului, el se execut ca unic
proces. Orice modificare a nucleului, presupune o nou editare de legturi,
reinstalarea i, evident o nou ncrcare ale sistemului de operare.
Sistemele Linux conin manuale interactive prin care sunt oferite informaii despre
comenzi. Utilizarea paginilor manualelor se face cu comanda man. Informaiile
obinute cu comanda info sunt mai recente i mai uor de utilizat n multe cazuri,
paginile din manuale fac trimitere la paginile info. Cu comanda whatis se pot
obine explicaii scurte despre comenzi. Cu opiunea help,care urmeaz o
comand, se obin explicaii scurte despre utilizarea comenzii i o list a opiunilor
disponibile.
Pe lng fiierele obinuite, privite ca iruri de octei, sistemul Linux utilizeaz i
alte tipuri de fiiere. Prin introducerea conceptului de fiier special, Linux privete
fiecare dispozitiv de I/O ca i un fiier de tip special. Se realizeaz astfel
simplitatea i elegana comenzilor i numele unui dispozitiv poate fi transmis ca
argument.
Pe lng structura arborescent de directoare i fiiere, ntlnit la alte sisteme de
operare (MS-DOS, Windows), Linux introduce structura de graf aciclic. Astfel, un
fiier obinuit poate aparine mai multor directoare; acest lucru permite
implementarea unui mecanism elegant de partajare a fiierelor.
Conceptul de montare permite conectarea unui sistem de fiiere, de pe un anumit
disc, la un director existent pe sistemul de fiiere implicit. Acest lucru este necesar,
n condiiile n care, spre deosebire de alte sisteme de operare ca( DOS, Windows,
etc.) n specificarea fiierelor Linux nu apare zona de periferic(perifericele sunt
fiiere speciale). Operaia de demontare are efectul invers.
Linux folosete fiierul de configurare fstab care conine informaii despre toate
partiiile i dispozitivele de stocare ale calculatorului, precum i cele legate de locul
unde acestea ar trebui montate. De asemenea, fiierul fstab este folosit pentru a se
monta la pornirea sistemului toate partiiile configurate.
Linux propune o standardizare a organizarii unui disc. n acest sens, ntlnim blocul
0, care conine programul de ncrcare al sistemului de operare, blocul 1 numit i
superbloc, care coine o serie de informaii prin care se definete sistemul de fiiere
de pe disc, blocuri care conin informaii despre fiierele memorate de pe disc i
blocurile in care se memoreaz coninuturile fiierelor.
n ceaa ce privete alocarea blocurilor disc pentru un fiier, linux propune o metod
flexibil i eficient, care ia n considerare dimensiunea fiierelor i realizeaz o
regsire rapid a informaiilor stocate pe discuri.
Sistemele de operare Linux sunt caracterizate de conceptul de multiprogramare. n
acest sens, conceptul de proces capt un rol esenial. n funcie de cerinele
procesului respectiv, de interaciunea cu sistemul sau cu alte procese, un proces sub
Linux se poate afla ntr-una dintre urmtoarele stri: Created,
ReadyMemory,ReadySwapped,RunKernel,RunUser,Preempted,
ReadyMemory,RunUser,SleepMemory,SleepSwapped,Zombie.De
asemenea, tranziiile dintr-o stare n alta ofer o imagine abstract a execuiei
proceselor.

166
Fiecare proces are alocat un spaiu de adrese din memoria intern i unul din
memoria virtual. Procesul acceseaz memoria intern n dou moduri: utilizator
i nucleu. Translatarea adreselor virtuale n adrese fizice se face, n cazul sistemelor
de calcul pe 64 de bii pe baza unei structuri arborescente pe trei niveluri.Algoritmul
de nlocuire a paginilor se bazeaz pe selectarea paginii celei mai puin utilizate.
Sub Linux procesele/firele de execuie se mpart n 3 clase de prioriti: n timp real,
planificate dup strategia FIFO; n timp real, planificate dup strategia round-robin;
cu partajarea timpului. Procesele FIFO n timp real au cea mai mare prioritate i nu
pot fi forate. Procesele round-robin n timp real se execut dupa metoda round-
robin.
Fiecare proces este reprezentat printr-un identificator unic numit PID , alocat de
ctre nucleul Linux. Procesul cu pid-ul 0 este procesul pe care nucleul l execut
cnd n sistem nu sunt procese executabile. Procesul cu pid-ul 1 este procesul init,
invocat de nucleu la sfritul procedurii de ncrcare a sistemului de operare.
Cu excepia procesului init, fiecare proces are un tat (procesul n interiorul
cruia este declarat); procesul respectiv este un proces fiu. n cadrul procesului fiu,
este recunoscut identificatorul procesului printe (PPID ). Fiecare proces aparine
unui user i unui group. Aceast relaie este utilizata pentru a controla drepturile de
acces. Fiecare proces fiu moteneste user-ul i group-ul tatlui.
Semnalul este o ntrerupere software pe care un proces o primete spre a fi informat
despre apariia unui eveniment. Semnalele se folosesc pentru: situaii de excepie,
alarme, terminri neateptate i pentru comunicaia ntre procese. Semnalul poate fi
privit i ca o avertizare pe care o primete un anumit proces. Fiecare semnal are un
nume care este prefixat de SIG. Numele semnalelor sunt definite prin constante
simbolice care sunt numere ntregi strict pozitive.

167
Unitatea de nvare M6.U2. Sistemele Windows
Cuprins
M6.U2.1. Introducere ............................................................................................................ 168
M6.U2.2. Obiectivele unitii de nvare ............................................................................. 168
M6.U2.3. Generaliti despre sistemele Windows................................................................ 169
M6.U2.4. Componente de nivel sczut ale sistemelor Windows.......................................... 174
M6.U2.5. Administrarea obiectelor....................................................................................... 178
M6.U2.6. Memoria virtual sub Windows............................................................................ 179
M6.U2.7. Administrarea proceselor sub Windows ............................................................... 181
M6.U2.8. Sistemul de fiiere sub Windows.......................................................................... 187
M6.U2.9. Teste de evaluare a cunotinelor.......................................................................... 190
M6.U2.10. Rezumat .............................................................................................................. 191
M6.U2.1. Introducere
Microsoft Windows este numele unei familii de sisteme de operare create de
compania Microsoft. Progresul sistemelor Windows, este legat de apariia i
evoluia calculatoarele personale. Primele calculatoare personale au funcionat sub
sistemele de operare DOS. MS-DOS a fost varianta Microsoft a sistemului DOS.
Microsoft a introdus Windows pe pia, pentru prima dat n noiembrie 1985, ca o
interfa grafic la sistemul de operare MS-DOS, deoarece interfeele grafice erau
din ce in ce mai apreciate. Microsoft Windows a ajuns cu timpul s predomine pe
piaa de calculatoare mici, ntrecnd Mac OS, care fusese introdus pe pia mai
nainte de ctre compania Apple Computers, astzi numit Apple Inc.
Marea majoritate a calculatoarelor utilizate n activitile economice, sociale, de
nvmnt i de cercetare folosesc una dintre versiunile sistemului de operare
Windows. Dac n 2004 Windows deinea aproximativ 90 % din piaa de sisteme
de operare, acum se estimeaz c aproximativ 85 % din calculatoarele de tip
Personal Computer utilizeaz sisteme windows.
Din acest motiv, cunoaterea principiilor i mecanismelor pe care se sprijin
sistemele Windows, constituie un element esenial al formrii specialitilor
informaticieni.

M6.U2.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n conceptele generale asupra sistemelor Windows. La sfritul acestei uniti de
nvare studenii vor fi capabili s:
neleag i s explice evoluia sistemelor Windows;
neleag i s explice organizarea sistemelor Windows;
neleag i s explice structura nucleului Windows;
neleag i s explice interfaele oferite de sistemul Windows;
neleag i s explice organizarea sistemului de fiiere sub Windows;
neleag i s explice administarea proceselor sub Windows;
neleag i s explice gestiunea memoriei sub Windows.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

168
M6.U2.3. Generaliti despre sistemele Windows
Evoluia sistemelor Windows. Primele versiuni de Windows (1.0- lansat n 1985, 2.0-
lansat n 1987, 3.0- lansat n 1990 i cele care au urmat-o 3.1 i 3.11), au fost lansate de
Microsoft ca interfee grafice(GUI), care se utilizau peste sistemul de operare MS-DOS.
n 1993, apare Windows NT, prima versiune de sistem de operare Windows, care este un
sistem de operare pentru calculatoare pe 32 de bii, care suport aplicaiile scrise DOS i are
aceeai interfa cu Windows 3.1.
1995, sunt lansate versiunile Windows NT 4.0 i Windows 95. Windows 95 a reprezentat o
variant mbuntit a Windows 3.1. Windows NT 4.0 are aceeasi arhitectura interna ca i
versiunile Windows 3.x i furnizeaz aceeai interfa utilizator ca i Windows 95.
Schimbarea arhitectural major este c mai multe componente grafice care se executau n
mod utilizator, ca i parte a subsistemului Win32 (n versiunile 3.x), au fost mutate n
executivul Windows NT, care se execut n modul nucleu, ceea ce are ca avantaj creterea
vitezei de operare al acestor functii importante. Un potenial pericol este c aceste funcii
grafice se execut accesnd serviciile de nivel sczut ale sistemului, ceea ce poate afecta
fiabilitatea sistemului de operare.
Windows 98 a fost succesorul lui Windows 95. Versiunea 5.0 a NT a fost lansat n anul
2000 i fost redenumit Windows 2000(Win2K). Architecturile executivului i nucleului sunt
cam aceleai cu cele ale NT 4.0, dar au fost adugate cteva componente importante. n
Windows 2000 s-au adugat servicii i funcii ca suport al prelucrrii distribuite. Componenta
esential introdus n acest scop este Active Directory; acesta este un serviciu de directoare
distribuit (colecie de informaii despre obiecte care sunt n legtur unele cu altele ntr-o
anumit privin ), utilizat pentru: a organiza i simplifica accesul la resursele unei reele de
calculatoare; aplicarea securitii pentru a proteja obiectele din cadrul reelei fa de intruii
exteriori sau utilizatorii interni; distribuirea resurselor directorului la calculatoarele din reea;
replicarea directorului pentru a o face disponibil la mai muli utilizatori; separarea
directorului n mai multe buci care sunt stocate pe diferite calculatoare din reea.
De asemenea, Windows 2000 a mbuntait facilitile de plug-and-play i power-
management (importanta pentru laptop-uri). Sub Windows 2000 se face distincie ntre
Windows 2000 Server i Windows 2000 desktop. n esen, arhitecturile i serviciile nucleului
i executivului sunt aceleai, dar Server include anumite servicii necesare utilizrii serverelor
de retea, cum sunt cele de securitate.
Au existat patru versiuni ale sistemului Windows 2000: versiunea Profesional este destinat
calculatoarelor individuale; celelalte trei versiuni(Server, Advanced Server i DataCenter
Server) sunt destinate calculatoarelor server dintr-o reea. Windows 2000 DataCenter Server
este destinat serverelor multi-procesor i poate fi instalat pe sisteme care au pn la 32 de
procesoare i pn la 64 G de memorie.
Windows 95/98 i Windows ME(Milenium Edition) formeaz sub-familia sistemelor
Windows 9x, care este destinat calculatoarelor individuale, neconectate n reea. Windows
ME este o variant mbuntit a lui Windows 98, care la rndul lui perfecioneaz funciile
lui Windows 95. Windows 9x/ME difer de Windows NT/2k prin faptul c implementeaz
mai puine funcii Win32API. Windows NT/2K conine un model de securitate care nu este
ntlnit la sistemele Windows 9x/ME, deoarece Windows NT/2K este destinat calculatoarelor
care sunt conectate n reea. Facilitile de conectare coninute de Windows 9x/ME sunt o sub-
mulime a celor coninute de Windows NT/2K. O alt deosebire const n faptul c Windows
NT permite aplicaiilor s manipuleze anumii parametri, care influeneaz comportarea
administratorului memoriei virtuale.

169
Windows CE(Consumer Electronics) este destinat calculatoarelor personale care utilizeaz
anumite echipamente electronice casnice, cum ar fi televizoare; ele pot fi legate la reelele de
televiziune prin cablu. Setul su de funcii Win32API este cel mai redus, fiind orientat mai
ales ctre jocuri.
n 2001 a fost lansat o nou distribuie desktop - Windows XP, cu versiuni pe calculatoare pe
32 sau 64 de bii. Fiind succesorul lui Windows 2000, el poate fi utilizat ca sistem de operare
pentru calculatoarele legate n reea, dar poate nlocui i sistemele Windows 95/98/ME
destinate calculatoarelor individuale. Windows XP propune o interfa grafic nou, care se
bazeaz pe evoluiile componentelor hardware i urmrete utilizarea facil a interfeei
sistemului de ctre utilizatori. Modelul de securitate adoptat este superior tuturor versiunilor
de Windows anterioare. De asemenea, sistemul ofer faciliti superioare de lucru n reea.
Versiunea XP propune dou variante:
- Windows XP Net Server este utilizat de calculatoarele server dintr-o reea; aceast variant
ofer o serie de faciliti i mecanisme noi, printre care: lansarea simultan de mai multe
sesiuni de pe calculatoarele din reea, posibilitatea ca utilizatorul s poat comuta rapid printre
serviciile oferite de sistem.
- Windows XP Proffesional este destinat calculatoarelor individuale precum i calculatoarelor
client legate n reea.
n 2003, a aprut o nou versiune server - Windows Server 2003, care suport procesoare att
pe 32 de bii, ct i pe 64 de bii. n 2007, a fost lansat Windows Vista, care suporta
arhitecturile procesoarelor existente. S-au adus mbunatatiri ale modelului de securitate.
Windows Server 2008 este varianta coresp. care se instaleaza pe servere.
n 2007 apare Windows Vista. Securitatea a reprezentat obiectivul principal pentru acest nou
sistem de operare. Astfel, au fost incluse noi faciliti de securitate care fac mai dificil
expunerea sistemului de operare la atacurile informatice. Acestea avertizeaza utilizatorul
asupra oricrei activiti suspecte i cer confirmarea nainte de acordarea accesului la sistem.
Sistemul conine o aplicaie care va proteja computerul fat de ameninrile informatice care
pot determina publicarea de informaii confideniale n exterior, cu sau fr voia utilizatorului;
va trebui procurat separat o aplicaie antivirus, pentru c noul sistem de operare nu conine o
protecie i la aceste atacuri.
Exemplu. One Care", care este bazat pe tehnologie romaneasc, urmare a
achiziiei companiei romneti Gecad de ctre Microsoft n 2003.

Protecia stabilitii sistemului este mbuntita, astfel nct noul sistem de operare are
disponibile faciliti ce permit mbunatirea continuitii operrii prin restaurarea strii
sistemului la un punct anterior n timp, astfel nct dupa instalarea software-ului pentru o
component hardware sau a unei aplicaii care duce la blocarea sau instabilitatea sistemului se
poate reveni la starea iniial. Protectia informaiilor stocate a fcut un pas nainte, din dou
puncte de vedere: Vista este capabil s recreeze varianta anterioar pentru anumite fiiere i
directoare; software-ul pentru realizarea de copii de siguran a informaiilor stocate a fost
mbuntit, putnd realiza salvri periodice mai uor i cu mai multe faciliti.
Din punctul de vedere al performanelor, testele efectuate au artat c Windows Vista
ruleaz la fel sau mai lent comparativ cu Windows XP. Noile opiuni adugate din punct de
vedere al functionalitii sau al securitii necesit mai mult putere de calcul i memorie mai
mult.
n ceea ce privete comunicaia lucrurile au fost simplificate i mbuntaite. Este mult mai
simplu s conectezi un computer la reea, local sau Internet, indiferent de tipul conexiunii,

170
prin cablu sau fr fir i este mult mai sigur, Microsoft adugnd n Vista standarde mult mai
sigure pentru transferurile de informaie.
Aceast distribuie a introdus interfaa grafica 3D. Aceasta folosete la maximum noile plci
video i ofer o nou imagine asupra tradiionalului desktop, n 3 dimensiuni.
Au fost introduse aplicaii noi.
Exemplu. Sidebar", care, instalat pe desktop, furnizeaz informaii despre ora
exact, vreme sau poate afia ultimele tiri; Gallery" este o aplicaie de afiare i
gestionare a fotografiilor digitale.
Printre mbuntirile aduse de Microsoft n viitoarea versiune Windows 7 (lannsat n 2009)
se numr:
- un taskbar mbuntit;
- noi moduri de manipulare i organizare a ferestrelor;
- un nou Internet Explorer, ajuns acum la versiunea 8 ;
- o integrare mai bun cu serviciile online Windows Live;
- un management al perifericelor i al dispozitivelor conectabile la PC mult mai bine pus la
punct;
- o aplicaie vrjitor de conectare/creare a unei reele mult mai intuitiv;
- o performant mai bun comparativ cu Windows Vista;
- opiuni noi de optimizare a consumului bateriei la laptopuri;
- mai multe opiuni de personalizare;
- functii noi pentru sistemele dotate cu ecrane sensibile la atingere i capabiliti de
recunoatere a scrisului.
Caracteristici generale ale sistemelor Windows. Windows nlocuiete modul de lucru text
cu cel grafic i introduce, conceptual urmtoarele elemente:
- permite afiarea ntr-o mulime de ferestre organizate ierarhic;
- textele pot fi afiate ntr-o mare gam de fonturi scalabile;
- permite interceptarea de evenimente; un eveniment este interceptat atunci cnd se
apas o anumit tast sau un buton de la mouse (evenimentul este interceptat diferit, n funcie
de poziia cursorului n momentul evenimentului);
- ofer o serie de mecanisme de captare a unor informaii: butoane cu rspuns unic
sau ferestre de alegere a unuia sau mai multor rspunsuri posibile, dintr-o list predefinit;
- ofer posibilitatea de comunicare ntre programele utilizator i mediul Windows; n
legtur cu aceast ultim posibilitate, se introduce o nou faz n dezvoltarea de programe i
anume adugarea de resurse Windows n aplicaii. Astfel, dup link-editarea programului,
acesta este completat cu o serie de module, care permit programului s manevreze cu
elemente Windows: ferestre, butoane, evenimente etc.
Execuia simultan a mai multor lucrri. Sub Windows multi-tasking-ul este oarecum
aproximativ , n sensul urmtor: O aplicaie lansat poate fi suspendat temporar. Dup
suspendare, poate fi lansat o alta sau poate fi relansat una dintre cele suspendate. Singurele
aplicaii efectiv executabile n paralel sunt cele oferite de DOS, cum ar fi de exemplu listarea
la imprimant n paralel cu execuia altor programe i supravegherea ceasului sistem n
vederea lansrii n execuie a unei lucrri la o or fixat.
Odat cu versiunile Windows 95/98, a aprut un mod mai uor de a comuta ntre programele
lansate, i anume bara de aplicaii. Cnd lansai un program, Windows adaug un buton
pentru acel program la bara de aplicaii. Atunci cnd lansai mai multe programe, Windows
rearanjeaz automat butoanele n aa fel nct s putei vedea tot timpul acele butoane.
Butonul asociat programului activ are o luminozitate deosebit fa de celelalte programe de
pe bara de aplicaii.

171
Schimbul de date ntre aplicaii. Windows gestioneaz o aplicaie numit ClipBoard. Prin
intermediul ei, utilizatorul poate depozita temporar, din orice aplicaie, informaii n zona
rezervat ClipBoard, care pot fi utilizate de ctre oricare alt aplicaie.
Interfaa grafic(GUI-Grafics User Interface). Comunicarea ntre utilizator i sistem se
poate face prin intermediul tastaturii sau a mouse-ului. Prin intermediul tastaturii, se poate
selecta o tast sau o combinaie de taste, corespunztoare unei anumite aciuni iar prin
intermediul mouse-ului se pot selecta unul sau mai multe butone, din anumite entiti
grafice, pe care le vom descrie pe scurt n cele ce urmeaz. Elementul esenial de afiare n
aceast interfa este fereastra, care reprezint o poriune dreptunghiular afiat ntr-o zon a
ecranului, destinat comunicrii dintre utilizator i sistem. Sub Windows, orice fereastr
conine cteva elemente comune, i anume:
Bara de titlu (Caption) din partea cea mai de sus a ferestrei afieaz numele aplicaiei.
Imediat sub bara de titlu este bara de meniuri (Menu Bar), care afieaz meniurile
disponibile ( opiunile specifice aplicaiei care ruleaz n momentul respectiv).
Bara de unelte (Toolbar) conine butoane i alte elemente care v permite s lansai
comenzi. Coninutul barei de unelte variaz de la fereastr la fereastr, depinznd de fereastr
sau aplicaie, dar poziia ei este este constant.
n fereastra dreptunghiular se afl icon-uri, mici imagini sau pictograme, fiecare
reprezentnd pri din sistemul de calcul i aplicaiile care controleaz sistemului.
Butoanele de minimzare (Minimize), de maximizare (Maximize) i de nchidere
(Close) apar n colul din dreapta-sus al ferestrei pe aceeai linie ca i bara de titlu. Butonul
de minimizare reduce fereastra la un buton pe bara de aplicaii, iar butonul de maximizare
mrete ferestra la dimensiunea ntregului ecran. Butonul de nchidere reprezint o modalitate
rapid de a nchide fereastra. Dup folosirea butonului de maximizare, acesta se transform n
butonul de restaurare (Restore button). Butonul de restaurare, permite aducerea ferestrei la
mrimea ei anterioar ( mai mic).
Marginile ( borders) sunt cele patru linii care definesc limitele unei ferestre.
Bara de informaii ( status bar) furnizeaz informaii. Pe msur ce se aleg opiuni din
meniu, se selecteaz obiecte din ferestre sau se lanseaz comenzi, aciunea este descris pe
bara de informaii.
Tab-ul de redimensionare (resize tab) ofer o suprafa mare care se poate aga cu
mouse-ul atunci cnd se dorete modificarea mrimii unei ferestre.
Atunci cnd o fereastr nu este suficient de mare pentru a afia tot coninutul ei, apare
butonul de derulare.Trgnd de glisor (butonul ptrat de pe bara de derulare) se mut
coninutul ascuns al ferestrei n partea vizibil a acesteia. De asemenea, se pot folosi sgeile
de la capetele barelor de derulare pentru a obine acelai rezultat.
Desktop(Biroul electronic Windows). Dup instalarea complet a sistemului apare pe
ecran imaginea similar unui birou. Acesta poate conine un ceas, un calculator de birou, un
loc de depozitare a fiierelor i dosarelor, o list complet a tuturor instrumentelor i dosarelor
etc. Bara de aplicaii conine butonul Start, care reprezint cheia ctre instrumentele,
accesoriile i caracteristicile Windows. Cnd se apas butonul Start, Windows afieaz o list
de opiuni ( numit pop-up) din care se poate face o alegere. Pentru fiecare aplicaie lansat,
pe bara de aplicaii apare un buton cu numele aplicaiei.
Organizarea sistemelor Windows. Structura sistemului este descris n figura 6.2.1.
Observm organizarea modular i pe niveluri a sistemului. Principalele niveluri sunt cel de
abstractizare a hardwarelui (HAL), nucleul i executivul. Toate aceste componente sunt
executate n mod protejat. Subsistemele se mpart n dou categorii: subsistemele de mediu,
care emuleaz diferite sisteme de operare i subsistemul de protecie(securitate).

172
Executivul Windows ofer o mulime de servicii, pe care le poate folosi oricare subsistem de
mediu: administrarea obiectelor, administrarea memoriei, administrarea proceselor,
administrarea I/O, lucrul cu apeluri de proceduri locale, monitorizarea securitii, mecanismul
plug-and-play i autoncrcarea sistemului.

Subsistemul de Aplicaii Aplicaii Aplicaii Aplicaii


securitate W in16 W in32 M S-DOS POSIX

W in32API M od utilizator

Administratorul M onitorizarea Administratorul


de obiecte securitii Plug and Play

Executivul

Administratorul Administratorul Administratorul


I/O proceselor memoriei

Nucleul

Nivelul de abstractizare al hardware(H AL)

Hardware

Figura 6.2.1. Structura sistemului Windows


Interfaa sistemului cu utilizatorul. Fiecare dintre sistemele de operare Windows import o
submulime a unei interfee unice, denumit Win32API. Aceast API (Application
Programming Interface) este cuprinztoare i dinamic. Diferitele versiuni Windows
implementeaz submulimi ale Win32API. Raiunea pentru care a fost creat o singur API,
este leagat de necesitatea portabilitii ntre diferite sisteme Windows. Mulimea de funcii
implementate de ctre Windows 95/98/ME include pe cele utilizate de ctre Windows CE.
Windows NT, Windows 2000 i Windows XP implementeaz o mulime de funcii care le
include pe cele implementate de ctre Windows 95/98/ME(vezi figura urm.). Nucleul lui
Win2K i subsistemele Win32 implementeaz toate funciile Win32API, fiind cel mai
complex dintre membrii familiei aprute pn la acea dat. Win2K folosete un model de
calcul bazat pe procese i fire de execuie i se sprijin pe conceptele proiectrii i programrii
orientate pe obiecte.

173
S ne reamintim...
Versiunile Windows 1.0, 2.0, 3.0, 3.1 au fost lansate de Microsoft ca interfee
grafice(GUI), care se utilizau peste sistemul de operare MS-DOS. Windows NT este
prima versiune de sistem de operare Windows, care este un sistem de operare pentru
calculatoare pe 32 de bii, care suport aplicaiile scrise DOS i are aceeai interfa
cu Windows 3.1. Windows 95 a reprezentat o variant mbuntit a Windows 3.1.
Windows NT 4.0 are aceeasi arhitectura interna ca i versiunile Windows 3.x i
furnizeaz aceeai interfa utilizator ca i Windows 95. Windows 98 a fost
succesorul lui Windows 95. Versiunea 5.0 a NT a fost lansat n anul 2000 i fost
redenumit Windows 2000(Win2K). Windows XP este succesorul lui Windows
2000; el poate fi utilizat ca sistem de operare pentru calculatoarele legate n reea,
dar poate nlocui i sistemele Windows 95/98/ME destinate calculatoarelor
individuale. n 2007 apare Windows Vista, oal crui biectiv principal a fost
securitatea. Windows 7este varianta mbuntit a Windows Vista.
Windows nlocuiete modul de lucru text cu cel grafic i permite execuia simultan
a mai multor lucrri.
Sistemele Windows sunt organizate pe niveluri. Principalele niveluri sunt cel de
abstractizare a hardwarelui (HAL), nucleul i executivul.

nlocuii zona punctat cu termenii corespunztori.


1. Schimbarea arhitectural major Windows NT este c mai multe .................
care se executau n mod .........., au fost mutate n .............
2. n Windows 2000 s-au adugat servicii i funcii ca suport al ...............
Componenta esential introdus n acest scop este
3. Versiunea XP propune varianta.......................destinat calculatoarelor ..........
dintr-o reea i .......................... destinat calculatoarelor ............. precum i
calculatoarelor ............... legate n reea.
4. n Windows Vista ................. a reprezentat obiectivul principal pentru acest
nou sistem de operare.
5. mbuntirile aduse de Microsoft n viitoarea versiune Windows 7
sunt:...............

M6.U2.4. Componente de nivel sczut ale sistemelor Windows


Nivelul de abstractizare a hardware. Unul dintre obiectivele Windows a fost portabilitatea
(sistemul sa funcioneze pe o clas ct mai mare de calculatoare, indiferent de productor).
Portabilitatea este asigurat de faptul c majoritatea componentelor sistemului sunt scrise n C
sau C++. De asemenea, tot codul care este dependent de un anumit procesor, se afl n
fiierele DLL(Dynamic Link Library), care se gsesc n componenta de abstractizare a
hardware ( HAL) a sistemului.
Un fiier DLL realizeaz maparea spaiului de adrese al procesului, astfel nct orice orice
funcie implementat de ctre DLL apare ca o component a procesului. HAL manipuleaz
direct componenta hardware a sistemului, astfel c restul sistemului Windows funcioneaz
independent de aceasta.
HAL reprezint cel mai sczut nivel al sistemului de operare, ce ascunde diferenele hardware
dintre diferitele clase de sisteme de calcul, ceea ce face din Windows un sistem de operare
portabil. HAL export o interfa virtual care este folosit de ctre nucleu, executiv i
driverele de unitate. Un avantaj al acestei abordri, este c este necesar numai o versiune a

174
fiecrui driver, care poate fi executat indiferent de platforma hardware, deci driverele nu
trebuie s mai fie adaptate de la un sistem la altul. Din motive de performan, driverele de
I/O i cele grafice pot accesa direct componenta hardware.
Nivelul nucleu. Deasupra HAL se afl nucleul i driverele de dispozitiv; el st la baza
executivului i a subsistenelor. n concepia Microsoft, obiectivul nucleului este s fac restul
sistemului de operare complet independent de hard (portabil). Nucleul continu de acolo de
unde se oprete HAL. Nucleul acceseaz hard-ul prin intermediul HAL i realizeaz
abstractizri de nivel mai nalt dect HAL.
Exemplu. HAL conine apeluri pentru asocierea procedurilor de tratare a
ntreruperilor cu ntreruperile. n schimb, nucleul realizeaz schimbarea de
context.

Nucleul realizeaz planificarea firelor de execuie; atunci cnd este momentul pentru a
verifica dac un fir de execuie nou se poate executa, nucleul alege firul de execuie i face
schimbarea de context necesar rulrii lui.
Exemplu. Situaii cnd nucleul verific dac un fir de execuie nou se poate
executa sunt: dup ce a expirat o cuant de timp sau dup terminarea unei
ntreruperi de I/O.

Nucleul sistemului este orientat pe obiecte. El execut o anumit sarcin, folosind o mulime
de obiecte ale sale, ale cror atribute conin date i ale cror metode execut activiti
specifice lui. Nucleul asigur suport pentru utilizarea a dou clase de obiecte de nivel scazut:
Obiecte de control i Obiecte dispecer.
Obiectele de control sunt acele obiecte care controleaza sistemul. Acestea sunt:
- apeluri de proceduri ntrziate (DPC-Deffered Procedure Call); un obiect DPC este folosit
pentru a separa partea care nu este critic de partea critic, din punct de vedere al timpului
dintr-o procedur de tratare a ntreruperii. n general, o procedur de tratare a ntreruperii
salveaz civa regitri hard volatili asociai cu dispozitivele de I/O care au generat
ntreruperea, astfel nct acetia s nu fie teri i reactiveaz echipamentul, dar las
majoritatea prelucrrilor pentru mai trziu.
Exemplu. Dup ce a fost apsat o tast, procedura de tratare a ntreruperilor
tastaturii citete codul tastei dintr-un registru i reactiveaz ntreruperea tastaturii,
dar nu are voie s prelucreze tasta imediat, dac o alt activitate, cu o prioritate
mai nalt trebuie executat.

De asemenea, DPC-urile sunt folositoare pentru expirarea contoarelor i alte activiti a cror
procesare efectiv nu trebuie s fie instantenee. Coada DPC este mecanismul prin care se
memoreaz ceea ce trebuie fcut mai trziu.
- apeluri asincrone de procedur(APC); sunt asemntoare DPC-urilor, cu excepia faptului c
ele se execut n contextul unui proces specific.
Exemplu Atunci cnd se prelucreaz apsarea unei taste, nu conteaz n ce
context va rula DPC-ul deoarece singurul lucru care se va intimpla este c codul
tastei va fi pus intr-un tampon. n schimb, dac ntreruperea necesit copierea
unui tampon din zona nucleu n zona utilizator, atunci procedura de copiere
trebuie s ruleze n contextul unui proces destinatar. Contextul destinatar este
necesar pentru ca tabela de pagini s conin ambele tampoane.
- obiectele ntrerupere, asociaz sursa ntreruperii cu o anumit clas de ntreruperi;

175
- obiecte de urmrire a tensiunii de alimentare, pentru a se apela automat o anumit rutin
cnd apare o cdere de tensiune;
- obiectul proces reprezint spaiul de adrese virtuale i informaiile de control necesare
execuiei firelor de control ale procesului respectiv;
- obiectul profil este utilizat pentru a msura cantitatea de timp necesar unui bloc de cod.
Obiecte ale dispecerului sunt:
- obiectele eveniment sunt folosite pentru a nregistra apariia evenimentelor i pentru a se
realiza sincronizarea lor cu anumite aciuni;
- obiectele de comutare sunt utilizate pentru comutatea sistemului din modul nucleu(protejat)
n cel utilizator i invers;
- obiectele semafor sunt folosite ca pori de intrare pentru a controla numrul firelor de
execuie care acceseaz anumite resurse; cele cu excludere mutual(mutex) sunt utilizate
numai n modul nucleu, pentru a se rezolva problema interblocrii;
- obiectele thread sunt entiti care sunt executate de ctre nucleu, care aparin unor clase
proces;
- obictele ceas sunt folosite pentru msurarea intervalelor de timp i pentru a semnala
depirile de timp(timeout), cnd timpul de efectuare a operaiilor este mai lung dect cel
ateptat i acestea trebuie s fie ntrerupte.
Manipularea ntreruperilor. Windows definete mai multe situaii de excepie software i
hardware, independente de arhitectura sistemului de calcul, cum ar fi: violarea drepturilor de
acces la memorie, mprire la zero, instruciune ilegal, depire a domeniului de valori
pentru o expresie, eroare la citirea unei pagini etc. Aceste situaii conduc la abandonarea
fluxului de control pe care procesorul l urmeaz n mod normal i sunt rezolvate prin
intermediul ntreruperilor.
Manipularea excepiilor se poate realiza n mod nucleu sau utilizator. Dispecerul situaiilor de
excepie creeaz o nregistrare care conine motivul acelei excepii i caut manipulatorul
excepiei respective, care poate prelucra acea nregistrare.
Tipul i numrul ntreruperilor depinde de tipul procesorului. Din motive de portabilitate,
dispecerul de ntreruperi realizeaz o coresponden ntre ntreruperile hardware i o mulime
standard. Fiecare ntrerupere are un numr de prioritate, n funcie de care se realizeaz
servirea. Nucleul folosete o tabel prin care se asociaz la fiecare nivel de ntrerupere o
anumit rutin de serviciu.
Exemplu Sub Windows XP exist exist 32 nivele de ntreruperi(IRQL-Interrupt
ReQuest Level); opt dintre ele sunt rezervate nucleului, iar celelalte 24 reprezint
ntreruperi hardware care se realizez prin intermediul HAL.

ntreruperi DPC. O procedur DPC (Defered Procedure Call) ndeplinete funcii de sistem
i este executat n mod supervizor. Atributul amnat (deffered) se refer la faptul c
execuia ei este amnat, pn cnd IRQL-ul ei coboar la un nivel destul de sczut. Acest
tip de procedur este utilizat de ctre nucleu, pentru procesarea evenimentelor de expirare a
ceasurilor de timp real i de ctre drivere n prelucrarea cererilor de I/O. DPC-urile sunt puse
n coad la nivelul 2, de ctre rutine care se execut la niveluri de prioritate superioare. Odat
cobort IRQL, DPC-urile din coad vor fi lansate n execuie, folosind resursele firului care se
afl n momentul curent n execuie, fr ca acesta s fie informat n vreun fel.
Sincronizarea proceselor la nivel sczut se realizeaz prin intermediul procedurilor
APC(Asynchronous Procedure Call), care sunt executate n contextul unui anumit fir. Aceste
proceduri sunt pstrate n liste asociate firelor de execuie, spre deosebire de procedurile DPC
care sunt pstrate ntr-o list unic de sistem i sunt lansate atunci cnd firul corespunztor se

176
afl n execuie. Procedurile APC sunt destinate situaiilor care necesit operare ntr-un
anumit spaiu de adrese.

Exemplu Copierea datelor transferate de ctre un fir care a iniiat o cerere de I/O
n/din bufferul unui controller.

Refacerea dup o cdere de tensiune. ntreruperea datorat unei pene de curent atenioneaz
sistemul de operare, atunci cnd se petrece un astfel de eveniment. Obiectul folosit pentru
notificarea cderii de tensiune furnizeaz informaiile necesare driverului de unitate de a apela
o rutin care este lansat n momentul n care exist din nou tensiune de alimentare i care va
reiniializa unitatea respectiv.
S ne reamintim...
HAL reprezint cel mai sczut nivel al sistemului de operare, ce ascunde diferenele
hardware dintre diferitele clase de sisteme de calcul, ceea ce face din Windows un
sistem de operare portabil. HAL export o interfa virtual care este folosit de
ctre nucleu, executiv i driverele de unitate.
Un fiier DLL realizeaz maparea spaiului de adrese al procesului, astfel nct orice
orice funcie implementat de ctre DLL apare ca o component a procesului. HAL
manipuleaz direct componenta hardware a sistemului, astfel c restul sistemului
Windows funcioneaz independent de aceasta.
Deasupra HAL se afl nucleul i driverele de dispozitiv; el st la baza executivului
i a subsistenelor. n concepia Microsoft, obiectivul nucleului este s fac restul
sistemului de operare complet independent de hard (portabil).
Windows definete mai multe situaii de excepie software i hardware,
independente de arhitectura sistemului de calcul. Manipularea excepiilor se poate
realiza n mod nucleu sau utilizator. Dispecerul situaiilor de excepie creeaz o
nregistrare care conine motivul acelei excepii i caut manipulatorul excepiei
respective, care poate prelucra acea nregistrare.

nlocuii zona punctat cu termenii corespunztori.


1. Tot codul care este dependent de un anumit procesor, se afl n ................,
care se gsesc n .................................... a sistemului.
2. Un fiier DLL realizeaz ........................, astfel nct orice orice funcie
implementat de ctre DLL apare ca o component a .......................
3. HAL reprezint ................. al sistemului de operare, ce ascunde ...............
hardware dintre diferitele clase de sisteme de calcul, ceea ce face din
Windows un sistem de operare ....................
4. Nucleul acceseaz hard-ul prin ..................... i realizeaz ........................ de
nivel mai nalt dect ................
5. Un obiect DPC este folosit pentru a separa .................., din punct de vedere
al ..............dintr-o procedur de tratare a ............................
6. DPC-urile sunt folositoare pentru ................... i alte activiti a cror
procesare ............. nu trebuie s fie ..................
7. O procedur DPC ndeplinete funcii ............... i este executat n ..............
Atributul amnat se refer la faptul c .............. ei este amnat, pn cnd
.............. coboar la un nivel destul de sczut.

177
M6.U2.5. Administrarea obiectelor
La nivel de executiv sunt utilizate o serie de clase de obiecte (director, semafor, eveniment,
proces sau thread, port, fiier). Atunci cnd un obiect este creat, managerul de obiecte aloc
un bloc de memorie virtual din spaiul de adrese al nucleului; reciproc, cnd un obiect este
dealocat, spatiul respectiv este eliberat.
Rolul administratorului de obiecte este de a superviza utilizarea obiectelor. Cnd un thread
dorete s foloseasc un obiect, el apeleaz metoda open, pentru a obine accesul la
manipulatorul acelui obiect, care este o interfa standard ctre toate tipurile de obiecte.
Deoarece administratorul de obiecte este singura entitate care poate genera un manipulator de
obiect, el face parte din modulul de securitate al sistemului.
Exemplu. Administratorul obiectelor verific dac un proces are drepturile de
acces la un anumit obiect, n momentul n care ncearc s deschid acel obiect.

Administratorul obiectelor poate urmri care dintre procese folosete un anumit obiect.
Fiecare antet(header) de obiect, conine un contor al numrului de procese care au accesat
obiectul respectiv. Acest contor este incrementat, respectiv decrementat, cnd un proces cere,
respectiv nu mai utilizeaz acel obiect. Dac obiectul respectiv este temporar, cnd valoarea
contorului a ajuns la 0, obiectul respectiv este ters din spaiul de nume.
Orice obiect are un nume; spaiul de nume al proceselor are un caracter global, deci obiectele
create de un proces pot fi partajate mpreun cu alte procese. Numele unui obiect poate fi
permanent sau temporar. Un nume permanent reprezint o entitate cu caracter permanent,
chiar dac nu este utilizat la un moment dat, cum este cazul unui driver de disc. Numele
temporare exist numai atta timp ct anumite procese pstreaz manipulatoare ctre aceste
obiecte.
Numele de obiecte sunt structurate la fel ca o structur de directoare arborescent.
Directoarelor le corespund obiectele director, care conin numele tuturor obiectelor din acel
director; n plus, acestea pot conine domenii de obiecte care sunt mulimi de obiecte. Astfel,
exist posibilitatea construciei ierarhice a unei structuri de obiecte.
Exemplu. Un domeniu de obiecte poate fi format din driverele de discuri. n
momentul cnd un disc este introdus n sistem, spaiul de nume al acestuia este
adugat celui deja existent.

Administratorul de obiecte creaz manipulatori de obiecte, care const din informaii de


control al accesului i un pointer la obiect.
Un proces poate obine un manipulator de obiecte prin crearea obiectului de ctre el nsui,
primirea unui duplicat al unui manipulator de la un alt obiect sau prin motenirea unui
manipulator de la un proces printe. Tabela de obiecte a procesului conine toate aceste
manipulatoare. O intrare n tabela de obiecte conine drepturile de acces i stabilete dac
manipulatorul poate fi motenit de ctre procesele fiu. Cnd un proces se termin, sistemul
nchide toate manipulatoarele de obiecte deschise de ctre acesta.
Cnd un utilizator se loghineaz la un sistem i trece de faza de autentificare, i este ataat un
obiect care conine o serie de atribute, printre care: identificatorul de securitate, grupurile din
care face parte, grupul primar, lista control a accesului. Aceste atribute determin care dintre
serviciile i obiectele sistemului pot fi folosite de ctre un utilizator dat.

178
Fiecare obiect este protejat de ctre o list de control a accesului, care conine identificatorii
de securitate i drepturile acordate fiecrui proces. Cnd un proces ncearc s deschid un
obiect, sistemul compar identificatorul lui de securitate, corespunztor utilizatorului cruia i
aparine procesul respectiv, cu lista de control a accesului la obiect, pentru a determina dac
accesul este permis.
S ne reamintim...
La nivel de executiv sunt utilizate o serie de clase de obiecte (director, semafor,
eveniment, proces sau thread, port, fiier). Atunci cnd un obiect este creat,
managerul de obiecte aloc un bloc de memorie virtual din spaiul de adrese al
nucleului; reciproc, cnd un obiect este dealocat, spatiul respectiv este eliberat.
Numele de obiecte sunt structurate la fel ca o structur de directoare arborescent.
Directoarelor le corespund obiectele director, care conin numele tuturor obiectelor
din acel director; n plus, acestea pot conine domenii de obiecte care sunt mulimi
de obiecte. Astfel, exist posibilitatea construciei ierarhice a unei structuri de
obiecte.

nlocuii zona punctat cu termenii corespunztori.


1. Cnd un thread dorete s foloseasc un obiect, el apeleaz metoda ............,
pentru a obine accesul la .................. acelui obiect, care este o .............. ctre
toate tipurile de ...........
2. Fiecare ................. de obiect, conine un ............. al numrului de ................
care au accesat obiectul respectiv.
3. Administratorul de obiecte creaz .................de obiecte, care const din
informaii de ............... al .................. i un ..................... la obiect.
4. Cnd un utilizator se loghineaz la un sistem i trece de faza de autentificare,
i este ataat un obiect care conine o serie de atribute, printre care:
........................ Aceste atribute determin care dintre ............... i ..............
sistemului pot fi folosite de ctre un ................. dat.
5. Fiecare obiect este protejat de ctre ...................., care conine identificatorii
de ................... i ...................acordate fiecrui proces.

M6.U2.5. Memoria virtual sub Windows


Vom discuta gestionarea memoriei pentru sistemele de calcul cu procesor pe 32 de bii; n
cazul celor pe 64 de bii, modalitatea de administrare este asemntoare. Fiecrui proces sub
Windows, i este acordat un spaiu de adrese virtuale de dimensiune fix (4 Go), care este
mult mai mare dect dimensiunea memoriei primare a unui calculator. Procesul nu folosete
tot spaiul de adrese virtuale, ci numai ceea ce i este necesar, de obicei mult mai puin din
ceea ce i este alocat.
O parte a spaiului de memorie virtual (de obicei 2 Go), este folosit pentru a permite firului
de execuie referenierea unor obiecte din spaiul de memorie primar, iar restul este folosit
pentru a referenia adrese folosite de ctre sistemul de operare (spaiu utilizat n mod
supervizor).
Dimensiunile spaiilor de adrese virtuale utilizate de proces, respectiv de nucleul SO difer de
la o variant la alta de sistem Windows. Chiar dac partea de adrese supervizor exist n
spaiul de adrese al procesului, memoria poate fi referit de un fir de execuie al procesului,
numai dac acesta se gsete n mod supervizor.

179
Sistemul de operare are nevoie de anumite mijloace pentru a determina cantitatea de spaiu de
adrese necesare procesului. Editorul de legturi construiete imaginea static a fiierului
executabil, care definete spaiul de adrese virtuale. Anumite componente alocate
dinamic(biblioteci ale sistemului), sunt adugate spaiului de adrese virtuale n faza de
execuie a procesului. Exist dou faze de adugare dinamic de adrese la spaiul de adrese
virtuale:
- rezervarea unei poriuni a spaiului de adrese virtuale, numit regiune;
- cererea unui bloc de de pagini, dintr-o regiune a spaiului de adrese.
Fiecare procesor are o anumit unitate de alocare, adic dimensiunea minim a blocului de
adrese care va fi rezervat. De obicei, aceasta este de 64 Ko. De asemenea fiecare procesor are
o anumit dimensiune a paginii, de obicei 4 sau 8 Ko. Memoria este cerut n buci formate
din pagini, deci poriunea cerut la un moment dat, este mult mai mic dect cea rezervat
anterior.
Un fir de execuie din cadrul unui proces poate, n mod dinamic s rezerve o regiune a
spaiului de adrese virtuale, fr a scrie nimic n fiierul de pagini din memoria secundar. De
asemenea, el poate elibera o regiune a spaiului de adrese virtuale rezervat anterior. A doua
faz este de a cere adrese, care anterior au fost rezervate, spaiu care este alocat n fiierul de
pagini. Dac firul de execuie al procesului, refereniaz memoria alocat, pagina care conine
adresa refereniat va fi ncrcat din fiierul de pagini n memoria primar.
Translatarea adreselor se face cu ajutorul unor componente hardware, pentru a detecta rapid
paginile de memorie virtual ale procesului care lipsesc din memoria intern i pentru a le
pune n coresponden ct mai rapid pagini fizice. O adres virtual este memorat pe 32 de
bii i este generat de ctre procesor.
Win2K folosete o schem de adresare structurat pe dou niveluri. Cei mai puin
semnificativi K1 bii din cadrul adresei, reprezint deplasamentul. Restul de bii se numete
numrul de pagin virtual i este separat n dou pri, denumite indexul tabelei de pagini
(K2 bii) i indicele directorului de pagini( K3 bii). Valorile lui K1, K2, K3 sunt specifice
fiecrui procesor n parte. Valorile cele mai utilizate sunt de 12 bii pentru K1, respectiv de
cte 10 bii pentru K2, K3.
Translatarea adreselor folosete aceste trei cmpuri astfel:
- Descriptorul de proces conine un pointer la nceputul directorului de pagini, care are 1024
de intrri, pentru procesul dat. Indicele din director, este un deplasament unde este localizat o
intrare n descriptorul de pagini (PDE- Page Descritor Entry). Fiecare proces poate avea mai
multe tabele de pagini. PDE refereniaz o anumit tabel de pagini ce va fi folosit pentru
aceast referin la memorie.
- Intrarea n tabelele de pagini (PTE Page Table Entry), care la rndul lor au cte 1024 de
intrri este gsit folosind indicele tabelei de pagini din adres, ca un index n tabela de
pagini. Dac pagina cutat este ncrcat n memoria intern n pagina fizic j, atunci PTE
puncteaz ctre pagina fizic. Dac ea nu este ncrcat, administratorul memoriei virtuale
trebuie s localizeze pagina n fiierul de pagini, s caute o pagin fizic, s o aloce procesului
i apoi s ncarce pagina virtual respectiv n pagina fizic.
- n final, deplasamentul este adugat adresei paginii fizice, pentru a obine adresa baitului
cutat din memoria primar.
Teoretic, directorul de pagini se poate memora n oricare dintre locaiile de memorie primar,
dar de obicei el se afl ntr-o locaie fix, specific fiecrui procesor, a crei adres este
salvat ntr-un registru. Coninutul acestui registru face parte din contextul firului de execuie

180
respectiv i atunci cnd acesta nu mai beneficiaz de serviciile CPU, coninutul registrului
este salvat.
Windows folosete tabele de pagini multiple, pentru a face distincie ntre diverse utilizri ale
spaiului de adrese. Cea mai evident difereniere este c anumte pagini fac parte din spaiul
utilizator, iar altele din spaiul supervizor.
Observaie. Prin plasarea nucleului ntr-o tabel de pagini separat, procese diferite au punct
de intrare(PTE) ctre nucleu. Fiecare PTE refereniaz un numr de pagin fizic, atunci cnd
pagina corespunztoare este ncrcat. De asemenea, exist o colecie de fanioane care descriu
modul cum pagina poate fi refereniat (pagina respectiv este valid sau nu, este rezervat
sau nu, dac coninutul ei a fost modificat din momentul ncrcrii etc.).
Windows folosete paginarea la cerere, ceea ce nseamn c paginile sunt ncrcate n
memoria primar cnd sunt cerute. n plus, PTE-urile nu sunt create pn cnd pagina
corespunztoare nu este ncrcat n memorie, n ideea c procesele nu trebuie s rezerve
spaii de memorie primar, pe care s nu le foloseasc. Din acest motiv, sistemul de operare
trebuie s pstreze alte structuri de date care s reliefeze operaiile de rezervare i de cerere de
alocare.
Descriptorul de adrese virtuale(VAD Virtual Address Descriptor) este creat atunci cnd un
proces face o rezervare de adrese de memorie virtual sau o cerere de astfel de spaiu. Cnd
un fir de execuie refereniaz pentru prima dat adrese din VAD, este creat PTE-ul i astfel
translatarea adreselor se desfoar normal.

S ne reamintim...
Fiecrui proces sub Windows, i este acordat un spaiu de adrese virtuale de
dimensiune fix (4 Go), care este mult mai mare dect dimensiunea memoriei
primare a unui calculator.
Dimensiunile spaiilor de adrese virtuale utilizate de proces, respectiv de nucleul
sistemului de operare difer de la o variant la alta de sistem Windows.
Translatarea adreselor se face cu ajutorul unor componente hardware, pentru a
detecta rapid paginile de memorie virtual ale procesului care lipsesc din memoria
intern i pentru a le pune n coresponden ct mai rapid pagini fizice. O adres
virtual este memorat pe 32 de bii i este generat de ctre procesor.

nlocuii zona punctat cu termenii corespunztori


1. Fiecare procesor are o anumit ................, adic dimensiunea minim a blocului
de adrese care va fi rezervat. De obicei, aceasta este de ............ De asemenea fiecare
procesor are o anumit .............. a paginii, de obicei ...........
2. Win2K folosete o schem de adresare structurat pe ............ niveluri.
3. Cei mai puin semnificativi ......... din cadrul ........, reprezint ............. Restul de
bii se numete ............ i este separat n dou pri, denumite ............. i ..........
4. Descriptorul de proces conine ......... la nceputul ............, care are ........ de
intrri, pentru procesul dat. ............, este un deplasament unde este localizat o
intrare n ......................
5. Intrarea n ................., care la rndul lor au cte .......... de intrri este gsit
folosind indicele ............... din adres, ca un index n tabela de pagini.
6. Deplasamentul este adugat adresei ............, pentru a obine ........... cutat din
memoria primar.

181
M6.U2.6. Administrarea proceselor sub Windows
Aceast component furnizeaz serviciile necesare pentru creare, tergere i utilizare a thread-
urilor i proceselor. Relaiile dintre procesele printe i cele fiu sunt rezolvate de ctre
subsistemele de mediu.
Exemplu. Cnd o aplicaie care este executat sub Win32 cere crearea unui
proces, se execut urmtorii pai:
- Se apeleaz o metod CreateProcess, prin care este transmis un mesaj
subsistemului Win32, care cere administratorului de procese s creeze acel
proces.
- Administratorul de procese cere administratorului de obiecte s creeze un obiect
proces i s returneze un manipulator de obiecte lui Win32.
- Win32 va apela din nou administratorul de procese, pentru a crea threadul
respectiv
- n final, Win32 returneaz manipulatorul ctre noul thread.

Caracteristicile cele mai importante ale proceselor sub Windows sunt:


- sunt implementate ca obiecte.
- un proces n execuie poate sa conin unul sau mai multe thread-uri.
- ambele au posibiliti de sincronizare.
Figura 6.2.2., ilustreaz modul n care un proces controleaz sau utilizeaz resursele.

Jeton de
acces

Adrese virtuale de descriptori

Obiectul
proces

Tabela de manipulatori Fisier


Manipulator 1

Manipulator 2 Thread

Manipulator 3
..

Figura 6.2.2. Modul n care un proces controleaz sau utilizeaz resursele.

Fiecrui proces i este asignat un jeton de acces, jetonul primar al procesului. Cnd un
utilizator se loghineaz pentru prima dat, Windows creaz un jeton de acces care include
identificatorul de securitate al utilizatorului. Fiecare proces care este creat sau executat n
contextul acestui utilizator, are o copie a acestui jeton de aces. Windows folosete jetonul
pentru a valida drepturile unui anumit proces, din clasa legat de utilizatorul respectiv, de a
accesa obiecte securizate sau de a executa anumite funcii cu caracter restrictiv pe obiectele

182
securizate. De asemenea, jetonul de acces controleaz dac procesul i poate schimba
propriile atribute; n acest caz, procesul nu are deschis un handler pentru a-i accesa jetonul.
Dac procesul ncearc s deschid un astfel de handler, sistemul de securitate determin
dac acest lucru este permis, adic procesul i poate schimba atributele proprii.
De asemenea, legat de procese exist o serie de blocuri ce definesc spaiul de adrese virtuale
asignat n mod curent unui anumit proces. Procesul nu poate modifica direct aceste structuri,
dar poate cere acest lucru administratorului memoriei virtuale, care poate furniza un serviciu
de alocare a memoriei pentru procese. Procesele includ un obiect tabel (figura 6.22.), cu
manipulatori pentru alte procese (thread-uri) vizibile acestui proces. n plus, procesele au
acces la un obiect fiier i la unul seciune , care definesc o seciune a memoriei partajate.
Obiectele proces si thread. Windows utilizeaz dou tipuri de obiecte legate de procese:
procese i thread-uri. Procesul este o entitate care corespunde unui job al unui utilizator sau
unei aplicaii ce deine anumite resurse, cum ar fi memorie si fiiere deschise. Thread-ul este
o component a procesului ce are un singur fir de control, care poate fi ntrerupt, astfel nct
procesorul poate comuta la alt thread. Fiecare proces Windows este reprezentat ca un obiect, a
crui structur general este artat n figura 6.2.2; de asemenea, el este definit printr-un
numr de atribute i ncapsuleaz un numr de aciuni sau servicii, pe care le poate executa.
Un proces va executa un serviciu cnd apeleaz o mulime de metode ale interfeei. Cnd
Windows creazun proces nou, el folosete un ablon pentru a genera o nou instan obiect.
La momentul crearii, sunt asignate valori ale atributelor. Atributele unui obiect proces sunt:
- Identificatorul procesului. O valoare unic prin care sistemul de operare identific
procesul.
- Descriptorul de securitate. Descrie cine a creat un obiect, cine i cum poate accesa
obiectul respectiv.
- Baza de prioritate. O valoare pe baza creia se calculeaz prioritatea procesului sau
a firului de execuie.
- Limitele cotelor. Valorile maxime alocate ale dimensiunilor memoriei virtuale,
memoriei fizice i timpului procesor.
- Timp de execuie. Timpul total n care toate thread-urile procesului au fost executate.
- Contoare ale I/O. Variabilele care nregistreaz numrul i tipul operaiilor de I / O,
efectuate de firele procesului.
- Contoare ale memoriei virtuale. Variabile care nregistreaz numrul i tipurile de
operaii pe care firele procesului le-au efectuat cu memoria virtual.
- Porturi pentru excepii/depanare. Canale de comunicare ntre procese, la care
managerul proceselor trimite un mesaj, atunci cnd unul dintre firele procesului
genereaz o excepie. n mod normal acestea sunt conectate la subsistemul de mediu,
respectiv la cel de depanare.
- Starea de ieire. Motivul terminrii procesui.
Serviciile executate de un proces sunt: Crearea procesului, Deschiderea procesului, Cererea
de informaii despre proces; Setarea de date ale procesului; Terminarea procesului.
Un proces Windows trebuie sa conin cel puin un thread. Acel thread, poate crea alte thread-
uri. ntr-un sistem multiprocessor, mai multe thread-uri ale aceluiai proces pot fi executate n
paralel. Anumite atribute ale threadului le nlocuiesc pe cele ale procesului. n acele cazuri,
valoarea atributului thread-ului este dedus (mostenit) din cea a procesului. Unul dintre
atributele unui obiect thread este contextul. Aceast informaie permite thread-urilor s poat
fi suspendate i apoi reluate. Prin modificarea contextului unui thread, atunci cnd el este
suspendat, se poate modifica comportamentul acestuia.

183
Planificarea firelor de execuie. Fiecare thread se poate afla ntr-una dintre strile: ready,
standby, run, wait, transition i terminate. Tranzitiile posibile efectuate de thread-uri sunt:
- readystandby; firul de execuie de prioritate cea mai nalt trece n starea standby, adic
el va fi urmtorul care va primi serviciile unui procesor. n sistemele multi-procesor, pot
exista mai multe astfel de thread-uri, corespunztor numrului de procesoare ale sistemului.
Dac prioritatea procesului aflat n starea standby este suficient de nalt, thread-ul aflat n
execuie pe acel procesor poate fi fortat de ctre cel aflat n standby. n caz contrar, thread-ul
aflat n standby ateapt pna cnd thread-ul aflat n execuie se blocheaz sau i epuizeaz
cuanta de timp.
- standbyrun; cnd nucleul execut o schimbare de context, thread-ul aflat n standby
intr n starea run. Un thread aflat n starea run, va sta n aceast stare pn cnd se ntmpl
una dintre urmtoarele situaii:
- va fi forat de ctre un alt fir de execuie de o prioritate mai nalt;
- cuanta lui de timp s-a epuizat;
- se termin execuia lui;
- va cere execuia unui apel de sistem (se blocheaza).
- run wait; un thread intr n starea Wait ntr-una dintre urmtoarele situaii:
(1) este blocat pe un eveniment;
Exemplu. Efectuarea unei operaii de I/O.

(2) ateapt n mod voluntar, n scopuri de sincronizare;


(3) un subsistem de mediu direcionez suspendarea thread-ului
- wait ready ; Cnd condiia pentru care a intrat n starea de ateptare este satisfacut,
thread-ul trece n starea Ready, dac toate resursele de care are nevoie sunt disponibile.
- waittransition; Un thread intr n starea Transition cnd, dup o ateptare nu are
disponibile toate resursele cerute.
Exemplu. Stiva thread-ului nu mai are suficient spaiu de memorie.

- transitionready (acum sunt disponibile resursele necesare pentru a fi executat n


continuare )
- run ready (forarea CPU )
- runterminate (terminarea execuiei );thread-ul poate fi terminat de ctre el nsui, de
ctre un alt thread sau cnd se termin procesul printe. El poate fi ters definitiv din sistem
sau poate fi reinut de ctre executiv pentru o reiniializare viitoare.
Pentru a determina ordinea de execuie, dispecerul sistemului folosete o schem de prioritate
pe 32 de niveluri. Prioritile sunt mprite n dou clase:
- clasa aplicaiilor n timp real - firele de execuie care au o prioritate de clas cea mai nalt,
cu numere cuprinse ntre 16 i 31,
- thread-uri de clas variabil, au numere de clas cuprinse ntre 0 i 15.
Dispecerul folosete cte o coad pentru fiecare nivel de prioritate i atunci cnd se pune
problema selectrii unui nou fir de execuie, acesta va traversa sistemul de cozi, de la cea de
nivel cel mai nalt, ctre cea de nivel cel mai sczut, pn cnd gsete un thread gata de
execuie (aflat n starea standby). Dac nu este gsit nici un astfel de thread, dipecerul va
executa un thread special, care l va trece n stare de ateptare(idle). De asemenea, cnd un
thread gata de execuie are o preferin pentru un anumit procesor, altul dect cel liber,

184
dispecerul va trece la un alt thread, aflat n starea standby. Cnd un thread n execuie, din
clasa celor de prioritate variabil i termin cuanta de timp alocat lui, prioritatea lui este
sczut, pn la nivelul imediat, al thread-ului aflat n ateptare cu nivelul cu prioritatea cea
mai slab.
Observaii.
1. Aceast metod, realizeaz o servire echitabil a proceselor care utilizeaz mult
CPU(orientate spre calcule). De asemenea, cnd un astfel de thread intr n starea wait,
dispecerul recalculeaz prioritatea acestuia n funcie de tipul operaiei de I/O efectuate. Prin
acest mod de lucru, n cazul thread-urilor interactive, se urmrete s se obin un timp de
rspuns rezonabil.
2. Planificarea poate s apar atunci cnd un thread intr ntr-una dintre strile ready, wait
sau finish sau cnd trebuie schimbat prioritatea sau preferina ctre un anumit procesor ale
acestuia.
3. Prin modul de organizare a planificrii, se urmrete servirea prioritar a aplicaiilor n timp
real. Deoarece acestea au prioriti mai nalte, atunci cnd un astfel de thread este n starea
ready i toate procesoarele sunt ocupate, unul dintre threadurile de clas variabil va fi forat
s elibereze procesorul, care va servi aplicaia n timp real.
Facilitatea de apel de procedur local(LPC-Local Procedure Call). Implementarea
sistemului Windows folosete modelul client-server pentru implementarea subsistemelor de
mediu. Modelul client-server este utilizat pentru a se implementa o multitudine de servicii pe
care se spijin subsistemele de mediu, printre care: administrarea securitii, utilizarea
spooling-ului pentru tiprire, servicii de web, sistemul de fiiere partajate n reea etc.
LPC este utilizat de sistemul de operare pentru:
- a transmite mesaje ntre un proces client i un proces server, n interiorul aceluiai
calculator.
- pentru comunicaia ntre subsistemele Windows.
Observaie. LPC este similar RPC (folosit pentru comunicaia ntr-o reea), dar LPC este
optimizat pentru a fi folosit n interiorul unui sistem.
Procesul server face public un obiect port de conectare care este vizibil global. Cnd un
proces client dorete servicii de la un subsistem, el deschide un manipulator la acel port i
transmite o cerere de conexiune la acel port. Serverul creeaz un canal i returneaz un
manipulator pentru acel canal: canalul const dintr-o pereche de porturi de comunicaie, unul
pentru mesaje de la client la server iar cellalt de la server la client.
Cnd este creat un canal LPC, trebuie s fie specificat una dintre urmtoarele tehnici:
- Transmiterea mesajelor de dimensiune mic se realizeaz prin punerea mesajelor ntr-o
coad, de unde sunt luate de ctre procesele crora le sunt destinate.
- Pentru transmiterea mesajelor de dimensiune mare, se utilizeaz o zon de memorie
partajat; n acest caz, este creat un obiect prin care sunt gestionai pointerii ctre mesaje i
dimensiunea lor. Aceste informaii sunt utilizate de procesele care primesc mesajele
respective s le preia direct.
- Utilizarea unei API prin care se poate citi/scrie direct din spaiul de adrese al unui proces.
Subsistemele de mediu reprezint procese executate n mod utilizator, care permit execuia
unor aplicaii dezvoltate sub alte sisteme de operare(MS-DOS, Windows pe 16 bii i 32 de
bii). Fiecare subsistem furnizeaz o interfa utilizatorului, prin care se pot lansa aplicaii
realizate n cadrul sistemelor de operare respective.
Windows folosete subsistemul Win32 ca mediu principal de operare pentru lansarea
proceselor. Cnd este executat o aplicaie, Win32 apeleaz administratorul memoriei virtuale

185
pentru a ncrca fiierul executabil, corespunztor aplicaiei respective. Administratorul
memoriei returneaz un mesaj ctre Win32, prin care specific tipul aplicaiei, pe baza cruia
este ales un anumit subsistem de mediu sub care se va executa procesul respectiv.
Subsistemele de mediu folosesc facilitatea LPC pentru a obine serviciile nucleului pentru
aplicaiile lansate. Astfel, se asigur robusteea sistemului, deoarece parametrii transmii
printr-un apel de sistem sunt verificai, nainte de a fi cerut o anumit rutin. De asemenea, o
aplicaie executat sub un anumit mediu, nu poate apela o rutin corespunztoare altui mediu.

S ne reamintim...
Administrarea proceselor sub Windows furnizeaz serviciile necesare pentru creare,
tergere i utilizare a thread-urilor i proceselor. Relaiile dintre procesele printe i
cele fiu sunt rezolvate de ctre subsistemele de mediu.
Fiecrui proces i este asignat un jeton de acces, jetonul primar al procesului. Cnd
un utilizator se loghineaz pentru prima dat, Windows creaz un jeton de acces
care include identificatorul de securitate al utilizatorului.
Windows utilizeaz dou tipuri de obiecte legate de procese: procese i thread-uri.
Procesul este o entitate care corespunde unui job al unui utilizator sau unei aplicaii
ce deine anumite resurse, cum ar fi memorie si fiiere deschise. Thread-ul este o
component a procesului ce are un singur fir de control, care poate fi ntrerupt, astfel
nct procesorul poate comuta la alt thread.
Fiecare thread se poate afla ntr-una dintre strile: ready, standby, run, wait,
transition i terminate.
LPC este utilizat de sistemul de operare pentru a transmite mesaje ntre un proces
client i un proces server i pentru comunicaia ntre subsistemele Windows.

nlocuii zona punctat cu termenii corespunztori


1. Windows folosete jetonul pentru a valida ............ unui anumit ............, din
clasa legat de ............., de a accesa ................ sau de a executa anumite
funcii cu ................ pe obiectele ................
2. Jetonul de acces ............ dac procesul i poate schimba propriile
..................
3. Firul de execuie de prioritate cea mai nalt trece n starea ..............., adic
el va fi ................care va primi serviciile unui ............
4. Cnd nucleul execut o ............., thread-ul aflat n ........... intr n starea
............
5. Un thread aflat n starea run, va sta n aceast stare pn cnd se ntmpl
una dintre urmtoarele situaii:........................
6. Un thread intr n starea Wait ntr-una dintre urmtoarele situaii..................
7. Pentru a determina ordinea de ..............., .............sistemului folosete o
schem de .............. pe .............. Prioritile sunt mprite n dou
clase:..............
8. Cnd un thread n execuie, din clasa celor de prioritate .......... i termin
.......... alocat lui, prioritatea lui este ..........., pn la nivelul imediat, al
thread-ului aflat n ...........cu nivelul cu prioritatea ................
9. LPC este utilizat de sistemul de operare pentru:....................

186
M6.U2.7. Sistemul de fiiere sub Windows
Sistemul de fiiere sub MS-DOS se bazeaz pe tabela FAT. n cazul sistemului de fiiere cu
FAT pe 16 bii exist o serie de dezavantaje: fragmentarea intern, limitarea dimensiunii la 2
Go etc. Odat cu apariia tabelei FAT pe 32 de bii, s-au rezolvat o parte din aceste probleme.
Odat cu Windows XP, apare sistemul de fiiere NTFS(New Technology File System); acesta
ofer o serie de faciliti:
- refacerea volumelor dupa caderea sistemului sau defectarea discurilor;
- securitatea datelor;
- fiiere de orice dimensiune;
- fluxuri de date multiple;
- compresia fiierelor etc.
Windows ofer suport i pentru alte sisteme de fiiere, cum este de exemplu FAT.
Entitatea NTFS este volumul; un volum poate ocupa unul sau mai multe discuri logice. Sub
NTFS, unitatea de alocare este clusterul; acesta este format dintr-un numr de sectoare (a
crui dimensiune este o putere a lui 2 i de obicei este 512 octei). Dimensiunea clusterului
este fixat la formatarea discului; implicit este:
- dimensiunea unui sector de disc, dac dimensiunea volumului este mai mic de 512 Mo;
- 1 Ko pentru volume de pn la 1 Go;
- 2 Ko pentru volume de pn la 2 Go;
- 4 Ko pentru volume mai mari.
Clusterele alocate unui fiier nu trebuie s fie contigue; astfel, un fiier se poate fragmenta pe
un disc. Un cluster poate avea cel mult 216 octei. n mod curent, dimensiunea maxim
permis a unui fiier sub NTFS este de 232 clustere ( 248 octei). Deoarece dimensiunea
clusterului sub NTFS este mult mai mic dect cea sub FAT, fragmentarea intern a discului
este mult mai mic.
Pentru adresare pe disc, NTFS folosete numrul logic de cluster (LCN-Logical Cluster
Number). Utilizarea clusterelor NTFS, face alocarea spatiului pentru fiiere independent de
dimensiunea sectorului. Aceasta permite NTFS:
- s suporte uor discuri nonstandard, care nu au dimensiunea sectorului de 512 octei;
- s suporte eficient discuri i fiiere de dimensiune mare, folosind clustere mari
Observaie. Eficiena alocrii este datorat numrului mai mic de clustere i implicit a
intrrilor n tabele.
Sistemul Windows definete fiierul ca un flux de octei, care nu poate fi accesat dect
secvenial. Pentru fiecare instan a unui fiier deschis, exist un pointer memorat pe 64 de
bii ctre urmtorul octet care urmeaz s fie accesat. Cnd fiierul este deschis, pointerul este
setat cu 0 i dup fiecare operaie de scriere/citire a k octei, valoarea pointerului este mrit
cu k. Ca i celelalte resurse gestionate de sistemul Windows i gestionarea fiierelor este
orientat pe obiecte. Un fiier este un obiect care are mai multe atribute. Fiecare atribut este
un flux de octei, care poate fi creat, ters, citit sau scris. Atributele standard (numele
fiierului, data creerii, descriptorul de securitate etc.) sunt comune tuturor fiierelor, pe cnd
anumite atribute particulare sunt specifice unei anumite clase de fiiere (director, de
exemplu). Fiecare fiier sub NTFS este descris prin una sau mai multe nregistrri dintr-un
tablou, memorat ntr-un fiier special, numit tabela MFT(Master File Table), prezentat n
figura 6.2.3.

187
Zona de Tabela MFT Sistemul de Zona de
bootare fiiere fiiere
Figura 6.2.3. Structura tabelei MFT
Organizarea informaiilor pe un volum NTFS. Fiecare element de pe un volum este fiier
i fiecare fiier const dintr-o colecie de atribute (inclusiv datele coninute n fiier sunt
tratate ca un atribut). Din figura 6.2.3, observm c un volum NTFS este format din 4
regiuni(zone).
Primele sectoare ale volumului sunt ocupate de catre partiia de boot (pna la 16 sectoare
lungime); aceasta conine:
- informaii despre organizarea volumului i structuri ale sistemului de fiiere;
- o secvende cod care, ncarcat n memorie i lansat n execuie va ncarca sistemul
de operare (fiierul de boot-are);
- informatii de startup.
Tabela MFT conine informaii despre toate fiierele i foldere-le (directoare) de pe acest
volum NTFS. n esen, MFT este o list a tuturor fiierelor i atributelor lor de pe acest
volum NTFS, organizat ca o mulime de linii, ntr-o structur de baz de date relaional.
Dimensiunea nregistrrii este cuprins ntre 1 Ko i 4 Ko, fiind fixat la crearea sistemului.
Atributele de dimensiune mic sunt memorate chiar n tabel(atribute rezidente), iar celelalte
sunt pstrate pe disc i tabela MFT va conine un pointer ctre ele. Fiecare nregistrare din
MFT const dintr-o mulime de atribute care servete la definirea caracteristicilor fiierului
(sau folder-ului) respectiv i a coninutului su. Aceste atribute sunt:
- Informaii standard: atribute de acces (read-only, read/write, etc.); marca timpului (data
creerii, data ultimei modificari a fisierului) ; contorul de legaturi la fiier.
- Lista de atribute: este utilizat pentru localizarea atributelor fiierului.
- Numele fisierului.
- Descriptorul de securitate: Specific proprietarul fiierului i cine are acces la el.
- Date: Coninutul fiierului.
- Indexul radcinii: folosit pentru a implementa foldere.
- Informaii despre volum: versiunea i numele volumului.
- Harta de bii: Indic inregistrrile utilizate.
Dup MFT este o regiune (de lungime 1 Mb), ce conine sistemul de fiiere. Printre fiierele
din aceast regiune sunt:
MFT2: este folosit pentru a garanta accesul la MFT n cazul unei defeciuni aprute pe un
singur sector.
Fiierul de jurnalizare (Log file): Conine o list a tranzaciilor efectuate; este folosit
pentru refacerea NTFS.
Harta de bii a clusterelor: Indic ce clustere sunt folosite.
Tabela de definire a atributelor:definete tipurile de atribute permise pe acest volum;
indica daca ele pot fi indexate i dac pot fi refcute n timpul unei operaii de refacere a
sistemului.
Fiierul clusterelor defecte: conine adresele de pe disc a zonelor care nu pot fi utilizate.
Fiecare fiier dintr-un volum NTFS are un identificator unic, numit referin la fiier i este
reprezentat pe 64 de bii, dintre care 48 sunt alocai numrului de fiier, iar ceilali 16
conin numrul de secven. Numrul de fiier este numrul nregistrrii corespunztoare
fiierului din tabela MFT. Numrul de secven este incrementat de fiecare dat cnd o intrare
din MFT este reutilizat. Acest numr permite NTFS s execute anumite verificri, cum ar fi,

188
de exemplu referenierea unei intrri n tabel, alocat unui alt fiier, dup ce a fost utilizat
pentru un fiier care a fost ters.
Ca i celelalte sisteme de fiiere, spaiul de nume NTFS este organizat ierarhic. Structura
arborescent utilizat este arborele B+. Acesta are proprietatea c lungimea oricrui drum de
la rdcin la oricare dintre frunze are aceeai lungime. Arborele B+ este utilizat deoarece
elimin costurile necesare reorganizrii structurii de fiiere.
Rdcina index a directorului, aflat la cel mai nalt nivel al arborelui, conine pointeri ctre
celelalte elemente ale structurii. Fiecare intrare din director, conine numele i o serie de
informaii despre fiier(timpul ultimei prelucrri, dimensiunea fiierului etc.), copiate din
tabela MFT. Astfel, se poate lista coninutul oricrui director, fr a se consulta tabela MFT,
care, datorit complexitii acesteia, este o operaie costisitoare.
S ne reamintim...
Odat cu Windows XP, apare sistemul de fiiere NTFS care ofer o serie de
faciliti: refacerea volumelor dupa caderea sistemului sau defectarea discurilor;
securitatea datelor; fiiere de orice dimensiune; fluxuri de date multiple; compresia
fiierelor etc.
Entitatea NTFS este volumul; un volum poate ocupa unul sau mai multe discuri
logice. Sub NTFS, unitatea de alocare este clusterul; acesta este format dintr-un
numr de sectoare, a crui dimensiune este o putere a lui 2. Dimensiunea clusterului
este fixat la formatarea discului
Sistemul Windows definete fiierul ca un flux de octei, care nu poate fi accesat
dect secvenial. Pentru fiecare instan a unui fiier deschis, exist un pointer
memorat pe 64 de bii ctre urmtorul octet care urmeaz s fie accesat. Cnd
fiierul este deschis, pointerul este setat cu 0 i dup fiecare operaie de scriere/citire
a k octei, valoarea pointerului este mrit cu k.
Fiecare fiier sub NTFS este descris prin una sau mai multe nregistrri dintr-un
tablou, memorat ntr-un fiier special, numit tabela MFT(Master File Table). Tabela
MFT conine informaii despre toate fiierele i foldere-le (directoare) de pe acest
volum NTFS.

nlocuii zona punctat cu termenii corespunztori


1. Dimensiunea clusterului este fixat la formatarea discului; implicit
este:..................., dac dimensiunea volumului este mai mic de 512 Mo;
............ pentru volume de pn la 1 Go; ............ pentru volume de pn la 2
Go; ....... ...pentru volume mai mari.
2. Un cluster poate avea cel mult ......... octei. n mod curent, dimensiunea
maxim permis a unui fiier sub NTFS este de ......clustere (
......................octei).
3. Fiecare fiier sub ............ este descris prin una sau mai multe ........... dintr-un
........, memorat ntr-un fiier special, numit ................
4. MFT2 este folosit pentru a garanta .......... la MFT n cazul unei ...........
aprute pe un singur ...............
5. Fiecare fiier dintr-un volum NTFS are un ............., numit ............... la fiier
i este reprezentat pe ........, dintre care ........... sunt alocai ..............., iar
ceilali ........ conin ..................

189
M6.U2.9. Test de evaluare a cunotinelor
Marcai varianta corect.
1. Raiunea pentru care a fost creat o singur API este:
a) legat de necesitatea c) legat de necesitatea
compatibilitii cu aplicaiile compatibilitii cu motoarele de
scrise sub sistemele de operare cutare pe Internet.
care respect standardele
POSIX.
b) legat de necesitatea d) legat de posibilitatea
portabilitii ntre diferite conectrii sistemelor de calcul, la
sisteme Windows. reelele de televiziune prin cablu.
2. Care dintre niveluri realizeaz interfaa ntre sistemul Windows i componenta
hardware a calculatorului:
a) Nucleu c) Executiv.
b) HAL. d) Subsistemul de mediu.
3. Planificarea firelor de execuie este sarcina:
a) Nucleului. c) Executivului.
b) HAL. d) Subsistemului de mediu.
4. Codul componentelor sistemului Windows, care este dependent de un anumit
procesor, se gsete n:
a) Fiiere DLL. c) Administratorul Plug and
Play.
b) Nucleu. d) Administratorul I/O.
5. Care dintre componentele Windows face restul sistemului de operare complet
independent de hard:
a) Nucleul. c) Administratorul I/O.
b) Executivul d) Administratorul securitii
sistemului.
6. Firele de execuie care au prioritatea cea mai nalt sunt:
a) Clasa aplicaiilor n timp c) Clasa aplicaiilor aflate n
real. starea standby.
b) Clasa aplicaiilor aflate n d) Clasa aplicaiilor aflate n
starea Run. starea Ready.
7. Servirea echitabil a threadurilor de clas variabil presupune:
a) Scderea prioritii c)Creterea prioritii threadurilor
threadurilor din aceast clas, din aceast clas, atunci cnd i
atunci cnd i epuizeaz epuizeaz cuanta de timp, sub
cuanta de timp, sub nivelul nivelul tuturor firelor de execuie
tuturor firelor de execuie aflate n ateptare.
aflate n ateptare.
b) Trecerea threadului d) Trecerea threadului respectiv n
respectiv n starea standby. starea transition.
8. Care dintre proceduri ndeplinesc funcii de sistem i sunt executate n mod
supervizor:
a) DPC. c) APC.
b) LPC d) MPC.

190
9. Care dintre proceduri sunt executate n contextul unui anumit fir de execuie,
pentru situaii n care firul respectiv trebuie s opereze ntr-un anumit spaiu de
adrese.
a) DPC. c) APC.
b) LPC d) MPC.
10. Care dintre proceduri sunt utilizate pentru a transmite mesaje, ntre un proces
client i un proces server:
a) DPC. c) APC.
b) LPC d) MPC.
11. Pentru obinerea serviciilor nucleului, subsistemele de mediu folosesc facilitatea:
a) DPC. c) APC.
b) LPC d) MPC.
12. Zonele de memorie nucleu utilizate de ctre un proces, au puncte de intrare
diferite, fa de zonele de memorie obinuite, localizate n:
a) PDE c) KDE.
b) PTE d) WTE.
13. Dimensiunea clusterului pentru volume mai mari de 2 Go este de:
a) 1 Ko c) 4 Ko
b) 2 Ko d) 8 Ko
14.Dimensiunea maxim permis a unui fiier sub NTFS este de:
a) 216 octei c) 248 octei
b) 2 octei
32
d) 264 octei

M6.U2.10. Rezumat.
Versiunile Windows 1.0, 2.0, 3.0, 3.1 au fost lansate de Microsoft ca interfee
grafice(GUI), care se utilizau peste sistemul de operare MS-DOS. Windows NT este
prima versiune de sistem de operare Windows, care este un sistem de operare pentru
calculatoare pe 32 de bii, care suport aplicaiile scrise DOS i are aceeai interfa
cu Windows 3.1. Windows 95 a reprezentat o variant mbuntit a Windows 3.1.
Windows NT 4.0 are aceeasi arhitectura interna ca i versiunile Windows 3.x i
furnizeaz aceeai interfa utilizator ca i Windows 95. Windows 98 a fost
succesorul lui Windows 95. Versiunea 5.0 a NT a fost lansat n anul 2000 i fost
redenumit Windows 2000(Win2K). Windows XP este succesorul lui Windows
2000; el poate fi utilizat ca sistem de operare pentru calculatoarele legate n reea,
dar poate nlocui i sistemele Windows 95/98/ME destinate calculatoarelor
individuale. n 2007 apare Windows Vista, oal crui biectiv principal a fost
securitatea. Windows 7este varianta mbuntit a Windows Vista.
Windows nlocuiete modul de lucru text cu cel grafic i permite execuia simultan
a mai multor lucrri.
Sistemele Windows sunt organizate pe niveluri. Principalele niveluri sunt cel de
abstractizare a hardwarelui (HAL), nucleul i executivul.
Administrarea proceselor sub Windows furnizeaz serviciile necesare pentru creare,
tergere i utilizare a thread-urilor i proceselor. Relaiile dintre procesele printe i
cele fiu sunt rezolvate de ctre subsistemele de mediu. Fiecrui proces i este asignat
un jeton de acces, jetonul primar al procesului. Cnd un utilizator se loghineaz
pentru prima dat, Windows creaz un jeton de acces care include identificatorul de

191
securitate al utilizatorului.
Windows utilizeaz dou tipuri de obiecte legate de procese: procese i thread-uri.
Procesul este o entitate care corespunde unui job al unui utilizator sau unei aplicaii
ce deine anumite resurse, cum ar fi memorie si fiiere deschise. Thread-ul este o
component a procesului ce are un singur fir de control, care poate fi ntrerupt, astfel
nct procesorul poate comuta la alt thread. Fiecare thread se poate afla ntr-una
dintre strile: ready, standby, run, wait, transition i terminate.
Odat cu Windows XP, apare sistemul de fiiere NTFS care ofer o serie de
faciliti: refacerea volumelor dupa caderea sistemului sau defectarea discurilor;
securitatea datelor; fiiere de orice dimensiune; fluxuri de date multiple; compresia
fiierelor etc. Entitatea NTFS este volumul; un volum poate ocupa unul sau mai
multe discuri logice. Sub NTFS, unitatea de alocare este clusterul; acesta este
format dintr-un numr de sectoare, a crui dimensiune este o putere a lui 2.
Dimensiunea clusterului este fixat la formatarea discului
Sistemul Windows definete fiierul ca un flux de octei, care nu poate fi accesat
dect secvenial. Pentru fiecare instan a unui fiier deschis, exist un pointer ctre
urmtorul octet care urmeaz s fie accesat. Fiecare fiier sub NTFS este descris prin
una sau mai multe nregistrri dintr-un tablou, memorat ntr-un fiier special, numit
tabela MFT(Master File Table). Tabela MFT conine informaii despre toate
fiierele i foldere-le (directoare) de pe acest volum NTFS.

192
Rspunsuri/Indicaii de rezolvare a testelor de evaluare

Modulul 1
1.a; 2.b; 3.c; 4b.; 5.c; 6.d; 7.c; 8.a; 9.b; 10.d.
Unitatea de nvare M2.U1
1.c; 2.c; 3.b; 4.a; 5.b; 6.b; 7.b; 8.a; 9.a; 10.c; 11.c; 12.a; 13.a.
Unitatea de nvare M2.U2
1.b; 2.a; 3.c; 4.d; 5.b; 6.b; 7.c; 8.a; 9.a.
Unitatea de nvare M2.U3
Problema 1.
i) Indicaie: Se va verifica sigurana secvenei (p2,p4,p5,p3,p1).
ii) n cazul n care procesul p2 formuleaz o cerere suplimentar pentru 1 element din r1,
repectiv 2 elemente din r2, trebuie s se verifice dac aceast cerere poate fi satisfcut.
Conform algoritmului bancherului, se verific ndeplinirea relaiilor:
C2N2, adic (1,2,0) (1,2,2)
C2D, adic (1,2,0) (2,3,0)
Cum inegalitile sunt ndeplinite, se simuleaz alocarea. Starea sistemului devine:
S considerm un sistem cu 5 procese p1,p2,p3,p4,p5 i trei resurse r1,r2,r3, care au
0 1 0

3 2 0
10,5 respectiv 7 elemente. Se consider c starea iniial este definit de: A = 3 0 2 ,

2 1 1
0 0 2

7 4 3

0 0 2
N = 6 0 0 , D = (1 1 0 ) .

0 1 1
4 3 1

Indicaie: Se va verifica sigurana secvenei (p2,p4,p5,p1,p3).
iii) Indicaie: Se consider permutrile mulimii {1,2,3,4,5} i se verific sigurana
secvenei corespunztoare cu algoritmul bancherului.
iv) Nu sunt ndeplinite inegalitile C5N5 i C5D.
Problema 2.
i) Se consider secvena (p1 p3 p2 p4 p5)
Pas 1. T=(0,0,0,0,0); L=(2,3,0).
Paii 2 i 3.
Iteraia 1. Pentru procesul p1 avem (0 0 0 ) (2 3 0 ) , deci L := (2 4 0 ) ,
T=(1 0 0 0 0)
Iteraia 2. Pentru procesul p3 avem (0 0 0) (2 4 0) , deci T=(1 0 1 0 0)
L=(5 3 3).
Iteraia 3. Pentru procesul p2 avem (2 0 2) (5 3 3) , deci T=(1 1 1 0 0)
L=(7 3 3).
Iteraia 4. Pentru procesul p4 avem (2 1 1) (7 3 3) , deci T=(1 1 1 1 0)
L=(8 4 4).

193
Iteraia 5. Pentru procesul p5 avem (0 0 2) (8 4 4) , deci T=(1 1 1 1 1)
L=(8 4 6).
Pas 4. T=(1 1 1 1 1), deci nu exist interblocare n sistem.
0 0 0

2 0 2
i) C = 0 0 1 , se consider secvena (p1 p4 p2 p3 p5).

1 0 0
0 0 2

Problema 3.
i) P={p1,p2,p3}; R={r1,r2,r3,r4};
A={(p1,r1),(r1,p2),(r2,p2),(r2,p1),(p2,r3),(r3,p3)}
ii) r1 are un element, alocat procesului p2; r2 are dou elemente, unul alocat procesului
p1 i unul alocat procesului p2; r3 are un element, alocat procesului p3.
iii) p1 are alocat un element din r2 i cere r1; p2 are alocate cte un element din r1
i r2 i cere r3; p3 are alocat un element din r3.
iv) p3 cere r2.
Problema 4.
n graful din figura 2.3.6 se adaug (p3,r4) i (r4,p2).
Problema 5.
i) Mulimea arcelor este: {(p1,p2),(p2,p3),(p2,p4),(p2,p5),(p3,p4), (p4,p1)}
ii) Avem circuitul ((p1,p2),(p2,p3),(p3,p4),(p4,p1)), deci exist interblocare.
Unitatea de nvare M3.U1
I. 1.b; 2.a; 3.d; 4.b; 5.c; 6.a; 7.b; 8.c.
II.
first-fit
proces 1 ( 138 Ko) - partiia 1 ( 150 Ko )
proces 2 ( 477 Ko) - partiia 2 ( 520 Ko )
proces 3 ( 192 Ko) - partiia 3 ( 230 Ko )
proces 4 ( 396 Ko ) - partiia 5 ( 620 Ko )
best-fit
proces 1 ( 138 Ko) - partiia 1 ( 150 Ko )
proces 2 ( 477 Ko) - partiia 2 ( 520 Ko )
proces 3 ( 192 Ko) - partiia 3 ( 230 Ko )
proces 4 ( 396 Ko ) - partiia 5 ( 620 Ko )
worst-fit
proces 1 ( 138 Ko) - partiia 5 ( 620 Ko )
proces 2 ( 477 Ko) - partiia 2 ( 520 Ko )
proces 3 ( 192 Ko) partiia obinut dup alocarea procesului 1
proces 4 ( 396 Ko ) trebuie s atepte eliberarea unei partiii.
Se calculeaz spaiul neutilizat, datorit fragmentrii, adic suma diferenelor dintre
dimensiunea partiiei i spaiul utilizat de procese.
Unitatea de nvare M3.U2
1.c; 2.d; 3.b; 4.c; 5.b; 6.c; 7.b; 8.a; 9.a; 10.b; 11.a; 12.c.
Unitatea de nvare M4.U1
1.c; 2.b; 3.a; 4.c; 5.a; 6.a; 7.a; 8.d; 9.b; 10.b; 11.c; 12.a.

194
Unitatea de nvare M5U1
1.b; 2.c; 3.d; 4.b.; 5.a; 6.d; 7.a; 8.a; 9.a; 10.c.
Unitatea de nvare M6U1
1.c; 2.d; 3.d; 4.d; 5.b; 6.a; 7.c; 8.b; 9.b; 10.d; 11.c; 12.b ; 13.d; 14.a.
Unitatea de nvare M6U2
1.b; 2.b; 3.c; 4.a; 5.a; 6.a; 7.a; 8.a; 9.c; 10.b; 11.b; 12.b; 13.c; 14.c.

195
Bibliografie

1. Boian F.M. Sisteme de operare interactive, Editura Libris, Cluj-Napoca,1994


2. Boian F.M. . s.a Sisteme de operare Editura RISOPRINT, Cluj-Napoca, 2006
3.Florea I. Sisteme de operare- Concepte fundamentale Editura Universitatii Transilvania,
Brasov, 2004
4. Ionescu T. s.a Sisteme de operare. Principii si functionare, Editura Tehnica, Bucuresti,
1997
5. Jurca I. D. Sisteme de operare, Editura de Vest, Timisoara, 2001
6. Nutt G. Operating Systems. A Moderne Perspective. Second Edition,Addison Wesley
Longmann, 2001
8. Silberschatz A. .a Operating Systems Concepts.Seventh Edition, Wesley Publishing
Company, 2006
9. Stallings W. Operating Systems: Internals and Design Principles, 6/E, Prentice Hall, 2009
10. Tanenbaum A. Modern Operating Systems. Third Edition, Pretince Hall, 2008

196

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