You are on page 1of 23

CAPITOLUL 1

SISTEME DE OPERARE SI RETELE DE CALCULAT OARE

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 pâna 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 când 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 rândul.
Î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 înmâneze operatorului (împreuna cu datele
necesare si specificatiile privind executia sa) si sa revina mai târziu 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.

1
Lucrari: programe, date si
directive de executie Rezultate

Domeniul
utilizatorului

Domeniul Coada de Executia


calculatorului lucrari lucrarii

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 rând 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 constând î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 când 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 termin alelor 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 pâna a doua zi
rezultatele muncii lor, utilizatorii doreau sa obtina un raspuns rapid comunicând cu calculatorul prin
intermediul unei statii de lucru aflata la distanta.
Programe, date si directive de
executie si rezultate
Domeniul
utilizatorului

Domeniul Executia
calculatorului programului

Figura 1.2. Prelucrare interactiva


2
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 încât sa parcurga pe
rând 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 sfârsitul 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 pâna la treizeci de
utilizatori simultani.
În prezent, partajarea timpului este utilizata atât în sistemele cu un singur procesor, cât 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 când ne gândim 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 asteptând 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 decât î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 raspândite. Î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, raspândite î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 continând 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
3
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, decât ca o clasificare general acceptata.
Software

Aplicatie Sistem

Utilitar Sistem de operare

Interfata Nucleu

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
4
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 întâlnim 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 mâna 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 decât 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 ramâne neschimbat, modificându-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,
începând de la calculatoare proiectate pentru aplicatii pentru întreprinderi mici si mijlocii si ajungând la
calculatoare pentru afaceri de mari dimensiuni. Toate calculatoarele erau livrate având 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.

5
Î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, simplificând 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 când interfata realizata de o firma devine populara,
este avantajos pentru concurenta sa-si realizeze sistemele astfel încât 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, plasând fisierele referitoare
la acelasi lucru în acelasi director. Mai mult chiar, permitându-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 ind ica drumul
pâna 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
(utilizând 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 câte o activitate la un moment dat. În aceste situatii, programul care executa activitatea
6
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 când 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 sec ventiatorul 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 când este pornit. Primul pas în a întelege aceasta procedura este sa întelegem de ce este ea
necesara.
Unitatea centrala de prelucrare este realizata astfel încât registrul sau contor de program sa
înceapa întotdeauna de la o anumita adresa predeterminata, de fiecare data când 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 încât 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 ramân 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 pierzându-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.

7
Memoria principala

Program de
ROM Disc
încarcare

Sistem de
operare
Memorie volatila

(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.
Memoria principala

Program de Disc
ROM
încarcare
Sistem de
Sistem de operare
operare
Memorie volatila

(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 E CALCULATOR

Î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. Aproximând, 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, având propriile seturi de date si propria
8
viteza de desfasurare. În aceasta situatie, sistemul de operare poate pastra în memorie numai o singura
copie a programului de editare, permitând 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 atât executia programelor aplicative sau utilitare, cât 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, plasând 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 s i 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 întârziata pâna 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 când 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 purtând numele de felie de timp (time slice) sau
cuanta (quantum - având 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 de pasi o cuanta de timp
(figura 1.6). Procedura de trecere de la un proces la altul poarta numele de comutare între procese
(process switch).
Întrerupere Întrerupere Întrerupere Întrerupere Întrerupere

Proces A Proces B Proce

Comutare între Comutare între Comutare între Comutare între Comutare între
procese procese procese procese procese

Proces A Proces A

Axa timpului
Figura 1.6 Partajarea timpului între procesele A si B
De fiecare data când un proces îsi începe felia de timp, executorul initializeaza un circuit de
temporizare care va masura urmatoarea cuanta. La sfârsitul 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 când 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
9
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 târziu lectura depinde de abilitatea dumneavoastra de a va reaminti atât pagina la care va
aflati cât si informatiile pe care le -ati acumulat pâna atunci. Pe scurt, trebuie sa puteti recrea mediul care
exista chiar înainte de producerea întreruperii. În cazul un ui 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 reîncarcarea unei
stari salvate anterior. Astfel de facilitati simplifica sarcina executorului la efectuarea comutarii între
procese s i 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 cât
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 târziu (probabil dupa mai multe sute de milisecunde), atunci
când 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
dobândi accesul la un fisier aflat pe un dispozitiv de stocare de masa, orice proces trebuie sa capete mai
întâi 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).
Cerere
Client Server

Figura 1.7 Modelul client/server


Un calculator Patru calculatoare independente

Client Server Client Server


Client Client

Client Server 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
10
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 când 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, atâta timp cât 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, incluzând atât dispozitivele periferice ale calculatorului, cât si functiile
de care dispune calculatorul propriu-zis. Administratorul de fisiere aloca atât accesul la fisierele existente,
cât 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 gândeste 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, verificând 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 s i probabil sa clasifice procesul ca
proces în asteptare, pâna î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 când
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 când 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
11
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 perm ite celui de-al doilea proces sa înceapa utilizarea imprimantei. Ulterior, primul proces revine
în executie în locul în care se afla când 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 dobândirea accesului la unitatea de banda magnetica, în timp ce alt proces
are acces la unitatea de banda magnetica, dar asteapta dobândirea 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 dispunând de anumite resurse, un
proces va reveni ulterior solicitând 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 atât de improbabila încât nu merita sa se faca nici un efort
pentru evitarea acestei situatii. Solutia o reprezinta detectarea interblocarii atunci când 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, eliberând 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, cerând fiecarui proces sa
solicite resursele de care are nevoie nu rând pe rând, ci toate o data. O alta tehnica, mai imaginativa, se
12
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 când 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, crezând ca are acces la imprimanta, se executa în mod normal. Mai
târziu, când 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, creând 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 raspândit a în
cadrul sistemelor de operare.
Desigur, atunci când 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, permitând 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 încât
diverse procese sa poata altera simultan diferite parti ale fisierului. Totusi, ramân î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 utilizând 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 târziu î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, implicându-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 având propriul sau echipament. Reteaua Internet este un sistem deschis. Într-adevar

13
comunicatia prin Internet este realizata prin intermediul unui ansamblu deschis de standarde, cunoscut
sub numele de suita de protocoale TCP/IP1, 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 câteva 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 întâlnesc de obicei în mediile locale, în care realizarea retelelor
cade de obicei sub o autoritate unica.

(b) Topologie de tip magistrala

(a) Topologie de tip inel

(d) Topologie neregulata (retea)

(c) Topologie de tip stea


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 încât ele sa poata functiona ca o singura retea. În prezent, Internet reprezinta o
combinatie de retele WAN si retele LAN continând 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 restrânsa, se utilizeaza calculatoare special proiectate,
denumite routere (routers). La rândul 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
purtând numele de gazda (host), raspândite în lumea întreaga; reteaua continua sa se dezvolte, noi
calculatoare adaugându-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 constând 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 decât cel specificat prin
definitia de mai sus.
14
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 (având î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 rândul lui, un calculator din cadrul acestui domeniu va avea o adresa de
tipul 192.207.177.133, ultimul octet al adresei reprezentând 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

15
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 cuv inte, 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 s i adresele numerice Internet corespondente ale acelor calculatoare gazda care trebuie
sa fie accesibile din exteriorul domeniulu i. 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 când 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 când 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 utilizând liniile telefonice. Prin intermediul unei asemenea
conexiuni, un client poate accede la serviciile Internet la care a subscris.

World Wide Web


Pe lânga 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 indicând si
apoi executând un clic de mouse asupra elementelor de legatura sau utilizând tastele sageti. De exemplu,
sa presupunem ca într-un document hipertext apare urmatoarea propozitie: „Orchestra a executat
stralucitor 'Bolero-ul' lui Maurice Ravel” s i numele Maurice Ravel este legat la alt document - care
furnizeaza probabil informatii despre compozitor. Cititorul poate decide sa studieze materialul asociat
deplasând cursorul deasupra numelui Maurice Ravel si apoi apasând 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
pânza (web) întretesuta de informatii aflate pe diferite calculatoare. Astfel, pânza 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
solicitând serviciile serverelor hipertext distribuite în Internet.
Câteva 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 con tin sunete, imagini si clipuri video. Aceste documente poarta numele de documente
hipermedia (hypermedia), pentru a se deosebi de documentele hipertext clasice.

16
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 UR L scurta, care contine numai protocolul si numele simbolic al
calculatorului gazda.
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).
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 utilizându-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). Utilizând elementele HTML, autorul unui
document hipertext descrie informatiile necesare unui browser pentru a-si duce sarcinile la bun sfârsit.

Probleme de securitate
Atunci când 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 ramân întotdeauna secrete. Cea mai raspândita 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 încât 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, înregistrându-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 ramân 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 decât 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 încât la fiecare executie a programului gazda sa se execute mai întâi virusul.
Atunci când 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
17
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 încât sa se raspândeasca în alte
programe pâna la aparitia unei conditii predeterminate, cum ar fi o anumita data calendaristica, când
efectueaza diferite operatii daunatoare. Acest comportament sporeste posibilitatea ca virusul sa se
raspândeasca 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, ramâne rezident în calculatoarele din retea si trimite copii ale sale în retea. Ca
si în cazul virusilor, aceste programe pot fi realizate astfel încât 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 in formatiilor, 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, facându-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 „stânga”, 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 pâna când ajunge la destinatie, în acel moment,
calculatorul destinatar îsi pastreaza o copie a mesajului si trimite mai departe în inel alta copie. Când
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


18
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 stânga 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 când urmatorul calculator receptioneaza jetonul, el
poate sa-l transmita imediat mai departe sau sa-si emita mai întâi 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 întâlnit la Ethernet, care este o
versiune foarte raspândita 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 pâna când magistrala este libera,
moment în care începe transmisia, continuând 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 invitându-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 strângeti 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 având o anumita greutate si anumite dimensiuni la o anumita adresa,
într-un anumit interval de timp. Câta vreme respecta aceste specificatii, expeditorul poate opta între a
trimite pachetul cu camionul, trenul sau avionul. Astfel, coletul dumneavoastra, alaturi de altele, poate fi
19
plasat într-un container conform regulilor transportului aerian. Conformându-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 sfârsit 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 dum neavoastra 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 atât la
origine cât si la destinatie, sensul operatiilor de la receptie fiind invers celor de la origine. Ac esta 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.
Dumneavoastra Client

Pachet de dimensiuni mici Pachet de dimensiuni mici


Firma de expeditii Firma de expeditii

Container Container
Avion
Companie aviatica Companie aviatica

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 rând, operatia generala poate fi
împartita în suboperatii administrabile separat, fiecare dintre ele având scopuri specifice. În al doilea rând,
arhitectura ierarhizata duce la stabilirea de frontiere bine definite între suboperatii, între ele putând 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 stânga
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 stânga. Î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, pâna când unitatile
sunt în sfârsit reasamblate si livrate modulului software adecvat de la calculatorul destinatie.
Nu este ceva neobisnuit ca dimens iunea suplimentara datorata împachetarii sa fie mai mare decât
lungimea unitatii de mesaj continute în pachet. Unitati de mesaj având 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.

20
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.
Origin ea mesajului Destinatia mesajului

Nivelul Nivelul
aplicatiei aplicatiei

Nivelul Nivelul
transportului transportului

Nivelul Nivelul
retelei retelei

Nivelul Nivelul
legaturii legaturii

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
încadreaz a în rândul 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 pâna 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.

21
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 pâna 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 când nivelul retele i 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 reîmpacheteaza pachetul, adaugându-i noua adresa intermediara, si-i
da drumul mai departe, trimitându-l nivelului legaturii. Astfel, pachetele sar de la un calculator la altul
pâna când 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 parcurgând 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 operând 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.
Aplicatie

Transport Aplicatie

Retea Retea Transport

Legatura Retea Legatura Retea

Legatura Legatura
Figura 1.16 Propagarea unei unitati de date prin Internet pe o cale care contine doua calculatoare
intermediare
22
Î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 încât 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 rând 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 alegeti între diverse
firme de expeditie, fiecare dintre ele oferind acelasi serviciu de baza, dar având 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,
anuntându-l ca-i va trimite niste date si precizând 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 -ia 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 utilizând î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 decât 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 când 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 când un nivel de retea IP retransmite un pachet, el scade cu o
unitate controlul de salt asociat. Utilizând aceasta informati, nivelul retelei poate proteja reteaua Internet
de pachetele care cicleaza la nesfârsit prin sistem. Cu toate ca reteaua Internet continua sa creasca zi de zi,
un contor de salt initial cu valoarea de 64 ramâne mai mult decât suficient pentru a permite unui pachet
sa-si gaseasca drumul spre destinatie prin amalgamul de retele LAN, WAN si routere.

23

You might also like