Sunteți pe pagina 1din 23

1

CAPITOLUL1
SISTEME DE OPERARE SI RETELE DE CALCULATOARE

Programele actuale fac adesea ca un singur calculator sa execute activitati care pot concura ntre
ele pentru a obtine accesul la resursele sistemului de calcul. De exemplu, un calculator poate fi conectat la
mai multe terminale sau statii de lucru de la care diferiti utilizatori pot solicita simultan serviciile sale.
Chiar si n cazul unui sistem cu un singur utilizator, este posibil ca acesta sa ceara executarea n paralele a
mai multor actiuni distincte, cum ar fi tiparirea unui document, modificarea altui document si crearea unui
grafic care sa fie inserat apoi ntr-un document. Aceste cerinte necesita un nalt grad de coordonare, care
sa asigure faptul ca diferitele actiuni nu interfera una cu alta, iar comunicatia ntre actiunile asociate
trebuie sa fie eficienta si fiabila. Aceasta coordonare se face prin intermediul unui sistem software
denumit sistem de operare (operating system).
De asemenea, n cazul conectarii mai multor calculatoare ntr-o retea apar probleme similare de
coordonare si comunicatie. Rezolvarea lor reprezinta o extensie naturala a notiunii de sistem de operare.
n acest capitol vom prezenta conceptele fundamentale referitoare la sistemele de operare si retele de
calculatoare.

1. EVOLUTIA SISTEMELOR DE OPERARE

Pentru nceput vom aborda studiul sistemelor de operare si al retelelor de calculatoare din
perspectiva istorica, de la primele sisteme cu un singur procesor pna la mult mai recentele sisteme
multiprocesor.

Sisteme cu un singur procesor
Calculatoarele monoprocesor realizate n anii 40 si 50 nu erau nici prea flexibile nici eficiente.
Executia programelor necesita o laborioasa activitate de pregatire a echipamentului, cum ar fi ncarcarea
benzilor magnetice, plasarea cartelelor perforate n cititorul de cartele, configurarea diverselor
comutatoare si altele. De aceea, executia fiecarui program, denumit lucrare (job), era tratata ca o
activitate izolata. Atunci cnd mai multi utilizatori doreau sa foloseasca n comun calculatorul, se faceau
de obicei programari scrise, prin care si puteau rezerva diverse intervale din timpul comun. n timpul
alocat unui utilizator, calculatorul se afla sub controlul total al acestuia. Sesiunea de lucru ncepea de
obicei cu ncarcarea programului, urma o scurta perioada n care se executa programul si se termina
adesea cu ncercarea de mai executa n graba nca ceva (Mai dureaza doar un minut), n timp ce
urmatorul utilizator astepta cu nerabdare sa-i vina rndul.
ntr-un asemenea mediu, sistemele de operare au nceput ca sisteme utilizate pentru simplificarea
ncarcarii programelor si reducerea perioadei de tranzitie dintre lucrari. Unul dintre primele progrese a
constat n separarea utilizatorilor si a echipamentului, ceea ce elimina deplasarea persoanelor la si de la
camera n care se afla calculatorul. n acest scop era angajat un operator care efectua toate operatiile cu
calculatorul. Oricine voia sa ruleze un program trebuia sa-l nmneze operatorului (mpreuna cu datele
necesare si specificatiile privind executia sa) si sa revina mai trziu pentru a primi rezultatele. Operatorul
ncarca aceste materiale pe suportul de stocare de masa al calculatorului, unde sistemul de operare avea
acces la ele pentru a le executa. Acesta a fost nceputul prelucrarii pe loturi (batch procession)
executarea lucrarilor prin plasarea lor ntr-un grup unic si apoi reluarea lor fara o alta interactiune cu
utilizatorul. n vederea executiei, lucrarile stocate n memoria de masa erau plasate ntr-o coada de
lucrari (job queue), ilustrata n figura 1.1.
Coada reprezinta o structura de stocare n care obiectele (n cazul nostru, lucrarile) sunt
organizate dupa principiul primul intrat, primul iesit (first-in, first-out FIFO). Aceasta nseamna ca
obiectele vor fi extrase din coada n ordinea sosirii. n realitate, nu toate cozile de lucrari respecta riguros
structura FIFO, deoarece multe sisteme de operare permit alocarea de prioritati. Din aceasta cauza, o
lucrare cu o prioritate mai mare se va executa naintea unei lucrari deja existente n coada de lucrari, dar
cu o prioritate mai mica.

2













Figura 1.1. Prelucrare pe loturi

n primele sisteme cu prelucrare pe loturi, fiecare lucrare era nsotita de un set de instructiuni care
descriau pasii de executie pentru a se pregati calculatorul n vederea executiei lucrarii respective. Aceste
instructiuni erau codificate ntr-un limbaj de control al lucrarilor (Job Control Language JCL) si erau
stocate n coada, alaturi de lucrarea respectiva. La selectarea lucrarii pentru executie, sistemul de operare
tiparea aceste instructiuni la imprimanta, operatorul trebuind apoi sa le citeasca si sa le execute.
Instructiunile care necesitau actiunea operatorului se refereau n special la cuplarea dispozitivelor externe;
n prezent, aceste activitati au fost reduse la minimum, iar limbajul de control al lucrarilor a devenit o cale
de comunicare n primul rnd cu sistemul de operare, nu cu operatorul. ntr-adevar, n prezent postul de
operator de calculator nu mai este necesar. n locul operatorilor, institutiile recurg astazi la administratori
de sistem, care sa administreze sistemul informatic (activitatea lor constnd n achizitia si supervizarea
instalarii noilor echipamente si programe, stabilirea regulilor locale, de exemplu limitarea spatiului de
disc pus la dispozitia fiecarui utilizator, precum si coordonarea eforturilor pentru rezolvarea problemelor
care apar n cadrul sistemului).
Principalul dezavantaj fata de metoda clasica a prelucrarii pe loturi este acela ca dupa ce l-a trimis
n coada de lucrari utilizatorul nu mai poate interveni asupra programului. Aceasta situatie este
acceptabila n cazul unor aplicatii cum ar fi prelucrarea statelor de plata, n care toate datele si deciziile de
prelucrare sunt stabilite de la nceput, dar nu si atunci cnd utilizatorul trebuie sa interactioneze cu
programul n timpul executiei acestuia, ca de exemplu n cazurile sistemelor de rezervari, unde efectuarea
rezervarilor si anularilor trebuie raportata n momentul producerii, sistemelor de prelucrare a textelor, n
care crearea documentelor este realizata n mod dinamic, prin scriere si modificare, jocurilor de
calculator, n care interactiunea cu calculatorul reprezinta principala caracteristica a jocului.
Pentru a raspunde acestor cerinte, au fost dezvoltate noi sisteme de operare, care permit
prelucrarea interactiva (interactive processing) ilustrata n figura 1.2. Aceste sisteme permit
executarea unui program care poarta un dialog cu utilizatorul prin intermediul terminalelor de control la
distanta sau al statiilor de lucru. Sistemele interactive au dat nastere conceptului de prelucrare n timp
real (real time processing), care prin definitie impune ca activitatile ce se desfasoara ntr-un calculator
sa fie corelate cu activitatile din mediul calculatorului. Nemaifiind multumiti sa astepte pna a doua zi
rezultatele muncii lor, utilizatorii doreau sa obtina un raspuns rapid comunicnd cu calculatorul prin
intermediul unei statii de lucru aflata la distanta.












Figura 1.2. Prelucrare interactiva
Coada de
lucrari
Lucrari: programe, date si
directive de executie
Domeniul
utilizatorului
Domeniul
calculatorului
Executia
lucrarii
Rezultate
Programe, date si directive de
executie si rezultate
Domeniul
utilizatorului
Domeniul
calculatorului
Executia
programului

3
Daca sistemele interactive ar fi putut sa se adreseze unui singur utilizator la un moment dat,
prelucrarea n timp real nu ar fi pus nici o problema. Dar calculatoarele erau scumpe si trebuia ca fiecare
masina sa deserveasca mai multi utilizatori. De aceea a devenit un lucru obisnuit ca mai multi utilizatori
sa solicite simultan servicii interactive unui calculator, iar n acest caz principiile prelucrarii n timp real
deveneau mult mai dificil de respectat. Daca sistemul de operare al unui asemenea mediu multiutilizator
persista n a executa numai o singura actiune la un moment dat, doar unul dintre utilizatori beneficia de un
serviciu satisfacator de prelucrare n timp real.
O solutie la aceasta problema era sa se proiecteze sistemul de operare astfel nct sa parcurga pe
rnd diferitele activitati care trebuiau executate, printr-un proces denumit partajarea timpului. Mai exact,
partajarea timpului (time-sharing) se refera la tehnica de mpartire a timpului n intervale, denumite
felii de timp (time slices), cu restrictia executarii unei activitati numai ntr-o felie de timp la un moment
dat. La sfrsitul fiecarei felii de timp, activitatea curenta era trecuta n repaus si o alta activitate primea
dreptul de executie n urmatoarea felie de timp. Prin baleierea rapida a actiunilor n acest mod se crea
iluzia executarii simultane a mai multor procese. n functie de tipul de activitati executate, primele
sisteme cu partajarea timpului realizau prelucrari n timp real acceptabile pentru pna la treizeci de
utilizatori simultani.
n prezent, partajarea timpului este utilizata att n sistemele cu un singur procesor, ct si n
sistemele multiprocesor, dar n cazul primelor este denumita de obicei multitasking, cu referire la iluzia
ca mai multe activitati sunt efectuate simultan. Indiferent daca este vorba de un singur utilizator sau de
mai multi, partajarea timpului reprezinta o cale de crestere a eficientei globale a unui calculator. Aceasta
afirmatie poate parea surprinzatoare atunci cnd ne gndim ca procesul de baleiere a activitatilor, necesar
la sistemele cu partajarea timpului, introduce o importanta complicatie suplimentara. nsa fara partajarea
timpului, un sistem de calcul si-ar petrece cea mai mare parte a timpului asteptnd ca dispozitivele
periferice sa-si termine activitatile ncredintate sau ca utilizatorul sa formuleze urmatoarea cerere.
Partajarea timpului permite ca acest timp pierdut sa fie alocat altei actiuni. Astfel, se poate executa o
activitate n timp ce alta este n asteptare. Ca rezultat, adesea un grup de activitati vor fi executate ntr-un
timp mai scurt ntr-un mediu cu partajarea timpului dect ntr-unul ce lucreaza secvential.

Sisteme multiprocesor
n ultimii ani, nevoia de a partaja informatiile si resursele ntre diferite calculatoare a condus la
ideea conectarii calculatoarelor pentru a putea schimba informatii. Pentru a raspunde acestei cerinte,
sistemele de calculatoare conectate, denumite retele de calculatoare (network), au devenit din ce n ce
mai raspndite. ntr-adevar, principiul calculatorului central de mare putere care deserveste mai multi
utilizatori a cedat treptat locul conceptului de structura de mai multe calculatoare mici care sunt conectate
ntr-o retea prin care utilizatorii partajeaza resursele (cum ar fi imprimantele, pachetele software,
capacitatile de stocare a datelor si informatiilor) distribuite n ntregul sistem. Un foarte important
exemplu este reteaua Internet, o retea de retele care conecteaza astazi milioane si milioane de
calculatoare din toata lumea.
Multe dintre problemele de coordonare care survin la proiectarea retelelor de calculatoare sunt
aceleasi sau foarte asemanatoare cu cele aparute deja la sistemele de operare. De fapt, software-ul
pentru controlul unei retele de calculatoare poate fi privit ca un sistem de operare n retea. Astfel,
dezvoltarea software-ului de retea reprezinta o extensie naturala a domeniului sistemelor de operare. n
timp ce primele retele au fost construite ca individuale cuplate slab, fiecare dintre ele fiind sub controlul
propriului sistem de operare, cercetarea n domeniul retelelor se muta spre sistemele distribuite, n care
resursele dintr-o retea sunt partajate n mod egal ntre activitatile existente n retea, iar procesoarelor din
retea li se aloca sarcini n functie de necesitatile retelei si nu de pozitia lor spatiala n cadrul acesteia. Un
exemplu este sistemul serverelor de nume utilizat n Internet. Acest sistem permite mai multor
calculatoare diferite, raspndite n ntreaga lume, sa coopereze pentru a transforma o adresa Internet din
forma n care este specificata de utilizator (inteligibila pentru oameni si mai usor de memorat) n forma
numerica potrivita retelei.
Retelele de calculatoare reprezinta doar un exemplu de arhitecturi multiprocesor care au condus la
dezvoltarea sistemelor de operare actuale. n timp ce o retea realizeaza un sistem multiprocesor prin
combinarea calculatoarelor, fiecare dintre acestea continnd eventual un singur procesor, alte sisteme
multiprocesor sunt proiectate ca sisteme individuale cu mai mute procesoare. Un sistem de operare pentru
un asemenea calculator trebuie nu numai sa coordoneze competitia dintre diferitele activitati executate
simultan, ci si sa controleze alocarea activitatilor catre procesoarele din sistem. Acest proces implica
probleme de echilibrare a ncarcarii (load balancing asigurarea utilizarii eficiente a tuturor

4
procesoarelor) precum si de scalare (scaling spargerea activitatilor ntr-un numar de operatii
corespunzator numarului de procesoare din sistem).

2. ARHITECTURA UNUI SIS TEM DE OPERARE

Pentru a ntelege arhitectura unui sistem de operare tipic, este util sa cunoastem spectrul complet
al software-ului care exista ntr-un sistem de calcul uzual. Vom ncepe printr-o prezentare globala, n care
vom grupa componentele software conform unei scheme de clasificare. Asemenea clasificari plaseaza
invariabil unitati software similare n clase diferite, la fel cum fusul orar face ca localitati apropiate sa
utilizeze ore diferite, desi nu exista vreo diferenta sesizabila ntre momentele de producere a rasaritului
sau apusului. Mai mult chiar, n cazul clasificarii software-ului, dinamica evolutiei subiectului si lipsa
unei autoritati general acceptate conduce la terminologii si clasificari contradictorii. De aceea, urmatoarea
clasificare (figura 3) trebuie privita mai degraba ca o ncercare de a oferi un punct de sprijin n descrierea
unui subiect complex, dect ca o clasificare general acceptata.














Figura 1.3. Clasificarea software-ului

Generalitati
Sa mpartim pentru nceput software-ul dintr-un calculator n doua categorii: software de
aplicatii (application software) si software de sistem (system software). Software-ul de aplicatii
contine programele care efectueaza anumite activitati particulare pentru care este utilizat calculatorul
respectiv. Un calculator destinat tinerii inventarului unei companii de constructii de masini va contine
aplicatii software diferite de cele aflate pe calculatorul unui scriitor. Exemplele de aplicatii software sunt
reprezentate de programele de calcul tabelar, sistemele de baze de date, sistemele de tehnoredactare
computerizata, pachetele de dezvoltare de programe si jocurile.
Spre deosebire de software-ul de aplicatii, software-ul de sistem efectueaza acele activitati care
sunt comune sistemelor de calcul n general. ntr-un anumit sens, software-ul de sistem furnizeaza mediul
n care lucreaza software-ul aplicativ, n acelasi mod n care infrastructura nationala constituie o baza pe
care fiecare cetatean si dezvolta propriul stil de viata.
Clasa software-ului de sistem se mparte n doua categorii: sistemul de operare propriu-zis si
modulele software cunoscute sub numele de software utilitar. Cea mai mare parte din utilitarele instalate
reprezinta programe care desfasoara activitati ce sunt esentiale pentru functionarea calculatorului, dar nu
sunt nca incluse n sistemul de operare. ntr-un anume sens, software-ul utilitar consta din unitati
software care extind caracteristicile sistemului de operare. De exemplu, abilitatea de formatare a unui disc
sau de copiere a unui fisier nu este ntotdeauna implementata n cadrul sistemului de operare, dar este
realizabila prin intermediului unui program utilitar. Alte exemple de utilitare sunt software-ul pentru
comunicatie prin modem pe linia telefonica, software-ul de afisare a datei si orei pe ecranul
calculatorului, precum si o data cu cresterea numarului de instalari, software-ul pentru administrarea
activitatilor dintr-o retea de calculatoare.
Diferenta dintre software-ul de aplicatii si cel utilitar este adesea foarte mica. Multi utilizatori de
calculatoare includ n clasa de software utilitar orice software livrat odata cu sistemul de operare, la
cumpararea acestuia. Ca atare uneori sunt incluse n categoria utilitarelor si sistemele de dezvoltare a
programelor, deoarece adese astfel de pachete de programe au fost livrate la achizitia unui sistem de
operare. Diferenta dintre software-ul utilitar si sistemul de operare este la fel de vaga. Unele sisteme
Software
Aplicatie
Sistem
Utilitar
Sistem de operare
Interfata Nucleu

5
furnizeaza astfel de servicii elementare, cum ar fi afisarea listei fisierelor de pe un sistem de stocare de
masa, ca utilitar; altele includ aceste servicii n sistemul de operare.
Este usor de observat ca prin implementarea anumitor activitati ca software utilitar, un sistem de
operare se simplifica, nemaifiind obligat sa includa toate caracteristicile de baza necesare unui sistem de
calcul. Mai mult chiar, rutinele implementate ca software utilitar pot fi adaptate cu mai multa usurinta
cerintelor unei instalari particulare. ntr-adevar, nu este ceva neobisnuit sa ntlnim companii sau
persoane care au modificat, respectiv au completat, software-ul utilitar furnizat initial odata cu sistemul
de operare al calculatorului lor.

Interfata
Partea dintr-un sistem de operare care defineste modul de interactiune dintre sistemul de operare
si utilizatorii sai poarta numele de interfata (shell). Sarcina interfetei este aceea de a permite
comunicarea cu utilizatorul (sau utilizatorii) calculatorului. Interfetele moderne realizeaza acest lucru prin
intermediul unei interfete grafice cu utilizatorul (Graphical User Interface - GUI), n care obiectele
care trebuie manipulate, cum ar fi fisierele si programele, sunt reprezentate grafic pe ecranul
calculatorului prin pictograme (icons). Astfel de sisteme permit utilizatorului sa execute comenzi prin
selectarea si deplasarea pictogramelor pe ecran cu un dispozitiv manevrat cu mna si denumit mouse.
Vechile interfete comunicau cu utilizatorul mesaje de tip text, folosind n acest scop tastatura si ecranul.
Cu toate ca interfata unui sistem de operare joaca un rol important n stabilirea functionalitatii
unui calculator, ea nu reprezinta altceva dect legatura ntre utilizator si inima" sistemului de operare (a
se vedea figura 1.4). Diferenta dintre interfata si partile interne ale sistemului de operare este scoasa n
evidenta de faptul ca anumite sisteme de operare permit unui utilizator sa selecteze dintre mai multe
interfete pe cea care i convine mai mult. De exemplu, utilizatorii sistemului de operare UNIX pot alege
dintre mai multe variante, cum ar fi interfata Borne, interfata C sau interfata Korn. Primele versiuni de
Windows de la Microsoft Corporation constituiau de fapt interfete alternative pentru sistemul de operare
MS-DOS. n aceste cazuri sistemul de operare ramne neschimbat, modificndu-se numai modul sau de
comunicare cu utilizatorii calculatorului.

Figura 1.4. Interfata realizeaza comunicatia dintre utilizatori si sistemul de operare

Reciproc, interfete cu caracteristici similare se pot utiliza n lucrul cu sisteme de operare cu
structuri interne diferite, n scopul obtinerii unei interfete om-masina unitare pe diferite tipuri de
calculatoare. Prima aplicatie a acestui efect de standardizare a fost implementata de IBM n cadrul seriilor
de calculatoare System/360, aparute n anii '60. Aceste serii constau dintr-o varietate de calculatoare,
ncepnd de la calculatoare proiectate pentru aplicatii pentru ntreprinderi mici si mijlocii si ajungnd la
calculatoare pentru afaceri de mari dimensiuni. Toate calculatoarele erau livrate avnd sisteme de operare
care comunicau cu mediul n aproximativ aceeasi maniera. Astfel, pe masura ce afacerea se dezvolta, se
putea trece la un calculator mai puternic, fara mari eforturi de reprogramare si instruire a personalului.

6
n zilele noastre avantajele interfetelor standardizate sunt bine cunoscute si urmarite n orice
proiectare de software. De exemplu, comunicarea cu sistemele de calcul tabelar sau procesoarele de texte
furnizate de diverse firme are caracteristici similare, simplificnd migrarea utilizatorului de la un produs
la altul. Dar, standardizarea a condus si la aparitia unui mare numar de probleme de legalitate, printre care
si problema proprietatii asupra unei interfete. Atunci cnd interfata realizata de o firma devine populara,
este avantajos pentru concurenta sa-si realizeze sistemele astfel nct sa arate similar cu cel deja bine
cunoscut. Aceasta asemanare face ca trecerea utilizatorilor sistemului mai bine cunoscut la sistemul
concurentei sa se faca mai usor, chiar daca structura interna a celor doua sisteme este foarte diferita.
Desigur, firma care a proiectat sistemul original pretinde dreptul de proprietate asupra aspectului si
comportarii (look and feel) sistemului sau, la fel cum pretinde si dreptul de proprietate asupra
structurii sistemului. Solutiile date de catre justitie n procesele legate de aspect si comportare nu permit
deocamdata stabilirea unei reguli generale.

Nucleul
Partea din interiorul unui sistem de operare este adesea denumita nucleu (kernel). Nucleul unui
sistem de operare contine acele componente software care efectueaza operatiile primare, necesare pentru
functionarea calculatorului. Un astfel de modul este administratorul de fisiere (file manager), care are
sarcina sa coordoneze utilizarea facilitatilor oferite de memoria de masa a calculatorului. Administratorul
de fisiere stocheaza nregistrari referitoare la toate fisierele memorate pe suportul de stocare de masa, mai
precis informatii referitoare la pozitiile fisierelor, utilizatorii cu drept de acces la ele si ce portiune din
memoria de masa este disponibila pentru stocarea de noi fisiere sau extinderea celor existente.
Pentru simplificarea utilizarii calculatorului, multe sisteme de administrare a fisierelor permit
gruparea lor n unitati denumite directoare (directory) sau dosare (folder). Acest lucru permite
utilizatorului sa-si organizeze fisierele conform scopului n care sunt folosite, plasnd fisierele referitoare
la acelasi lucru n acelasi director. Mai mult chiar, permitndu-se ca directoarele sa contina alte
directoare, denumite subdirectoare, se poate realiza o organizare ierarhizata a informatiilor. De exemplu,
un utilizator poate crea un director denumit Inregistrari care sa contina subdirectoarele cu numele
InregistrariFinanciare, InregistrariMedicale si InregistrariFamiliale. Fiecare dintre aceste subdirectoare
poate contine fisiere care fac parte din respectiva categorie. Secventa de directoare care indica drumul
pna la un anumit subdirector sau fisier se numeste cale (path).
Orice acces al unui modul software la un fisier se obtine prin intermediul administratorului de
fisiere. Procesul ncepe cu cererea ca administratorul de fisiere sa acorde accesul la fisier, prin intermediul
unei proceduri care se numeste deschiderea fisierului. Daca administratorul de fisiere accepta cererea de
acces, el furnizeaza informatiile necesare pentru gasirea si manipularea fisierului. Informatiile sunt
stocate ntr-o zona din memoria principala care poarta numele de descriptor de fisier (file descriptor), iar
operatiile individuale asupra unui fisier se fac prin referirea la informatiile aflate aici.
O alta componenta a nucleului consta dintr-o colectie de drivere de dispozitiv (device drivers )
module software care comunica cu controlerele (sau uneori direct cu dispozitivele) pentru efectuarea
operatiilor de catre componentele periferice ale calculatorului. Fiecare driver de dispozitiv este proiectat
n mod individual pentru un anumit tip de controler sau dispozitiv (ca de exemplu o imprimanta, un disc,
o unitate de banda magnetica sau un monitor) si traduce cererile formulate n termeni generali ntr-o
secventa de instructiuni specifice controlerului sau dispozitivului atasat acelui driver. Astfel, celelalte
module software nu trebuie sa tina cont de detaliile constructive ale dispozitivelor atasate calculatorului.
Ele trebuie doar sa lanseze cereri de uz general driverelor de dispozitiv si sa le lase apoi pe acestea sa se
preocupe de detalii. De exemplu, un driver de dispozitiv pentru un disc poate converti o cerere generala
de scriere a unei portiuni de fisier pe disc n instructiuni care se refera la pistele si sectoarele discului
(utiliznd informatiile din descriptorul de fisier) si transmite apoi aceste informatii controlerului respectiv.
Dupa aceea, controlerul va prelua responsabilitatea pozitionarii capetelor de citire/scriere si supervizarii
procesului de nregistrare. n schimb, un driver pentru imprimanta va traduce o cerere de tiparire a
aceleiasi portiuni de fisier la imprimanta n instructiuni referitoare la transferul fonturilor, caracterelor si
instructiunilor de control al imprimantei. De fapt, etapele necesare sunt diferite chiar si n cazul unor
imprimante diferite, acesta fiind motivul pentru care proprietarul unui calculator personal care cumpara o
imprimanta noua primeste adesea si un nou driver de imprimanta.
O alta componenta a nucleului unui sistem de operare este administratorul de memorie
(memory manager), nsarcinat cu activitatea de coordonare a utilizare memoriei principale a
calculatorului. Astfel de sarcin i se reduc la minimum ntr-un mediu n care calculatorului i se cere sa
realizeze numai cte o activitate la un moment dat. n aceste situatii, programul care executa activitatea

7
curenta este plasat n memoria principala, rulat si apoi nlocuit cu programul care va efectua urmatoarea
operatie. Dar n mediile multiutilizator sau multitasking, n care calculatorului i se cere sa raspunda mai
multor solicitari n acelasi timp, sarcinile administratorului de memorie sunt complexe, n aceste cazuri
multe programe si blocuri de date trebuie stocate n memoria principala n mod concurent, fiecare fiind
plasat ntr-o zona de memorie proprie alocata lui de catre administratorul de memorie. Pe masura ce
diferitele activitati apar sau se ncheie, administratorul de memorie trebuie sa gaseasca zone libere de
memorie pentru a satisface cererile de memorie si sa tina evidenta zonelor de memorie care au fost
eliberate.
Sarcina administratorului de memorie se complica si mai mult atunci cnd cantitatea totala de
memorie solicitata depaseste dimensiunea memoriei disponibile. n acest caz, administratorul de memorie
poate crea iluzia unui spatiu suplimentar de memorie rotind programele si datele ntre memoria principala
si disc. Aceasta memorie iluzorie este denumita memorie virtuala (virtual memory). Sa presupunem ca
este nevoie de o memorie principala cu dimensiunea de 64 de megaocteti, dar sunt disponibili numai 32.
Pentru a crea impresia unui spatiu de memorie mai mare, administratorul de memorie va mparti spatiul
cerut n unitati denumite pagini si va transfera continutul acestor pagini pe disc. Dimensiunea obisnuita
pentru o pagina de memorie nu depaseste patru kiloocteti. Pe masura ce alte pagini de memorie sunt
necesare n memoria principala, administratorul de memorie le va ncarca n locul paginilor care nu mai
sunt necesare si astfel celelalte module software se vor executa ca si cum calculatorul ar avea o memorie
principala de 64 de megaocteti.
De asemenea, nucleul unui sistem de operare contine n plus secventiatorul (scheduler) si
executorul (dispatcher), care vor fi prezentate n subcapitolul urmator. Deocamdata vom preciza doar ca
ntr-un sistem cu partajarea timpului secventiatorul stabileste care actiuni trebuie luate n considerare
pentru a fi executate, iar executorul controleaza alocarea feliilor de timp pentru aceste activitati.

Pornirea calculatorului
Am vazut cum comunica sistemul de operare cu utilizatorii calculatorului si cum coopereaza
elementele componente ale sistemului de operare pentru coordonarea executiei activitatilor dintr-un
calculator, dar nu ne-am referit deloc la modul n care este lansat n executie sistemul de operare. Acest
lucru se realizeaza prin intermediul unei proceduri cunoscute sub numele de ncarcarea sistemului de
operare (boot straping), denumita adesea pe scurt ncarcare (booting), ce este executata de calculator de
fiecare data cnd este pornit. Primul pas n a ntelege aceasta procedura este sa ntelegem de ce este ea
necesara.
Unitatea centrala de prelucrare este realizata astfel nct registrul sau contor de program sa
nceapa ntotdeauna de la o anumita adresa predeterminata, de fiecare data cnd unitatea centrala este
alimentata cu curent electric. Aici deci se asteapta unitatea centrala sa gaseasca programul pe care trebuie
sa-l execute. Pentru a se asigura existenta programului dorit, aceasta zona de memorie este construita
astfel nct continutul ei sa fie permanent. O astfel de memorie este cunoscuta sub numele de memorie
permanenta (read-only memory - ROM). Dupa nscrierea sirurilor de biti n memoria ROM printr-un
procedeu analog fotografierii circuitelor de pe un cip, acestia ramn stocati, indiferent daca sistemul de
calcul este pornit sau oprit.
n cazul calculatoarelor simple utilizate pentru controlul cuptoarelor cu microunde, al sistemelor
de aprindere ale automobilelor sau al receptoarelor stereofonice, este utila realizarea unei parti
semnificative de memorie ca memorie permanenta, deoarece aceste aparate nu trebuie sa fie flexibile.
Programele executate de asemenea dispozitive sunt la fiecare pornire aceleasi. Acest lucru nu mai este
adevarat n cazul calculatoarelor de uz general, asa ca nu este practic sa se construiasca mari parti din
memoria acestora ca memorie ROM. De fapt, cea mai mare parte din memoria unui calculator de uz
general este memorie volatila, continutul memoriei pierzndu-se la oprirea calculatorului.
n scopul ncarcarii sistemului de operare al unui calculator de uz general, portiunea de memorie
realizata sub forma de memorie ROM contine un program de mici dimensiuni, denumit bootstrap. La
pornirea calculatorului, acest program este executat n mod automat. El conduce procesorul de-a lungul
procesului de transfer al unui material din locatia predeterminata de pe suportul de stocare de masa n
memoria principala a calculatorului. n multe cazuri, obiectul transferului este reprezentat de sistemul de
operare. Dupa plasarea sistemului de operare n memoria principala, programul de bootstrap instruieste
unitatea centrala de prelucrare sa sara la zona de memorie care-l contine. Din acest punct, sistemul de
operare devine activ si preia controlul asupra activitatilor calculatorului.



8















(Pasul l) Calculatorul ncepe prin executarea programului de ncarcare aflat deja n memorie.
Sistemul de operare se afla plasat pe dispozitivul de stocare de masa.















(Pasul 2) Programul de ncarcare realizeaza transferul sistemului de operare n memoria
principala si i cedeaza apoi controlul.

Figura 1.5 Procesul de ncarcare a sistemului de operare

3. COORDONAREA ACTIVITATILOR DESFASURATE D ECALCULATOR

n acest subcapitol vom discuta despre modul n care sistemul de operare coordoneaza executia
software-ului de aplicatie si utilitar, precum si pe cea a propriilor sale module. Vom ncepe prin a
prezenta conceptul de proces.

Conceptul de proces
n cazul sistemelor de operare moderne, unul dintre cele mai importante concepte este deosebirea
dintre program si actiunea de executie a acestuia. Programul reprezinta un set static de directive, iar
executia lui este o activitate dinamica, ale carei proprietati se modifica n timp. Aceasta activitate poarta
numele de proces. Procesul este caracterizat de starea curenta a activitatii, denumita starea procesului.
Ea include pozitia curenta n programul care este executat (valoarea contorului de program), precum si
valori din alti registri ai unitatii centrale si din celulele de memorie asociate. Aproximnd, putem spune ca
starea procesului reprezinta un instantaneu al calculatorului la un moment dat. La diferite momente din
timpul executiei unui program (la diferite momente dintr-un proces) vor fi obtinute diferite instantanee
(diferite stari ale procesului).
Pentru a face distinctia ntre program si procese, trebuie remarcat ca un singur program poate fi
asociat n acelasi timp mai multor procese. De exemplu, ntr-un sistem multiutilizator cu partajarea
timpului, doi utilizatori pot sa editeze simultan documente diferite. Ambele activitati pot utiliza acelasi
program, dar fiecare dintre ele va constitui un proces separat, avnd propriile seturi de date si propria
Memoria principala
Program de
ncarcare

ROM
Memorie volatila
Disc
Sistem de
operare
Memoria principala
Program de
ncarcare

ROM
Memorie volatila
Disc
Sistem de
operare
Sistem de
operare

9
viteza de desfasurare. n aceasta situatie, sistemul de operare poate pastra n memorie numai o singura
copie a programului de editare, permitnd fiecarui proces sa-l utilizeze n timpul feliei de timp alocate.
ntr-un calculator cu partajarea timpului exista de obicei mai multe procese care concureaza
pentru feliile de timp. ntre ele se numara att executia programelor aplicative sau utilitare, ct si a unor
parti din sistemul de operare. Sarcina sistemului de operare este sa coordoneze aceste procese.
Coordonarea implica alocarea resurselor necesare fiecarui proces (dispozitive periferice, spatiu n
memoria principala, acces la date si acces la unitatea centrala de prelucrare), mpiedicarea interfetei
proceselor independente si asigurarea faptului ca procesele care trebuie sa schimbe informatii ntre ele pot
s-o faca. Pentru aceasta comunicatie se foloseste numele de comunicatie ntre procese (interprocess
communication).

Administrarea proceselor
Operatiile asociate coordonarii proceselor sunt efectuate de catre secventiatorul (scheduler) si
executorul (dispatcher) din nucleul sistemului de operare. Astfel, secventiatorul memoreaza o nregistrare
a proceselor prezente n sistemul de calcul, introduce noile procese n aceasta lista si elimina procesele
care s-au terminat. Pentru a putea urmari toate procesele, secventiatorul nregistreaza un bloc de
informatii, denumit tabel de procese (process table), n memoria principala. Pentru fiecare noua
activitate, creeaza un proces dedicat acesteia, plasnd un nou element n tabelul de procese. Aici sunt
memorate informatii cum ar fi zona de memorie alocata procesului (obtinuta de la administratorul de
memorie), prioritatea procesului si daca procesul este gata sa continue sau este n asteptare. Un proces
este gata sa continue (ready) daca este ntr-o stare n care desfasurarea actiunii poate cont inua; este n
asteptare (waiting) daca desfasurarea sa este ntrziata pna la aparitia unor evenimente externe, ca de
exemplu terminarea unui acces la disc sau sosirea unui mesaj de la alt proces. Astfel, secventiatorul
memoreaza informatiile referitoare la modul n care se desfasoara procesele, n particular, un proces trece
adesea de la starea de gata la cea de asteptare si invers; prioritatea proceselor se modifica de-a lungul
timpului; si, desigur, secventiatorul trebuie sa elimine procesul din tabelul de procese atunci cnd acesta
se termina.
Executorul este o componenta a nucleului care asigura n fapt executia proceselor active,
programate de secventiator. ntr-un sistem cu partajarea timpului, aceasta sarcina este dusa la ndeplinire
prin mpartirea timpului n intervale scurte, fiecare purtnd numele de felie de timp (time slice) sau
cuanta (quantum - avnd de obicei o durata de 50 de milisecunde); atentia unitatii centrale de prelucrare
este ndreptata catre fiecare proces n parte, fara ca executia acestuia sa poata depasi o cuanta de timp
(figura 1.6). Procedura de trecere de la un proces la altul poarta numele de comutare ntre procese
(process switch).















Figura 1.6 Partajarea timpului ntre procesele A si B
De fiecare data cnd un proces si ncepe felia de timp, executorul initializeaza un circuit de
temporizare care va masura urmatoarea cuanta. La sfrsitul cuantei, circuitul de temporizare genereaza un
semnal care poarta numele de ntrerupere. Unitatea centrala reactioneaza la acest semnal ntr-un mod
foarte asemanator celui n care reactionam atunci cnd suntem ntrerupti n timpul desfasurarii unei
activitati: oprim activitatea, memoram unde anume ne aflam n operatia respectiva si acordam apoi atentia
cuvenita sursei ntreruper ii. La primirea unui semnal de ntrerupere, unitatea centrala de prelucrare
completeaza ciclul curent de extragere-decodificare-executie, salveaza pozitia din procesul curent (pas la
ntrerupere
Proces A
Proces A
Comutare ntre
procese
Comutare ntre
procese
ntrerupere
Proces B
Proces A
Comutare ntre
procese
Comutare ntre
procese
ntrerupere
Comutare ntre
procese
Proce
ntrerupere
ntrerupere
Axa timpului

10
care vom reveni imediat) si ncepe executia unui program de tratare a ntreruperilor (interrupt
handler), care este stocat la o locatie predeterminata din memoria principala.
n scenariul nostru de partajare a timpului, programul de tratare a ntreruperilor este o
componenta a executorului. De aceea efectul semnalului de ntrer upere este de suspendare a procesului
curent si de transfer al controlului catre executor. n acest punct, executorul permite secventiatorului sa
actualizeze tabelul de procese (de exemplu, prioritatea procesului care tocmai s-a executat n ultima
cuanta trebuie sa fie redusa, iar prioritatea altor procese ar putea sa creasca). Executorul selecteaza apoi
procesul care are cea mai mare prioritate dintre procesele gata sa continue din tabel, reporneste circuitul
de temporizare si permite procesului selectat sa-si nceapa felia de timp.
Abilitatea de oprire si de repornire ulterioara a unui proces este de o importanta vitala pentru
succesul unui sistem cu partajarea timpului. Daca sunteti ntrerupti n timp ce cititi o carte, posibilitatea
de a relua mai trziu lectura depinde de abilitatea dumneavoastra de a va reaminti att pagina la care va
aflati ct si informatiile pe care le-ati acumulat pna atunci. Pe scurt, trebuie sa puteti recrea mediul care
exista chiar nainte de producerea ntreruperii. n cazul unui proces, un asemenea mediu este starea
procesului. Amintiti-va ca aceasta stare include valoarea contorului de program, precum si continutul
registrilor si al celulelor de memorie asociate. Calculatoarele proiectate pentru sisteme cu partajarea
timpului includ actiunea de salvare a acestor informatii ca parte a reactiei unitatii centrale de prelucrare la
semnalul de ntrerupere. Ele dispun de obicei de instructiuni n limbaj masina pentru rencarcarea unei
stari salvate anterior. Astfel de facilitati simplifica sarcina executorului la efectuarea comutarii ntre
procese si constituie un exemplu referitor la modul n care arhitectura calculatoarelor moderne este
influentata de cerintele sistemelor de operare actuale.
Uneori, actiunea efectuata de un proces n cuanta alocata lui se termina nainte de expirarea
timpului alocat. De exemplu, daca un proces executa o cerere de intrare/iesire, cum ar fi o cerere de
furnizare a unor date de pe un disc, partea ramasa din felia de timp alocata acelui proces va fi iros ita ct
timp acesta asteapta ca cererea sa i fie onorata de catre controler, n acest caz, secventiatorul va actualiza
tabelul de procese pentru a reflecta starea de asteptare a procesului, iar executorul va aloca o noua cuanta
unui proces care este gata de executie. Mai trziu (probabil dupa mai multe sute de milisecunde), atunci
cnd controlerul semnaleaza ca cererea de intrare/iesire a fost executata, secventiatorul va schimba starea
procesului n gata si astfel procesul va intra din nou n competitia pentru primirea unei cuante.

Modelul Client/Server
Diferitele module ale sistemului de operare, care ntr-un sistem cu partajarea timpului se executa
de obicei ca procese individuale, concureaza ntre ele sub controlul executorului pentru cuantele de timp.
Pentru a-si coordona activitatile, procesele trebuie sa comunice ntre ele. Pentru programarea unui nou
proces, secventiatorul trebuie sa obtina spatiu de memorie de la administratorul de memorie. Pentru a
dobndi accesul la un fisier aflat pe un dispozitiv de stocare de masa, orice proces trebuie sa capete mai
nti informatiile necesare de la administratorul de fisiere.
Pentru simplificarea comunicatiei ntre procese, componentele unui sistem de operare sunt adesea
proiectate n conformitate cu modelul client/server (figura 1.7).




Figura 1.7 Modelul client/server











Figura 1.8 Structuri identice de comunicatie ntre clienti si servere, care opereaza pe acelasi calculator sau
sunt distribuite pe mai multe calculatoare
Cerere
Client Server
Un calculator
Client Server
Client
Client Server
Patru calculatoare independente
Client Server
Client
Client Server

11
Acest model defineste cele doua roluri fundamentale pe care le pot juca diferitele componente:
client, care emite cereri catre alte unitati, respectiv server, care satisface cererile emise de clienti. De
exemplu, administratorul de fisiere va juca rolul unui server care furniz eaza accesul la fisiere dupa cum i
se cere de catre clientii sai. n cadrul acestui model, comunicatia ntre procesele dintr-un sistem de
operare consta din cereri adresate de procesele care joaca rolul de clienti si din raspunsuri de la procesele
care joaca rolul de servere.
Aplicarea modelului client/server n proiectarea software-ului conduce la uniformizarea tipurilor
de comunicatii care au loc n sistem. Acesta este unul din principalele motive pentru care modelul a fost
adoptat pe scara larga la proiectarea sistemelor de operare. Atunci cnd componentele unui sistem de
operare sunt proiectate ca servere si clienti, comunicatia dintre ele are aceeasi forma indiferent daca
aceasta comunicatie se desfasoara ntre componente din cadrul aceluiasi calculator sau ntre componente
ale unor calculatoare aflate la mare distanta unele de altele (figura 1.8). Un client va trimite pur si simplu
cereri serverelor si va astepta raspunsurile; serverul va presta serviciile cerute si va trimite raspunsurile
napoi client ilor, n consecinta, atta timp ct o retea de calculatoare permite trimiterea de cereri si
raspunsuri ntre calculatoare, mai multi clienti si mai multe servere se pot distribui n orice configuratie
convenabila pentru reteaua respectiva.

4. GESTIONAREA PROCESELOR CONCURENTE

Asa cum am vazut, componentele nucleului unui sistem de operare se ocupa n principal cu
alocarea resurselor calculatorului catre procesele ce se desfasoara n sistem, n cazul de fata atribuim
termenului resurse un sens larg, incluznd att dispozitivele periferice ale calculatorului, ct si functiile
de care dispune calculatorul propriu-zis. Administratorul de fisiere aloca att accesul la fisierele existente,
ct si spatiul pe disc pentru crearea de noi fisiere; administratorul memoriei aloca spatiu n memorie;
secventiatorul aloca spatiu n tabelul de procese; executorul aloca feliile de timp pentru executia
proceselor. Ca si alte activitati, sarcina de alocare a resurselor pare la o prima vedere destul de simpla.
Totusi, sub aceas ta aparenta simplitate se ascund multe probleme care tratate superficial pot duce la
functionarea defectuoasa a sistemului. Amintiti-va ca un calculator nu gndeste independent, ci doar
executa instructiuni. De aceea, pentru obtinerea unor sisteme de operare fiabile va trebui sa dezvoltam
algoritmi care sa acopere orice problema posibila, chiar daca pare lipsita de importanta.

Semafoare
Sa luam n discutie un calculator care are un sistem de operare cu partajarea timpului si la care
este conectata o singura imprimanta. Daca un proces este n situatia de a-si tipari rezultatele, el trebuie sa
solicite sistemului de operare acces la programul driver al imprimant ei. n acest moment, sistemul de
operare trebuie sa decida daca satisface aceasta cerere, verificnd daca imprimanta nu este cumva utilizata
de alt proces. Daca imprimanta este libera, sistemul de operare trebuie sa acorde permisiunea utilizarii ei
si sa permita procesului sa continue; altfel, trebuie sa respinga cererea si probabil sa clasifice procesul ca
proces n asteptare, pna n momentul n car e imprimanta devine disponibila. ntr-adevar, daca doua
procese ar capata simultan acces la imprimanta atasata calculatorului, rezultatul n-ar prezenta nici o
utilitate pentru nici unul din ele.
Acordarea accesului la imprimanta reclama ca sistemul de operare sa urmareasca daca
imprimanta a fost sau nu alocata vreunui proces. O solutie ar constitui-o utilizarea unui indicator (flag) -
un bit n memorie ale carui stari sunt setat (1) si sters (0). Un indicator sters arata ca imprimanta este
libera, iar un indicator setat indici faptul ca imprimanta este deja alocata, n aparenta, aceasta solutie pare
foarte buna. Sistemul de operare sterge indicatorul la pornire, apoi i verifica starea de fiecare data cnd
apare o cerere de acces la imprimanta. Daca indicatorul are valoarea zero, se acorda accesul si sistemul de
operare seteaza indicatorul. Daca indicatorul are valoarea 1, sistemul de operare trece procesul solicitant
n asteptare. De fiecare data cnd un proces termina de utilizat imprimanta, sistemul de operare aloca
imprimanta unui proces aflat n asteptare sau, daca nu exista procese n asteptare, sterge indicatorul.
Desi aceasta solutie pare buna la prima vedere, exista totusi o problema. Operatia de testar e si
eventual de setare a indicatorului necesita mai multi pasi masina. Nu ar fi exclus ca operatia sa fie
ntrerupta dupa detectarea unui indicator nul, dar nainte ca indicatorul sa fie setat, ceea ce face posibila
aparitia urmatoarei situatii.
Presupunem ca imprimanta este disponibila si un proces cere s-o utilizeze. Indicatorul care
corespunde imprimantei este verificat si gasit ca fiind sters, ceea ce indica faptul ca imprimanta este
disponibila. Dar n acest moment procesul este ntrerupt si alt proces si ncepe felia de timp. De

12
asemenea, si acest proces doreste sa utilizeze imprimanta. Indicatorul este verificat din nou si gasit tot
sters, deoarece procesul precedent a fost ntrerupt nainte de a-l putea seta. n consecinta, sistemul de
operare permite celui de-al doilea proces sa nceapa utilizarea imprimantei. Ulterior, primul proces revine
n executie n locul n care se afla cnd a fost ntrerupt, adica imediat dupa ce sistemul de operare gasise
nul indicatorul imprimantei. Asa ca sistemul de operare continua prin a acorda si primului proces dreptul
de utilizare a imprimantei. Se ajunge deci la o situatie n care doua procese utilizeaza simultan aceeasi
imprimanta.
n cazul descris, problema este aceea ca operatia de testare si eventual de setare a indicatorului
trebuie sa fie terminata fara a fi ntrerupta. O solutie pentru a face acest lucru o constituie utilizarea
instructiunilor de invalidare si validare a ntreruperilor, disponibile n multe dintre limbajele masina. Daca
sistemul de operare ncepe rutina de testare a indicatorului cu o instructiune de invalidare a ntreruperilor
si o termina cu o instructiune de validare, nici o alta activitate nu poate ntrerupe aceasta rutina, odata
pornita.
O alta solutie o reprezinta utilizarea instructiunii de testare-si-setare (test-and-set), care este de
asemenea disponibila n multe dintre limbajele masina. Unitatii centrale de prelucrare i se cere sa citeasca
valoarea unui indicator, sa o memoreze si apoi sa seteze indicatorul, toate acestea printr-o singura
instructiune masina. Avantajul acestei metode este ca de vreme ce unitatea centrala termina ntotdeauna
de executat o instructiune nainte de a sesiza o ntrerupere, operatia de testare si setare a indicatorului,
implementata ca o singura instructiune, nu poate fi ntrerupta.
Un indicator implementat corect, asa cum am aratat mai sus, poarta numele de semafor
(semaphore), prin analogie cu dispozitivele folosite la caile ferate pentru controlul accesului n diferite
portiuni ale liniilor, ntr-adevar, utilizarea semafoarelor n cadrul sistemelor informatice este foarte
asemanatoare cu ntrebuintarea lor n sistemele de transport pe calea ferata. O secventa de instructiuni
care trebuie executate fara ntreruperi corespunde unei portiuni de cale ferata pe care poate trece la un
moment dat un singur tren. O asemenea secventa de instructiuni poarta numele de zona critica (critical
region). nainte de a intra ntr-o zona critica, un proces trebuie sa gaseasca nul semaforul asociat ei si sa-l
seteze; apoi trebuie sa stearga semaforul dupa iesirea din zona critica.

Interblocarea
O alta problema care poate aparea n timpul alocarii resurselor este interblocarea (deadlock) -
situatia n care desfasurarea a doua sau mai multe procese este blocata deoarece fiecare dintre ele asteapta
acces la resurse alocate celuilalt. De exemplu, un proces poate sa aiba acces la imprimanta atasata
calculatorului, dar sa astepte dobndirea accesului la unitatea de banda magnetica, n timp ce alt proces
are acces la unitatea de banda magnetica, dar asteapta dobndirea accesului la imprimanta. Un alt
exemplu apare n situatia n care procesele creeaza noi procese pentru efectuarea unor operatii mai
simple. Daca secventiatorul nu are destul spatiu n tabelul de procese si fiecare proces din sistem trebuie
sa creeze un proces suplimentar nainte de a-si termina treaba, atunci nici un proces nu va putea continua.
Asemenea situatii, precum si altele pot reduce drastic performantele unui sistem.
Poate sa apara o interblocare numai daca sunt satisfacute simultan urmatoarele trei conditii:
1. Exista o competitie pentru resurse care nu pot fi partajate.
2. Resursele sunt solicitate n mod partial, ceea ce nseamna ca dispunnd de anumite resurse, un
proces va reveni ulterior solicitnd mai multe.
3. O data ce o resursa a fost alocata, nu se poate forta eliberarea sa.
Concluzia care rezulta este ca eliminarea interblocarii se poate face prin eliminare uneia dintre
cele trei conditii de mai sus. n gener al, tehnicile care se ocupa de a treia conditie sunt grupate ntr-o
categorie cunoscuta sub numele de scheme de detectie si corectie a interblocarilor. Ele pornesc de la
ipoteza ca ocurenta unei interblocari este att de improbabila nct nu merita sa se faca nici un efort
pentru evitarea acestei situatii. Solutia o reprezinta detectarea interblocarii atunci cnd apare si apoi
corectarea problemei prin eliberarea fortata a unora dintre resursele alocate. Cazul unui tabel de procese
plin, de exemplu, face parte din aceasta clasa. De obicei, administrator de sistem va crea un tabel de
procese suficient de mare pentru instalare particulara. Daca totusi survine o interblocare datorita umplerii
tabelului, administratorul si va utiliza drepturile sale de super utilizator pentru a elimina (termenul
tehnic este kill) unele dintre procese, elibernd astfel spatiu n tabelul de procese, pentru ca procesele
ramase sa-si poata continua activitatile.
Tehnicile care se ocupa de primele doua conditii sunt denumite n general scheme de evitare a
interblocarii. De exemplu, o astfel de tehnica se poate ocupa de a doua conditie, cernd fiecarui proces sa
solicite resursele de care are nevoie nu rnd pe rnd, ci toate o data. O alta tehnica, mai imaginativa, se

13
ocupa de prima conditie, si anume nu prin eliminarea directa a competitiei, ci prin transformarea
resurselor nepartajabile n resurse partajabile. De exemplu, sa presupunem ca resursa n discutie este o
imprimanta si mai multe procese doresc s-o utilizeze. De fiecare data cnd un proces cere sa utilizeze
imprimanta, sistemul de operare i satisface cererea, nsa n loc sa-l conecteze la imprimanta, sistemul de
operare l conecteaza la un driver care stocheaza pe disc informatiile ce trebuie tiparite, fara s-o trimita la
imprimanta. Astfel, fiecare proces, creznd ca are acces la imprimanta, se executa n mod normal. Mai
trziu, cnd imprimanta este libera, sistemul de operare poate transfera datele de pe disc la imprimanta, n
acest mod sistemul de operare a facut ca resursa nepartajabila sa apara ca partajabila, crend iluzia
existentei mai multor imprimante. Tehnica de memorare a datelor si de trimitere a lor la iesire ntr-un
moment ulterior, mai convenabil, poarta numele de spooling si este o tehnica destul de raspndit a n
cadrul sistemelor de operare.
Desigur, atunci cnd procesele intra n competitie pentru resursele unui calculator pot surveni si
alte probleme. De exemplu, un administrator de fisiere permite de regula mai multor procese accesul la
acelasi fisier pentru a citi date din el, dar pot sa apara conflicte daca mai multe procese ncearca simultan
sa modifice fisierul. De aceea, un administrator de fisiere poate aloca accesul la fisiere n conformitate cu
cerintele proceselor, permitnd mai multor procese accesul simultan pentru citire, dar numai unui singur
proces dreptul de scriere la un moment dat. Alte sisteme pot sparge fisierul n mai multe parti, astfel nct
diverse procese sa poata altera simultan diferite parti ale fisierului. Totusi, ramn nca de rezolvat alte
probleme. De exemplu, cum ar trebui avertizate acele procese care cer acces la un fisier numai pentru a
citi date ca un proces care are dreptul de scriere modifica fisierul?

5. RETELE DE CALCULATO ARE

La nceput, o retea tipica era compusa din calculatoare izolate care nu puteau face mare lucru n
plus fata de transferul fisierelor pe linii telefonice utiliznd programe integrate n sistemele de operare sub
forma de software utilitar. Astazi, o mare parte dintre functiile de administrare a retelei sunt nca
implementate sub forma de software utilitar, cu toate ca sistemele de operare moderne, proiectate special
n eventualitatea lucrului cu retelele de calculatoare, ncep sa nglobeze multe dintre aceste caracteristici.
De exemplu, implementarea software a suitei de protocoale TCP/IP (pe care o vom prezenta mai trziu n
acest capitol) este furnizata astazi ca parte componenta a sistemului de operare UNIX. n acest subcapitol
si n urmatorul vom prezenta unele dintre subiectele asociate acestui domeniu al sistemelor de operare,
domeniu aflat n plina dezvoltare.

Clasificarea retelelor
Fiecare retea de calculatoare se ncadreaza ntr-una din urmatoarele categorii: retele locale de
calculatoare (Local Area Networks - LAN) si retele de arie larga (Area Networks - WAN). O retea
locala consta de obicei dintr-un grup de calculat plasate ntr-o singura cladire sau ntr-un complex de
cladiri. De exemplu, calculatoarele utilizate ntr-un campus universitar sau ntr-o fabrica pot fi conectate
ntr-o retea locala. O retea WAN cuprinde calculatoare care se pot afla n diverse colturi ale unui oras sau
ale lumii. Diferenta principala dintre retelele locale si cele de arie larga tine de tehnologiile utilizate
pentru stabilirea cailor de comunicatie. (De exemplu, legaturile prin satelit sunt adecvate pentru retele
WAN, dar nu si pentru retele LAN). n prezent, programele care trateaza aceste diferente sunt izolate de
regula ntr-o mica parte a pachetului software global de retea, asa ca din punct de vedere softwar e
deosebirile dintre retelele locale si cele de arie larga devin din ce n ce mai nesemnificative.
Alt criteriu de clasificare a retelelor de calculatoare este alcatuirea retelei din hardware si
software produs de un furnizor unic sau implementarea ei ca un conglomerat de produse de la diversi
fabricanti. Retelele din primul tip sunt denumite uneori retele nchise (sau retele brevetate), iar cele din al
doilea tip sunt cunoscute sub numele de retele deschise. (De fapt, termenul deschis se refera la faptul ca
specificatiile pentru componentele retelei sunt deschise pentru public, ceea ce conduce la compatibilitatea
dintre produse ale diferitilor furnizori, implicndu-se astfel faptul ca reteaua consta din dispozitive si
programe din surse aflate n competitie). Retelele nchise sunt o prezenta mult mai obisnuita n cadrul
retelelor locale, deoarece n acest caz ntreaga retea este utilizata de regula de catre o singura organizatie,
n schimb, retelele de arie larga tind sa fie retele deschise, deoarece includ adesea organizatii diferite,
fiecare dintre ele avnd propriul sau echipament. Reteaua Internet este un sistem deschis. ntr-adevar

14
comunicatia prin Internet este realizata prin intermediul unui ansamblu deschis de standarde, cunoscut
sub numele de suita de protocoale TCP/IP
1
, despre care vom discuta n subcapitolul urmator.
O alta metoda de clasificare a retelelor de calculatoare se bazeaza pe topologie, adica pe modul n
care sunt conectate calculatoarele. Figura 10 reprezinta cteva dintre topologiile uzuale: inel (ring), n
care calculatoarele sunt conectate circular; magistrala (bus), n care calculatoarele sunt conectate printr-o
linie de comunicatie comuna, denumita magistrala; stea, n care o masina serveste drept conector (hub) la
care sunt cuplate toate celelalte calculatoare; si topologie neregulata, n care calculatoarele sunt conectate
ntr-un mod aparent aleator. Topologia neregulata este frecventa n cazul retelelor de arie larga, n timp ce
topologiile de tip inel si magistrala se ntlnesc de obicei n mediile locale, n care realizarea retelelor
cade de obicei sub o autoritate unica.

(a) Topologie de tip inel

(b) Topologie de tip magistrala


(c) Topologie de tip stea

(d) Topologie neregulata (retea)

Figura 1.9 Topologii de retele de calculatoar e

Reteaua Internet
Reteaua Internet este o retea de retele care s-a dezvoltat de-a lungul timpului, nceputurile sale se
leaga de un program de cercetare initiat n anul 1973 de catre Defense Advanced Research Projects
Agency (DARPA). Scopul acestui program l constituia dezvoltarea abilitatii de conectare a diferitelor
retele de calculatoare astfel nct ele sa poata functiona ca o singura retea. n prezent, Internet reprezinta o
combinatie de retele WAN si retele LAN continnd o magistrala alcatuita din cai de comunicatie de mare
viteza ntre diversele zone ale Statelor Unite ale Americii. Pentru conectarea la aceasta magistrala a altor
retele, grupate de obicei pe o arie mult mai restrnsa, se utilizeaza calculatoare special proiectate,
denumite routere (routers). La rndul lor, aceste retele sunt conectate prin intermediul altor routere cu
alte retele. n acest mod s-a dezvoltat o retea ce contine milioane de calculatoare, fiecare dintre ele
purtnd numele de gazda (host), raspndite n lumea ntreaga; reteaua continua sa se dezvolte, noi
calculatoare adaugndu-i-se n fiecare zi.

Adresarea n Internet
Din punct de vedere conceptual, Internet poate fi considerat o colectie de grupuri de retele,
cunoscute sub numele de domenii (figura 1.10), fiecare dintre aceste domenii constnd din acele retele

1
Acest fir comun stabileste domeniul retelei Internet. Cu toate acestea, definitia este contrazisa de faptul ca
organizatii care detin retele brevetate sunt conectate prin intermediul retelei Internet cu ajutorul unor calculatoare ce
poarta numele de porti (gateway), care fac conversia ntre protocolul TCP/TP si cele utilizate de reteaua brevetata
respectiva. Astfel, termenul de Internet este folosit uneori cu referire la un sistem mai larg dect cel specificat prin
definitia de mai sus.

15
care sunt utilizate de catre o singura organizatie, cum ar fi o universitate, o firma sau o institutie
guvernamentala. Fiecare domeniu este un sistem autonom, care poate fi configurat asa cum doreste
autoritatea locala, uneori chiar ca un ansamblu global de retele WAN.

Figura 1.10 Gruparea retelelor locale n domenii

Adresa unui calculator (gazda) din Internet consta dintr-un sir de biti (avnd n mod curent o
lungime de 32 de biti) ce contine doua parti - o parte care precizeaza domeniul n care este inclus
calculatorul gazda si o parte care identifica adresa gazdei n cadrul domeniului. Partea din adresa care
defineste domeniul, identificatorul de retea (network identifier), este atribuita de catre InterNIC
(Internet Network Information Center) la crearea domeniului si este nregistrata. Acest proces de
nregistrare asigura faptul ca fiecare domeniu din Internet are un identificator unic de retea. Partea din
adresa care defineste un calculator gazda individual din cadrul unui domeniu, adresa gazdei (host
address), este atribuita de catre autoritatea locala. De exemplu, identificatorul de retea alocat editurii
Addison Wesley Longman, Inc. este 192.207.177 (identificatorii de retea sunt scrisi n mod uzual n
notatie zecimala cu punct). La rndul lui, un calculator din cadrul acestui domeniu va avea o adresa de
tipul 192.207.177.133, ultimul octet al adresei reprezentnd adresa calculatorului gazda.
Oamenii lucreaza nsa mai greu cu adrese sub forma unui sir de biti. Din aceasta cauza, InterNIC
a alocat n plus fiecarui domeniu o adresa simbolica unica - numele domeniului (domain name). Fiecare
autoritate locala este apoi libera sa extinda numele domeniului pentru a obtine nume semnificative pentru
calculatoarele gazda din domeniul respectiv. De exemplu, numele domeniului editurii Addison Wesley
Longman, Inc. este aw. com, iar un calculator gazda din cadrul acestui domeniu ar putea fi identificat sub
numele mozart. aw. com.
Notatia cu puncte utilizata n adresele simbolice nu are legatura cu notatia cu puncte utilizata la
reprezentarea adresei sub forma unui sir de biti. Partile componente ale adresei simbolice precizeaza
localizarea calculatorului gazda ntr-un sistem ierarhizat. n particular, adresa mozart. aw. com specifica
un calculator gazda cunoscut sub numele de mozart , aflat n interiorul institutiei aw din categoria
institutiilor comerciale com. n cazul unor domenii foarte mari, autoritatea locala poate decide spargerea
lor n subdomenii, n acest caz adr esa simbolica a calculatoarelor gazda devenind mai lunga. De exemplu,
sa presupunem ca Nowhere University are alocat numele de domeniu nu. edu si decide sa-si mparta
domeniul n subdomenii. Atunci, un calculator gazda de aici ar putea avea o adresa de forma laststop.
compsc. nu. edu cu semnificatia ca gazda laststop este inclusa n subdomeniul compsc din cadrul
institutiei nu, care face parte din clasa domeniilor educationale edu.
n scopul transmiterii de mesaje ntre utilizatorii individuali ai retelei Internet (un sistem cunoscut
sub numele de e-mail, prescurtarea pentru posta electronica - n engleza, electronic mail), fiecare
autoritate locala poate atribui o adresa de e-mail fiecarui utilizator autorizat din cadrul domeniului sau.
Aceasta adresa consta dintr-un sir de caractere ce identifica utilizatorul, urmat de caracterul @ si apoi de
numele de domeniu alocat calculatorului care are sarcina de gestionare a activitatilor de posti electronica

16
din cadrul domeniului. Astfel, adresa de e-mail a unui utilizator individul care lucreaza la editura Addison
Wesley Longman, Inc. ar putea arata astfd wshakespeare@mozart.aw.com. Cu alte cuvinte, calculatorul
gazda cu numit mozart din cadrul domeniului aw.com administreaza posta electronica a utilizatorului
wshakespeare.
Autoritatea locala a fiecarui domeniu este raspunzatoare de pastrarea unui director care sa contina
adresele simbolice si adresele numerice Internet corespondente ale acelor calculatoare gazda care trebuie
sa fie accesibile din exteriorul domeniului. Acest director este implementat pe un calculator dedicat din
cadrul domeniului, denumit server de nume (name server), care raspunde cererilor referitoare la
informatii despre adrese. mpreuna, toate serverele de nume din cadrul retelei Internet constituie un
sistem, distribuit de directoare, utilizat pentru convertirea adreselor din forma simbolica n formele
numerice echivalente. n particular, atunci cnd un utilizator solicita transmiterea unui mesaj la o anumita
destinatie specificat n forma simbolica, este folosit sistemul de servere de nume pentru a converti adres a
simbolica n sirul de biti echivalent compatibil cu software-ul Internet. Aceasta operatie se efectueaza n
mod normal ntr-o fractiune de secunda.
Atunci cnd o organizatie decide sa se conecteze la Internet, ea poate fie devina o parte a unui
domeniu existent, fie sa gaseasca un loc n Internet n care poata plasa un router si sa-si stabileasca
propriul domeniu. Avantajul crearii unui n domeniu este acela ca organizatia are autoritate locala asupra
caracteristicilor domeniului, n loc sa fie supusa autoritatii unei alte organizatii. La crearea unui domeniu
nou, organizatia trebuie sa se nregistreze la InterNIC pentru a obtine un identificator si un nume de
domeniu.
Un individ obtine de obicei acces la Internet devenind membru al unei organizatii care
controleaza un domeniu. Multe firme ofera persoanelor private acces la Internet pe baze comerciale.
Aceste firme, care de obicei dispun de propriul domeniu n Internet, furnizeaza pe calculatoarele lor
programe care permit clientilor sa se conecteze utiliznd liniile telefonice. Prin intermediul unei asemenea
conexiuni, un client poate accede la serviciile Internet la care a subscris.

World Wide Web
Pe lnga faptul ca este un mijloc de comunicare prin e-mail, reteaua Internet a devenit un mediu
de transmitere a informatiilor prin intermediul documentelor de tip hipertext (hypertext). Documentele
hipertext contin cuvinte, expresii sau imagini specifice care sunt legate la alte documente. Cititorul unui
document hipertext poate accede dupa dorinta la aceste documente corespondente, de obicei indicnd si
apoi executnd un clic de mouse asupra elementelor de legatura sau utiliznd tastele sageti. De exemplu,
sa presupunem ca ntr-un document hipertext apare urmatoarea propozitie: Orchestra a executat
stralucitor 'Bolero-ul' lui Maurice Ravel si numele Maurice Ravel este legat la alt document - care
furnizeaza probabil informatii despre compozitor. Cititorul poate decide sa studieze materialul asociat
deplasnd cursorul deasupra numelui Maurice Ravel si apoi apasnd butonul mouse-ului.
Astfel, cititorul documentelor hipertext poate explora documentele aflate n legatura, urmarind
continuarea unei idei dintr-un document n altul. Prin realizarea le gaturilor ntre documente, se creeaza o
pnza (web) ntretesuta de informatii aflate pe diferite calculatoare. Astfel, pnza care s-a dezvoltat pe
Internet este distribuita pe ntregul glob si este cunoscuta sub numele de World Wide Web (prescurtat
WWW sau Web).
Pachetele de programe care-i asista pe cititorii documentelor hipertext n parcurgerea acestora se
mpart n doua categorii: programe care joaca rolul de clienti si programe care joaca rolul de servere.
Clientul este rezident pe calculatorul cititorului si raspunde de obtinerea materialelor solicitate de cititor si
prezentarea acesta informatii ntr-o maniera organizata. Programul client este acela care furnizeaza
interfata cu utilizatorul care-i permite cititorului sa navigheze (browse) prin Web. De aceea, adesea
programul client este denumit browser, sau uneori browser Web. Un program server este rezident pe un
calculator care contine documente la care se poate obtine acces. Sarcina sa este sa furnizeze, la cererea
clientilor, acces la documentele stocate n calculator. Pe scurt, un utilizator capata acces la documente
hipertext prin intermediul unui browser rezident pe calculatorul sau, iar acest browser satisface cererile lui
solicitnd serviciile serverelor hipertext distribuite n Internet.
Cteva dintre browserele disponibile astazi sunt Lynx, Mosaic si Netscape Navigator. Ele difera
n ceea ce priveste tipul documentelor cu care pot lucra. De exemplu, browserul Lynx este proiectat sa
opereze doar cu documentele hipertext clasice, ce constau numai din text. Alte browsere pot lucra cu
documente ce contin sunete, imagini si clipuri video. Aceste documente poarta numele de documente
hipermedia (hypermedia), pentru a se deosebi de documentele hipertext clasice.

17
Crearea de documente hipertext necesit a o metoda de stabilire a legaturilor ntre documente. n
acest scop, fiecare document este identificat printr-o adresa unica, denumita adresa URL (uniform
resource locator) , prin intermediul careia un browser sa poata contacta serverul potrivit si sa solicite apoi
documentul dorit. n figura 12 este descrisa o adresa URL tipica, n cazul multora dintre calculatoarele
gazda din Internet, un anumit document este desemnat ca document implicit. Daca exista documentul
implicit poate fi apelat printr-o adresa URL scurta, care contine numai protocolul si numele simbolic al
calculatorului gazda.















Figura 1.11 Adresa URL tipica

Un document hipertext este similar unui document clasic de tip text, prin faptul ca textul pe care-l
contine este codificat caracter cu caracter utilizndu-se un sistem cum ar fi ASCII. Diferenta este aceea ca
documentul hipertext contine n plus si marcaje speciale, care - printre altele - permit autorului sa indice
care elemente din document sunt legate la alte documente si sa furnizeze adresele URL necesare pentru
efectuarea acestor legaturi. Acest sistem de marcaje este cunoscut sub numele de Limbaj de Marcare
Hipertext (Hypertext Markup Language - HTML). Utiliznd elementele HTML, autorul unui
document hipertext descrie informatiile necesare unui browser pentru a-si duce sarcinile la bun sfrsit.

Probleme de securitate
Atunci cnd un calculator este conectat la o retea, el devine accesibil multor utilizatori potentiali.
Problemele care apar n acest caz se mpart n doua categorii: accesul neautorizat la informatii si actele de
vandalism. Una dintre solutiile pentru rezolvarea problemei accesului neautorizat o reprezinta utilizarea
parolelor, fie pentru controlul accesului la calculatorul propriu-zis, fie pentru controlul accesului la
anumite date. Din pacate, parolele nu ramn ntotdeauna secrete. Cea mai raspndita metoda de a le afla
este prin ncercari. De exemplu, s-ar putea ca utilizatorii care se tem ca-si vor uita parola sa utilizeze ca
parola propriul nume sau date importante, precum cea de nastere; aceste parole sunt usor de depistat.
ntr-o ncercare de a se opune acestui joc de-a ghicitul parolei, sistemele de operare pot fi
proiectate astfel nct sa raporteze orice avalansa de parole incorecte sau sa comunice fiecarui utilizator la
nceputul fiecarei noi sesiuni de lucru data si ora la care a fost folosit ultima data contul respectiv. Aceasta
metoda permite utilizatorilor sa detecteze orice ntrebuintare neautorizata a conturilor lor. O metoda de
aparare mai sofisticata mpotriva celor care ncearca sa ghiceasca parolele este aceea de a se crea iluzia
succesului la introducerea parolelor false si de a se furniza intrusului informatii false, nregistrndu-se
totodata originea acestuia.
O alta solutie pentru protectia datelor mpotriva accesului neautorizat o reprezinta criptarea lor, n
ideea ca n acest fel chiar daca intrusul obtine datele, informatiile continute ramn inaccesibile, n acest
scop au fost dezvoltate si continua sa fie perfectionate diverse tehnici de criptare.
Problema vandalismului este ilustrata de aparitia unor afectiuni cum ar fi virusii calculatoarelor si
viermii de retea, termeni destinati mai degraba sa atraga interesul publicului dect sa identifice din punct
de vedere tehnic un anumit tip de vandalism, n general, un virus este un segment de program care se
ataseaza la alte programe din calculator. De exemplu, un virus se poate insera la nceputul unui program
deja existent n sistem, astfel nct la fiecare executie a programului gazda sa seexecute mai nti virusul.
Atunci cnd este executat, virusul poate realiza diverse activitati daunatoare usor de remarcat sau poate
cauta pur si simplu alte programe la care sa ataseze copii ale sale. Daca un program infectat este transferat
http://mozart.aw.com/authors/Shakespeare/Julius_Caesar.html
Numele documentului
Calea de directoare care precizeaza localizarea
documentului n cadrul sistemului de fisiere de pe
calculatorul gazda
Numele simbolic al calculatorului gazda care contine documentul
Protocolul necesar pentru accesul la document. n acest caz este vorba de
protocolul de transfer hipertext (hypertext transfer protocol http).

18
la alt calculator, fie prin intermediul unei retele de calculatoare, fie pe discheta, virusul ncepe sa infecteze
programele noului calculator imediat ce programul transferat este executat. Astfel, virusii migreaza de la
un calculator la altul, n unele cazuri, virusii sunt proiectati astfel nct sa se raspndeasca n alte
programe pna la aparitia unei conditii predeterminate, cum ar fi o anumita data calendaristica, cnd
efectueaza diferite operatii daunatoare. Acest comportament sporeste posibilitatea ca virusul sa se
raspndeasca pe numeroase calculatoare nainte de a se manifesta.
Termenul de vierme se refera de obicei la un program autonom care se transfera pe sine nsusi
ntr-o retea de calculatoare, ramne rezident n calculatoarele din retea si trimite copii ale sale n retea. Ca
si n cazul virusilor, aceste programe pot fi realizate astfel nct sa se multiplice sau sa efectueze alte acte
de vandalism.
Pe masura ce popularitatea retelelor de calculatoare creste, pagubele potentiale produse de accesul
neautorizat la informatii si de actele de vandalism cresc si ele. Acest fapt ridica multe ntrebari legate de
oportunitatea plasarii de informatii strict secrete pe un calculator conectat ntr-o retea, de responsabilitatea
furnizarii unei protectii inadecvate a informatiilor, precum si de responsabilitatea pentru actele de
vandalism. De aceea, problemele de etica si de legislatie asociate acestor subiecte i promit sa genereze o-
dezbatere aprinsa n viitor.

6. PROTOCOALE DE RETEA

Ansamblul de reguli care guverneaza comunicatia dintre diferite componente ale unui calculator
poarta numele de protocol, facndu-se astfel analogia cu protocoale utilizate n cadrul societatii pentru
controlul interactiunilor dintre oameni. n cadrul unei retele de calculatoare, protocoalele definesc
detaliile fiecarei activitati, ntre modurile n care sunt adresate mesajele, n care se deleaga de la un
calculator la altul dreptul de a transmite mesaje si n care sunt tratate operatiile de mpachetare a
mesajelor pentru transmisie si de despachetare a acestora la receptie. Sa ncepem a studia protocoalele
care controleaza dreptul unui calculator de a-si trimite n retea propriile mesaje.

Drepturi de control al transmisiei
Una dintre solutiile utilizate pentru coordonarea dreptului de transmitere a mesajelor este
protocolul inel cu jeton (token ring) pentru retelele cu topologie n inel. n cadrul acestui protocol,
fiecare calculator transmite mesajele numai spre dreapta receptioneaza numai din partea stnga, asa
cum se poate vedea n figura 13. Un mesaj din partea unui calculator catre alt calculator trebuie deci
transmis n retea n sensul invers acelor de ceasornic pna cnd ajunge la destinatie, n acel moment,
calculatorul destinatar si pastreaza o copie a mesajului si trimite mai departe n inel alta copie. Cnd
copia ajunge la calculatorul care a trimis mesajul, acesta stie ca mesajul a ajuns la destinatie si elimina
mesajul din inel. Desigur, functionarea sistemului depinde de colaborarea dintre calculatoare. Daca
fiecare calculator va insista sa-si trimita propriul mesaj, n loc sa le retransmita pe cele emise de celelalte,
sistemul nu va functiona.


Figura 1.12 Comunicatia n cazul unei topologii n inel

19

Pentru a rezolva aceasta problema, de-a lungul inelului este transmis un sir unic de biti, denumit
jeton (token). Posesia acestui jeton da unui calculator dreptul de a-si transmite propriile mesaje; fara
jeton, unui calculator i se permite numai sa transmita mai departe mesajele primite din inel. n mod
normal, fiecare calculator transmite jetonul de la stnga la dreapta similar transmiterii mesajelor. Daca
totusi calculatorul care receptioneaza jetonul are mesaje de transmis n inel, el va retine jetonul si va
transmite un mesaj. Dupa ce acest mesaj si completeaza ciclul n jurul inelului, calculatorul transmite
jetonul urmatorului calculator din inel. La fel, atunci cnd urmatorul calculator receptioneaza jetonul, el
poate sa-l transmita imediat mai departe sau sa-si emita mai nti propriul mesaj. Astfel, toate
calculatoarele din retea au sanse egale sa-si transmita propriile mesaje, n timp ce jetonul se roteste de-a
lungul inelului.
Un alt protocol pentru controlul dreptului de transmisie este ntlnit la Ethernet, care este o
versiune foarte raspndita a topologiei de retea de tip magistrala. ntr-o retea Ethernet, dreptul de
transmisie a mesajelor este controlat de un protocol cunoscut sub numele de CSMA/CD (Carrier Sense,
Multiple Access with Collision Detection - acces multiplu cu detectarea purtatoarei si a coliziunilor).
Acest protocol impune ca fiecare mesaj emis de orice calculator sa fie transmis tuturor calculatoarelor de
pe magistrala (figura 14). Fiecare calculator monitorizeaza toate mesajele, dar le pastreaza numai pe cele
care-i sunt adresate. Pentru a transmite un mesaj, un calculator asteapta pna cnd magistrala este libera,
moment n care ncepe transmisia, continund sa asculte magistrala. Daca alt calculator ncepe de
asemenea sa transmita, ambele calculatoare vor detecta coliziunea si dupa un scurt interval de pauza cu
durata aleatoare vor ncerca din nou sa transmita. Rezultatul este un sistem similar cu cel utilizat de un
mic grup de oameni care discuta ntre ei. Daca doua persoane ncep sa vorbeasca simultan, ambele se
opresc. Diferenta este ca cele doua persoane pot continua apoi invitndu-se reciproc sa continue: Ma
scuzati, continuati va rog., Nu, nu, dupa dumneavoastra, n timp n cazul protocolului CSMA/CD
fiecare calculator va ncerca pur si simplu sa transmita din nou.


Figura 1.13 Comunicatia n cadrul unei retele cu topologie de tip magistrala

Dezvoltarea unui software de retea structurat pe niveluri
Una dintre principalele sarcini ale unui software de retea este sa furnizeze instrumentele abstracte
pentru transferul mesajelor n cadrul retelei, ntr-adevar, asemenea unelte formeaza infrastructura pe care
se bazeaza, modelul client/server. Interesul nostru pentru studierea structurii acestui software este dublu:
ntelegerea ei este utila pentru ntelegerea retelei Internet, iar solutia structurarii pe niveluri exemplifica
multe dintre j principiile pe care se bazeaza o mare parte din sistemele software.

Analogie (exemplul este citat din [Gleen8])
Vom considera pentru nceput urmatoarea analogie: sa presupunem ca firma la care lucrati vrea sa
livreze piese de schimb unui client aflat n alt oras. Sarcina dumneavoastra este sa strngeti aceste piese si
sa le mpachetati conform specificat iei companiei de expeditii. Livrati apoi pachetul, cu adresa
destinatarului complet corect, companiei de expeditii pe care ati ales-o. n acest moment v-ati ndeplinit n
ntregime sarcina ncredintata; responsabilitatea n ceea ce priveste livrarea pieselor a fost trecuta firmei
de transport.
Desigur, compania de transport nu vede aceasta sarcina ca pe transportarea unor piese de schimb.
Sarcina ei este sa transporte un colet avnd o anumita greutate si anumite dimensiuni la o anumita adresa,
ntr-un anumit interval de timp. Cta vreme respecta aceste specificatii, expeditorul poate opta ntre a
trimite pachetul cu camionul, trenul sau avionul. Astfel, coletul dumneavoastra, alaturi de altele, poate fi

20
plasat ntr-un container conform regulilor transportului aerian. Conformndu-se specificatiilor companiei
aviatice, firma de expeditie transfera acesteia respons abilitatea pentru piesele de schimb din colet.
n acest punct, compania de aviatie are sarcina de a transporta un container mare de la un aeroport
la altul, n functie de ncarcatura, ea poate decide sa plaseze acel container ntr-un zbor direct, sa-l trimita
printr-un zbor cu escala sau sa subcontracteze transportul containerului unei alte linii aeriene.
n oricare dintre aceste cazuri, linia aeriana va livra la sfrsit containerul firmei de expeditii din
orasul de destinatie, conform specificatiilor acesteia din urma. Firma de expeditii descarca containerul si
livreaza apoi coletul dumneavoastra la adresa pe care ati precizat-o.
Pe scurt, transportul unor piese se realizeaza prin intermediul unei ierarhii cu trei niveluri: nivelul
utilizatorului (al dumneavoastra si al clientului dumneavoastra), firma de expeditii si compania de aviatie.
Fiecare nivel foloseste nivelul imediat inferior ca pe un instrument abstract. (Dumneavoastra nu sunteti
preocupati de detaliile legate de activitatea firmei de expeditii, iar firma de expeditii nu este interesata de
operatiile interne din cadrul companiei aviatice.) Fiecare nivel din aceasta ierarhie este reprezentat att la
origine ct si la destinatie, sensul operatiilor de la receptie fiind invers celor de la origine. Acesta este si
cazul software-ului de control al comunicatiilor dintr-o retea, cu exceptia faptului ca de obicei exista mai
mult de trei niveluri, iar fiecare nivel, denumit strat (layer), este alcatuit dintr-un ansamblu de rutine
software, nu din persoane si firme.











Figura 1.14 Exemplul referitor la expedierea unui colet

Diviziunea muncii ntr-o ierarhie de straturi are doua consecinte importante care reprezinta
obiective comune n realizarea oricarei arhitecturi ierarhizate. n primul rnd, operatia generala poate fi
mpartita n suboperatii administrabile separat, fiecare dintre ele avnd scopuri specifice. n al doilea rnd,
arhitectura ierarhizata duce la stabilirea de frontiere bine definite ntre suboperatii, ntre ele putnd fi
implementate interfete standard. Daca se conformeaza acestora interfete standard, diferite solutii pentru
realizarea aceleiasi suboperatii pot fi schimbate ntre ele fara ca restul sistemului sa fie afectat. ntr-
adevar, solutia particulara utilizata pentru rezolvarea unei suboperatii de la un anumit nivel poate fi
utilizata ca instrument abstract n rezolvarea operatiilor de la nivelurile superioare.

Arhitectura software a retelei Internet
Cele patru niveluri ale software-ului Internet sunt prezentate n figura 1.15. Coloane din stnga
reprezinta nivelurile software utilizate de calculatorul de la originea mesajului; coloana din dreapta
reprezinta nivelurile utilizate de calculatorul de la destinatia mesajului. Ca si n analogia noastra legata de
livrarea unui colet, nivelurile software de la origine si destinatie sunt aceleasi. Sagetile din figura 16
precizeaza calea parcursa de fiecare mesaj. Ca preliminarii pentru transmisie, un mesaj poate fi mpartit n
unitati mai mici. Apoi, fiecare unitate de mesaj este mpachetata repetat de catre nivelurile software, pe
masura ce se deplaseaza n jos n coloana consta din stnga. mpachetarea consta din adaugarea de biti
suplimentari nainte si dupa fiecare unitate de mesaj. O astfel de unitate mpachetata poarta numele de
pachet. Astfel, pachetele care sunt receptionate de catre calculatorul de la destinatie sunt de fapt pachete
continute n alte pachete. Aceste pachete incluse unele n altele sunt apoi despachetate, nivel cu nivel, pe
masura ce unitatea de mesaj se propaga n sus n coloana din dreapta din figura 1.15, pna cnd unitatile
sunt n sfrsit reasamblate si livrate modulului software adecvat de la calculatorul destinatie.
Nu este ceva neobisnuit ca dimensiunea suplimentara datorata mpachetarii sa fie mai mare dect
lungimea unitatii de mesaj continute n pachet. Unitati de mesaj avnd dimensiunea de un octet sunt ceva
obisnuit, n timp ce fiecare pachet contine mai mult de 50 de biti de mpachetare. Desi n aceste conditii
transmisia poate sa para ineficienta, sistemul functioneaza foarte bine.
Dumneavoastra Client
Firma de expeditii Firma de expeditii
Companie aviatica Companie aviatica
Pachet de dimensiuni mici Pachet de dimensiuni mici
Container Container
Avion

21
Nivelul plasat cel mai sus n ierarhia software Internet este nivelul aplicatiei. El include software
care trateaza activitat ile specifice unei anumite aplicatii. De exemplu, n cazul postei electronice,
software-ul din nivelul aplicatiei stocheaza mesajele receptionate si supervizeaza transmisia mesajelor. n
cazul transferului de fisiere de la un calculator la altul, software-ul de la nivelul de aplicatie comunica cu
administratorul de fisiere pentru a obtine acces la fis ierul care trebuie transferat, precum si cu
administratorul de fisiere de la calculatorul destinatie pentru a stoca fisierul transferat n sistemul lui de
fisiere.


















Figura 1.15. Nivelurile software Internet
Trebuie sa facem diferenta dintre software-ul continut n nivelul de aplicatie din Internet si
software-ul vazut ca software de aplicatie. Desi denumirile sunt similare, nivelul de aplicatie al software-
ului pentru Internet este implementat de obicei ca un software utilitar si consta din rutine care sunt
folosite ca instrumente abstracte de catre aplicatiile obisnuite. Diferitele pachete software care permit
unui utilizator sa receptioneze si sa trimita mesaje e-mail prin intermediul unei interfete grafice se
ncadreaza n rndul clasei de aplicatii software, dar nu sunt ele nsele componente ale nivelului de
aplicatie prin Internet. Ele folosesc nsa, pentru a-si realiza sarcinile, instrumentele abstracte puse la
dispozitie de nivelul de aplicatie din Internet. Browserele Web utilizate pentru accesul la documentele
hipertext constituie alte exemple de aplicatii care recurg la serviciile oferite de nivelul de aplicatie din
Internet pentru a-si desfasura activitatea.
Nivelul transportului este utilizat de catre nivelul aplicatiei ntr-un mod foarte asemanator celui n
care a fost utilizata n exemplul de arhitectura ierarhizata prezentat anterior firma de expeditie pentru
trimiterea coletului cu piese de schimb. Aceasta nseamna ca nivelul aplicatiei preda nivelului
transportului mesajul care trebuie transmis, nsotit de adresa de destinatie. La fel cum este
responsabilitatea dumneavoastra sa furnizati o adresa compatibila cu specificatiile firmei de expeditie,
nivelul aplicatiei este raspunzator cu furnizarea unei adrese compatibile cu nivelul transportului. n acest
scop, nivelul aplicatiei trebuie sa solicite serviciile serverelor de nume din Internet pentru a coverti adrese
simbolice utilizate de oameni n adresele de retea corespondente. Dupa receptionarea mesajului si a
adresei de destinatie, nivelul transportului mparte mesajul n segmente cu dimensiunea compatibila cu
propriile sale specificatii, adauga acestor segmente numere de secventa care sa permita refacerea
mesajului original, le ataseaza adresa de destinatie si trimite apoi pachetele rezultate catre nivelul retelei.
Nivelul retelei este responsabil de propagarea corecta prin Internet pna la destinatie a pachetelor
receptionate de la nivelul transportului. El realizeaza acest lucru prin atasarea la fiecare pachet a unei
adrese intermediare de destinatie, care se determina astfel: daca destinatia finala a pachetului este n
cadrul retelei curente, adresa adaugata va fi identica cu adresa destinatiei finale; altfel, ea va fi adresa
routerului din cadrul retelei curente. Astfel, un pachet destinat unui calculator din afara retelei curente va
fi trimis la router, de unde va fi transferat ntr-o retea adiacenta. Apoi, nivelul retelei completeaza
pachetele receptionate de la nivelul transportului cu informatii suplimentare care precizeaza adresa
intermediara. Pachetele extinse sunt apoi predate nivelului legaturii.
Nivelul
aplicatiei
Nivelul
transportului
Nivelul
aplicatiei
Nivelul
retelei
Nivelul
legaturii
Nivelul
transportului
Nivelul
retelei
Nivelul
legaturii
Originea mesajului
Destinatia mesajului

22
Responsabilitatea nivelului de legatura este sa se ocupe de detaliile de comunicatie proprii retelei
particulare n care sunt plasate calculatoarele. n cazul unei retele cu protocol inel cu jeton, pentru a
efectua transmisia, nivelul legaturii trebuie sa astepte sa obtina posesia jetonului. Daca reteaua utilizeaza
protocolul CSMS/CD, nainte de a transmite nivelul legatura trebuie sa astepte pna la aparitia unui
interval de liniste pe magistrala. n plus, fiecare retea individuala din Internet poseda propriul sau sistem
de adresare, care este independent de sistemul de adresare utilizat de Internet, lucru de altfel explicabil,
daca tinem cont de faptul ca multe din ele functionau deja n momentul n care administratorii lor au decis
atasarea lor la Internet. De aceea, nivelul legaturii mai trebuie sa converteasca n sistemul de adresare
local adresele Internet atasate pachetelor si sa le adauge la pachet, sub forma unui strat suplimentar de
mpachetare.
Ca si n cazul analogiei cu expedierea unui colet cu piese de schimb, fiecare nivel din ierarhia
software Internet joaca de asemenea un rol si n procesul de receptionare a mesajelor, rol ce consta n
mare n inversarea operatiilor facute de catre nivelurile de la originea mesajelor. Dupa ce nivelul pentru
legatura de la destinatie receptioneaza pachetele din reteaua de comunicatie, el elimina nvelisul lor
(adresa n forma compatibila cu reteaua locala), atasat pachetului de nivelul legaturii de la originea
mesajului, si apoi livreaza pachetul ramas catre nivelul sau pentru retea.
De fiecare data cnd nivelul retelei primeste un pachet de la nivelul pentru legatura asociat lui, el
detaseaza adresa Internet intermediara atasata de catre corespondentul lui de la emisie si studiaza adresa
destinatiei finale, continuta n pachet. Daca aceasta coincide cu propria sa adresa, nivelul retelei livreaza
pachetul catre nivelul pentru transport asociat lui; altfel, nivelul retelei stie ca pachetul trebuie trimis mai
departe n Internet. n acest caz, el rempacheteaza pachetul, adaugndu-i noua adresa intermediara, si-i
da drumul mai departe, trimitndu-l nivelului legaturii. Astfel, pachetele sar de la un calculator la altul
pna cnd ating destinatia finala. n timpul transferului, cade n sarcina nivelului retelei sa determine
destinatia urmatorului salt.
Pentru a sprijini procesul de readresare, nivelul retelei memoreaza un tabel de dirijare (routing)
care contine adresele destinatiilor finale cu care s-a lucrat recent, precum si adresele intermediare la care a
fost trimis fiecare dintre pachete. Diferitele niveluri retea din Internet si comunica periodic datele din
tabelele lor de dirijare, astfel ca informatiile despre adresele de propagare a mesajelor se distribuie treptat
n Internet. Fiecare nivel pentru retea pastreaza numai acele informatii despre care crede ca-i sunt
necesare si sterge periodic datele vechi din tabelul sau de dirijare, pentru ca acest tabel sa nu devina prea
mare. De aceea, continutul tabelelor de dirijare din Internet este dinamic si este deci posibil ca pachete
care reprezinta diferite parti ale aceluiasi mesaj sa ajunga la destinatie parcurgnd trasee diferite prin
retea.
Daca nivelul retelei despacheteaza un mesaj primit si descopera ca adresa din pachetul inclus este
adresa calculatorului sau, el livreaza continutul pachetului catre nivelul pentru transport asociat lui. n
consecinta, numai nivelurile pentru legatura si pentru retea sunt implicate n trimiterea mai departe a
pachetelor destinate altor calculatoare. Nivelul transportului si nivelul aplicatiei sunt scutite de acest efort,
ele opernd numai asupra pachetelor adresate calculatorului pe care sunt rezidente (figura 1.16). n
momentul n care nivelul transportului primeste pachete de la nivelul retelei, el extrage continutul
segmentelor de mesaj si reasambleaza mesajul original pe baza numerelor de secventa alocate
segmentelor de catre nivelul pentru transport de la origine. Odata ce mesajul este complet, nivelul
transportului l livreaza nivelului sau de aplicatie, unde acestuia i se poate acorda atentia cuvenita.

















Figura 1.16 Propagarea unei unitati de date prin Internet pe o cale care contine doua calculatoare
intermediare
Aplicatie
Transport
Retea
Legatura


Retea
Legatura


Retea
Legatura
Aplicatie
Transport
Retea
Legatura

23
n concluzie, comunicatia prin Internet implica interactiunea dintre diferite niveluri software
rezidente pe multe dintre calculatoarele din cadrul sistemului. n acest context, faptul ca timpul de raspuns
din Internet este de ordinul milisecundelor este uimitor. ntr-adevar, o mare parte din tranzactii par sa se
produca instantaneu.

Protocolul TCP/IP
Cererea de retele deschise a generat necesitatea unor standarde publice la care sa se poata alinia
furnizorii de echipamente si programe, astfel nct produsele lor sa functioneze corect mpreuna. Unul
dintre standardele rezultate este modelul de referinta OSI (Open System Interconnection), produs de
International Standard Organization (ISO). El se bazeaza pe o ierarhie cu sapte niveluri, spre deosebire de
arhitectura cu patru niveluri utilizata n Internet. Datorita autoritatii detinute de International Standard
Organization, el a devenit un model citat adesea, dar nu a fost implementat nca, n primul rnd din cauza
ca nca dinainte de stabilirea lui, suita de protocoale TCP/IP era deja realizata, implementata, mediatizata
pe scara larga si verificata ca un sistem de protocoale potrivit pentru Internet.
Suita de protocoale TCP/IP este un ansamblu de protocoale ce defineste ierarhia pe patru niveluri
utilizata n Internet. De fapt, TCP (Transport Control Protocol) si IP (Internet Protocol) sunt numele a
doar doua din protocoalele ansamblului asa ca utilizarea termenului de suita de protocoale TCP/IP
pentru ntreaga serie nu este riguros exact. Mai precis, TCP defineste o versiune a nivelului transportului.
Spunem o versiune, deoarece suita de protocoale TCP/IP pune la dispozitie doua cai de implementare a
nivelului pentru transport, cea de a doua fiind definita de UDP (User Datagram Protocol). Acest lucru este
analog situatiei n care, expediind un colet cu piese de rezerva unui client, trebuie sa alegetintre diverse
firme de expeditie, fiecare dintre ele oferind acelasi serviciu de baza, dar avnd propriile sale
caracteristici specifice. Astfel, n functie de calitatea par ticulara a serviciului cerut, nivelul aplicatiei poate
alege sa trimita datele fie prin intermediul versiunii TCP, fie prin intermediul versiunii UDP a nivelului
pentru transport.
Exista doua diferente majore ntre TCP si UDP. Prima este aceea ca nainte de a transmite datele,
un nivel pentru transport bazat pe TCP trimite un mesaj nivelului pentru transport de la destinatie,
anuntndu-l ca-i va trimite niste date si preciznd care software din nivelul aplicatiei trebuie sa le
receptioneze. Dupa aceea, el asteapta confirmarea primirii acestui mesaj nainte de a trimite segmentele
mesajului propriu-zis. De aceea se spune ca un nivel pentru transport TCP stabileste o conexiune nainte
de a transmite datele. Un nivel de transport bazat pe UDP nu stabileste o astfel de conexiune nainte de a
transmite datele. El le transmite pur si simplu la adresa care i -a fost furnizata, dupa care nu se mai
intereseaza de ele. Din punctul lui de vedere, nu conteaza nici macar daca masina de la destinatie este sau
nu functionala. Din acest motiv, UDP este denumit protocol fara conexiune.
A doua diferenta semnificativa dintre TCP si UDP este aceea ca nivelurile de transport TCP de la
origine si destinatie coopereaza ntre ele utiliznd ncuviintari si retransmisii ale segmentelor de mesaj,
pentru a confirma transferul cu succes al tuturor segmentelor la destinatie. De aceea, TCP este considerat
un protocol sigur, n timp ce despre UDP, care nu ofera asemenea servicii de retransmisie a datelor, se
spune ca este un protocol nesigur. Acest lucru nu nseamna ca UDP este o alegere gresita. ntr-adevar, un
nivel de transport bazat pe UDP este mai simplu dect un nivel bazat pe TCP, si daca o aplicatie este
pregatita sa trateze posibilele erori ale UDP, aceasta optiune se poate dovedi mai buna.
IP reprezinta protocolul Internet pentru nivelul retelei. Una dintre caracteristicile sale este aceea
ca de fiecare data cnd un nivel pentru retea IP pregateste un pachet pentru a-l livra nivelului legaturii, el
asociaza acelui pachet o valoarea denumita contor de salt sau durata de viata. Aceasta valoare reprezinta
numarul maxim de retransmiteri ale pachetului n ncercarea acestuia de a-si gasi drumul prin Internet
catre destinatia finala. De fiecare data cnd un nivel de retea IP retransmite un pachet, el scade cu o
unitate controlul de salt asociat. Utiliznd aceasta informati, nivelul retelei poate proteja reteaua Internet
de pachetele care cicleaza la nesfrsit prin sistem. Cu toate ca reteaua Internet continua sa creasca zi de zi,
un contor de salt initial cu valoarea de 64 ramne mai mult dect suficient pentru a permite unui pachet
sa-si gaseasca drumul spre destinatie prin amalgamul de retele LAN, WAN si routere.

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