Sunteți pe pagina 1din 51

1.

Metode de reprezentare a obiectelor 3D utilizând interfaţa API – OpenGL

9.2. 1 Proiectie paralela


Un obiect tridimensionail poale fi reprezentat in planul bidimensional prin proiectarea punctelor apartinand suprafetei
obiectului pe o suprafata plana, de-a lungul unor linii paralele. Prin selectarea diferitelor pozitii de vizualizare, se pot
proiecta punctele vizibile pe o suprafata de vizualizare pentru a ob|ine diferite vizualizari in doua dimiensiuni ale obiectului
(fig. 9.4). Intr-o proicctie paralela, liniile paralele de pe suprafata obiectului raman paralele 51 in planul de proiectie
bidimcnsional. Aceasta metoda de reprezentare este folosita in proiectarea in arhitccrura si Ingincrie deoarece pcrmite
rcprezentarca unui obiect ca un set de proiectii care pastreaza proportiile relative ale obiectului. Aspectul global al
obiectului poate fi reconstituit din cateva astfel de proiectii.
9.2.2. Proiectia perspectiva
0 alta metoda de reprezentare a adancimii unui obiect, pe o suprafata de vizualizare in doua dimensiuni este proiectia
perspectiva. Punctele de pe suprafata obiectului sunt proiectate dupa niste linii care converg intr-un punct. Proiectia
perspectiva modifica dimensiunile obiectului astfel incat cele situate mai departe de pozitia de vizualizare sunt afisate mai
mici decat cele mai apropiate de pozitia de vizualizare. Liniile paralele de pe suprafata obiectului, dupa proiectie, sunt linii
ale caror prelungiri converg Intr-un punct. Obiectele afisate in proiectie perspectiva sunt mult mai naturale deoarece
acesta este modul in care ele sunt percepute de ochiul unian sau de o camera de luat vederi.

Fig.9.5 Proiectii perspectiva


Alte metode care se pot folosi pentru fumizarca informatiilor dc adancime sunt:
Pentru reprezentarea wireframe.

• Desenarea contururilor suprafetelor cu linii de intensitate variabila


• Contururile suprafetelor ascunse nu sunt reprezentate (fig. 9.7) sau sunt
reprezentate cu linie punctata
T
Pentru reprezcnlarea cu suprafete cu atribut de urnplere si de iluminare:
• Nu se vor reprezenta suprafetele care sunt ascunse de suprafetele vizibile.

• Pentru obtinerea unor imagini cat mai apropiate da cele reale se combina proiectia perspective cu ascunderea
suprafetelor si cu includerea umbrelor si a texrurilor .

9.2.3. Vederi in sectiune si in epura


Acest tip de reprezentari dau informatii suplimentare cu privire la structura interna a unui obiect tridimensional. => obiect
reprezentat desfacut in partile componente.
Modul de reprezentare a suprafeţelor curbe în OpenGL.
Sprafetele

Curbele parametrice polinomiale definesc punctele apartinand unei curbe 3d prin utilizarea a 3 functii polinomiale
dependente de un parametru u.
Coeficientii polinoamelor sunl astfel determinati incat curba sa urmeze o anumita traiectorie in spatiul 3D. Gradul
polinoamelor poate fi mai mare decit 3 insa cele mai utilizate sunt polinomiale de grad 3 de unde si denumirea pentru
curbele reprezentate de astfel de polinoame de curbe parametrice cubice.
Suprafetele cubice pot fi reprezentate prin :
Suprafete parametrice bicubice = o generalizare a curbelor parametrice cubice. Forma generala pentru o curba
parametrica
Suprafete hermite
Suprafete bezier
Suprafete spline

3. Implementarea transformării de proiecţie în interfaţa API OpenGL.

1
Definita generala a transformarii de proiectie este ca transforma punctele din sistem n dimensional intr-un sistem de
dimensiune mai mica decat n.
Proiectie perspectiva, proiectie paralela ortogonala(ortografica & oblica),
Distinctia intre cele 2 metode este ca distanta dintre centrul de proiectie si planul de proiectie este infinita in cazul pr.
Paralela si finita in cazul pr. Perspectiva.
glMatrixMode (glProjection)=selectare stiva de proiectie
glLoad identity=initializarea matricii curente de proiectie cu matricea identitate.
glOrto = matricea

Modul de implementare a ascunderii suprafeţelor în interfaţa API – OpenGL.


Exista 2 metode:
-metode ale spatiului obiect(MSO)
-metode ale spatiului imagine(MSI)
MSO compara obiectele si parti ale obiectelor pentru a determina ce linii si suprafete pot fi etichetate ca si invizibile.
MSI decid vizibilitatea pentru fiecare punct din planul de proiectie
Algoritm MSI:
Pt fiecare pixel
-determinia cel mai apropiat obiect de pctul de vizualizare si apoi deseneaza pixelul.

Algoritm MSO:
Pentru fiecare obiect din spatiul 3d
-determina pentru fiecare obiect partile care nu sunt obstructionate de alte parti ale celorlalte obiecte

Algoritmii spatiului imagine lucreaza in precizia dispozitivului de afisare si determina vizibilitatea fiecarui pixel
Algoritmii spatiului obiect lucreaza la precizia definitiei obiectelor si determina vizibilitatea fiecarui obiect.

Modelarea iluminării unei scene 3D utilizând interfaţa API – OpenGL.


Componente ale luminii:
-ambientala(suma surselor), difuza(ceea ce reflecta obiectul), speculara (obiecte f lucioase), emisiva(daca obiectul emite
lumina)

Modelarea iluminarii este o problema complexa si se utilizeaza multe aproximari fie pentru simplificarea modelului, si
implicit a calculelor, fie pentru ca nu exista modele care sa ia in considerare toate aspectele care intervin in iluminarea
suprafetelor.
Intensitatea luminii vazuta pe fiecare suprafata a unui obiect este in functie de:
-surse de lumina(emit lumina sau reflecta lumina)
-pozitia surselor
-materialu obiectelor

Partitionarea HDD. Scop, realizare. *icus*so*x19,x37


Scop: mai buna gestionare a datelor stocata pe disc.
Realizare: comanda fdisk.

Partitia este o zona contigua de disc delimitata de 2 adrese: una de inceput si una de sfarsit a partitiei. Partitionarea HDD
face posibila existenta mai multor platforme(SO) .Prin partitionare discul fizic este impartit in mai multe discuri logice.
Fiecare dintre acestea se comporta ca si cum ar fi un disc separat. Partitionarea are 3 scopuri:
-contribuie la organizarea discului;
-permite folosirea discurilor mai mari decat pot fi manipulate de strucrura logica a so DOS;
-permite stocarea de so si sisteme de fisiere diferite pe acelasi disc;
Informatiile despre partitionarea discului sunt stocate intr-un tabel de partitie principala localizat pe primul sector fizic al
discului (0,0,1).
Sub so DOS partitionarea este facuta de programul utilitar FDISK ; cu ajutorul acestui progr sunt create si sterse partitii
- fdisk nu permite modificarea dimensiunilor partitiilor;
- la initializarea, PC-ul citeste tabelul de partitie ca sa gaseasca partitia de incarcare;
- in cursul procesului de initializare , s.o aloca o litera de unitate fiecarui volum pe care il configureaza . Mai intai cauta
toate discurile fizice din sist care contin partitii primare sije aloca litere succesive de identificare, incepand cu litera C ptr
discul de incarcare.

Descrieti notiunea de preemptivitate in planificarea unitatii centrale.*so*x19, x37

Preemptivitate: proprietatea unui proces de a putea fi oprit din executie pentru a se executa alt proces cu o prioritate mai
mare.

2
Alocarea cu prelevare fortata(preemptive allocation) este o politica de alocare a resurselor dintr-un sistem care permite ca
un proces sa nu detina o resursa pe toata durata executiei sale. Deoarece in sistem nr de resurse fizice este limitat se
pune problema alocarii de resurse a.i acestea sa fie efectiv partajate de catre procesele care le solicita. Ac politica
presupune ca o resursa poate fi recuperata in orice moment de la procesul care o utilizeaza. Exista resurse pentru care
se poate face prelevare fortata (procesor, memorie interna) si altele pentru care ac lucru nu este permis(banda magnetica
, imprimanta).
Preemptive scheduling= politica de planificare a proceselor pentru executie care permite ca un proces aflat in rulare sa
piarda resursa procesor la aparitia unei cereri provenind de la un proces de prioritate mai mare, sau la expirarea cuantei
de timp alocate. Procesul este trecut in starea ,,pregatit pentru executie" ,un alt proces fiind planificat si rulat conform
algoritmului de planificare utilizat. In ac mod se realizeaza multiplexarea proceselor.

Alocarea nonpreemptiva. Este o strategie bazata pe “bunul simt” al programelor de a ceda voluntar UC cand apreciaza
ca se pot dispensa temporar de ea. O astfel de strategie se poate aplica avand o marita grija la robustete.
Alocarea preemtiva. Este strategia dominanta in cazul SO pentru sistemele de calcul individual SCI. SO isi asigura in
intregime responsabilitatea alocarii resurselor comune. SO distribuie timpul in UC. Rezulta un dublu salt calitativ privind:
Robustetea. SO detine controlul total. Trecerea de la un fir la altul se executa automat, fara participarea firelor, deci
robust.
Eficienta. Se evita riscul alocarii UC pentru o aplicatie care nu o poate folosi decat pentru a o ceda din nou. Pe langa timp
UC functional se mai economiseste si timp tehnologic.

8. Fire de execurtie,comparatie cu procese.

Firele de executie fac trecerea de la programarea secventiala la programarea concurenta. Un program secvential
reprezinta modelul clasic de program : are un început, o secventa de executie a instructiunilor sale si un sfârsit. Cu alte
cuvinte, la un moment dat programul are un singur punct de executie. Un program aflat în executie se numeste proces.
Un sistem de operare monotasking (MS-DOS) nu este capabil sa execute decât un singur proces la un moment dat în
timp ce un sistem de operare multitasking (UNIX, Windows) poate rula oricâte procese în acelasi timp (concurent),
alocând periodic cuante din timpul de lucru al CPU fiecarui proces. Am reamintit acest lucru deoarece notiunea de fir de
executie nu are sens decât în cadrul unui sistem de operare multitasking.
Un fir de executie este similar unui proces secvential în sensul ca are un început, o secventa de executie si un sfârsit.
Diferenta între un fir de executie si un proces consta în faptul ca un fir de executie nu poate rula independent ci trebuie sa
ruleze în cadrul unui proces.
Definitie
Un fir de executie este o succesiune sceventiala de instructiuni care se executa în cadrul unui
proces.
DEFINITIE:
“Un proces este un program aflat în curs de executie.”

Un program îsi poate defini însa nu doar un fir de executie ci oricâte, ceea ce înseamna ca în cadrul unui proces se pot
executa simultan mai multe fire de executie, permitând executia concurenta a sarcinilor independente ale acelui program.
Un fir de executie poate fi asemanat cu o versiune redusa a unui proces, ambele rulând simultan si independent pe o
structura secventiala de executie a instructiunilor lor. De asemenea executia simultana a firelor de executie în cadrul unui
proces este similara cu executia concurenta a proceselor: sistemul de operare va aloca ciclic cuante din timpul
procesorului fiecarui fir de executie pâna la terminarea lor. Din acest motiv firele de executie mai sunt numite si procese
usoare.

Care ar fi însa deosebirile între un fir de executie si un proces ? In primul rând deosebirea majora consta în faptul ca firele
de executie nu pot rula decât în cadrul unui proces. O alta deosebire rezulta din faptul ca fiecare proces are propria sa
memorie (propriul sau spatiu de adrese) iar la crearea unui nou proces (fork) este realizata o copie exacta a procesului
parinte : cod + date; la crearea unui fir de executie nu este copiat decât codul procesului parinte; toate firele de executie
au deci acces la aceleasi date, datele procesului original. Asadar un fir de executie mai poate fi privit si ca un context de
executie în cadrul unui proces parinte.

Firele de executie sunt utile în multe privinte, însa uzual ele sunt folosite pentru executarea unor operatii consumatoare
de timp fara a bloca procesul principal : calcule matematice, asteptarea eliberarii unei resurse, acestea realizându-se de
obicei în fundal.

9.Sincronizarea proceselor.Metode de realizare


Definitie
Un segment de cod ce gestioneaza o resursa comuna mai multor de fire de executie separate si concurente se numeste
sectiune critica.
Controlul accesului proceselor in sectiunea critica se numeste excludere mutuala.
Sincronizarea proceselor reprezintã înlantuirea automata a starilor unor procese concurente, prin blocarea si deblocarea
automatã a proceselor în executie.

3
Problema sincronizarii poate sa apara:
- în legatura cu utilizarea în comun a resurselor între procese concurente, pentru alocarea automata a resurselor
- în cazul proceselor concurente în care executia unui proces este conditionata de rezultatul executiei altui proces
- în cazul comunicarii între procese, în scopul realizarii unei comunicari corecte.
Mecanisme de sincronizare a proceselor :
Sincronizare hardware:
Mediu uniprocesor- se impiedica producerea intreruperilor cat timp o variabila partajata este modificata.(secventa
curenta de instr se executa in ordine fara preemtivitate)- nefezabila in mediu multiprocesor
Semafor--- pentru fiecare resursa partajata din sistem exista un bit semafor si o lista a proceselor în asteptare, pentru
alocarea resursei

-- bitul semafor s este setat initial la valoarea 1


-- functia de alocare asociata resursei este executata când un proces solicita alocarea resursei; functia decrementeaza
bitul si aloca resursa procesului numai daca valoarea bitului s este 0; în caz contrar, procesul este trecut în coada de
asteptare
-- functia de dezalocare asociata resursei este executata când un proces elibereaza resursa; functia incrementeaza bitul
si scoate din coada primul proces caruia îi aloca resursa numai daca valoarea bitului s este negativa sau 0; în caz
contrar, bitul s are valoarea 1, deci coada de asteptare este goala.

(În cadrul acestui algoritm se observa faptul ca variabila semafor este resursa critica pentru functiile de alocare si de
dezalocare iar cele doua functii sunt sectiuni critice pentru procese; în consecinta, executia celor doua functii nu trebuie
blocata si asupra variabilei semafor nu trebuie sa actioneze, la un moment dat, decât una dintre aceste functii.)
Monitor:
Blocarea cu bariere
Bit de lock - slabutz

Mecanismele de sincronizare directã, prin comunicarea între procese, utilizate pentru procese concurente, pentru care
execuþia unui proces este condiþionatã de rezultatul execuþiei altor procese, sau pentru procese care fac schimb de
informaþii:
Cu ajutorul unor functii primitive ale sistemului de operare, care permit deblocarea unui proces care a intrat în starea de
asteptare, cu functii de tipul WAIT() pentru un eveniment, de cãtre un alt proces, care executã o functie de setare a
indicatorului de eveniment respectiv.
Concomitent, se poate realiza si schimbul de date între cele douã procese, utilizând directive ale sistemului de operare de
tipul SEND(proces destinatar,adresa mesaj) si RECEIVE(adresa mesaj); comunicarea are loc în momentul în care
procesul expeditor lanseazã comanda SEND(), urmatã de executia comenzii RECEIVE() de cãtre procesul destinatar;
pentru unele sisteme de operare, directivele SEND si RECEIVE opereazã si asupra indicatorilor de eveniment, pentru
sincronizarea proceselor;
10. Memoria virtuala .implementarea la nivelul SO

- memoria reala: spatiul de adresare al proceselor este limitat de capacitatea memoriei interne

– memoria virtuala: spatiul de adresare nu este limitat de capacitatea memoriei interne (aceasta este suplimentata
de cea externa, prin tehnica de swapping)
ideea: un proces aflat in starea de asteptare se evacueaza temporar pe disc, eliberind memoria principala ocupata;
reluarea executiei procesului se face prin reincarcarea sa de pe disc in memorie

Avantaje:
se simuleaza o memorie mai mare decit cea fizica existenta se imbunatateste folosirea resurselor SC (CPU + memorie)

11. Rolul Sistemului de Operare si rolul hardware-ului in tratarea unei exceptii page fault.
Eroare de pagina (page fault):
atunci cind se incearca accesarea unei pagini marcate ca invalida (bitul este 0); pagina nu este in memorie si va trebui
adusa de pe disc – Se genereaza o intrerupere de pagina (PFI=page fault interrupt), de tip sincron, care este
transparenta pentru utilizator, si are o prioritate superioara celorlalte intreruperi; ea va intrerupe executia programului si
S.O.-ul va executa handler-ul asociat acestei intreruperi
Rutina de tratare a intreruperii de pagina executa:
●Se examineaza adresa solicitata pentru a vedea daca este o adresa permisa; daca nu este, procesul va fi terminat
anormal
●Se cauta un cadru de pagina liber in memoria principala si se solicita o operatie I/O care va aduce pagina de pe disc in
cadrul
liber gasit; pentru aceasta se mai foloseste si o tabela de
mapare pe disc, ce contine adresa pe disc a fiecarei pagini virtuale
●Dupa incarcarea paginii, se actualizeaza tabela de mapare a paginilor pentru a indica faptul ca pagina este valida
●Apoi este reluata executia procesului – instructiunea oprita este restartata (toata aceasta procedura este transparenta
pt. proces)

4
de la VINTAN
De obicei, spaţiul virtual de adresare este împărţit în entităţi de capacitate fixă (4-64 Ko actualmente), numite pagini. O
pagină poate fi mapată în memoria principală (oricum este pe disc).
Transformarea adresei virtuale emisă de către CPU într-o adresă fizică (existentă în spaţiul MP) se numeşte mapare sau
translatare

Paginile vor fi dinamic încărcate/evacuate în/din memoria principală pe disc (spre a permite încărcarea altora, mai
"proaspete").

Când o pagină accesată nu se găseşte în memoria principală, ea va trebui adusă - prin declanşarea unui mecanism de
excepţie - de pe disc. Acest proces - analogul miss-urilor de la cache-uri - se numeşte "page fault" (PF). Evenimentul PF
va declanşa un mecanism de excepţie care va determina intrarea într-o subrutină de tratare a PF. Aici - prin soft deci - se
va aduce de pe disc în memoria principală pagina dorită, după ce în prealabil s-a evacuat eventual o altă pagină. Acest
proces este unul de lungă durată, necesitând la ora actuală câteva milisecunde.

În implementarea MV trebuie avute în vedere următoarele aspecte:


paginile să fie suficient de mari (4 Ko-16 Ko?64 Ko) astfel încât să compenseze timpul mare de acces la disc (9-12 ms);
organizări care să reducă rata de PF, de unde rezultă în mod necesar un plasament flexibil al paginilor în memoria
principală;
PF-urile trebuie tratate prin software şi nu prin hardware (precum miss-urile în chache-uri) - timpul de acces al discurilor
permite lejer acest lucru;
scrierile în MV se fac după algoritmi de tip "write back" (adică se scrie numai în memoria principală, nu şi pe disc; scrierea
pe disc se face odată cu evacuarea paginii) şi nu "write through" (scriere în memoria principală şi pe disc - procedeul ar
consuma timp enorm)

Translation-Lookaside Buffers (TLB). Prin paginare, fiecare acces la o anumită dată necesită 2 accese la memorie: unul
pentru obţinerea adresei fizice din tabela de pagini, iar celălalt pentru accesarea propriu-zisă a datei în memoria
principală.

În vederea reducerii acestui timp de acces (dublu), tabela de pagini este "caşată" (memorată) în CPU. Memoria cache
care memorează maparea tabelei de pagini se numeşte TLB (Translation-Lookaside Buffer). Ca orice cache, TLB-ul
poate avea diferite grade de asociativitate. Există evacuări şi încărcări între TLB şi tabela de pagini din MP.

Deoarece TLB-ul este implementat în general "on-chip" (deci chiar în procesor), capacitatea sa este relativ mică (32-1024
intrări) în comparaţie cu tabela de pagini, care are 1-4 milioane de intrări. De obicei, TLB-ul se implementează full-
asociative, pentru a avea o rată de miss scăzută (0.01% - 0.1%). Miss-urile în TLB se pot rezolva atât prin protocol
hardware cât şi printr-un handler software.

Miss-uri în TLB şi PF-uri

Pe durata procesului de translatare a adresei virtuale în adresă fizică pot să apară două evenimente de excepţie:
TLB miss, dar pagina accesată este prezentă în memoria fizică (MP)
Page Fault (PF), adică TLB miss urmat de faptul că pagina dorită nu este prezentă în tabela de pagini rezidenta în MP
(bit P=0).

Un TLB miss generează de obicei o procedură hardware de aducere a numărului paginii fizice din tabela de pagini.
Această operaţie se poate implementa prin hardware, ea durând un timp relativ scurt (20-30 perioade de tact).

Operatori in C/C++*ciurea*m30,x28,x54

Clasificare:
-unari
-binari
-se pot defini
Operatori ARITMETICI: +,-, *, ?, %.....
Operatori relationali: <, >,<=, >=
Operatori de egalitate: ==, !=
Operatori logici: &&, ||
Operatori logici la nivel de bit: &-si, |-sau, ^-XOR, ~NOT
Op. Incrementare, decrementare: ++, --
Op. Atribuire: valoare=exepresie

5
Op. Shiftare: <<, >> st, dr
Op. Conditional(min=a<b?a:b), virgula,
sizeof-dim in octeti a unei marimii,
de conversie- (tip) expresie
int a, b, c; float v; v= (float)a/b
[]-pt vectori
 . pt structuri
*, & pt pointeri

13. Variabile locale si variabile globale


Variabile locale:
-variabile declarate in interiorul functiei
-valabile in interiorul functiei
-sunt init cu valori neprecizate
-sunt generate intr-o zona de memorie de tip stiva(LIFO)
Variabile globale:
-var declarate in afara fct
-sunt init cu valori nule
-pot fi folosite in orice cu fct cu exceptia functiilor in care apar variabile locale cu acelasi nume(in astfel de situatii, au
prioritate cele locale)
Ori de cate ori sun tern Tn situatia de a scrie un program, trebuie sa determinant! care sunt functiile ce trebuie definite, ce
parametri trebuie sa aiba pentru a putea fi apelate corect, care variabile sa fie definite Tn interiorul unei functii (locale) si
care Tn exterior (globale).
Variabilele interne sunt variabile locale unei functii. Declaratia lor ramane valabild doar Tn interiorul definite! functiei. In
celelalte functii si Tn functia principals, variabilele nu sunt accesibile. De asemenea, variabilele definite Tn functia main
raman valabile doar Tn interiorul acesteia, nu ca Tn cazul limbajului Pascal, cand variabilele definite Tn programul
principal devin variabile globale. De asemenea, trebuie urmarit ce tip de memorie este asociat, limbajul C fiind la vremea
aparitiei sale un mare succes si datorita posibilitatii de a folosi la cererea programatorului clase de memorie diferite. Astfel
variabilele de tip registru sunt cele mai rapide dar nu pot fi folosite decat pentru tipuri Tntregi si Tntr»un numar limitat (de
obicei 2). Variabilele de tip auto vor fi folosite eel mai des ca variabile locale, deoarece la iesirea din functie se elibereaza
spatiul de memorie alocat. Variabilele statice interne sunt mai rapide, pastreaza valoarea la iesirea din functie, dar vor
ocupa loc Tn memorie pe toata durata programului.
O definire Tn exterior a variabilelor face ca acestea sa poata fi folosite Tn orice loc din momentul defmitiei lor. Modul de
utilizare al variabilelor externe face ca variabilele sa fie stocate permanent Tn segmentul de date. Aceasta duce la o
crestere a dimensiunii programului. In plus, datorita posibilitatii de acces din orice functie la variabile externe, sunt
permise si eventualele modificari nedorite iar detectarea acestora este mult mai dificila. La programele de dimensiuni mici
aceasta nu este un inconvenient, darde la o anumita dimensiune este. De aceea este recomandata evitarea folosirii
variabilelor globale, mai ales Tn cazul programelor care folosesc mai multe functii si volumul datelor este mare. Cu cdt
are loc o Tncapsulare a datelor mai stricta, cu atat ele pot fi folosite mai dar iar programul poate fi depanat mai usor. Ca
atare, la programele mari este recomandata fobsirea "cu zg§rcenie" a variabilelor globale.

14. Instructiuni conditionale in C/C++ *ciurea* m13, m28, x27


Instrucţiunea condiţională IF este folosită pentru a compare două valori şi a realiza acţiuni diferite în baza rezultatelor
testului. Instrucţiunea urmează sintaxa (are forma) IF - THEN - ELSE. Partea IF testează o condiţie. Dacă aceasta este
adevărată, atunci este urmată ramura THEN. În caz contrar se merge pe ramura ELSE.
If(expr) instr1
Else instr2

Instructiunea switch permite alegerea unei actiuni dintr-un grup, în functie de valorile pe care le poate lua un selector.
Atunci când un program întâlneste o instructiune switch, testeaza conditia asociata (expresie). Pe baza valorii întregi a
acesteia, el va transfera executia catre blocul case, etichetat cu acea expresie const corespunzatoare. În cazul când nici
o expresie const nu este egala cu expresia dupa switch, se îndeplineste instructiunea din ramura default.
switch(expresie)
{ case const1: instr1; break;
case const2: instr2; break
.....n
Default: instr n+1
}
15. Instructiuni repetitive in C/C++ *ciurea* m24,x27,x38

While (conditie)
{instructiune}- cu test initial;
se verifica conditia la inceput

6
daca nu este adevarata secventa din corpul buclei nu se executa deloc.
continua sa se execute atata timp cat conditia ramane adevarata

Do...
{Instructiuni}
While(conditie)
se verifica conditia la sfarsit
inseamna ca o bucla do –while se executa cel putin o data
3) for(initial; conditie;iteratie){ instructiuni }
Bucla for continua sa se execute atata timp cat conditia ramane adevarata.
Atunci cand devine falsa , bucla se termina iar executia pprogramului continua cu instr imediat urmatoare dupa for.
Deci : - se utilizeaza o bucla for atunci cand se efectueaza un nr cunoscut de iteratii, se utilizeaza o bucla do –while daca
e nevoie ca bucla sa execute cel putin o iteratie; se utilizeaza o bucla while cand prelucrarea presupune un numar
necunoscut de pasi.

16. Siruri de caractere cu terminatie nula: declaratie, functii specifice


// null-terminated string copy
char* strcpy(char* to, const char* from);
char* strncpy(char* to, const char* from, size_t maxlen);
// null-terminated string comparison.
// Returns -1 (s1<s2), 0 (s1==s2), or 1(s1>s2)
int strcmp(const char* s1, const char* s2);
// null-terminated string length
size_t strlen(char* s);

Functii: declaratie, apel, exemple *ciurea*m9,x27,x55

prototip tip_rez ume_functie(tip1,tip2,...)


corp functie

O functie este o colectie de instructiuni care executa o anumita sarcina declaratii de functii:
tip_returnare numele_functiei (tip_parametru nume_parametru)
{
// corpul functiei returnQ;
apelare :
numele_functiei (parametrii);
Parametrii formali apar in declararea functiiilor iar parametrii reali sunt cei care se apeleaza functia , ei trebuie sa fie de ac
tip

Recursivitate: definitie, exemple*ciurea*m25,m27,x28,x43,x49

Este procedeul prin care o functie se auto-apeleaza.


- In toate subprogramele recusive exista o conditie de oprire care impiedica autoapelarea la infinit
- recursivitatea foloseste structura de date numita stiva
- recursivitatea poate fi – directa sau indirecta (backtracking)
Procesul in care o functie se apeleaza pe sine poartea numele de recursivitate ,
Ex: factorialul, fibonacci, ackerman
O fct recursiva este o functie care se apeleaza pe sine ptr a indeplini o anumita sarcina.
De fiecare data cand programul apeleaza functia, compilatorul de C depune in stiva adresa instructiunii care urmeaza
imediat dupa apelul functiei (numita adresa de revenire) Apoi, compilatorul depune in stiva val parametrilor. Cand
executia fct se incheie , s.o al calc descarca adresele de revenire din stiva in conterul de program al CPU. Desi calc
poate sa execute ac op de depunere si descarcare f repede, op cer timp

19. Fisiere text: declaratie, deschidere, accesarea informatiei*ciurea*m4,m21


Fisierul text este o succesiune de caractere ASCII încheiata cu caracterul ^Z, care are rol de marcator de sfârsit de fisier.
Deci, componentele elementare ale fisierelor text sunt caracterele, grupate în linii. Lungimea liniilor nu este fixa, pentru
separarea lor utilizându-se un marcaj de sfârsit de linie (caracterele CR/LF).
Fisierele text pot fi create prin intermediul editoarelor si sunt direct afisabile.
File *f – implicit text
f=fopen(„.....”, [w,r, b])
fclose(denumire);
fread-citeste un bloc(nume fisier, din ce var, cati octeti)
fwrite
fscanf-citeste pe valori

7
fprintf
append, r,w,rw,b,t(ext)
fscanf, fgets, fgetc, cin,
20. Tipul pointer: declaratie, proprietati *ciurea*m7,x27,x55
O variabila este numele unei locatii de memorie care este apta de a pastra o valoare de un anumit tip.
Programul face feferinta 1 afiecare locatie de mem prin utilizarea unei adrese unice.
Pointerul este o variabila care contine o adresa.
Pointerul este o adresa la o locatie de memorie .
Atunci cand progr d lucreaza cu matrice (siruri de caract) progr lucreaza cu pointeri la primul elem al matricei
Atunci cahd'progr'au nevoie sa det adresa unei variabile , progr trebuie sa utilizeze op adresa &

tip *nume tipul spre care< pinteaza


acces la info *p
operatorul &
&p= adresa lui p
Proprietati
se pot face atribuiri
pointerul poate primi valoarea NULL
comparatii intre pointeri de acelasi tip
adunarea intre un pointer si un intreg
incrementarea-decrementarea
diferenta intre doi pointeri de acelasi tip
pointeri la functii
o varoabila pointer contine o adresa
POINTERI
Definiţie: Un pointer este o variabilă care conţine adresa altei variabile dacă este iniţializat cu acea adresă.
Fie definiţia: int x;
Efectul acestei definiţii este că variabilei x i se rezervă o zonă de memorie capabilă să stocheze o variabilă de tip int (16
biţi la BorlandC 3.1). În aceasta zonă se va depune ulterior valoarea lui x. La aceasta zonă ne putem referi direct sau
indirect, utilizând o variabilă p iniţializată cu adresa variabilei x. p=&x; // p conţine adresa lui x La întâlnirea instrucţiunii de
atribuire
x=10;
valoarea 10 se va depune în memorie la adresa indicată de variabila p. În acest caz variabila p este o variabilă pointer
(deoarece conţine adresa altei variabile), prin urmare şi pentru acest p este nevoie de o zonă de memorie pentru a-i
păstra valoarea (dimensiunea zonei de memorie necesară pentru a păstra valoarea variabilei p depinde de modul în care
sunt reprezentate adresele în sistemul respectiv).
În condiţiile de mai sus putem scrie:
*p=x ; // valoarea de la adresa indicată de p este chiar x
Deci există 2 operatori unari folosiţi în cazul pointerilor:
– operatorul & care indică adresa unei zone de memorie şi se numeşte operator de referenţiere;
– operatorul * care indică valoarea păstrată în acea zonă de memorie şi se numeşte operator de dereferenţiere.
Exemplu:
p=&x ;
*p=x;
atunci x=10 este echivalentă cu *p=10 (ceea ce se află la adresa indicată de p este
valoarea 10).
Dacă scriem în continuare *p=13, atunci x=13.
Pointerii se utilizează pentru a face referire la date cunoscute prin adresele lor.
Avantajele utilizării lor sunt:
– înlocuirea expresiilor cu indici prin expresii cu pointeri;
– posibilitatea alocării dinamice a memoriei (de către utilizator);
– folosirea ca parametri în listele de parametri ai funcţiilor. În felul acesta se rezolvă
restricţiile legate de transmiterea prin valoare a argumentelor dintre funcţia apelantă în cea apelată, specifice limbajului C
standard (ANSI).
1.1. Declaraţia unui pointer
Un pointer se declară ca orice variabilă obişnuita cu deosebirea că numele este precedat de simbolul * astfel: tip *nume;
unde nume este un pointer care pointează spre o zonă de memorie ce conţine o data de tipul tip; *nume reprezintă
conţinutul zonei de memorie în care să păstrează date de tipul tip.
Exemplu:
int x;
int *p; //p pointează spre date de tipul int
float y;
O instrucţiune de forma: p=&x este corectă. p=&y este eronată deoarece y este de
tip real (float), iar p este pointer spre întreg (int).
Dacă avem : float *q atunci o instrucţiune de forma q=&y este corectă.

8
Exemple:
int x,y;
int *p;
1) y=x+100 este echivalentă cu: {p=&x; y=*p+100;}
2) x=y este echivalentă cu: {p=&x; *p=y;}
3) x++ este echivalentă cu: {p=&x; (*p)++;}
Există situaţii când dorim ca un pointer să fie utilizat cu mai multe tipuri de date. În acest caz nu se specifică un tip
anume, ci se foloseşte void:
void *nume;
Exemplu:
int x;
float y;
char c;
void *p;
Se pot scrie instrucţiuni de genul :
p=&x;
p=&y;
p=&c;
deoarece lui p i se pot atribui adrese de memorie ce pot conţine date de tipuri diferite
Observaţie:
Când se folosesc pointeri de tipul void este necesar să se facă conversii explicite prin expresii de tip cast, pentru a
preciza tipul datei spre care pointează un astfel de pointer. Deci o instrucţiune *p=10 nu e corectă, pentru că nu e definit
tipul datei spre care pointează p (am definit void *p). Pentru a realiza o astfel de atribuire va trebui să convertim valoarea
lui p spre "pointer de tipul int", adică (int *) Atribuirea de mai sus devine corectă astfel: *(int*)p=10. Amintim că valoarea
unui operand se poate converti explicit spre un anumit tip folosind construcţia de tip cast: (tip) operand.
Exemplu: pentru a converti y spre long : (long) y pentru a converti p la tipul (int*) : (int*) p
Folosirea pointerilor de tip void da o flexibilitate mai mare, dar nu se recomandă folosirea lor abuzivă. Trebuie să se ştie
în orice moment ce fel de tip de pointer este valoarea atribuită variabilei de tip (void*).

21. Alocarea dinamica a memoriei*ciurea*m10,x51


Se refera la alocarile de mem efectuate in timpul executiei progr cu ajutorul unor rutine de management a memorie:
a) alocare controlata de limbaj
b) alocare controlata de programatori
a) Alocare dinamica controlata de limbaj este ptr a rezolva var locale la intrarea intr-o subrutina, procedura sau funct . Ptr
ac se foloseste tehnica bazata pe stiva, Ea respecta urmatoarele
1. La fiecare actionare de subrutina este creata o „ inregistrare de actionare"
- adr de revenire
- zona param formali
- zona var locale
- este fct de subrutina
Obs: Ptr fiecare subrutina legatura si formatul ,,inregistrarii de actionare" sunt cunoscute in momentul compilarii (in fct de
nr si natura parametrilor, de natura subrutinei nr si natura var locale)
=> referintele la param formali sau var locale sunt rezolvate inca de la compilare a.i. la activare locatia aflata la
deplasamenrul coresp este complectata cu val de apel;
La terminarea procedurii inreg coresp este distrusa.
2. Toate inreg existente in cadrul unui progr, ptr toate procedurile active la un mom dat sunt mentinute in ac loc Stiva
Programului si unde sunt depuse secv in ordinea in care sunt activate procedurile si distruse in ordine inversa (LIFO).
b) Alocarea controlata de utilizator
- in limbajele care permit descrierea de struct dinamice; HEAP = un bloc de mem din care alocarile si dealocarile se face
in orice ordine

new , delete , calloc, malloc


In limbajul C, alocarea dinamica se realizeaza prin diversele variante ale functiei malloc(), iar eliberarea zonelor alocate
se face prin functia mfree(). Limbajul C++ a introdus alocarea dinamica in structura limbajului. Astfel, pentru alocare avem
operatorul new. Acest operator returneaza adresa[*] zonei de memorie alocata, sau valoarea 0 – daca alocarea nu s-a
putut face. Pentru eliberarea memoriei alocate prin intermediul operatorului new, se foloseste un alt operator numit
delete.

22.
ISO a impus un model arhitectural pt retelele de calc care cuprinde 7 niveluri:

1.Nivel fizic: se ocupa de trensmiterea bitilor prin canalul de comunicatie ,proiectarea lui trebuind sa garanteze ca atunci
cand s-a transmis un bit de 1 a fost receptionat ca un bit de 1 .
- acest lucru este asigurat prin atribuirea unui nivel de tensiune pt 1 logic si a altui nivel de tens pt 0 „logic.” – aceasta

9
atribuire se numeste Signalling.
2. Nivelul legatura de date :
sarcina principala a acestui nivel se refera la transformarea unui canal de comunicatie nesigur de la nivelul fizic intr-un
canal sigur la nivel DLC, aceste servicii fiind furnizate la nivelul retea.
Nivelul DLC realizeaza aceasta sarcina obligand emitatorul sa descompuna datele primite de la nivelul retea in cadre de
date incadrand fragmentele de informatie intre un marker de inceput si unul de sf.
DLC mai tre sa prelucreze datele de confirmare sosite de la masina destinatara.
Tot la acest nivel trebuie eleiminate cadrele duplicate care pot aparea in lipsa unei confirmari sosite de la masina
destinatie
Tot acest nivel rezolva si problema evitarii inundarii unui receptor lent de catre un emitator rapid.
3. Nivelul retea : acest nivel se ocupa de controlul functionarii subretelei de comunicatie sarcina principala fiind aceea de
dirijare a pachetelor de date de la sursa la destinatie.
tot nivelul retea trebuie sa reziolve problema congestiilor
tot la acest nivel se rezolva problema taxarii abonatiilor unei retele in functie de traficul fiecaruia
4 Nivelul Transport: are rolul de a accepta pachete de la niv sesiune ,de a le descompune daca e cazul in unitati mai mici
si de a se asigura ca toate aceste fragmente ajung corect la destinatie.
creeaza in mod normal cate o comunicatie de retea distincta pt fiecare cerere de conexiune primita de la nivelul sesiune.
Daca se doreste o productivitate mai mare , nivelul transport poate sa creeze mai multe conexiuni de nivel retea pt o
singura cerere de conexiune a nivelului sesiune
tot la acest nivel se realizeaza si multiplexarea mai multor cereri de conexiune de la nivelul sesiune pe o singura
conexiune de nivel retea atunci cand se doreste minimizarea costurilor.
5 Nivelul Sesiune:
acest nivel permite utilizatorilor de pe masini diferite sa stabileasca intre ei sesiune de comunicare
tot la acest nivel se rezolva modalitatea de transfer a datelor simplex sau duplex
un alt rol este acela de gestionare a jetonului pentru retele de tip IBM token ring
nivelul realizeaza aceasta sarcina inserand din cand in cand niste markeri.
6 Nivelul Prezentare
Acest nivel inglobeaza in general functi care sunt mai des solicitae in retea , pt a nu obiga utiliz sa-l execute de un nr
repetat de ori.
sarcina principala se refera insa la conversia datelor intr-un format abstract acceptat de orice retea si de orice masina.
7 Nivel aplicatie
- in acest nivel exista FTP(File transport Protocol) http, Telnet , SMTP(pt mail)

24 Rolul Protecoalelor de acces la mediu. Exemple de protocoale

Aloha – a fost gandit de Abramson, in 1970


fiecare statie poate sa emita cand doreste; daca se intra in coliziune cu alta statie , statiile vor detecta coliziunea datorita
proprietatii de reactie a difuzarii, vor astepta o perioada aleatoare de timp, dupa care vor incerca din nou sa transmita.
Doi ani mai tarziu protocolul a fost imbunatatit si a fost transformat in Aloha Cuantificat.
A 2-a varianta a protocolului presupune existenta in retea a unei statii speciale care sa emita un bip. Nici o statie nu are
voie sa transmita decat dupa primirea acestui semnal special;

CSMA (Carries Sens Multiple Access)


acces multiplu cu detectia purtatoarei;

CSMA persistent
fiecare statie inainte de a incepe transmisia asculta canalul
daca nu detecteaza nici un semnal inseamna ca poate sa transmita, canalul fiind liber
daca detecteaza o purtataore asteapta pana se elibereaza canalul, dupa care incepe sa transmita;
daca propriile cadre intra in coliziune cu cadrele altei statii , staliile vor astepta o perioada aleatoare dupa care repeta
algoritmul
o statie poate fi sigura daca a ocupat canalul numai daca primeste inapoi cadrul nedeterioriat dupa o perioada 2 τ ,unde τ
este timpul de propagare maxim intre cele mai indepartate statii din retea

CSMA nepersistent
daca statiile nu ar fi atat de lacome in a obtine accesul la mediul de comunicatie protocolul CSMA persistent ar putea fi
imbunatatit
de aceea in varianta nepersistenta , statiile asculta canalul de comunicatie; daca nu detecteaza purtatoare ,transmit, iar
daca detecteaza nu raman in continuare in ascultare ,ci intrerup ascultarea, asteapta o perioada aleatoare de timp, dupa
care se repeta alg.
CSMA/CD (colision detection)
aduce urm imbunatatire fata de CSMA : daca doua statii emit simultan, cadrele vor intra in coliziune ,acesta va fi

10
detectata imediat de fiecare statie ,si ele isi vor intrerupe imediat transmisia, economisindu-se astfel largime de banda.

Protocoale fara coliziuni


BITMAP (harta de biti) :
acest prot presupune numerotare statiilor din retea cu adrese de la 1 la n ;
la intevale precise de timp o statie din retea emite un cadru cu lungime de n biti;
toat statiile primesc acest cadru ;
daca statia K are ceva de transmis trebuie sa seteze bitul K din cadrul de n biti la valoarea 1 „logic”, iar daca nu are nimic
la val 0 logic;
dupa aceasta operatie statiile vor incepe sa tramsmita in ord crescatoare a adresei de statie ;

BINARY COUNT DOWN (numaratore inversa binara)


acest prot presupune ca toate statiile din retea sa aiba o adresa cu aceeasi lungime
inainte de a incepe transmisia , statiile care au ceva de transmis isi difuzeaza propria adresa
la nivelul fiecarei statii se va face un sau bit pe bit inte adresele statiilor care doresc sa transmita ,dupa care fiecare statie
va proceda astfel:
daca rez operatiei sau acopera bitul corespunzator al propriei adr cu un 1 logic , statia renunta la transmisie in favoarea
celorlalte
operatia sau se face incepand de la bilul cel mai semnificativ a adr la bitul cel mai putin semnificativ .

The physical layer is level one in the seven level OSI model of computer networking. It performs services
requested by the data link layer.
This level refers to network hardware, physical cabling or a wireless electromagnetic connection. It also deals with
electrical specifications, collision control and other low-level functions.
The data link layer is level two of the seven-level OSI model. It responds to service requests from the network layer and
issues service requests to the physical layer.
The data link layer is the layer of the model which ensures that data is transferred correctly between adjacent network
nodes in a wide area network. The data link layer provides the functional and procedural means to transfer data between
network entities and to detect and possibly correct errors that may occur in the Physical layer. Examples of data link
protocols are Ethernet for local area networks and PPP, HDLC and ADCCP for point-to-point connections.
The network layer is level three of the seven level OSI model. It responds to service requests from the transport layer and
issues service requests to the data link layer.
The network layer addresses messages and translates logical addresses and names into physical addresses. It also
determines the route from the source to the destination computer and manages traffic problems, such as switching,
routing, and controlling the congestion of data packets.
The network layer provides the functional and procedural means of transferring variable length data sequences from a
source to a destination via one or more networks while maintaining the quality of service requested by the Transport
layer. The Network layer performs network routing, flow control, network segmentation/desegmentation, and error control
functions.
In computing and telecommunications, the transport layer is level four of the seven level OSI model. It responds to service
requests from the session layer and issues service requests to the network layer.
The transport layer provides transparent transfer of data between hosts. It is responsible for end-to-end error recovery
and flow control. It ensures complete data transfer. In the IP protocol Stack this function is achieved by the connection
oriented Transmission Control Protocol (TCP) or the datagram type User Datagram Protocol (UDP). The purpose of the
Transport layer is to provide transparent transfer of data between end users, thus relieving the upper layers from any
concern with providing reliable and cost-effective data transfer.
The session layer is level five of the seven level OSI model. It responds to service requests from the presentation layer
and issues service requests to the transport layer.
The Session layer provides the mechanism for managing the dialogue between end-user application processes. It
provides for either duplex or half-duplex operation and establishes checkpointing, adjournment, termination, and restart
procedures.
The Session layer is typically completely unused, but it does have a few places where it is useful.

The presentation layer is the sixth level of the seven layer OSI model. It responds to service requests from the application
layer and issues service requests to the session layer.
The presentation layer is responsible for the delivery and formatting of information to the application layer for further
processing or display. It relieves the application layer of concern regarding syntactical differences in data representation
within the end-user systems. Note: An example of a presentation service would be the conversion of an EBCDIC-coded
text file to an ASCII-coded file.
The presentation layer is the first one where people start to care about what they are sending at a more advanced level
than just a bunch of ones and zeros. This layer deals with issues like how strings are represented - whether they use the
Visual Basic method ("13,thisisastring") or the C++ method ("thisisastring\0"). The idea is that the application layer should
be able to point at the data to be moved, and the Presentation layer will deal with the rest.

11
Application layer Layer 7, the highest layer: This layer interfaces directly to and performs common application services for
the application processes. The common application services provide semantic conversion between associated application
processes. Examples of common application services include the virtual file, virtual terminal (for example, Telnet), and
"Job transfer and Manipulation protocol" (JTM, standard ISO/IEC 8832).

1. Nivelul fizic are rolul de a transmite datele de la un calculator la altul prin intermediul unui mediu de comunicatie.
Datele sunt vazute la acest nivel ca un sir de biti. Problemele tipice sunt de natura electrica: nivelele de tensiune
corespunzatoare unui bit 1 sau 0, durata impulsurilor de tensiune, cum se initiaza si cum se opreste transmiterea
semnalelor electrice, asigurarea pastrarii formei semnalului propagat. Mediul de comunicatie nu face parte din nivelul
fizic.
2. Nivelul legaturii de date corecteaza erorile de transmitere aparute la nivelul fizic, realizand o comunicare corecta intre
doua noduri adiacente ale retelei. Mecanismul utilizat in acest scop este impartirea bitilor in cadre ( frame), carora le sunt
adaugate informatii de control. Cadrele sunt transmise individual, putand fi verificate si confirmate de catre receptor. Alte
functii ale nivelului se refera la fluxul de date (astfel incat transmitatorul sa nu furnizeze date mai rapid decat le poate
accepta receptorul) si la gestiunea legaturii (stabilirea conexiunii, controlul schimbului de date si desfiintarea conexiunii).
3. Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si destinatie, trecand eventual prin noduri
intermediare (routing ). Este foarte important ca fluxul de date sa fie astfel dirijat incat sa se evite aglomerarea anumitor
zone ale retelei (congestionare ). Interconectarea retelelor cu arhitecturi diferite este o functie a nivelului retea.
4. Nivelul transport realizeaza o conexiune intre doua calculatoare gazda (host) detectand si corectand erorile pe care
nivelul retea nu le trateaza. Este nivelul aflat in mijlocul ierarhiei, asigurand nivelelor superioare o interfata independanta
de tipul retelei utilizate. Functiile principale sunt: stabilirea unei conexiuni sigure intre doua masini gazda, initierea
transferului, controlul fluxului de date si inchiderea conexiunii.
5. Nivelul sesiune stabileste si intretine conexiuni (sesiuni) intre procesele aplicatie, rolul sau fiind acela de a permite
proceselor sa stabileasca "de comun acord" caracteristicile dialogului si sa sincronizeze acest dialog.
6. Nivelul prezentare realizeaza operatii de transformare a datelor in formate intelese de entitatile ce intervin intr-o
conexiune. Transferul de date intre masini de tipuri diferite (Unix-DOS, de exemplu) necesita si codificarea datelor in
functie de caracteristicile acestora. Nivelul prezentare ar trebui sa ofere si servicii de criptare/decriptare a datelor, in
vederea asigurarii securitatii comunicatiei in retea.
7. Nivelul aplicatie are rolul de "fereastra" de comunicatie intre utilizatori, acestia fiind reprezentati de entitatile aplicatie
(programele). Nivelul aplicatie nu comunica cu aplicatiile ci controleaza mediul in care se executa aplicatiile, punandu-le
la dispozitie servicii de comunicatie. Printre functiile nivelului aplicatie se afla:
o identificarea partenerilor de comunicatie, determinarea disponibilitatii acestora si autentificarea lor
o sincronizarea aplicatiilor cooperante si selectarea modului de dialog
o stabilirea responsabilitatilor pentru tratarea erorilor
o identificarea constrangerilor asupra reprezentarii datelor
o transferul informatiei
Primele trei nivele de la baza ierarhiei (fizic, legatura de date, retea) sunt considerate ca formand o subretea de
comunicatie . Subreteaua este raspunzatoare pentru realizarea transferului efectiv al datelor, pentru verificarea
corectitudinii transmisiei si pentru dirijarea fluxului de date prin diversele noduri ale retelei. Acest termen trebuie inteles ca
desemnand "subreteaua logica", adica multimea protocoalelor de la fiecare nivel care realizeaza functiile de mai sus.
Termenul de subretea este utilizat si pentru a desemna liniile de transmisie si echipamentele fizice care realizeaza
dirijarea si controlul transmisiei.
Modelul OSI nu este implementat in intregime de producatori, nivelele sesiune si prezentare putand sa lipseasca (unele
din functiile atribuite acestora in modelul OSI sunt indeplinite de alte nivele).

23. Medii de comunicatie. Enumerare. Topologii de retea

Principalele medii de transmisie sunt: 1) Unshilded Twisted-Pair (UTP)


— este format din 4 perechi de fire izolate intre ele; prin torsadarea perechilor de fire apare efectul de anulare, efect ce
limiteaza degradarea semnalelor din cauza interferentelor magnetice sau radio;
— este tin cablu usor de instalat (diametru de ~ 0.4 cm) si mult mai ieftin decat alte tipuri de cabluri -,
— desi este considerat eel mai rapid mediu de transmisie bazat pe cupru, este mai vulnerabil in fata zgomotelor electrice
in comparatie cu alte categorii de cablari
2) Cablul coaxial
— consta dintr-un invelis protector care imbraca 2 elements conductoare :un fir de cupru imbracat intr-un material izolator
si o folie metalica (sau o plasa) ce actioneaza ca 2 fir din circuit. Ac al-2-lea elem este folosit ptr a reduce interferentele
externe. Este cablul cu cea mai buna ecranare.
~ nu pre se mai foloseste
3) Fibra optica . ~ mediul care asigura transmiterea luminii, modulata la o anumita frecv.;
— cea mai costisitoare, dar nu susceptibila la interferente electromagnetice, si in plus asigura rate de transfer mult mai
ridicate decat celelalte categorii de madii;
— cablul fibra optica consta in 2 fibre de sticla imbracate separat intr-un invelis de plastic (materialul se numeste kevlar)
Cele doua fibre formeaza inima acestui mediu de transmisie, sticla din care sunt realizate avand un grad ridicat de

12
refractie;
4) Shielded Twisted Pair (STP)
— combina 3 tehnici legate de transmisia datelor : - shielding (protejarea), cancellattion (anulare) si twisted (torsadarea)
firelor;
— cablul STP de 100 ohm folosit in retelele Ethernet ofera rezistenta atat la interferentele electromagnetice, cat si la cele
radio, fara a fi un cablu prea gros.
— chiar-daca este mai scump decat UTP ofera protectia impotriva ..-tuturor tipurilor de interferente
— spre deosebire de cablul coaxial, invelisul protector nu face parte dirrcircuitul electric
Topologii de retea:
1) Reteaua tip stea are un sg pet comun de conexiune, care constituie in general si un pet de control a! retelei (de ex un
hub)
2) Reteaua de tip inel are nodurile interconectate intr-un cere continu cu ajutorul unui cablu de transrnisie comun.
Semnalele sunt transmise unidirectional, de-a lungul cercului de la nod la nod, cu regenerarea semnalului in fiecare nod
3) Reteaua tip magistrala este constituita dintr-un sg cablu la care sunt conectate direct toate nodurile. Ea este utilizata
de regula, folosind un control distribuit, dar poate avea si un--control central. Spre~deosebire~"de~inel, magistrala este
pasiva, deci nu regenereaza ...—_.- serrmalele in noduri.
4) Reteaua tip stea ierarhica este o metoda de cablare comuna utilizata in actualele configuratii LAN . Foloseste un set de
hub-uri in cascada ptr a construi o retea ierarhica bazata pe o politica locala (dep, etaj).
5) Reteaua tip arbore e utilizata in aplicatii CATV si in anumite LAN-uri analogice de banda larga.
6) Reteaua tip plasa este tipica ptr WAN dar poate fi utiiizata si in anumite aplicatii LAN,
7) Reteaua tip inel dual ofera 2 inele de comunicatii, unul ptr transmitere si altul ptr receptie. Ac tip de retea este utilizat
la FDDI,
Topologii dupa tehnologia de transmisie:
1) Retele cu difuzare au un sg canal de comunicatii care este partajat de toate calc din retea. Transmiterile in.ac retele se
fac sub forma de pachete
2) Retelele punct-la-punct dispun de nenumarate leg intre calc componente. Ptr a ajunge la
destinatie, intr-o astfel de. retea , un pachet poate trece pe la unul sau mai multe cala
intermediare. -. •
Topologii dupa scara la care opereaza sau dupa aria de raspandire:
— retele locale LAN-uri (Local Area Network)
— retele metropolitane MAN (Metropolitan Area Networks)
— retelele larg raspandite geografic WAN (Wide Area Network)

24. Rolul protocoalelor de acces la mediu. Exemple de protocoale

Metodele de acces la mediu se clasifica in metode care permit aparitia coliziunilor si metode care nu permit aparitia
coliziunilor. In retelele cu topologie inel sunt folosite numai metode din a doua categorie. Ideea este ca in retea sa existe
un singur jeton (in engleza token), iar statia care il detine este singura ce are drept de a emite. Notiunea de "jeton" este
una abstracta iar forma cea mai concreta in care se manifesta este cadrul MAC special emis de statia care detine jetonul
pentru a-l preda altei statii.
Sa presupunem ca numerotam statiile din inel cu numere de la 0 la N-1 in sensul acelor de ceasornic. Pasii urmati de
statia k, care nu detine jetonul, la primirea unui cadru ce nu poarta un jeton sunt:
Retransmite cadrul catre (k+1) mod N
Daca destinatia este chiar statia k atunci livreaza datele din cadru la nivelul superior
In cazul in care cadrul primit poarta un jeton pasii sunt:
Emite catre statia (k+1) mod N cadrele care asteapta in coada .
Optional: asteapta pana primesti toate cadrele trimise de la statia (k-1) mod N.
Trimite cadrul jeton la statia (k+1) mod N.
Pasul al doilea este facut in Token Ring (IEEE802.5) dar nu si in FDDI. Inelele FDDI pot avea dimensiuni de pana la
200km si s-a considerat ca timpul de asteptare ar fi prea mare. Ca urmare in retele FDDI pot circula simultan in inel cadre
cu emitenti diferiti. O alta observatie este ca intr-un inel legaturile de date sunt unidirectionale: datele circula intotdeauna
de la statia k catre statia (k+1) mod N.
Metoda cu jeton poate fi folosita si in retelele cu topologie de tip stea. In acest caz cadrul jeton emis de o statie este primit
de toate celelalte. Care dintre ele va deveni "detinatoarea jetonului"? Ei bine de data aceasta, spre deosebire de cazul
anterior, cadrul jeton contine si o adresa MAC destinatie.
Dar o metoda mult mai utilizata de acces la mediu in retelele cu topologii de tip stea (ex. Ethernet) este "Carrier Sense
Multiple Access with Collision Detection" (CSMA/CD). In continuare este descrisa varianta acestei metode care este
aplicata in retelele Ethernet 10Mb/s semiduplex. Iata o diagrama de functionare adaptata din IEEE802.3:

13
Atunci cand primeste un cadru de trimis subnivelul MAC intai il asambleaza. Aceasta operatiune este detaliata in
paragraful urmator. Deocamdata nu ne intereseaza decat ca in urma acestei operatiuni avem un sir de octeti ce trebuie
transmisi. Apoi se verifica daca nu cumva subnivelul MAC se afla in asteptare (deffer). Prin definitie subnivelul MAC este
in asteptare atunci cand nivelul fizic semnaleaza ca altcineva emite si inca un interval de garda intercadru (9.6
microsecunde) dupa aceea. Cand asteptarea se termina incepe transmisia cadrului. Pe toata durata transmisiei se
urmareste daca nu cumva si altcineva a inceput sa emita. Daca nu atunci totul este OK. Daca da atunci intai este emis un
semnal de bruiaj care are ca scop sa ajute alte statii in a detecta si ele coliziunea. Dupa aceea este incrementata
variabila n care reprezinta numarul de incercari. Apoi transmisia este intarziata (backoff) r intervale elementare (slot time -
51.2 microsecunde), unde r este un numar natural ales aleator si mai mic strict decat 2^k. Iar k=min(n,10). Aceasta
metoda de amanare este cunoscuta sub numele "truncated binary exponential backoff".
Intervalul elementar de timp corespunde duratei de emisie a celui mai scurt cadru valid. Pentru ca metoda de mai sus sa
functioneze trebuie ca dimensiunile fizice ale retelei sa nu fie prea mari. Sa zicem ca mediul fizic este un cablu coaxial (si
nu un repetor multiplu).

14
Daca statia A emite un cadru si cu putin inainte ca semnalul emis sa ajunga la statia B aceasta incepe si ea sa emita
apare o coliziune care este detectata de B imediat. Semnalul emis de B se propaga catre A cu o viteza finita. Daca A
termina de emis inainte ca acest semnal sa ajunga la el va trage concluzia ca a emis cadrul in conditii bune. De aceea
este necesar ca A sa emita cel putin durata ca semnalul sau sa ajunga la B plus durata ca scurtul impuls emis de B sa
ajunga inapoi. Asadar o dimensiune minima a cadrului implica o dimensiune maxima a retelei. Avand in vedere ca in
cablul coaxial semnalele electromagnetice circula cu viteza de grup de aproximativ 2e+8 m/s si ca intervalul elementar
este 51.2 microsecunde rezulta o dimensiune maxima care este ceruta de unul dintre exercitii.
De scris roxa

25. Nivelul retea. Functionare. Rol. Exemplu de protocol.*relete*m34,x23


Nivelul fizic are rolul de a transmite datele de la un calculator la altul prin intermediul unui mediu de comunicatie.
Network LayNetwork layer Layer 3: The Network layer provides the functional and procedural means of transferring
variable length data sequences from a source to a destination via one or more networks while maintaining the quality of
service requested by the Transport layer. The Network layer performs network routing, flow control,
segmentation/desegmentation, and error control functions. The router operates at this layer -- sending data throughout
the extended network and making the Internet possible, although there are layer 3 (or IP) switches. This is a logical
addressing scheme - values are chosen by the network engineer. The addressing scheme is hierarchical.

er
IP- The Internet Protocol (IP) is a data-oriented protocol used by source and destination hosts for communicating data
across a packet switched internetworks. Data in an IP internetwork are sent in blocks referred to as packets or datagrams
(the terms are basically synonymous in IP). In particular, in IP no setup is needed before a host tries to send packets to a
host it has previously not communicated with.

ICMP- The Internet Control Message Protocol (ICMP) is part of the internet protocol suite and defined in RFC 792. ICMP
messages are typically generated in response to errors in IP datagrams(as specified in RFC1122) or for diagnostic or
routing purposes.

IGMP- The Internet Group Management Protocol is a communications protocol used to manage the membership of IP
multicast groups. IGMP is used by IP hosts and adjacent multicast routers to establish multicast group memberships. It is
an integral part of the IP multicast specification, like ICMP for unicast connections.

X.25- X.25 is an ITU-T standard protocol suite for WAN networks using the phone system as the networking hardware. It
defines standard physical layer data link and network layers (layers 1 through 3) of the OSI Model.The packet switching
network was the common name given to the international collection of X.25 providers, typically the various national
telephone companies.

ARP- In computer Networking using the IP suite, the Address Resolution Protocol is a method for finding a host's (MAC)
address from its IP address. The sender broadcasts an ARP packet containing the Internet address of another host and
waits for it (or some other host) to send back its Ethernet address. Each host maintains a cache of address translations to
reduce delay and loading. ARP allows the Internet address to be independent of the Ethernet address but it only works if
all hosts support it.

15
RARP- Reverse address resolution protocol (RARP) is a protocol used to resolve an IP address from a given hardware
address (such as an Ethernet address).

OSPF- Open Shortest Path First (OSPF) is alink state, hierarchical Interior Gateway Protocol (IGP) routing algorithm. The
well known formula is used to calculate theshorest path tree. It uses cost as its routing metric. A link state database is
constructed of the network topology which is identical on all routers.

RIP- The Routing Information Protocol (RIP) is one of the most commonly used Interior Gateway Protocols in the Internet,
which helps network routers dynamically adapt to changes of network connections by communicating information about
which networks each router can reach and how far away those networks are. Although RIP is still actively used, many
experts considered it as obsoleted by OSPF (and to a less extent) EIGRP.

IPX- Old Protocol used by Novell


26. Nivelul aplicatie. Servicii. Exemple de protocoale de serviciu.
Application layer Layer 7, the highest layer: This layer interfaces directly to and performs common application services for
the application processes. The common application services provide semantic conversion between associated application
processes. Examples of common application services include the virtual file, virtual terminal (for example, Telnet), and
"Job transfer and Manipulation protocol" (JTM, standard ISO/IEC 8832).

http://www.infoslurp.com/information/Application_layer
Application layer HTTP, HTTPS, SMTP, FTP, UUCP, NNTP, SSH, IRC, SNMP, SIP, RTP, Telnet ,...

27. Principiul memoriei virtuale. Evidenţiaţi resursele hardware şi respectiv software implicate în acest mecanism. Ce este
şi care este rolul TLB (Translation Lookaside Buffer) ? .*mihu vintan* m38, x10, x49
Obiectivele initiale ale metodei one-level store au fost acelea de a face astfel incat intreaga memorie (MP + MS) sa para
a fi MP (memorie principala cu acces aleator), de unde si termenul de un singur nivel (one-lsve!). Astazi se utilizeaza de
regula termenul de memorie virtual^ deoarece utilizatorului i se creeaza impresia unui spafiu de memorie principala foarte
extins (spatiul virtual) sub care se ascunde spafiu! real. O parte din spajiul virtual are corespondent in MP, iar cealalta
pane are coresponden(5 in MS (disc). Pentru cele 2 sparii, virtual si real, se utilizeaza adrese diferite. Programele
genereaza adrese virtuale care .adreseaza spatul virtual, in timp ce spatiul real este adresat cu adrese reale (sau fizice).
Spajiile real si virtual sunt divizate in blocuri de cuvinte numite pagini. Paginile au dirnensiunea constanta, care poate fi
intre 64 Bytes ;i 4KBytes, in funcjie de solujia adoptaia la proiectare. Procesorul (prin programele pe care le execute)
genereaza adrese vinuale, considerandu-se ca intreg spatiul adresabil de catre procesor (de exemplu, 231 = 4GB in
cazul procesorului Intel 486) este direct disponibil. In fiecare moment de timp, fiecare adresa virtuala are o adresa reala
corespondent in memoria fizica. 0 parte din memoria fizica este gazduita de MP si cealalta parte de MS (disc); pentru a
inregistra corespondenta dintre paginile virtuale si paginile reale se utilizeaza tabele de pagini (page tables) stocate in
MP. Printr-o referinta la tabela de pagini corespunzatoare, fiecare adresa_ virtuala, generata de catre procesor, este
translatata intr-o adresa reala, care va selecta o locatie,dintr-o pagina reala. Daca pagina reala este prezenta in MP, va fi
accesata informatia din locatia respectiva. Daca pagina reala nu este prezenta in MP, se va activa exceptia page fault
care va transfera controlul unei rutine speciale (handler-ul de excepjie). Aceasta rutina va incarca pagina solicitata in MP
(preluind-o de pe disc), va actualiza locatia corespunzatoare din tabela de pagini si va restarta instructiunea care a
generat exceptia page fault (instruction restart).
Solutii posibile de translatarea adresei:
-trebuie sa fie foarte rapida (trebuie facuta pentru orice acces la memorie)
-trebuie aplicata o strategie pentru care pagina cautata sa fie regasita in MP.
-daca sunt in MP se transleateaza hardware, daca nu software(page fault)
4.2.2. Buffer-e de tranflatare
Sistemele de calcul moderne sunt dotate cu MP de capacitate mare si de aceea tabela de translatare aferenta paginiior
din MP are foarte multe locatii; aceasta face imposibila implementarea intregii tabele Tntr-un hardware foane rapid (tabela
de translatare de vitezi mare)- Date fund acele caracteristici ale programelor pe care le-am inclus in principiu! Iocaliz5rii,
este dc a^teptat ca un set limitat de pagini (as.a numitul set de lucru) sJ fie referit sistematic pans in momentul schimbirii
contextului. Deci, numai adresele celor mai utilizate pagini trebuie tran.slatate in hardware. Prima referinja la o nouS
pagini va fi translatatJ prin accesarea tihelei de translatare din MP; mformapa citita va fi utilizata in translatarea adresei
dar v; fi 51 actualizati intr-o loca|ie a tabelei de mare vitezS. AceastJ tabel.l do inare vitezi (cache) care rt"ri.n.e intrariie in
paginile cele mai utilizate a primit mai
multe denumiri in literatura de specialitate: Translation Look-aside Buffer (TLB Translation Buffer (TB), Directory Look-
aside Table (DLT), sou-Address Transient Cache (ATC). TLB acfioneazi foarte asemanStor cu un cache de date retinand
acele adre: care vor fi eel mai prpbabil referite; de aici $i denumirea de cache pentru translatan adrese'.or (ATC). Figura
4.4 prezinta un sistem de translatare a adreselor cu TLB.
Pentru cS TLB nu asigur2 translatarea adreselor pentru toate paginile din M acesta trebuie si asigure dou3 func(;i:
- ^traiisla^areajiltrarapida a adre_selor virtuale actualizate in TLB
- urTjIJontrn de inlocuire a Tiniilor TLB atur.ci cand o r.ouS adresa virrja
trebuie actualizati in TLE
28. Analizaţi comparativ cele 3 arhitecturi de cache (mapare directă, semiasociativ şi asociativ) şi rezumaţi avantajele şi
dezavantajele fiecărei organizări. *mihu vintan*x47

16
Ceamai simpla metoda de a asocia aata~mernorata in cache cu adresa locatiei MP de unde provine este de a memora in
aceeasj locate cache atat data cat §i adresa MP de unde aceasta provine. Acesta este principiul maparii complet
asociative (fully associative cache). Pentru implementarea cache-urilor complet asociative se utilizeaza memorii
asccia:!-.: fm•:"•::': 2d-?s?bi!e prin continue), in fiecare locatie cache se memoreaza atat aoresa .\i? ca: si dau rr.eir.orata
in MP la acea adresa. Cand procescrui lanssazi o citire din memorie, adresa MP este coraparata cu toa:e adrese'.e
rr.err.crats in cache (memorie asociativa) as,a cum se indicJ in figura 3.3.
Pentru a exploata avantajele localizarii spapale (in toate tipurile de cache), intr locate cache se poate memora mai mult
decat o locatie MP (o linie sau un bloc de loca MP consecutive).
Cache-ul complet asociativ ofera flexibilitate maxima in ceea ce.-prive; combinarea liniilor in cache (orjce linie MP poate fi
incarcata in orice locatie cache) pentru o anumita capacitate a cache-ul\l\ ofera minimum de conflict, dar este in acelaji tir
s,i eel mai scump"datorita costului mernoriilor asociative (zona cache in care se me.-norea adresele MP este un plan de
memorie asociativa). In ciclurile miss infornapa solicitata procesor se va citi din MP $i linia din care provine aceasta
informatie trebuie actualize (copiata) in cache inlocuind astfel o aha linie actualizata anterior in cache. Linia care va
irilocuita va fi selectata pe baza unui algoritm de inlocuire 5! acest algoritm trebi irr.plementat in hardware deoarece
trebuie sa opereze la viteza ridicati. Implementar complet asociativa este viabila (din punct de vedere al costului) doar
pentru cache-uri capacitate mica pana la moderata. Microprocesoarele cu cache-un interne (on-chip) m folosesc frecvent
implementarea complet asociativa deoarece asigura1 performante maxim
Memoria cache complet asociativS este costisitoare deoarece rever.dica un plan de memorie asociativa a carui structura
devine foarte complexa pe masura ce cre$te capacitatea cache-u\u\. Cac/ie-urile cu mecar.ism de adresare prin mapare
directa utilizeaza memorie RAM normala de mare viteza. Structura di principiu a unei astfcl de memorii cache este redata
in fig. 3.5.
Adresa MP emisa de procesor este imparpta in doua campuri, Tag si index. Tag-u\ este format din bipi cei mai
semnificativi ai adresei si este memorat in cache impreuna cu data. lndei.-u.\ este format din bipi cei mai pujin
semnificativi si este utilizat la adresarea cache-uhn.
In cazu! maparii directe, o linie din MP cu un anumit index va ft mapats intotdeauna in aceeasi locate cache (in cea
selectatS de index-\i\ respectiv). si deci la un moment dat Tn cache se pot afla doar Iinii cu indecsi diferip. Deoarece o
linie MP poate fi gizduita de o singura locate cache, un algoritm dc inlocuire (evacuare) devine ncnecesar. Efkienta
inlocuirii liniilor cache in cazul maparii directe rezida din probabilitatea foarte mic5 ca douS Iinii MP diferite dar cu acela^i
index sS fie revendicate de procesor in aceeasi perioadS de timp.
Memorll cache
adresarea locajiilor cache. Aceasta tehnica $i avantajele ei vor fi prezentate in cazu! TLB (Translation Look-aside Buffer),
in capitolul 4.
Pentru cache-wile cu mapare directa pot fi identificate urmatoarele avantaje:
1. Nu necesita algoritm de inlocuire (evacuare)
2. Hardware siraplu ?i cost scazut
3. Viteza mare de operare
Dezavantajele sunt:
1. Performantele scad considerabi! daca in aceeaji perioadS de timp se acceseaza adrese NfP difsrire car care prszinta
cinipuri index ider.tics.
2. Rata de hit este mai mica decat in cazu! cac.^-urilor asociative.
Totusj, pe masura ce capacitatea cache-ului cre$te diferenfa dintre ratele de hit aferente celor 2 tipuri de cache-uii se
reduce 5! devine nesemnifkativa.
. Memoria cache organizatS in seturi asociative
In cazul memoriei cache cu mapare directi, toate cuvintele (liniile) memorate in cache trebuie sa aiba indec?i diferip. Ta?-
urile pot fi ider.dce sau diferite. Deci o linie MP poate fi copiatS intr-o stngura locape cache. In cazul memoriei cache
complet asociative, once linie MP poate fi copiata in orice locatie cache, dar costul devine prohibitiv pentru cac/!«-urile de
capacitate mare 51 memoriile asociative de capacitate mare devin relativ lente (operatia de cautare in memoria asociativj
consumS tot mai mult limp pe masurS ce capacitatea acesteia create).
Cac/i?-urile organizate in seturi asociative permit doar unui mimgr li^itat de linii MP, cu acelasi index si ra^-uri diferite, sa
fie incarcate in cache ;i deci ar putea fi considerate ca un compromis mtre maparea complet asociativa $i maparea dirscti.
Organizarea unui cache cu seturi asociative este prezentata in fig. 3.7.
Numarul de loca|ii (linii) dintr-un set reprezinta dimensiunea setului si se numeste asociativitate. Fiecare linie din fiecare
set confine un tag memorat care impreunS cu index-ul (numarul setului) identifies complet linia respectiva. Mai intai,
indej:-u\ din adresa MP emisa de procesor va selecta un set in cache. Apoi, comparatoarele vor compara toate tag-mis
din setul selectat cu fag-ul desprins din adresa emisS de procesor. Daca un comparator semnalizeaza egalitate (hit), linia
aferenta este accesatA si incarcatS in prccesor. DacS nici un comparator nu semnalizeaza egalitate (miss), se va recurge
la accesul in MP.

29. combinatia cache mem virtuala

Intr-un sistem de calcul cu memorie virtuala 51 memorie cache, memoria cache ar putea fi ir.serata dupS trans'.atarea
adresei virtuale prin TLB, astfel incat in cache se vor moraora tag-w] rezultate din adrese reale $i comparajia acestora se
va face cu wg-ul rezultat din adresa reals de acces in MP. O alta solutie posibila consta in inserarea cache-ului inainte de
translatarea adresei virtuale prin TLB, astfel incat in cache se vor memora tag-uri rezultate din adrese virtuale si

17
compara{ia acestora se va face cu tag-u\ rezultat din adresa virtuala emisS de procesor. Vom prezenta mai intai primu!
caz, care este mai pujir. complicat 5! care are mai pupne repercusiuni asupra proiectarii sistemului de calcul (ir,
ansamblu).

30. cache cu adrese reale

Desi riu este absolut necesar pentru o corecta operare, de regula se recurge la implementari care asigura un anumit grad
de paralelism (performanje supcrioare), translatarea adresei in TLB se face concurent cu anumite parji independentc din
procesul de se!ec(ie a locapei cache. Paralelismul va fi introdus in urmatoarea manierJ: sistamul dc
meraorie virtuala imparte adresa virtuala emisa de procesor in doua campuri, campul eel mai semnificativ care va
identifica pagina (campul page) $i cSmpul eel mai putin semnificativ care va "identifica cuvantul (linia) in cadrul paginii
(campul line). Pentru un anumit sistem particular delimitarea cimpurilor line $i page este fixS 51 astfel realizata incat
pagina si aiba o dimensiune optima (optimizarea transferurilor MP - disc la momentele page fault). In cazul cac/ie-urilor cu
mapare directa $i a celor mapate in s'eturi asociative, adresa virtuala este de asemenea imparpta in doua campuri,
campul superior tag $i campul inferior index, (care selecteaza setul sau linia cache). Daca campul index c6incide cu
campul line, atunci selecfia setului/liniei in cache se poate face in paralel cu translatarea adresei virtuale in TLB; acesl
lucru este posibil deoarece campul line nu este afectat de translator (trece nemodificat din adresa virtuala in cea rsala).
Dupa translatarea adresei in TLB $i obtinerea adresei reale, aceasta adresa va fi comparata cv to£-urile selectate in
cache.
Dm considerents de cost $i de viteza de operare, mult mai raspindite sunt TLJ urile organizate in seturi asociative. fn
aceasta situate, TLB-ul impune divizarea campul page in 1 subcampuri, tag si index, a?a cum indica figura 4.16
Pentni coc/te-uril^cu majiare dajstS, in mod cert, suprapunerea operafiilor in TLB si cache (paralelismuf) se bazeazS pe
faptul c5 dimensiunea paginii este iderxticS cu dimensiunea cache-uiui. Pentni cacAe-urile organlzate""in seturi,
asociative restric(iile. impose & paMelism nu mai sunt tot atat de severe (dimensiunea globala a cache-u\ui organizat in
seturi asociative poate s2 creasca prin crejterea dimensiunii setului). F5r5 a afecta esenfial paralelismul, va fi pennisS o
anumita variajie a lungimii campurilor delimitate in adresa virtual! In particular, dimensiunea paginii poate fi mai mare,
astfel incat vor aparea mai mulp bi{i in campul /me^HecIFnumanil de~biti necesari pentru selecfia setului (liniei) cache.
Bifii rama?i vor fi concatenafi la dreapta campului Real page citit din TLB, rezultand astfel un camp extins care se va
compara cu rag-uri!e citite din cache (fig. 4.17).

31. Cache adresat cu adrese virtuale; avantaje şi dezavantaje

Daca rneraoria cache este adresata cu adrese virtuale, In ciclurile de acces la memorie initiate de prgcesoiTaceste
adrese vor fi imediat disponibile; apare astfel o rezerva potenfiala care permite cresterea vitezei de operare in raport cu
cache-unle adresate cu adrese reale. In cazu! ciclurilor cu hit in cache nu va mai fi necesara translatarea-adresei. virtuale
prin TLB ceea cepoate conduce la o imbunatafire a vitezei de operare; translatarea adresei (prin TLB in cazul hit in TLB,
sau cu ajutorul tabelelor de translatare din MP in cazu! miss in TLB) va fi necesara numai in cazul ciclurilor cu rr.iss in
cache
. Un avantaj particular al cacfte-urilor adresate cu adrese virtuale va fi acela c£ nu mai este necesara suprapunerea
operatiilor TLB peste operafiile cache, deoarece nu mai ~este"necesaf<r translatarea adresei virtuale in adresa reala in
cazul ciclurilor cu hit in cache.
Desi cac/ie-urile adresate cu adrese virtuale par a fi o solufie atractiva, sa notam ca acestea indue $i anumite complicafii
datorate legaturilor care pot sa existe intre anumite adrese virtuale, care aparfin unor procese diferite si care coexists in
cache. Este posibil ca 2 adrese virtuale diferite, care aparfin 1a~ 2 pfocese-diferite,'s3'conducS-fprin translatare) la
aceea^i adresa reala. Asemenea adrese virtuale sunt denumite sinonime. Sinonimele apar daca locafia de memorie
adresata este partajata de 2 sau mai multe procese
Pentru a gestiona sinonimele, adreselor virtuale li se pot atasa /o^-uri de proces (tag-uri suplimentare), pentru a putea
diferenfia douii adrese virtuale identice dar care aparfin unor procese diferite.
0 alta metodS de gestionare a sinonimelor din cac/ie-urile adresate cu 2::; virtuale constS in utilizarea unui buffer de
translatare inversa num'u reverse irsrj'^: buffer (RTB) sau inverse translation buffer (ITB). in cazul unui ciclu cu miss in cj:
adresa virtuala va fi translatata In adresa reala cu ajutorul TLB. Adresa reala obprv^i •• . utilizata la accesarea MP; in
paralel cu derularea accesului in MP, adresa reala va si;:;: translaiare inversa pentru a se identifica toate adreselc virtuale
care conduc prin trar.i'.r.. la aceasta adresa reala. Translatarea invcrsa se face cu ajutorul RTB.

32. În sistemul de gestiune a memoriei identificăm algoritmi de înlocuire relativi la: *mihu vintan*m38, x10, x47
memoria cache
memoria virtuală
TLB (Translation Lookaside Buffer)
Pentru fiecare caz explicaţi rolul algoritmului şi modul principial de implementare.

A. AJgoritmii de inlocuire sunt de 2 tipuri:

18
- algoritmi baza{i pe gradul de utilizare a liniilor cache.
- algoritmi care nu se bazeaza pe gradul de utilizare a liniilor cache.
• Ambele tipuri sum aplicabile; un factor critic care se ia in considerare este cantitatea de hardware necesarS
implementarii, deoarece diferenjele de performan',2 pot fi uneori mai putin importante decat diferenjele de cost.
Un algoritm bazat pe gradul de utilizare pentru un cache complet asociativ trebuie sa ia in considerare gradul de utilizare
al tuturor liniilor cache. Acelasi algoritm pentru un cache organizat in seturi asociative trebuie sa ia in considerare doar
lir.iile din cotnponenta unui set (setul selectat de index), desi o inregistrare a gradului de utilizare trebuie pisrrata la nivelul
fiecarei linii din fiecare set.
Indiferent de tipul algoritmului (bazat pe gradul dc utilizare sau nu), vor fi mult mai pujine linii de luat in considerare in
cazul cac7i«-urilor organizate in seturi asociative decat in cazul cac/ie-urilor compiet asociative, 5! logica de implementare
a algoritmului va fi mult mai simpla. Pentru un cache 2-way set-associative este suficicnt un bit per set pentru a indica
linia ce trebuie inlocuita (o linie din doua). Pe masurJ ce asociativitatea create (16-way set-associative, de exemplu in
IBM 3033), crejte si complexitatea logicii de implementare a algoritmului si viteza de operare a acesteia trebuie atent
evaluata
Inlocuire aleatoare - De exemplu, un numarator asociat intregului cache poate fi incremental periodic (pe fiecare tact
procesor sau la fiecare referinta la cache). Valoarea momentana din numarator identifies linia de inlocuit. Pentru un cache
compir. asociati*-. cu capacitatea de 2" linii va fi necesar un numaratcr pe n bi{i; pentru un cache 4-v,-ay set-associative
va fi suf.cient un numarator pe 2
Algoritmul first-in first-out
Algoritmul de inlocuire first-in first-out (FIFO) selecteaza pentru inlocuire linia care se aflS in cache de ce! mai mult timp.
Algoritmul FIFO poate fi implementat in mod natural cu o memorie FIFO in care se incarca permanent adresele Hnii'.or ce
se actualizeaza in cache si din care se ob;in adresele liniilor ce vor fi inlocuite. O alta implementare mu'.t mai simpla este
cu numaratoare; cu un singur numarator pentru cache-\A complet asociativ $i cu cite un numarator pentru fiecare set in
cazul cac/is-urilor cu seturi asociative.
LRU - . Linia cea mai putin recent referita este linia cea mai pufin utilizata din setul celor prezente in cache 5! toate liniile
din acest set sunt recent utilizate pentru ca altfel nu s-ar mai afla in cache Algoritmul LRU este foane utilizat in memoriilc
cache $i poate fi implementat exact dac numarul de linii implicate nu este mare. Exists cateva variante de implementare
algoritmului in hardware.
1. numaratoare (contoare)
2. stiva de registre
3. matrici de referinte
4. mctodc aproximativc.

In cazul implementarii cu numaratoare (contoare), un contor est? asocial fiecarei linii cache. Intr-o implementare simpia
contoarele sunt incrementate periodic (la intervale regulate) 51 cind se "refers o linie .contorul asocial acesteia este
resetat. Deci valoarea fiecanii contor indicS "varsta" liniei, contorizaia de la ullima referin(3 la linia respectiva. In
momentul inlocuirii va fi inlocuita linia cu varsta cea mai mare
in cazul implementarii algoritmului LRU cu stiva de registre se utilizeaza un set de registre; fiecare linie din setul (cache-
u\) asociativ are asociat un registru. Daca setui asociativ confine 2" linii se va implementa o stiva de 2* registre a cate n
biti fiecare. Cea mai recent utiiizata linie va fi inregistrata in virful de sus al stivei §i cea mai purin recent utiiizata in capatul
de jos al stivei. In realiiate, setul de registre nu formeaza o stiva conventional deoarece toate registrele din stiva sunt
accesibile. 0 valoare memorata intr-un registru este transferata urmatorului registru in momentul indeplinirii anumitor
conditii.
Metoda matricii de referinfe utilizeaza o matrice de bi|i de stare. Exista mai multe versiuni ale acestei metode; in una
dintre ele (Smith, 1^82) se utilizeaia rnatricea triunghiularJ superioara obtinuta dintr-o matnce /Vx.V dm eare se elimina
diagonals si rnatricea triunghiulari inferioara. Parametrul ,V indicS numarul de linii con;inute in setul asociativ considerat.
Matricea triunghiutarS va avea [Ny.(N-l)]/2 bi(i. Cand linia ( este referita:
1. tofi bi'ii din rindul i al matricii triunghiulare sunt seta(i la 1.
2. to(i bifii din coloana i sunt resetafi la 0.
Cea mai putin recent utiiizata linie va fi aceea care are tori bitii pe 0 in randul ei toti bitii pe 1 in coloana sa; aceste conditii
de 0 $i, respectiv, 1 sunl usor de detectat loai

B. Ca $i in cazul memoriilor cache, algoritmii de mlocuire pot fi clasificati:


1. algoritrrii bazati pe gradul de utilizare a paginilor
2. algoritmi care nu se bazeaza pe gradul de utilizare a paginilor.
In cazul algoritmilor bazati Pe gradul de utilizare, pagina ce va fi evacuata va fi aleasa pe baza compararii numarului de
accese executate in fiecare pagina MP; pagina cu eel mai mic numar de accese va fi evacuata. Pentru a implementa un
astfel de algoritm in hardware este necesara "inregistrarea acceselor la paginile MP.
Algoritmii de mlocuire (bazap sau nebazap pe gradul de utilizare a paginilor) sum de doua tipuri:
1. algoritmi globali
2. algoritmi locali.
Algoritmii globali selecteaza pagina de evacuat luand in considerate toate paginile existente in MP, fara a tine cont de
modul in care aceste pagini sunt asociate diverselor programe. Algoritmii locali selecteaza pagina de evacuat luand in
considerate numai paginile asociate programului care a general exceptia page fault.
Algoritmul de inlocuire aleatoare

19
La activarea exceptiei page fault, acest algoritm realizeaza o selectie aleatoare paginii ce urmeaza a fi evacuata din MP.
Algoritmul de inlocuire aleatoare nu ia considerare principiul localizarii caracteristic programelor 5! deci nu va avea
performsn fcarte bune; este de as.teptat ca algoritmii care iau in considerare caracteristici programelor Inglobate in
principiul localizarii s3 lucreze mai bine. NumSral paginii i urmeazJ a fi evacuata poate fi general utilizand un generator de
numere pseudoaleatoa sau un contor de evenimente. Algoritmul de inlocuire aleatoare este simplu de implement dar este
rar utilizat.
AJgoribmul de inlocuire first-in first-out
La activarea exceptiei page fault, algoritmul first-in first-out (FIFO) va evac: pagina care se afla in MP de cea mai lunga
perioada de timp. In forma sa norma algoritmu! lucreaza ca un algoritm global dar poate fi modificat astfel incat sa
opereze do local. Algoritmu] poate fi descris ca o lista FIFO in care sunt inregistrate toate intrari paginilor din MP. La
activarea erorii page fault, toate intrarile din lista avanseaza cu pozitie si intrarea care iese din lista FIFO corespunde
paginii ce va fi evacuata pe disc; ] prima pozitie a listei se va insera intrarea aferenta noii pagini ce urmeaza a se
transfera i pe disc in MP. Initial, cand MP este goaia, si lista FIFO este goala. La fiecare eroare pa fault lungimea listei
creste cu o unitate; elementele din lista avanseaza cu o pozitie si i nou element este inserat pe prima pozitie a lislei. Lista
atinge lungimea standard momenrul in care par^ia de M
Algoritmul FIFO poate fi implemeTitat pe baza unei liste circulare gestionata la
nivel 50/hvare (fig. 4.11) . Un pointer indica in DermanenjJ intr?.rea in pagina cu cea mai mare vechime in MP. La fiecare
page fault, rutina care impiemeruiazS algoritmul FIFO va executa urmatoarele operafii succesive:
- evacueaza din MP (pe disc) pagina indicata de pointer
- ir.carca in MP (in locul paginii evacuate) noua paging solicitata
- Lncrementeazapomrer-ul
Algoritmul de inlocuirefirst-in-not-usedfirst-out
Algoritmul FIFO poate fi modificat astfel incat sa evite evacuarea paginilor
utilizate (care prezinta o probabilitate rnai mare de a fi accesate din nou). Algoritmul first-
in-not-used first-out (FrbfUFO) mai este denumit uneori ?i algoritmul clock deoarece
realizeaza o mi^care a po'mter-\i\m in genul mijcarii unui indicator pe cadranul unui ceas.
Algoritmul necesita implementarea unui bit use in fiecare intrare in pagina; bitul use va fi
setat prin hardware cand pagina asociata intrarii respective este accesata. Algoritmul
FINUFO poate fi descris ca o lista circulara de intrari in pagina, care contine toate intrarile
in paginile din MP, $i un pointer care selecteaza urmatoarea pagina de inlocuit a^a cum
arata figura4.12. '' - .
Cand se impune inlocuirea unei pagini in MP, bitul use aferent intrarii identificate de pointer este examinat. Daca bitul use
va fi gasit in 1, va fi resetat la 0 $i pointer-ul va avansa pe urmatoarea intrare in.pagina. Procesul se repeta pana cand va
fi identificat primul bit use in 0.
Algoritmul least recently used
In cadrul algoritmului least recently used (LRU), la momentu! page fault, va fi evacuata din MP pagina care n-a mai fost
referita de cea mai lungS perioada de timp. Algoritmul LRU poate fi descris ca o stivS care refine lista paginilor din MP in
ordinea in care acestea au fost referite. Ori de cate ori se acceseaza memoria (MP), ordinea intrarilor in lista este
actualizata; intrarea aferenta paginii accesate este plasata in varful stive i (devine cea mai recent accesata) sj toate
celelalte intrari sunt deplasate cu o pozitie in jos (pierd o pozipe in topul celor mai recent referite pagini). La page fault
toata lista (stiva) este deplasata cu o pozitie in jos, pagina care iese din lista este evacuata pe disc, in locul ei se incarca
pagina solicitata, si intrarea acestaia este plasata in varful stivei
. 0 varianta aproximativa a algoritmului LRU se implementeaza de regula in practica, 5! aceasta implementare se
bazeaza pebjjy^u.se. La intervale regulate, de exemplu de 1 ms, precizate de intreruperea timer \ slstemuiui, top bipi use
sunt examinafi de catre sistemul de operare §i resetafi automat (prin hard) cand sunt citip. Pentru o anumita pagina $i
pentru un anume interval de timp considerat, o inregistrare a numarului de situafii in care bitul use aferent este gasit in 1
reprezinta o aproximare a gradului de utilizare a paginii respective in intervalul de timp considerat
Poate sa aparj o lista de pagini intens utijizate^ o. lists de pagini mediu utilizate si o lista de pagini rar utilizate.

Algoritmul working set


Sctul_de_lucru (working set), w(t, T), la momentul i, reprezinta colecpa de pagij (t - T, t).
Algonimul working set se bazeaza pe faptul ca fiecare program are propriul set de lucru; el inlocuieste pagina care n-a
fost referita inintervalul T.
Noi pagini vor fi adSugate in setul de lucru la aparifia erorii page.fault. Teoretic, paginile sunt eliminate din setul de lucru
imediat ce se constati cS n-au fost referite In intervalu! (T) precedent. Torusi In practicS elirainarea se face tot la
momentu! page fault
Algoritmul LRU ar putea fi utilizat pentru a selecta doar una sau doua pagini pentru evacuare (din subsetul paginilor
nereferite in intervalul T). Algoritmul parking set ia in considerare partial de MP variabile si aplica o strategie locals, in
timp ce aigoritmii anteriori lucreaza cu partita fixe si strategii globale
0 implementare cu contoare va asigura fiec3rei pagini un contor hardware si un registru de identificare. Registrui indica
daca pagina face pane sat; nu din fereastra curenta (setul de' lucru curent). Cand o pagina din fereastra curenta este
accesata, contorul asociat este resetat la 0. Toate contoarele din fereastra curenta sunt incrementate la intervale
regulate. Cand un contor genereazJ dep3sire, pagina asociatJ este scoasa din fereastra curenta si devine o candidata la
evacuarea pe disc in momentul page fault.

20
C. ce este la A. + Pentru ca TLB-ul este in fapt un cache dedicat retinerii intrarilor in paginile cele mai utilizate, algoritmul
de inlocuire a unei intrari TLB va fi irr.ple'mentat total in hardware; va fi similar cu algoritmii utiliza|i in cazui memoriilor
cache.

/*********************************************************************17.06.06/
33. Rezumaţi caracteristicile esenţiale ale arhitecturilor:*mihu*
RISC
CISC
Evidenţiaţi avantajele/dezavantajele fiecărei arhitecturi.

COMPETITIA RISC - CISC


Arhitectura sistemelor de calcul a evoluat in timp in sensul cresterii complexitatii, largirea setului de instructioni, un numar
tot mai mare de moduri de adresare complexe, instrucriuni rot mai pntemice, tot mai multe rgistre specializate etc. Acesie
tendinte au condus din punct de vedere arhitectural la actuala clasa CISC (Complex Instruction Set Computer). In mod
inevitabil, insa, se atinge un punct de la care adaugarea unei noi instructiuni complexe la un anume set de instructiuni
existent va afecta negativ performanfeie generale si costul procesorului. Anumite instructiuni CISC sunt atat de ezoterice
incat multe compilatoare nu le folosesc.
Filozofia RISC recomanda includerea in set doar a acelor instructiuni care conduc la un castig in ceea ce priveste
performantele globale ale sistemului. Clasa RISC are urmatoarele caracteristici de baza: set redus de instrucjiuni care
include doar instructiuni simple, memorii cache on chip, numar mare de_de registre, un compiliator care maximizeaza
utilizarea registrelor (minimizeaza accesele la memorie) si incearca optimizarea performantelor procesorului cu structura
pipeline.
6.1. Factorii care au condus la curentul CISC
cauze care au alimentat tendinta de evolutie spre arhitecturi tot mai complexe:
Suport pentru limbajele de nivel inalt->unde avem instructiuni puternice Noile instructiuni au condus la extinderea
numerica a setului de instructiuni dar si a complexitatii acestuia
b) Migrarea functiilor din sofrware spre hardware. O instructiune complexa implementata in hardware va fi executata mai
rapid decat o secventa de
instructiuni simple care realizeaza aceeasi functie deoarece secventa necesita mai multe accese la memorie pentru fetch-
ul instructiunilor in conditiile in care se rnentine un decalaj clar intre viteza CPU si viteza memoriei. In ideea cresterii
vitezei de procesare, se observa un fenomen de migrare a functiilor din software spre firmware si din firmware spre
hardware, (firmware-ul reprezinta nivelul microinstructiunilor sau al microprogramului. Acest proces de migrare dinspre
software spre hardware conduce la cresterea dimensiunii si a complexitatii setului de instructiuni.
c) Compatibilitatea in jos: Compatibilitatea in jos (cu modelele anterioare) este adesea utilizata de producatori ca o
strategie pentru promovarea propriilor produse. Compatibilitatea in jos este o cale de perfectionare a noului produs prin
adaugarea unor functi noi (noul calculator trebuie sa posede toate capabilitatle functional ale predecesorilor sai si evident
ceva in plus). Ca rezuitat, noul set de instructiuni va fi un supraset al celui anterior.
Proiectantii de calculatoare au puncte de vedere diferite, dar urmatoarele 2 criterii sunt unanim acceptate:
1. viteza de operare trebuie maximizata (timpul de executie minimizat)
2.costurile de proiectare si pretul de productie trebuie minimizate.
0 prima cale de indeplinire a primului criteriu vizeaza tehnologia electronica utilizata la fabricarea componentelor
(utilizarea acelor tehnologii care permit viteze si frecvente de comutare cat mai mari). A doua cale vizeaza arhitectura.
Cresterea vitezei se poate obtine prin reducerea numarului rnediu de perioade de tact per instructiune si/sau prin executia
simultana a mai multor instructiuni. Pentru a indepiini ambele criterii initiatorii primelor proieicte RISC s-au concentrat
asupra implementarilor VLSI. Proiectand un set redus de instructiuni simple, cu un numar redus de moduri de adresare
simple, si cu formate de instructiuni simple si de lungime fixa, au obtinut o unitate de control simpla si rapida. Scopul
esential al tehnologiei VLSI este de a implementa intregul procesor intr-un singur circuit (chip). Aceasta,va reduce
semnificativ intarzierile datorate transrniterii semnalelor de la un circuit la altul.
6.2. Evolutia catre arhitectura RISC
Arhitecturile CISC (set amplu de instructiuni, multe moduri de adresare, formate de inscructiuni de lungime variabila)
necesita o logica de control mai complexa. Cum procesorul este de regula microprogramat aceasta logica trebuie
transferata intr-un microprogram complex care va fi stocat intr-o memorie de control de capacitate relativ rnare. Ca
rezultat, daca procesorul CISC este implementat in tehnologie VLSI, o pane substantiala din aria circuitului va fi ocupata
de memoria de microprogram. Unitatea de control aferenta procesorului CISC consuma aproximativ 40%-60% din aria
disponibila, comparativ cu numai 10% in cazul RISC. Aria economisita in cazul RISC va putea fi utilizata in alte scopuri
(memorii cache on-chip de capacitate mare, set de registre generale extins etc.) care vor conduce la imbunatatirea
performanjelor procesorului. Pe masura ce tehnologia VLSI va evolua, procesoarele RISC vor fi permanent cu un pas in
fata procesoarelor CISC. De exemplu, cand CISC-uI va putea fi integral intr-un singur circuit, RJSC-ul va avea ceva in
plus (set extins de registre, cache on-chip etc.), cand CISC-ul va avea suficiente registre si cache en-chip, RISC-ul va
avea mai multe procesoare in acelasj circuit,s.a.m.d.
Cand inventariem avantajele arhitecturilor RISC trebuie sa reliefam mai multi factori: vitieza de procesare, implememarea
VLSI, timpui de proiectare si costul proiectarii, suport oferit pentru limbajele de nivel inalt.
In ceea ce priveste viteza de procesare, arhitectura RISC suporta mult mai bine modelul pipeline la nivelu! instructiunii.
Cu un set de instructiuni simple si relativ uniforme ca timp de executie (complexitate) arhitectura RJSC maximizeaza

21
performantele procesorului pipeline', aceasta uniformizare a dimensiunii codului instructiunii (format de lungime fixa)
precum 51 uniformizarea duratei de executie a instructiunilor va reduce numarul de stari wait din diagrama spatiu-timp.
Un alt avantaj ai procesoarelor RISC este ciclul de proiectare mai scurt. Arhitecturile complexe (CISC) necesita un ciclu
de proiectare mai lung si perioade mai lungi de testare si diagnoza a microcodului. Arhitectura simpla (RISC) este mai
putin predispusa la erori de proiectare, iar ciclul scurt de proiectare reduce sansa ca produsul sa fie depasit in momentul
lansarii pe piata.
In general, arhitectura RISC are urmatoarele caracteristici:
1. Marea majoritate a instructiunilor acceseaza operanzii in registre. Exceptie fac instructiunile load/store care
acceseaza memoria. Cu alte cuvinte, arhitectura RISC reprezinta o masina load-store.
2. Executia celor mai multe instructiuni necesita un singur ciclu procesor, exceptand cateva instructiuni, cum ar fi
instructiunile load/store. In prezenta memoriei cache on-chip chiar si instructiunile load/store pot fi executate intr-un singur
ciclu procesor.
3. Instructiunile au format de lungime fixa si codul nu depaseste dimensiunea cuvintului memoriei (fetch-ul instructiunii
printr-un singur acces la memorie).
4. Unitatea de control este cablata si nu microprogramata.
5. Utilizeaza un numar redus de formate de instructiune (uzual sub 4).
6. Procesorul dispune de un set extins de registre generale si de o memorie cache on-chip de capacitate mare dublata,
in general, de o memorie cache externa procesorului de capacitate si mai mare. In cazul unui ciclu miss in cache-ul on-
chip, procesorul acceseaza cache-ul extern (mai lent), preia datele solicitate si, suplimentar, actualizeaza cache-ul on-
chip. Daca si ciclul din cache-ul extern este un ciciu miss atunci procesorul va accesa memoria centrala
7. Transferul complexitatii in compilator. De exemplu, compilatorul trebuie sa gestioneze branch-unit intarziate.
Compilatorul va avea si sarcina reorganizarii programelor (reordonarea instructiunilor) in vederea cresterii performanfelor
procesorului pipeline.
8. Set redus de instructuni (adesea sub 150) si foarte putine moduri de adresare (adesea sub 4).
9. Suporta operatii specifice limbajelor de nivel inalt printr-o judicioasa definire a setului de instructuni si prin
optimizarea compilatoarelor.
10. Utilizeaza tehnici pentru reducerea penalitatilor de performanta cauzate de instructiunile branch aspura procesorului
pipeline (prefetch-ul multiple, tehnici de predictie etc.)
In general, timpul consumat de catre procesor pentru executia unui program poate fi determinat calculand prcdusul a trei
factori:
- numarul instructunilor din program
- numarul mediu de cicluri procesor necesare pentnu executia unei iristructiuni
- durata ciclului procesor
Arhitectura CISC reduce numarul de instructiuni din program datorita utilizarii instructiunilor complexe. Arhitectura RISC
reduce numarul de 'cicluri procesor necesare executiei unei instructiuni.
Arhitectura RISC este o masina load-store', ea poate obtine un nivel ridicat de paralelism in executia instructiunilor prin
separarea executiei instructiunilor load si store de executia celorlalte instructiuni. Arhitectura CISC nu este capabila de
acelasi nivel de paralelism datorita numeroaselor instructiuni registru-memorie.
Cele mai multe puncte negative ale arhitecturii RISC sunt direct legate de punctele pozitive. Datorita instructiunilor simple,
performantle arhitecturii RISC sunt dependente de eficienta compilatorului. Setul extins de registre (fereastra de registre)
revendica o schema de alocare mult mai complexa care mareste complexitatea compilatorului. In consecinta principalul
dezavantaj al arhitecturii RISC consta in necesitatea scrierii unui compilator performant. In general, timpul necesar
proiectarii sistemului software pentru masinile RISC este mai lung decat cel necesar in cazul masinilor CISC. Un alt
dezavantaj consta in faptul ca exista instructiuni CISC care echivaleaza cu 2 sau chiar 3 instructuni RISC, ceea ce
conduce la programe RISC mai lungi decat programele CISC echivalente. In conciuzie, considerand punctele bune
aferente fiecareia dintre arhitecturi, proiectarea procesoarelor RISC ar putea fi imbunatatita prin utilizarea anumitor
principii CISC dezvoltate ,si imbunatante de-a lungul anilor. '

34. Caracteristicile modelului relaţional pentru baze de date.*mitea*m6,m37.2, x24, x42, x43

Bazele de date reprezintă o modalitate de stocare a unor informaţii (date) pe un suport extern, cu posibilitatea regăsirii
acestora.
De obicei o bază de date este memorată într-unul sau mai multe fişiere. Bazele de date sunt manipulate cu ajutorul
sistemelor de gestiune a bazelor de date. Cel mai răspândit model de baze de date este cel relaţional, în care datele sunt
memorate în tabele. Pe lânga tabele, o bază de date relaţională mai poate conţine: indecşi, proceduri stocate, trigger-e,
utilizatori şi grupuri de utilizatori, tipuri de date, mecanisme de securitate şi de gestiune a tranzacţiilor etc. Alte modele de
baze de date sunt modelul ierarhic, modelul orientat-obiect şi, mai nou, modelul XML.
Intr-un SGBD relational datele sunt organizate in tabele. Tabelele sunt formate din inregistrari, care la randul lor sunt
formate din campuri. 2 sau mai multe tabele pot fi legate prin intermediul unuia sau mai multor campuri.
BD relational este vazuta ca un tot doar prin intermediul programului

Modelul relational a fost introdus de E.F. Codd in 1970 s,i a constituit un moment de rascruce in managementul datelor.
Abordarea propusa de Codd era complet diferita de cele anterioare. In modelul relational structura de date era
reprezentata de o tabela, de tip spreadsheet, constituita din linii §i coloane. Fiecare linie identified un articol §i fiecare
coloana un camp din articol.

22
In limbajul relational tabela este realtia, linia este tuplul iar coloana atributul. Astfel modelul relational este perfect
fundamentat matematic de algebra relatiilor. O tabela este unic identificata de o cheie primara, respectiv o coloana
(camp, atribut) sau o combinatie de coloane cu proprietatea ca nu exista doua linii din tabela care sa aibe aceeasj valoare
pentru cheia primara. Un domeniu este o multime de valori posibile pentru atribute specifice relatiei.
Cheia primara este un caz special de cheie candidate (candidate key). 0 cheie candidata pentru o relatie R este o
submultime K de atribute ale lui R cu proprietatea de unicitate sj de ireductibilitate. Proprietatea de unicitate spune ca nu
exista doua tuple din R care sa aibe aceasj valoare pentru K, iar proprietatea deireductibilitate consta in faptul ca nici un
subset propriu al lui K nu are proprietatea de unicitate. Cheia straina (foreign key) este un atribut sau o combinatie de
atribute ale unei relatii R2 ale caror valori trebuie sa se potriveasca cu cele ale unei chei primare dintr-o alta relatie R1.
relatiile R1 si R2 nu sunt neaparat distincte. Cheia straina si cheia primara trebuie sa fie definite neaparat pe acelasi
domeniu.

Bazele de date relational sunt declarative si asigura independenta fizica a datelor de programele de aplicalii.
Baza de date relationala este alcatuita dintr-o colectie de tabele. sau rela/ii.. r......rii. Fiecare tabela Ri are coloanele Cil,
Ci2,...,Cim. Fiecare coloana Cij are asociat un tip de data care reprezintii un set de valori permise pentru acea coloana si
care se numeste donicniie coloanei. Specilicarca tabelelor, a coloanelor acestora si a tipurilor de data pentru coloane este
parte a schemei bazei de date si se realizeaza folosind limbajul de definire a datelor (DDL). Tabelele sunt populate cu
randuri de inregistrari sau insiantc ale relatiei. Inserarea. modificarea, stergerea, interogarea accstor randuri ale relatiilor
este facuta cu ajutorul limbajului de manipulare a datelor (DML). La nivelul tabelelor se pot stabili restrictii de integritate
cu privire la valorile coloanelor si ale randurilor dintr-o tabela individuala sau restrictii de integritate referentiala cu privire
la valorile coloanelor dinlre mai multe tabele.
oeupa astazi primul loc in ierarhia cclor mai utilizate modele de baze de dale.

Modelul relational implica 3 aspecte:


-structura datelor
-integritatea datelor(sa respecte regula de integritate a entitatii si de integritate referentiala)
-manipularea datelor (operatori ai algebrei relationale)
35. Ce se înţelege prin depozit de date (data warehouse) şi în general în ce constă o operaţie de data mining?
Rezumat:
Depozitul de date,este intr-un fel complementul sistemului informatic operational. Un depozit de date este o colectie de
date destinate fundamentarii deciziei manageriale. O astfel de colectie de date este: tematica, integrata,plasata intr-un
context temporal si permanenta.
Datele din data warehouse provin in principal din datele capturate din sistemul operational, dar mai pot proveni din datele
de arhiva (in perioada de constituire a depozitului) precum si din surse externe, cum ar fi baze de date publice.
Rolul unui depozit de date este de a ofe'ri o imagine coerenta asupra datelor relative la activitatea unei organizatii si a
contextului in care ac actioneaza. Utilizarea ac colectii poate consta din . xtragerea unor rapoarte, extragerea unor date
ptr a fi utilizate de aplicatiile de birotica dar mai ales ptr a fi utilizate de catre aplicatii speciaiizate de analiza. Ac ar putea fi
impartite in 2 categ : instr de analiza on-line (OLAP - On line analytical Procesing) si instr ptr ,,minerit" in date (data
mining - aplicatii axate pe descoperirea unor sabloane semnificative in colectii de date).
Un depozit de date este o colecţie de date orientată tematic, integrată, variabilă în timp şi nevolatilă destinată asistării
deciziilor. Un depozit de date se distinge de o bază de date operaţională prin funcţionalităţi şi obiective. Astfel, o
organizaţie va menţine baza de date operaţională şi separat va constitui depozitul de date.
Depozitele de date se proiectează avînd la bază modelul de date multidimensional, care are în centru hipercubul.
Folosind modelul de date multidimensional se pot realiza prelucrări analitice online (on-line analytical processing OLAP).
Operaţiile tipice OLAP includ roll-up, drill-down, slice-and-dice, pivotare, calcule statistice, calcul medii în mişcare (moving
averages), rate de creştere şi altele.
Depozitele de date au deobicei o arhitectură cu trei nivele. Nivelul de bază este serverul de baze de date al depozitului şi
este în general un sistem de baze de date relaţionale. În ultimii ani au apărut însă şi siszeme post relaţionale, orientate
obiect. Nivelul de mijloc constă într-un server OLAP iar al treilea nivel conţine instrumente pentru interogări şi raportări de
rezultate. Serverele OLAP pot fi relaţionale (ROLAP), multidimensionale (MOLAP) saz hibride (HOLAP). Un server
ROLAP utilizează un SGBD relaţional extins, care mapează operaţiile OLAP pentru modelul multidimensional pe operaţii
pentru modelul realţional standard. Un server MOLAP mapează viziunile multidimensionale direct pe o structură
matriceală. Serverele HOLAP combină ROLAPşi MOLAP, de exemplu menţinînd datele istorice după modelul ROLAP şi
utilizînd modelul MOLAP pentru accesele frecvente la date. Un cub de date constă dintr-o latice de cuboizi (microcuburi),
fiecare corespunzînd unui anumit grad de rezumare a datelor multidimensionale. Calculele selective realizate pe o
submulţime de microcuburi din latice se numesc materializare parţială. Calculul tuturor microcuburilor din latice se
numeşte materializare totală. Serverele MOLAP utilizează o tehnică numită agregare matriceală multiplă (multiway array
aggregation) care permite realizarea materializării totale în mod eficient, prin suprapunerea unor calcule de agregare.

p121
Din nevoia stringentă de a cunoaşte comportamentul datelor acumulate s-a născut o nouă disciplinjă şi anume data
mining (minieritul datelor). Data mining se găseşte la intersecţia statisticii, informaticii, inteligenţei artificiale, învăţării
automate şi nu numai. Tehnicile şi instrumentele pentru data mining se pot aplica oricărei colecţii de date dar se aleg în

23
funcţie de specificul domeniului studiat. In general datele care sunt supuse procesului de minierit sunt organizate în
depozite de date. datele din baze de date sau fişiere plate (flat files) sunt supuse unor operaţii de integrare şi curăţire şi
structurate în depozite de date. Din depozitul de date se selectează datele relevante pentru activitatea de analiză şi sunt
transformate, consolidate în forme care se pretează operaţiilor de data mining. O transformare tipică estre cea de
rezumare sau agregare. se aplică apoi metode inteligente pentru extragerea pttern-urilor, a asociaţilor. Pattern-urile
găsite sunt apoi supuse unui proces de evaluare pe baza unor măsuri (indicatori) de relevanţă. In final se folosesc tehnici
de vizualizare şi de reprezentare grafică a cunoştinţelor pentru prezentarea rezultatelor căutărilor. diferitele etape de
minierit date pot interacţiona cu utilizatorul sau cu o bază de cunoştinţe.
O arhitectură tipică pentru un sistem de data mining are următoarele componente:
bază de date, depozit de date sau altă formă de colecţie de date. Pot fi mai multre baze de date, depozite etc. Pe aceste
date se realizează operaţiile de curăţire şi integrare.
server de baze de date sau de depozit de date. Serverul va regăsi, pe baza cererii utilizatorului, datele relevante.
baza de cunştinţe. Cuprinde cunoştinţele din domeniu care ghidează căutare şi permit evaluarea rezultatelor. O astfel de
bază de cunoştinţe poate include ierarhii de concepte, folosite pentru organizarea atributelor sau valorilor atributelor pe
diferite nivele de abstracţie. Se pot include măsuri de tip utilităţi sau credinţe ale utilizatorului sau ale experţilor din
domeniu, care de asemenea se vor folosi în faza de evaluare. In baza de unoştinţe se pot introduce şi restricţii sau valori
prag interesante precum şi meta date (de exemplu descrierea datelor din surse multiple, heterogene).
motorul de data mining. Acesta constă, in principiu, dintr-o mulţime de module funcţionale care descoperă caracteristici,
clasificări, relaţii de asociere, clustere, realizează analza de evoluţie sau deviaţie.
modul de evaluare pattern-uri. Acest modul utilizează măsuri ale interesului asociat pattern-urilor găsite. Astfel sunt, de
exemplu, măsurile obiective suport (support) - procentul de entităţi (sau tranzacţii în cazul bazelor de date tranzacţionale)
care satisfac regula de asociere - şi încredere (confidence) - gradul de încredere în relaţia de asociere detectată - pentru
relaţiile de asociere. Se pot folosi şi măsuri subiective, bazate pe credinţele utilizatorului. modulul de evaluare
interacţionează cu modulele de data mining pentru a orienta căutarea către fapte de interes. Se pot folosi praguri de
interes sau filtre.
GUI (Graphical User Interface) - Interfaţa Grafică cu Utilizatorul. Permite specificarea interogărilor sau altor tipuri de
sarcini, a informaţiilor de orientare a căutărilor, realizează data mining explorator plecînd de la rezultate intermediare.
Modulul GUI permite utilizatorului să baleieze baza de date şi schemele depozitului de date sau structurile de date, să
evalueze pattern-urile găsite şi să le vizualzeze în diferite forme.
Din perspectiva depozitului de date, data mining poate fi privit ca un proces superior de analiză online - on-line analytical
processing (OLAP), analiză care depăşeşte cu mult prelucrările de rezumare tipice pentru OLAP.
Pentru data mining se pot utilza produse de tipul OLAM - On Line Analytical Mining. Un sistem de analiză OLAM poate
avea o arhitectură pe patru nivele: surse de date, baze de date multimensionale, OLAP/OLAM şi intefaţa cu utilizatorul

Data mining is the process of discovering meaningful new correlations, patterns and
trends by sifting through large amounts of data stored in repositories, using pattern recognition technologies as well as
statistical and mathematical techniques." (Gartner Group).
"Data mining is the exploration and analysis, by automatic and semiautomatic
means, of large quantities of data in order to discover meaningful patterns and
rules." (M.J.A. Berry, G. Linoff).

In altre parole, col nome data mining si intende l'applicazione di una o più tecniche che consentono l'esplorazione di
grandi quantità di dati, con l'obiettivo di individuare le informazioni più significative e di renderle disponibili e direttamente
utilizzabili nell'ambito del decision making.

36. Ce se înţelege prin concurenţă şi cum se rezolvă aceasta la nivelul unui SGBD relaţional? *mitea*x24, x39
in cazul existentei mai multor utilizatori, un SGBD trebuie sa gestioneze accesul concurent al acestora, mentinand in
acelasi timp integritatea bazei de date. Vom spune in acest caz ca SGBD-ul gestioneaza concurenta bazei de date.
Concurenta poate fi definita ca simultaneitate in sensul ca doi sau mai multi utilizatori acceseaza aceleasi date in aceiasi
perioada de timp. Gestionarea de catre SGBD a concurentei o intalnim atunci cand mai mult de o persoana trebuie sa
acceseze aceiasi baza de date, si in mod special acelea§i date, iar SGBD-ul trebuie sa asigure intr-un fel sau altul ca
acest acces concurent este posibil. In plus, fiecare utilizator trebuie sa aiba o ,,vedere" consistenta asupra bazei de date,
incluzand modificarile vizibile facute de catre alti utilizatori, iar pe de alta parte SGBD-ul trebuie -sa impiedice modificari
incorecte ale datelor, care ar compromite integritatea acestora.
Metodele pe care un SGBD le foloseste pentru a realiza acest lucru sunt in principiu destul de simple, implementarea lor
fiind insa destul de complexa. In esenta, un SGBD asigura concurenta in modul urmator. Cand doua sau mai multe
persoane vor sa vizualizeze aceleasi date fara a le modifica insa, totul este in ordine si nu trebuie luate masuri
suplimentare. Cand insa cel putin o persoana doreste sa faca modificari asupra unor date care in acela§i timp sunt
vizualizate de catre alte persoane, atunci SGBD-ul trebuie sa stocheze mai multe copii ale datelor si sa transfere toate
modificarile-copiilor intr-o singura versiune atunci cand intreaga operafiune este terminata.
Problema este ceva mai complicata in momentul cand mai multi utilizatori incearca sa facS modificari asupra acelorasi
date. Un SGBD rezolva problema folosind blocarea(locking). Utilizatorul care a efectuat primul modificarea datelor le
blocheaza, ceilalti utilizatori neputandu-le modifica pana cand operatia efectuata de acesta nu este incheiata. intregul
mecanism care gestioneaza concurenta intr-o baza de date are la baza conceptul de tranzactie. Tranzacfia este cea mai
mica unitate de lucru. Aceasta inseamna ca nu poate exista nici o operate mai mica decat o tranzacfie. Toate tranzactiile

24
trebuie sa fie atomice, adica orice tranzactie individuala fie este complet executata, fie nu se executa deloc. Cu alte
cuvinte, o tranzactie nu poate fi executata partial. Cand o tranzacfie este incheiata se spune ca este permanentizata
(commited); cand o tranzacfie nu poate fi incheiata si este anulata se spune ca este derulata inapoi (rolled back).

37. Care sunt etapele de proiectare a unei baze de date? *mitea*m36, x24, x40, x41
1. Analiza sistemului economic pentru care se realizeaza baza de date si a cerin£elor informationale dorite
1.1. Analiza strucrurala (statica): analiza componentelor sistemului s, i a legaturilor . diiitre acestea. In urma acestei
analize se obtin modelul structural (static);
1.2. Analiza comportamentalS (temporals): analiza starilor sistemului sj aposibilelor tranzijii intre aceste stari. Se obtine
astfel modelul dinamic saQ comportamental;
1.3. Analiza cerinfelor informafionale, respectiv a transformarilor de date. Rezulta astfel modelul functional;
1.4. Integrarea celor trei modele in scopul corelarii §i completarii lor
2. Proiectarea structural bazei de date la nivel logic, conceptual §i fizic
3. Incarcarea datelor in baza de date
4. Exploatarea §i intrefinerea bazei de date .
Proiectarea bazelor de date
Proiectarea bazeior de date are ca scop transformarea modelelor informationale numite §i
semantice (conceptuale) in modele dependente de sisteme de gestiune a bazelor de date, de
unde rezulta orientarea pe conceptele proprii ale unui SGBD. Din acest motiv, proiectarea
unei baze de date are ca pasi:
Pasul 1. alegerea tipului de sistem de gestiune a bazei de date
Pasul 2. proiectarea schemei conceptuale a bazei de date specifica tipul de sistem
Pasul 3. proiectarea structurii logice
Pasul 4. proiectarea structurii fizice
1-analiza situatiei
2-proiectare conceptuala
3-selectie software pt sgbd
4-proiectare logica
5-proiectare fizica
6-implementare.

38. Ce este o tranzacţie şi ce proprietăţi are aceasta?

Tranzactie:secventa de actiuni dintr-un program, o unitate logica de lucru, care citeste si/sau scrie date in baza de date si
care satisface testul acid, incadrata de delimitatorii begin transaction si end transaction

ACID (Atomicity, Consistency, Isolation, Durability)


Atomicity==tranzactia este ori solicitata in totalitate, ori deloc. Daca e solicitata complet se face cu commit, in cazul
neexecutarii tranzactiei ea se abandoneaza cu abort. SGBD tre sa se asigure ca toate operatiile commit sunt in baza de
date, si sa elimine toate tranzactiile finalizate cu abort
Consistency ==daca toate restrictiile de integritate asupra BD sunt satisfacute. Executia unei tranzactii trebuie sa faca
transferul bazei de date dintr-o stare consistenta in alta stare consistenta
Isolation==are legatura cu executia tranzactiilor concurente(care manipuleaza in mod partajat aceleasi date din BD).Daca
acest gen de operatii se suprapun si nu sunt protejate pot aparea anomalii.Izolarea face protejarea rezultatelor
intermediare ale operatiilor din cadrul unor tranzactii concurente. SGBD pot furniza mai multe nivele de izolare. Un nivel
este serializibilitatea tranzactiilor care ofera cel mai puternic nivel de izolare.Tranzactiile se numesc serializabile daca
executarea intretesuta a operatiilor lor produce acelasi efect asupra BD ca si cand ar fi executate intr-o oarecare ordine
seriala.
Durability==presupune ca actualizarile tranzactiilor executate cu succes nu sunt niciodata pierdute. Ele pot fi refacute in
cazul unor defectiuni aparute la nivelul sistemului.

39. Ce se înţelege prin baze de date distribuite? Dar prin baze de date orientate obiect? *mitea*
de la moisil:

Baze de date orientate obiect


Se integreaza facilitatile specifice bazelor de date cu cele specifice programarii orientate obiect si se obtine un sistem de
gestiune baze de date orientat obiect : ODBMS. Un ODBMS face ca obiectele din baza de date (persistente, fata de cele
dintr-un program) sa apara ca obiecte dintr-un limbaj de programare. Sistemele de gestiune baye de date orientate obiect
extind programarea orientata obiect cu date persistente transparent, control al concurentei, , data recovery, interogari
asociative, _i alte facilitati.
Persistenta transparenta din bazele de date obiectuale se refera la posibilitatea de a manipukla direct obiecte din baza de
date folosind un limbaj de programare orientat obiect. Aceasta in contrast cu sub-limbajul folosit de SQL sau de interfata
de appel folosita de ODBC sau JDBC. Astfel cre_te performanta _i se scrie cod mai putin..

Baze de date distribuite

25
Intr-un sistem de baze de date distribuite (SBDD), informatiile sunt impartite In baze de date mai mici, distribuite fiecare
pe calculatoare In retea. In SBDD, se Indeplinesc functii de pro cesare a interogarilor si de control al concurentei. 0 data
cu dezvoltarea retelelor de mare viteza (Gb/s), costurile de transmisie a datelor In retea au scazut si a devenit necesara
dezvoltarea unor noi algoritmi care sa utilizeze eficient largimea de banda (mai mare decat In cazul retelelor obisnuite =
Mb/s) disponibila, adica sa obtina la iesirea sistemului 0 productivitate mai mare In rezolvarea tranzactiilor.
0 baza de date distribuita este 0 baza de date care este controlata de un sistem de management al bazei de date in care
dispozitivele de stocare nu sunt ata_ate in totalitate de 0 unitate centrala de prelucrare obi_nuita. Pot fi stocate in
calculatoare multiple a_ezate in aceea_i locatie fizica, sau dipersate intr-o retea sau prin calculatoare interconectate.
Colectii de date (de exemplu intr-o baza de date) pot fi distribuite de-a lungul mai multor locatii fizice. 0 baza de date
distribuita este distribuita in partitii/fragmente separate. Fiecare partitie/fragment a unei baze de date distribuita poate fi
reprodusa (adica e_ecuri redundante, cum ar fi 0 matrice de hard-disk-uri). In afara de replicarea _i fragmentarea bazelor
de date distribuite, exista multe alte modele de tehnologii ale bazelor de date distribuite. De exemplu, autonomia
locala, :;;i tehnologii sincrone :;;i asincrone ale bazelor de date distrbuite. Aceste implementari ale tehnologiilor pot
depinde de nevoile afacerii _i sensibilitatea/confidentialitatea datelor care vor fi stocate in baza de date.
Arhitectura de baza - client-server: un server de baze de date este un software care intetine 0 baza de date, _i un client
este 0 aplicatie care cere informatii de la server. Fiecare calculator intr-un sistem este un nod. Un nod intr-un sistem de
baze de date distribuite se comporta ca un client, un server, sau ambele, depinde de situatie.
Pastrarea si protejarea datelor in vederea unor prelucrari ulterioare este 0 activitate vitala in dezvoltarea si utilizarea
aplicatiilor software asemeni procesului de dezvoltare a programelor.
Clonarea unei baze de date, este procesul de obtinere unui exemplar identic de baza de date, care prezinta aceleasi
caracteristici cu originalulin ceea ce priveste tabelele, datele si legaturile.
Se face distinctie intre notiunea de replicare a bazei de date si notiunea de clonare a bazei de date. Replicarea este un
concept atasat bazelor de date distribuite. El consta in mentinerea acelorasi date pe mai multe site-uri, acest lucru
implicand propagarea la distanta a oricarei modificari suferite de baza de date, asigurandu-se integritatea datelor.

BDD omogena – necesita SGBD-uri de acelasi tip pt fiec server si baza de date
BDD heterogena – permite cooperarea mai multor SGBD-uri diferite
Avantajele bazelor de date distribuite
.Reflecta structura organizationala - fragmente ale bazei de date sunt situate in departamentele de care apartin.
Autonomie locala - un departament poate control a datele despre ele (ele fiind cele cu care sunt obi:;;nuite).
Disponibilitate imbunatatita - 0 gre_eala intr-un sistem de baze de date va afecta doar un fragment, in loc sa afecteze
toata baza de date.
.Performanta imbunatatita - datele sunt amplasate langa situl cu cererea cea mai mare, iar bazele de date insu_i sunt
paralelizate, permitand ca incarcarea in baza de date sa fie echilibrata de-a lungul serverelor. (0 incarcare mare intr un
modul al bazei de date nu va afecta alte module a bazei de date intr-o baza de date distribuita).
Economie - costa mai putin sa se creeze 0 retea de computere mai mica cu puterea unui singur computer mare.
Modularitate - sistemele pot fi modificate, adaugate sau _terse dintr-o baza de date distribuita, fara sa afecteze alte
module (sisteme).

Dezavantaje a bazelor de date distribuite


.Complexitatea - munca suplimentara trebuie rncuta de catre administratorii bazelor de date pentru se a asigura ca natura
distribuita a sistemului este transparenta. Munca suplimentara trebuie de asemenea rncuta pentru a mentine multiple
sisteme disparate, in locul unuia mare. Munca suplimentara de proiectare a bazei de date trebuie rncuta de asemenea
pentru relatarea naturii deconectate a bazei de date - de exemplu, alaturarea devine deosebit de scumpa cand este
efectuata de-a lungul a mai multor sisteme.
Economia - complexitatea crescuta _i infrastructuri mai vaste inseamna costuri suplimentare de munca.
Securitatea - fragmente vaste ale bazei de date trebuiesc securizate, _i acestea nu sunt centralizate, a_a ca siturile vaste
trebuiesc de asemenea securizate. Infrastructura trebuie de asemenea securizata (ex: prin codificarea legaturilor retelei
intre siturile vaste ).
Dificultatea de a mentine integritatea - intr-o baza de date distribuita impunerea integritatii intr-o retea poate necesita prea
multe resurse de retea pentru a fi posibila.
Lipsa de experienta - este dificil a lucra cu bazele de date distribuite, _i ca _i un camp novice nu exista multa
documentatie de experienta disponibila pe practica adecvacta.
Bazele de date distribuite reprezinta baze de date logic integrate dar fizic distribuite pe mai multe sisteme de calcul.
Utilizatorul unei asemenea baze de date o vede ca pe o baza de date unica, compacts (nivelul logic), cu toate ca, in
realitate, ea este distribuita pe mai multe calculatoare legate intre ele (nivelul fizic). La nivel statistic aceasta organizare a
dus la o crestere substantiala a vitezei de acces la o baza de date intr-o retea de calculatoare. Astfel,
anumite date depozitate pe un server local sunt mult mai rapid accesibile decat daca ele s-af fi aflat pe un server la
distanta, unde ar fi fost stocata baza de date in iintregime, in cazul nedistribuirii (mentionam ca un factor important care
limiteaza viteza de lucru este transferul de date intre calculatoare}. Tot datorita distribuirii se mareste considerabil limita
maxima a dimensiunii unei baze -de date care nu mai este determinate de capacitatea fizica de memorare a sistemului
de calcul.

40. De ce nu este suficientă doar optimizarea unităţilor secvenţiale de program-obiect (“basic-blocks”), fiind necesară
optimizarea (globală a) întregului program? În ce constau dificultăţile optimizării globale ? Soluţii de principiu. *vintan*

26
x25, x38
.
Problema optimizării programelor în vederea procesării lor pe arhitecturi superscalare şi VLIW este una de mare interes
în cercetarea actuală. Optimizarea se referă în general la 2 aspecte: optimizarea locală, adică în cadrul unităţilor
secvenţiale de program (basic-block-uri) şi respectiv optimizarea globală, adică a întregului program. Optimizarea locală a
basic-block-urilor se realizează folosind algoritmi cvasioptimali într-o singură trecere, de tip "List Scheduling" (LS).
Optimizarea globală a programului se bazează pe algoritmi determinişti de tip "Trace Scheduling" sau pe algoritmi
euristici de tip "Enhanced Percolation". Paralelismul la nivelul basic-block-urilor, este relativ scăzut (2-3 instrucţiuni).
Deoarece majoritatea programelor HLL sunt scrise în limbaje imperative şi pentru maşini secvenţiale cu un număr limitat
de registre în vederea stocării temporare a variabilelor, este de aşteptat ca gradul de dependenţe între instrucţiunile
adiacente să fie ridicat. Aşadar pentru mărirea nivelului de paralelism este necesară suprapunerea execuţiei unor
instrucţiuni situate în basic-block-uri diferite (software pipelining, loop unrolling), ceea ce conduce la ideea optimizării
globale. Problema optimizării globale este de natură NP - completă.

41. Care sunt motivele pentru care microprocesoarele superscalare au un succes comercial superior celor cu paralelism
exploatat prin optimizări de program (“scheduling” static – spre exemplu microprocesoare tip VLIW, EPIC etc.)

Arhitecturile MEM sunt implementate în două variante distincte: procesoare superscalare şi respectiv procesoare VLIW
(very large instruction word). În varianta superscalară cade în sarcina hardului să verifice independenţa instrucţiunilor
aduse în buffer-ul de prefetch şi să le lanseze în execuţii multiple spre unităţile de execuţie pipeline-izate. Caracteristic
procesoarelor superscalare este faptul că dependenţele de date între instrucţiuni se rezolvă prin hardware, în momentul
decodificării instrucţiunilor. Desigur că aceste arhitecturi au o complexitate hardware deosebită determinată de detecţia şi
soluţionarea hazardului între instrucţiuni. Complexitatea logicii de detecţie a independenţei instrucţiunilor ce se doresc a fi
lansate în execuţie simultan, creşte proporţional cu pătratul numărului de instrucţiuni. De asemenea, ele sunt limitate în
posibilitatea de a exploata paralelismul la nivelul instrucţiunilor, de capacitatea limitată a buffer-ului de prefetch. La ora
actuală, pe plan comercial, piaţa este dominată de microprocesoarele superscalare, în principal datorită dezideratelor de
compatibilitate între versiunile din cadrul aceleiaşi familii. La procesoarele VLIW, mai rare decât cele superscalare, în
implementări comerciale, cade în sarcina compilatorului de a reorganiza programul original în scopul “împachetării” într-o
singură instrucţiune multiplă a mai multor instrucţiuni RISC primitive şi independente, care vor fi alocate unităţilor de
execuţie în conformitate strictă cu poziţia lor în instrucţiunea multiplă. Un procesor VLIW aduce mai multe instrucţiuni
primitive simultan şi le lansează în execuţie concurent spre unităţile funcţionale deja alese de compilator (scheduler).
Acest model de procesor nu mai necesită sincronizări şi comunicaţii de date suplimentare între instrucţiunile primitive
după momentul decodificării lor, fiind astfel mai simplu din punct de vedere hardware decât modelul superscalar.
Dificultăţile principale ale modelului VLIW sunt următoarele [VinFlor00]:
Paralelismul limitat al aplicaţiei, ceea ce determină ca unităţile de execuţie să nu fie ocupate permanent, fapt valabil de
altfel şi la modelul superscalar.
Incompatibilitate software cu modele succesive şi compatibile de procesoare care nu pot avea în general un model VLIW
identic datorită faptului că paralelismul la nivelul instrucţiunilor depinde de latenţele operaţiilor procesorului scalar, de
numărul unităţilor funcţionale şi de alte caracteristici hardware ale acestuia.
Dificultăţi deosebite în reorganizarea aplicaţiei (scheduling) în vederea determinării unor instrucţiuni primitive
independente sau cu un grad scăzut de dependenţe.
Creşterea complexităţii hardware şi a costurilor ca urmare a resurselor multiplicate, căilor de informaţie "lăţite".
Creşterea necesităţilor de memorare ale programelor datorită reorganizărilor soft şi "împachetării" instrucţiunilor primitive
în cadrul unor instrucţiuni multiple care necesită introducerea unor instrucţiuni NOP (atunci când nu există instrucţiuni de
un anumit tip disponibile spre a fi asamblate într-o instrucţiune multiplă).
De remarcat că modelele superscalar şi VLIW nu sunt exclusive, în implementările reale se întâlnesc adesea procesoare
hibride, în încercarea de a se optimiza raportul performanţă preţ (HSA, IA64).
Caracteristica principală a arhitecturii HSA (Hatfield Superscalar Architecture) o constituie exploatarea paralelismului la
nivelul instrucţiunii, într-un mediu superscalar, prin schedulling agresiv aplicat codului sursă în momentul compilării.
Scheduler-ul dezvoltat la Universitatea din Hertfordshire, UK (HSS - Hatfield Superscalar Scheduler) [VinFlor00] a fost
implementat ca parte integrantă a proiectului HSA (Hatfield Superscalar Architecture) – o arhitectură superscalară minimă
care combină cele mai bune caracteristici ale conceptelor VLIW şi superscalare. HSS rearanjază codul HSA scris în
limbaj de asamblare pentru a forma grupuri de instrucţiuni care pot fi expediate în paralel unităţilor funcţionale în
momentul execuţiei.
42.Limitări arhitecturale ale paradigmei superscalare şi independente de caracteristicile microarhitecturale, referitoare
la:*vintan*
maximizarea ratei de aducere a instrucţiunilor din memorie
maximizarea ratei de execuţie a instrucţiunilor.
Soluţii de principiu.

În ce priveşte limitările arhitecturale ale paradigmei superscalare referitoare la maximizarea ratei de aducere a
instrucţiunilor din memorie la această întrebare s-a răspunsul prin intermediul problemei 10 pct.a.
Limitările de tip "issue bottleneck" sunt determinate fundamental de gradul de secvenţialitate intrinsec programelor
(hazarduri structurale şi de date), dar şi de mecanismul de aducere a instrucţiunilor din memorie (IR FR). În ultimii ani s-
au dezvoltat două tehnici hardware menite să exploateze redundanţa existentă în programe, reducând timpului de

27
execuţie al acestora prin colapsarea dinamică a dependenţelor de date: reutilizarea dinamică a instrucţiunilor şi predicţia
valorilor [VinFlor00].
VP (value prediction) predicţionează rezultatele instrucţiunilor bazat pe rezultatele cunoscute anterior, efectuează
operaţiile folosind valorile prezise iar execuţia speculativă este confirmată la un moment ulterior - late validation - când
valorile corecte devin disponibile, deci după execuţia instrucţiunii. În cazul unei predicţii corecte, calea critică este redusă
întrucât instrucţiunile care s-ar executa secvenţial în mod normal, pot fi executate în paralel. În caz contrar, instrucţiunile
executate cu intrări eronate trebuiesc reexecutate.
IR (instruction reuse), recunoaşte un lanţ de instrucţiuni dependente executat anterior şi nu-l mai execută din nou - early
validation - actualizând doar diferite date în tabelele hardware aferente. Astfel, IR comprimă un lanţ de instrucţiuni din
calea critică de execuţie a programului.
Alţi factori care determină limitarea ratei de issue a instrucţiunilor sunt: lărgimea de bandă limitată a interfeţei procesor -
cache, missurile în cache-ul de date, alias-urile de memorie. Pentru a contracara efectul acestor factori se poate utiliza cu
succes mecanismul Data Write Buffer (DWB). DWB reprezintă un mic procesor de ieşire care lucrează în paralel cu CPU
degrevându-l pe acesta de sarcina scrierii în cache. DWB oferă porturi de scriere virtuale multiple spre deosebire de
DataCache care conţine un singur port de citire (LOAD) şi un singur port de scriere (STORE). DWB rezolvă prin
"bypassing" elegant hazardurile de tip "LOAD after STORE" cu adrese identice, nemaifiind deci necesară accesarea
sistemului de memorie de către instrucţiunea LOAD.

43. Care sunt principalele avantaje ale tehnicilor de reutilizare dinamică a instrucţiunilor ? De ce este dificilă detectarea
reutilizabilităţii unei funcţii HLL (High Level Language) prin schemele actuale de reutilizare dinamică a instrucţiunilor ?

Rezumând, se desprind câteva avantaje introduse de tehnica de reutilizare dinamicã a


instrucþiunilor şi anume:
_ Scurtcircuitarea unor nivele din structura pipe de către instrucţiunile reutilizate, reducând presiunea asupra resurselor
(staţii de rezervare, unitãţi funcţionale, porturi ale cache-urilor dedate etc.) necesare altor instrucţiuni aflate în aşteptare.
_ La reutilizarea unei instrucţiuni rezultatul sãu devine cunoscut mai devreme decât în situaţia în care s-ar procesa
normal, permiţând în consecinţã altor instrucţiuni dependente de aceste rezultate sã fie executate mai rapid.
_ Reduce penalitatea datoratã predicţiei eronate a adreselor destinaţie în cazul instrucţiunilor de salt, prin reutilizarea, fie
şi parţialã, codului succesor punctului de convergenţã (squash reuse).
_ Comprimarea dependenţelor de date determinã îmbunãtãţirea timpului de execuţie al instrucţiunilor crescând gradul de
paralelism al arhitecturii.
_ Procentajul de reutilizare al instrucţiunilor dinamice, calculat pe benchmark-urile SPEC ’95, este semnificativ,
ajungându-se la valori maxime de 76%.
_ Accelerarea obţinutã faţã de modelul superscalar pe aceleaşi programe de test nu este la fel de pronunţatã ca şi
procentajul de reutilizare (medii de 7-15%), valoarea maximã atinsã fiind de 43%.
IR valideazã rezultatele devreme în structura pipe, bazat pe intrãri, pot apare urmãtoarele situaţii dezavantajoase: dacã
intrãrile unei instrucţiuni nu sunt disponibile în momentul realizãrii testului de reutilizare atunci respectiva instrucţiune nu
va fi reutilizatã. Din pãcate, o instrucţiune care produce un rezultat identic cu unul anterior, dar cu intrãri diferite (operaţii
logice, instrucţiuni Load etc.), nu va fi reutilizatã.
IR reduce penalitatea datoratã unei predicţii greşite a salturilor din douã motive. În primul rând, când un branch (salt
condiţionat) predicţionat greşit este reutilizat, predicţia eronatã este detectatã mai devreme (în faza de decodificare) decât
s-ar realiza dacã saltul s-ar executa. Al doilea motiv îl constituie posibila convergenţã a codului în programe. Astfel prin
posibila reutilizare a codului existent dupã punctul de convergenţã a cãilor de execuţie, şi care în cazul superscalar este
evacuat în cazul unei predicţii eronate în mod ironic, tehnica IR îmbunãtãţeşte timpul de execuţie al programelor.
IR scade latenţa de execuţie a operaţiilor individuale de la mai mulţi cicli la doar un singur ciclu (latenţa de reutilizare a
unei instrucţiuni).

Dincolo de acest exemplu simplu, în momentul de faţã se impun eforturi sporite în vederea unei înţelegeri mai
profunde asupra reutilizãrii instrucţiunilor, mai precis, asupra rãspunsurilor la unele întrebãri de genul: cãror caracteristici
ale structurilor de programe scrise în limbaje de nivel înalt li se datoreazã gradele ridicate de reutilizabilitate ? De
asemenea, nu se ştie în momentul de faţã, spre exemplu, care sunt relaţiile între caracteristicile programãrii obiectuale şi
reutilizarea dinamicã ori în ce fel contribuie tehnicile de optimizare locale şi globale aferente programelor asupra
reutilizabilitãţii instrucţiunilor maşinã ? Asemenea probleme ramân momentan deschise şi de un uriaş interes.
Desigur cã se pune şi problema integrãrii instrucţiunilor de ramificaţie (branch) în aceste scheme de reutilizare dinamicã.
Considerarea acestor instrucţiuni conduce la restricţii în politica de introducere a instrucţiunilor în RB. Prin urmare, în
cazul acestei scheme, se impune ca o instrucţiune speculativã sã fie inseratã în RB numai dacã instrucţiunile sale sursã
sunt nespeculative sau dacã toate instrucţiunile sursã sunt prezente în RB. Pentru schema de reutilizare la nivel de lanţ
de instrucţiuni (dependente), în cazul modificãrii unui operand sursã, sunt invalidate doar instrucţiunile independente care
conţin acest operand.
Schemã hibridã hardware-software de reutilizare care are avantajul faţã de schemele pur hardware cã oferã o
viziune superioarã asupra structurii programului şi deci, implicã performanţe mai bune. În plus, aceastã abordare
exploateazã o “redundanţã semanticã” superioarã, existentã la nivelul programelor scrise în limbaje de nivel înalt şi
invizibilã în mod normal programelor obiect. Desigur însã, setul de instrucţiuni al maşinii va trebui în acest caz sã fie
îmbogãţit cu o interfaţã corespunzãtoare, prin intermediul cãreia soft-ul va comunica cu logica hardware de reutilizare.
Concluziile generate în urma analizei la nivel de funcţie, sunt cã de foarte multe ori funcţiile sunt invocate repetat

28
cu exact aceleaşi valori ale parametrilor de intrare şi cã relativ puţine apeluri de funcţii nu au argumente repetate. Chiar şi
în cazul unor apeluri repetate ale unei funcţii cu parametrii de intrare diferiţi, procentajul de instrucţiuni dinamice
reutilizabile poate fi unul semnificativ.

Dynamic Instruction Reuse (DIR)

Statistics suggest that many instructions, and group of instructions, having the same inputs, are executed
dynamically. Such instructions do not have to be executed repeatedly – their results can be obtained from a cache data
structure where they were previously saved. Result: throughput gain;
in scopul
reducerii Data-Flow (Issue) Bottleneck

•De multe ori funcţiile sunt invocate repetat cu unii parametri identici cu cei din trecut

nu stiu exact chestia cu HLL


:o instructiune de nivel in inalt este "tradusa" in asamblare in sute poate mii de intructiuni care alcatuiesc in esenta zeci de
basic block-uri ; la nivel de procesor ar fi dificila detectarea acestor basic block-uri ca apartinand unei anumite instructiuni
de nivel inalt ; aditional la nivel de asamblare se pierde semantica programului ; procesorul in esenta nu vede in
ansamblu programul ci in detaliu fapt care duce la imposibilitatea detectiei unei astfel instructiuni la nivel de reutilizare.  ;
aditional o intructiune de nivel inalt se poate executa putin diferit de fiecare data
Datorita dependentelor de date valorile parametrilor de intrare pot sa nu fie disponibile in timp util in cadrul unei functii,
ceea ce impiedica reutilizarea reutilizarea functiei.
44. Care sunt principalele avantaje ale tehnicilor de predicţie dinamică a valorilor instrucţiunilor ? Ce tipuri de asemenea
predictoare exista ? (Ce tipuri de asemenea predictoare ... „lipsesc” ?)*vintan*
Conceptul de localizare a valorilor se referã practic la o corelaţie dinamicã între numele unei resurse (registru, locaţie de
memorie, port I/O) şi valoarea stocatã în acea resursã. Dacã memoriile cache convenţionale se bazeazã pe localitatea
temporalã si spaţialã a datelor pentru a reduce timpul mediu de acces la memoria principalã, tehnica LVP exploateazã
vecinãtatea valorii prin predicţia acestei valori, reducând atât timpul mediu de acces la memorie cât şi necesarul de
lãrgime de bandã al memoriei (se efectueazã mai puţine accese la memoria centralã), asigurând astfel un câştig de
performanţã considerabil. Desigur cã toate aceste avantaje se obţin simultan cu reducerea considerabilã a presiunii
asupra memoriilor cache. Ca şi consecinţã a predicţiei valorilor se reduc şi efectele defavorabile ale dependenţelor RAW,
prin reducerea aşteptãrilor instrucţiunilor dependente ulterioare. Dacã instrucţiunile predicţionate se aflã pe calea criticã a
programului, cea mai mare consumatoare de timp, execuţia acesteia se comprimã în mod considerabil. Valorile prezise
nu depind de disponibilitatea intrãrilor în structura pipe şi nici de importanţa faptului ca ele sã fie sau nu identice cu
instanţele anterioare ale aceleiaşi instrucţiuni. Poate creşte penalitatea introdusã de un branch greşit predicţionat din
urmãtoarele motive: cauzeazã predicţii eronate suplimentare şi prin întârzierea rezolvãrii saltului respectiv (aşteptându-se
ca operanzii sãi sã devinã disponibili – dupã calculul şi verificarea acestora). VP nu scurtcircuiteazã execuţia -
instrucţiunile trebuind sã se execute pentru a verifica ulterior predicţia. Timpul total de execuţie a unei instrucţiuni va fi
limitat astfel de latenţa sa de execuţie şi verificare. Câştigul aici constã în faptul cã se deblocheazã instrucţiuni
dependente prin procesul de predicţie a valorii.

Predictoare computaþionale
“Last Value Predictors”
Predictoare incrementale
Predictoare contextuale
A. Predictor contextual PPM (Prediction by Partial Matching)
Predictoare adaptive pe 2 niveluri
Predictoare hibride

personal cred() că doar un viitor predictor semantic ar putea fi o soluţie radical îmbunătăţită. Înţeleg printr-un astfel de
predictor, unul care să utilizeze informaţii relative la structurile programelor HLL (High Level Languages) procesate. În
acest scop, compilatorul ar trebui să descopere şi să transmită predictorului, prin intermediul “codului obiect” generat,
aceste informaţii de semantică structurală a aplicaţiei HLL. Prin predictoarele actuale, această informaţie semantică se
pierde complet în momentul predicţiei. Fireşte, este doar o opinie personală, problema rămânând oricum deschisă la ora
actuală în cazul secvenţelor NSI.
45. Caracteristici ale sistemelor cu microcontroller-e (memorii, componente tipice ale sistemului I/O, set instrucţiuni,
instrumente de dezvoltare).
MEMORIA
spatii de adrese separate pentru instructiuni si date implementând deci o arhitectura de tip Harvard a memoriei
Memoria program
este de tip ROM sau EPROM si poate avea capacitati de pâna la 64ko.
adresarea memoriei program se face întotdeauna pe 16 biti, chiar daca
capacitatea memoriei program fizic implementata este mai mica de 64 ko.
accesele de citire din zona de memorie program cuprinsa între 0000H si 0FFFH sunt directionate spre memoria ROM –

29
intern implementata. Accesele de citire din zona de memorie program de la adresa 1000H la FFFFH sunt îndreptate spre
memoria ROM externa.

Memoria de date
este de tip RAM.
adresarea memoriei de date externe poate fi facuta pe 8 sau 16 biti.
Adresarea pe 8 biti este deseori folosita în conjunctie cu una sau mai multe linii de intrare / iesire pentru paginarea
memoriei RAM. Adresarea pe 16 biti implica folosirea portului 2 ca emitent al octetului cel mai semnificativ de adresa, asa
cum s-a mai aratat. adresarea memoriei de date interne se face pe cuvinte de 1 octet rezultând un spatiu adresabil de
256o.

TIPURI DE INSTRUCTIUNI

Instructiuni aritmetice
Instructiuni logice - operatii booleene (AND, OR, XOR, NOT) asupra operanzilor
octeti, executa operatia booleana la nivel de bit. Operatiile booleene pot fi executate asupra operanzilor octeti în spatiul
memoriei interne de date fara a fi necesar transferul acestor operanzi în acumulator (se salveaza timp si efort necesar
salvarii în stiva).
Instructiuni de transfer date
din memoria de date interna - Instructiunea MOV <dest>, <src>
permite transferuri între oricare din spatiile memoriei interne sau SFR fara
a trece operanzii prin acumulator.
Instructiunea PUSH incrementeaza întâi SP apoi
scrie octetul în stiva iar instructiunea POP preia vârful stivei pentru ca mai apoi sa decrementeze SP-ul.
Instructiunile XCH si XCHD sunt folosite la
Favorizarea interschimbarii datelor (reduce numarul de octeti de cod folositi si timpul de executie; daca n-ar exista aceste
instructiuni ar trebui emulate prin 3 MOVuri).
din memoria de date externa - Singurul mod de adresare al memoriei de date
externe este cel indirect.
Semnalele de citire / scriere sunt activate doar în
timpul executiei instructiunii MOVX.
Instructiuni de citire din tabele de cautare - instructiuni disponibile pentru citirea din
tabele de cautare (lookup) din memoria program.
Instructiuni booleene - procesor boolean complet pe un singur bit.
- instructiunile booleene existente (salturi conditionate, instructiuni
de setare, stergere, OR, AND, complementare).

Instructiuni de salt
neconditionat
conditionat

SISTEMUL I/O
Microcontrollerele, spre deosebire de microprocesoare, se caracterizeaza prin includerea în propriul cip a diverselor
porturi de I/O seriale si paralele, a circuitelor timer, memorii, sursa de ceas interna, etc. În compensatie, structura si
filosofia lor de functionare sunt mai simple, adaptate la cerintele controlului diverselor procese industriale.
Structura porturilor
- 4 porturi bidirectionale
- Fiecare consta dintr-un latch (P0P3) - Scrierea unui 1 respectiv 0 determina comutarea pinului de iesire al portului
corespondent în stare “high” respectiv “low”.
- instructiunile care citesc un port distingem instructiuni care citesc portul propriu zis si respectiv instructiuni care citesc
pinii aferenti portului. Instructiunile care citesc porturi se caracterizeaza prin faptul ca citesc o valoare, o modifica posibil,
si apoi o rescriu în port.( instructiuni “citeste – modifica – scrie”)

Interfata seriala standard - Portul serial este de tip “full – duplex”, ceea ce înseamna ca poate emite si receptiona date
simultan.
Portul serial poate opera în patru moduri asincrone

Comunicatia în sisteme multiprocesor

30
Când un procesor master doreste sa transmita un bloc de date unuia din dispozitivele slave, acesta trimite mai întâi un
cuvânt de adresa care identifica slave-ul destinatie. Un cuvânt de adresa difera de unul de date prin
aceea ca al 9-lea bit este 1 în cuvântul de adresa si 0 în cel de date. Când SM2=1, nici un slave nu va fi întrerupt de catre
un octet de date. Un cuvânt de adresa, totusi, va întrerupe toate dispozitivele slave, astfel încât fiecare slave sa poata
examina si detecta daca cuvântul receptionat reprezinta adresa sa. Slave-ul adresat va reseta bitul SM2 si se va pregati
sa receptioneze cuvântul de date. Dispozitivele slave care nu au fost adresate lasa bitii SM2 aferenti lor setati si îsi
continua activitatea neperturbate, ignorând cuvântul de date. SM2 nu are nici un efect în modul 0, iar în modul 1 poate fi
folosit sa verifice validitatea bitului de stop. În receptia din modul 1, daca SM2=1, întreruperea de receptie nu va fi
activata daca nu se receptioneaza un bit de stop valid.

Circuite Timer/Numaratoare
doua registre timere/numaratoare pe 16 biti: Timer 0 si Timer 1.
Având functia de timer, registrul este incrementat cu fiecare ciclu masina. Întrucât un ciclu masina consta din 12 perioade
de oscilatie ale generatorului de tact, rata de
numarare este 1/12 din frecventa oscilatorului. Având functia de numarator, registrul este incrementat ca raspuns la o
tranzitie din 1 în 0 a intrarii externe corespondente de la pinul T0 sau T1. Noua valoare numerica apare în registru în
timpul fazei P1 a ciclului (S3P1) urmator celui în care s-a detectat tranzitia. Întrucât dureaza doi cicli masina (24 perioade
de oscilatie) pentru a recunoaste o tranzitie din 1 în 0, rata maxima de numarare este 1/24
din frecventa oscilatorului.

INSTRUMENTE DE DEZVOLTARE
MAGISTRALA I²R

I2C, magistrala bidirectionala pe doua fire, a fost dezvoltata de catre compania Philips, pentru eficientizarea (maximizarea
performantei hardware si respectiv simplitatea circuitelor) controlului interconectarii circuitelor. Toate dispozitivele
compatibile cu magistrala I2C contin o interfata implementata în cip care permite tuturor dispozitivelor de acest gen sa
comunice între ele prin respectiva magistrala. Acest concept de proiectare rezolva multe probleme de interfatare ce apar
în proiectarea circuitelor de control digital. El se remarca prin simplitate si eficienta, caracteristici deosebit de apreciate în
controlul industrial al proceselor tehnologice.
Caracteristicile magistralei de interconectare
Necesita doar doua linii de magistrala (o linie seriala de date – SDA, si o linie seriala de ceas – SCL).
Fiecare dispozitiv conectat la magistrala este software adresabil printr-o adresa unica si în fiecare moment exista o
relatie simpla de tip master / slave.
Este o magistrala multimaster care include detectia coliziunilor si arbitrarea acestora pentru a preveni inconsistenta
datelor în cazul în care doua sau mai multe dispozitive master initiaza simultan transferul de date.
Pe magistrala seriala de date, pe 8 biti, au loc transferuri bidirectionale de date cu viteze pâna la 100kbit / s în mod
standard sau pâna la 400kbit / s în mod rapid (fast).
Filtrele implementate în cip elimina zgomotele datorate diafoniilor, reflexiilor, etc (spike-uri) de pe linia de date pentru
pastrarea integritatii datelor.
Numarul de circuite care pot fi conectate la aceeasi magistrala este limitat doar de capacitatea maxima a respectivei

31
magistrale, anume de 400pF. Avantajele proiectantului constau în facilitatea oferita de circuitele integrate interconectate
prin magistrala I2C, privind trecerea rapida de la organigrama cu blocuri functionale la prototip. Circuitele integrate (IC –
Integrated Circuits) sunt conectate la magistrala I2C fara o interfata suplimentara externa, permitând modificarea sau
îmbogatirea sistemului prototip simplu prin conectarea sau deconectarea de la magistrala (sisteme de dezvoltare).

MAGISTRALA ACCESS.BUS
Reprezinta magistrala de conectare a dispozitivelor accesorii la un calculator gazda, un standard introdus de catre
compania Digital Equipment Corporation (actualmente înglobata în Compaq). Accesoriile sunt dispozitive periferice, de
intrare / iesire, având o viteza relativ redusa fata de cea a calculatorului gazda. Ca exemple de dispozitive accesorii
amintim:tastatura, scanere, cititoare de cod de bare, cititoare de cartele magnetice (card), imprimanta, convertoare de
semnal, aplicatii de control în timp real etc. Topologia de conectare a dispozitivelor accesorii este de tip magistrala. Prin
intermediul magistralei ACCESS pot fi conectate pâna la 125 de dispozitive periferice la un calculator gazda. Lungimea
cablului de conectare poate fi pâna la 8 m. Viteza maxima de transfer pe magistrala este de 80 Kbit/s. Magistrala
ACCESS ofera avantaje atât utilizatorilor cât si dezvoltatorilor de sisteme si dispozitive periferice. Un calculator gazda
necesita doar un port hardware pentru conectarea la un numar de dispozitive. Trasaturile comune în metodele de
comunicare, pentru un numar mare de diverse tipuri de dispozitive, conduc la economii în dezvoltarea hardware si
software.

PLACA DE DEZVOLTARE DB – 51
DB-51 este o placa de dezvoltare / proiectare a unui sistem de înalta performanta dedicat familiei de microcontollere
Philips 80C51. DB-51 reprezinta un instrument flexibil, usor de folosit care permite utilizatorului sa construiasca un
prototip primar, sa-l analizeze si sa-l depaneze, sa faca schimbari asupra sa si sa continue depanarea. Îmbunatatirea
deciziilor de proiectare se face folosind DB-51 pentru a verifica si testa avantajele câtorva microcontrollere diferite. De
asemenea, placa de dezvoltare DB-51 reprezinta un instrument ideal de antrenare pentru familiarizarea utilizatorului cu
proiectarea, folosind arhitectura 80C51. De remarcat ca, DB-51 nu intentioneaza totusi sa înlocuiasca un sistem de
emulare complet în proiectarea complexa cu microcontrollere.

46.Explicati de ce se spune ca mostenirea multipla creeaza un graf orientat aciclic. *poo, sima* m35, x8, x42

In mostenirea multipla o clasa poate mostenii mai multe clase de baza. Penrtu a realiza o mostenire multipla este
suficient sa se specifice dupa numele clasei derivate o lista de clase de baza separate prin virgula. Ordinea claselor de
baza nu este indiferenta, apelul constructorilor facandu-se in ordinea enumerarii claselor de baza.
o mostenire simpla e reprezentat printr-un arbore. sensurile arcelor au un singur sens; atunci cand avem mostenire
multipla.. se unesc pur si simplu.si arboreele nostru devine un graf.care este aciclic.pentru ca legatura nu poate fi
inapoi.datorita sensul arcelor.(asta din cauza def mosternirii..ca se merge mereu pe dezvoltarea unei clase de baza si nu
inapoi)
47. Care este legatura intre mostenire si abstractizare.
Relatia de mostenire:
este un mecanism de abstractizare - fiecare clasa derivata este o forma diferita a abstractizarii reprezentate de clasa de
baza; obiectele claselor derivate pot fi folosite oriunde este asteptat un obiect al clasei de baza;
permite reutilizarea codului - definit in clasa de baza.
O clasa abstracta este o clasa care are un scop atat de general ca nu contine suficiente atribute sau operatii pentru a
reprezenta un obiect al lumii reale. Clasa exista doar pentru a putea fi mostenite din ea alte clase mai concrete si mai
tangibile.Compilatorul nu va permite sa creati obiecte din clasa abstracta. O clasa abstracta este o clasa care are cel
putin o metoda pura.

Metoda pura= la declare se face functie=0;


prin metode pure vom înţelege metode virtuale pure. O clasă care declară cel puţin o metodă pură se numeşte clasă
abstractă. Dacă o clasă derivată dintr-o clasă abstractă nu redefineşte toate metodele pure definite de clasa de bază ca
fiind metodei virtuale normale atunci este tot o clasă abstractă iar metodele pure moştenite din clasa de bază îşi vor
păstra caracterul. Regulile de redefinire şi mascare a metodelor virtuale cît şi ambiguităţile care apar sunt aceleaşi şi în
cazul metodelor pure. Metodele pure sunt de fapt nişte metode virtuale cu un regim mai special: este interzis apelul lor
din partea utilizatorilor externi iar această restricţie implică imposibilitatea instanţierii claselor abstracte. Metodele pure
admit implementare şi este permis apelul lor de către utilizatorii de tip clasă ( eventual alte clase derivate din aceasta ).
48. Ce desemneaza faza de analiza in cadrul ingineriei software*sima*
1.1.3 Ciclul de dezvoltare al aplicatiilor
• Analiza
In aceasta faza se urmareste clarificarea 'cerintelor si construirea unui model al sistemului ce trebuie concretizat, model
independent de limbajul in care se face implementarea si de mediul in care se executa (hard, DBMS utilizat, structura
distribuita).
Metodele actuate fac distinctie clara intre cele doua etape care rezulta de mai sus:
faza de stabilire a cerintelor (requirements specification), si
faza de analiza obiectuala, etapa in care pe baza descrierii problemei se descopera clasele si obiectele care vor modela

32
problema precum si relatiile dintr acestea, oferind in final un asa numit model de analiza al sistemului care se
construieste.
• Proiectarea sistemului (Design)
Plecand de la modelului de analiza se adauga detalii tehnice. se ia in considerare mediul de implementare, se stabilesc
modalitatile de realizare a cerintelor. In aceasta faza se desfasoara urmatoarele activitati:
Detalierea claselor descoperite la analiza si introducerea de noi clase "tehnice" care nu fac
parte din domeniul problemei
Stabilirea arhitecturii sistemului
Gruparea claselor in module
Trasarea grafului programului (modulele din care se compune programul, baze de date, etc.)
Stabilirea modului de comunicare intre diferitele module sau cu bazele de date
Detalierea fiecarui modul
Implementarea
*-
- Scrierea completa a claselor intr-un limbaj de programare
Testarea programelor
- Se face validarea sistemului: se verifies daca programul are erori 5! daca ofera sau nu funcjionalitatea ceruta
Documentarea sistemului
documentare pentru programatori
documentare pentru utilizatori: manual de instalare si utilizare
• Livrarea sistemului
- Instalarea programului la beneficiar
- Instruirea utilizatorului programului
- Manual de utilizare
• Intretinerca sistemului
- Rezolvarea erorilor ce apar in timp
- Imbunata|irea programului si producerea de variante mai performante
- Modificari datorate cerinjclor utilizator
49. Diferenta intre: trasfer prin valoare si transfer prin referinta. *poo*
apei prin valoare apel prin adresa (pointer) apel prin referinta1

sintaxa declarare parametru functie (tipNume,.,.) functie(Tip *Nume,...) functie(Tip &Nume,...)


formal
sinltaxa apel functie( variabila,. . . .) functie(&variabila,...) functie (variabila,...)
utilizare variabila. in cadrul Nume *Nume Nume
functiei
ce se transmite efectiv pe stiva valoarea variabilei parametru adresa variabilei parametru adresa variabilei parametr
Modificarea parametrului NU DA DA

apelul prin valoare este comod din punct de vedere al sintaxei (nu e nevoie de * si &) dar nu permite modificarea in cadrul
functiei a variabilei trimise parametru (se modifica de fapt doar copia de pe stiva a acesteia).
Apelul prin referinta permite modificarea variabilei proopriuzise datorita manipularii adresei acesteia.
Apel prin nume
Cu un apel prin nume, expresia sub forma simbolica a fiecarui parametru actual este substituita la fiecare aparitie a
parametrului formal care îi corespunde, iar dupa aceea, si numai dupa aceea, procedura (si functia în cauza) este
executata.
Apel prin valoare
Cu un apel prin valoare, parametrii actuali sunt evaluati în timpul chemarii, iar valorile calculate sunt atribuite parametrilor
formali locali corespunzatori, înainte de începerea executiei. Aceasta tehnica reprezinta transmiterea parametrilor prin
valoare.
Exemplu: Procedura ineficienta
PROCEDURE increment(n:integer);
BEGIN
...n:=n+1
END { increment };
Apelând aceasta procedura via increment (k) când k este 7 nu se va face schimbarea lui 7 în 8 (în k); apelarea prin
valoare (call by value, în engleza) - implicata aici protejeaza variabila efectiva (curenta) k de la schimbare (modificare).
Remarca. n va deveni 8 în timpul executiei lui increment, dar schimbarea nu este copiata în k si prin urmare
este fara efect.

33
Apelul prin referinta (adresa)
Cu un apel prin referinta (call by reference, în engleza) adresa (din memoria calculatorului) parametrului actual este
transmisa rutinei (procedurii) apelate. Parametrii ce trebuie sa fie transmisi în acest mod trebuie sa fie desemnati selectiv
ca parametri VAR în header-ul functiei sau al procedurii.
Important. O cale de a face o deosebire între parametrii *si parametrii valoare este aceea ca parametrii *
sunt L-values - care înseamna ca ei trebuie sa fie folositi în partea stânga a unui enunt de atribuire (L vine
de la left, in limba engleza). Parametrii valoare sunt R-values, ei trebuind sa fie expresii generale utilizabile
în partea dreapta a unui enunt de atribuire.
O L-value (valoare Left) poate fi folosita ori de câte ori este apelata o R-value (valoare Right), dar reciproca
nu este adevarata.

Apelul prin copiere - restaurare


Aceasta varianta de transfer al parametrilor încearca sa îmbunatateasca transferul prin valoare, simulând comportarea
unuia prin referinta. Acest transfer, ca si cel prin nume, a fost abandonat în cadrul implementarilor curente ale limbajelor
de programare.
Transferul prin copiere si restaurare executa doua copieri succesive, una în momentul lansarii subprogramului si cealalta
în momentul terminarii acestuia. În prima faza, parametrii efectivi sunt copiati în cei formali, ca si cum ar fi transferati prin
valoare. Dupa executia corpului subprogramului, are loc o copiere "inversa", adica parametrii formali sunt copiati în cei
efectivi.

Concluzii privind transferul parametrilor


Cele patru mecanisme de transmitere a parametrilor: apel prin valoare, apel prin referinta, apel prin nume si apel prin
copiere-restaurare reprezinta o succesiune de metode flexibile prin care se asociaza un parametru curent cu parametrul
formal corespunzator. Pentru programator, cea mai putin flexibila dintre cele patru metode este apelul prin valoare, unde
parametrii formali actioneaza ca variabile locale pentru subprogram (procedura/functie), dar sunt date valori initiale egale
cu valorile parametrilor efectivi (actuali) când este lansat subprogramul.

Ce sunt blocurile try / catch si ce rol au ? * sima, barbat* m38, x9, x56

Deoarece toate solutiiie amintite anterior prezinta dezavantaje majore. in C++ s-a introdus un mecanism nou de tratare a
exceptiilor, care are la baza 3 cuvinte cheie:
• try - delimiteaza un. bloc la nivelul clientului care contine instructiuni susceptibiie de a genera exceptii (semnificatia
fiind "incearca sa executi acest cod").
o fhrow - se cxecuta det- catre modului nucleu cand se detecteaza o situatie exeeptionaia pentru a semnala modulului
client acest lucru (sernnificatia fiind de •'arunca exceptia modulului client").
• catch - delimiteaza un bice la nivelui clienutului care se va executa in momentul interceptarii unei exceptii semnificatia
fiind"oriunde acest tip de exceptie"),
in sarcina moduluiui client intra:
• purierea codului "vulnerabi" intr-un bloc try7.
• tratarea in blocuri catch a diteritelor exceptii ce ar putea sa apara.
In sarcina modulului nucleu intra (uneori tot noi scriern si acest modul):
« detectarea situatiei deosebite si generarea exceptiei corespunzatoare cu throw.

Care este legatura intre polimorfism si mostenire ? *poo, sima* m1,m8,x7,x52

Principala forta a relatiei de mostenire este data de facilitatea de a trata obiectele claselor cuprinse intr-o ierarhie ca si
cum ar fi instante ale clasei din varful ierarhiei. Aceasta se numeste polimorfism - obiecte cu caracteristici comune pot fi
tratate unitar. Polimorfismul permite clientului sa poata lucra cu ierarhiile mostenirii intr-o maniera considerabil
simplificata, clientul poate trimite mesaje spre un obiect, si lasa obiectul sa decida ce are de facut.
Polimorfism in c++ apare doar in contextul mostenirii.
In c++ polorfismul este introdus prin intermediul functiilor virtuale.
Polimorfism: poli-multe morphos-forme
-proprietatea unei aplicatii de a se comporta diferit in functie de conditiile din momentul rularii
-pb apare in momentul in care se apeleaza o metoda( cu nume si parametrii cunoscuti ) a unui obiect dar nu se cunoaste
tipul obiectului
-acest lucru este posibil numai in cazul pointerilor la clase de baza care pot tine adresa atat a unor obiecte ale clasei de
baza cat si a oricaror ob derivate din ac clasa de baza polimorfismul apare numai in contextul mostenirii
Mostenire= creearea unei clase numita extinsa sau derivata , din alta clasa numita clasa de baza
Polimorfism=tratarea uniforma a obiectelor din clase diferite.. Exista la clasa diferite derivate din aceesi clasa de
baza.Polimorfismul este implementat printr-un apel al unei metode care executa metode distincte pt obioecte din clase
distincte
Este posibil prin redefinirea metodelor si datelor private prin mostenire
Polimorfismul de moştenire

34
Polimorfismul de moştenire, spre deosebire de celelalte forme de polimorfism, este un
polimorfism al obiectelor. La baza polimorfismului obiectelor stă relaţia de tip IS_A existentă între
2 subclase şi superclase, obţinută prin moştenire publică. În virtutea acestei relaţii este permisă
manipularea instanţelor claselor derivate în contexte care cer instanţe ale claselor de bază:
Aşadar relaţia de tip IS_A ne permite manipularea unor instanţe în contexte care cer instanţe ale
claselor de bază iar acest fapt introduce două noţiuni: tip static şi tip dinamic. Prin tip static se înţelege tipul sub care este
manipulată o entitate adică tipul declarativ de manipulare. Prin tip dinamic se înţelege tipul real al unei instanţe adică tipul
din a cărui instanţiere a rezultat instanţa. Pentru exemplul prezentat anterior, tipul static al entităţilor desemnate de
argumentele b, rB şi pB este CBaza iar tipul dinamic al aceloraşi entităţi este CDerivata.

Diferenta intre "overloading" si "overriding".*poo*


Supraincarcare=poti folosi 2 nume in 2 locatii diferite
Redefinire=
Overloading of methods is a compiler trick to allow you to use the same name to perform different actions depending on
parameters. 
Overloaded methods do not have any restrictions on what exceptions can be thrown. That is something to worry about
with overriding. 
Overriding a method means that its entire functionality is being replaced. Overriding is something done in a child class to
a method defined in a parent class. To override a method a new method is defined in the child class with exactly the
same signature as the one in the parent class. This has the effect of shadowing the method in the parent class and the
functionality is no longer directly accessible. 

Java provides an example of overriding in the case of the equals method that every class inherits from the granddady
parent Object. The inherited version of equals simply compares where in memory the instance of the class references.
This is often not what is wanted, particularly in the case of a String. For a string you would generally want to do a
character by character comparison to see if the two strings are the same. To allow for this the version of equals that
comes with String is an overriden version that performs this character by character comparison. 
Overloading deals with multiple methods in the same class with the same name but different signatures

Overriding deals with two methods, one in a parent class and one in a child class, that have the same signature

Overloading lets you define a similar operation in different ways for different data

Overriding lets you define a similar operation in different ways for different object types

Ce relatie exista intre structurile: coada cu prioritati, lista sortata si min/max-heap ?;*sima* m8, m36, x47

Coada - FIFO
elementele sunt ordonate dupa valoarea unei chei
O coada poate fi implementata cu ajutorul unei liste sortate.

lista sortata: o lista care are elementelele ordonate.

Coada cu prioritati: An abstract data type to efficiently support finding the item with the highest priority across a series of
operations. The basic operations are:
insert,
find-minimum (or maximum),
and delete-minimum (or maximum).
Some implementations also efficiently support join two priority queues (meld), delete an arbitrary item, and increase the
priority of a item (decrease-key).

Un heap Min-Max este o coadã de prioritãþi cu douã capete în care relaþia de ordonare dintre elemente este bazatã pe
ordinea min-max. Cel mai mic element al structurii se va afla în rãdãcina arborelui care reprezintã heap-ul. Valorile
corespunzãtoare elementelor de pe nivelurile pare vor fi mai mici sau egale cu valorile corespunzãtoare descendenþilor
lor direcþi, iar valorile corespunzãtoare elementelor de pe nivelurile impare vor fi mai mari sau egale cu valorile
corespunzãtoare descendenþilor lor direcþi. Nivelurile pare sunt uneori numite niveluri de minim sau niveluri min, iar
nivelurile impare sunt numite niveluri de maxim sau niveluri max. Am considerat cã numerotarea nivelurilor începe de la
0.
Structura de date
Un heap Min-Max care conþine n elemente poate fi pãstrat cu ajutorul unui vector ale cãror elemente sunt accesate
folosind indici cuprinºi între 1 ºi n. Elementul de pe poziþia i a vectorului va corespunde unui element aflat pe nivelul [log2
i] al arborelui care reprezintã heap-ul Min-Max. La fel ca ºi în cazul heap-urilor binare, fiii unui element aflat pe poziþia i se
vor afla pe poziþiile 2 · i ºi 2 · i + 1, iar pãrintele unui element aflat pe poziþia i se va afla pe poziþia [i / 2].

35
Operaþii
Structura de heap Min-Max permite executarea rapidã a urmãtoarelor operaþii:
transformarea unui vector de elemente
într-un heap Min-Max;
adãugarea unui element;
determinarea elementului minim;
determinarea elementului maxim;
eliminarea elementului minim;
eliminarea elementului maxim.

• Stivele, cozile si cozile cu prioritati sunt struct : de date utilizate pentru a simpiifica anumite activist! in programare.
• In cadrul aces: )r structuri, un singur element este accesibil.
• O stiva permit •, accesul la ultimul element inserat.
• Operatiile ese uiale asupra unei stive sunt introducerea unui element m varful strri si extragerea elementului din varful
stivei.
• O coada permite accesul la primul element inserat.
• Operatiile irroortante asupra cozilor sunt inserarea unui element in spatele cozii •;! stergerea elenentului din fata cozii.
• O coada cu p'-ioritati permite accesul la eel mai mic (sau uneori la eel mai mare) dintre elemente.
• Operatiile es;ntlale asupra cozilor cu prioritati sunt inserarea unui element in or line sortata si stergerea elementului cu
cheia minima.
• Aceste structuri de date pot fi implementate utilizand tablouri sau alte structuri. cum ar fi listele Tnir.ntuite.
• Expresiile aritmetice obisnuite sunt scrise in notatia infixata, a carei denumire ;-rovine de la scrierea operatorilor Tntre
cei doi operanzi.
• In notatia p<_'Stfixata, operatorul succede celor doi operanzi.
• Expresiile r..itmetice se evalueaza de regula efectuund mai mtai conversia la forma postfixata r; evaluand apoi expresia
po.stfix.ata.
lnti-o coada cu prioritati ordonata crescator, elementul cu cheia maxima (respectiv elementul cu cheia minima Tntr-o
coada ordonata dcscrescator) are cea mai mare pr Titate.
O coada cu ;irioritati este un tip de date abstracte (TDA) care ofera metode pen u inserarea, elcmentelor si pentru
stergerea elementului maxim (respectiv minim
Movilele as:gura o implementare eficienta pentru cozile cu prioritati.
Intr-o movin, stergerea elementului maxim si inserarea unui nou element se pi cuta intr-un limp de ordinul O(logN).
Elementul maxim se gaseste Tntotdeauna Tn radacina.
Movilele nu ofera posibilitatea de parcurgere a elementelor Tn ordine, de cautai element cu o cheie data si de stergere a
unui astfel de element.
O movila se implementeaza, Tn cele mai multe cazuri, printr-un tablou care rep un arbore binar complet. Radacina are
indicele 0, iar ultimul element are indici
Fiecare nod are o cheie mai mica decat parintii sai si mai mare decat fiii sai.
Un element care este inserat este Tntotdeauna plasat Tn prima celula libera din t ilou, dupa care e: le filtrat Tn sus, pana
ajunge Tn pozitia corecta.
La stergere;; unui element din radacina, elementul sters este Tnlocuit de ultimul iod din tablou, care este apoi filtrat Tn jos
pana Tn pozitia corecta.

36
Operatiile de filtrate Tn sus sau Tn jos pot fi gandite ca secvente de permutari, ci : se implementeaza mult mai eficient
prin cate o secventa de copieri.
Prioritatea unui element arbitrar se poate modifica. Mai Tntai, modificam cheia elei apoi, daca valoarea a crescut, filtram
elementul Tn sus, iar daca a scazut, II filtram Ti
Algoritmul iieapsort reprezinta o metoda de sortare eficienta, cu timpul de ord; O(N*logN).
Din punct c'.* vedere conceptual, algoritmul heapsort efectueaza N inserari intr • movila, urrr.ate de N extrageri.
Viteza algoritmului heapsort creste aplicand filtrarea Tn jos, direct pentm N/2 r -mente din tabloul neordonat, Tn locul
inserarii a N elemente.
Putem utiliza acelasi tablou pentra a memora datele initiale nesortate, movila s Jatele sortate rezuitate. Prin urmare,
algoritmul heapsort nu consuma un spatiu de me lorie suplimentar.

• Stiva este slructura care se utilizeaza atat pentm conversia expresiilor din forna infixata in cea postfixata, cat si pentru
evaluarea expresiilor postfixate
Structuri de date Inserare stergerea observatii
Stive(tablouri sau liste) O(1) O(1) Sterge elementul cel mai recent
Cozi(tablouri sau liste) O(1) O(1) Sterge el. Cel mai putin recent
Cozi cu prioritati (tablouri ordonate) O(n) O(1) St. el cu prioritatea maxima
Cozi cu prioritati (movile) O(log n) O(log n) St. el cu prioritatea maxima

Asemanarile si diferentele dintre o clasa abstracta si o interfata, in Java.

Interfetele duc conceptul de clasa abstracta cu un pas înainte prin eliminarea oricarei implementari a metodelor, punând
în practica unul din conceptele POO de separare a modelului unui obiect (interfata) de implementarea sa. Asadar, o
interfata poate fi privita ca un protocol de comunicare între obiecte.
O interfata Java defineste un set de metode dar nu specifica nici o implementare pentru ele. O clasa care implementeaza
o interfata trebuie obligatoriu sa specifice implementari pentru toate metodele interfetei, supunându-se asadar unui
anumit comportament.
Definitie
O interfata este o colectie de metode fara implementare si declaratii de constante
Atentie
Variabilele unei interfete sunt implicit publice chiar daca nu sunt declarate cu modificatorul public.
Variabilele unei interfete sunt implicit constante chiar daca nu sunt declarate cu modificatorii static si final.
Metodele unei interfete sunt implicit publice chiar daca nu sunt declarate cu modificatorul public.
In variantele mai vechi de Java era permis si modificatorul abstract în declaratia interfetei si în declaratia metodelor, însa
a fost eliminat deoarece atât interfata cât si metodele sale sunt implicit abstracte.

ce mai e de retinut despre clasele/metodele abstracte:


- o metoda abstracta prezenta intr-o clasa obliga intreaga clasa sa fie abstracta
- o clasa poate fi abstracta fara nici o metoda abstracta
- o clasa (metoda) nu poate fi abstracta si finala in acelasi timp (din motive evidente)
- o metoda abstracta nu poate fi statica (metodele statice nu suporta overriding)
- o metoda abstracta nu poate fi privata

Diferente între o interfata si o clasa abstracta


La prima vedere o interfata nu este altceva decât o clasa abstacta în care toate metodele sunt abstracte (nu au nici o
implementare). Asadar o clasa abstracta nu ar putea înlocui o interfata ?
Raspunsul la intrebare este Nu. Deosebirea consta în faptul ca unele clase sunt fortate sa extinda o anumita clasa (de
exemplu orice applet trebuie sa fie subclasa a clasei Applet) si nu ar mai putea sa extinda o clasa abstracta deoarece în
Java nu exista decât mostenire simpla. Fara folosirea interfetelor nu am putea forta clasa respectiva sa respecte un
anumit protocol.
La nivel conceptual diferenta consta în:
extinderea unei clase abstracte forteaza o relatie între clase
implementarea unei interfete specifica doar necesitatea implementarii unor anumite metode

Ce se intelege prin "use cases" si unde se intalneste ?*sima* ip p25,m20, x9, x52

O colectie de scenarii care definesc comportamentul sistemului.


In comunitatea specialistilor OO s-a incetatenit un mijloc foarte pragmatic de descoperire, captare, documentare si
comunicare a cerintelor unui sistem, si anume cazurile de utilizare (use-case) . Un caz de utilizare specifica o parte a
comportarii unui sistem.
Dupa cum se stie, un scenariu este o instanta a unui caz de utilizare. Pe durata analizei comportarea de ansamblu a
sistemului poate fi exprimata cu ajutorul unei retele de scenarii.

37
Exemplu: intr-o aplicatie din domeniul bancar un caz de utilizare ar putea fi gestionarea unui credit; scenarii posibile ale
acestui caz de utilizare sunt:
solicitarea unui credit;
efectuarea platii unei rate;
lichidarea creditului;
consultarea istoricului platilor;
vanzarea creditului unei alte institutii financiare;
tratarea intarzierilor la plata sau a neplatilor;
In ceea ce priveste dimensiunile acestei retele, in practica se aplica urmatoarea regula:  
Pentru proiecte de complexitate modesta numarul normal de use-cases este de
ordinul catorva duzini, numarul de scenarii principale este cu un ordin de marime
mai mare, iar cel al scenariilor secundare, cu inca un ordin de marime mai mare.
Scenariile sunt aproape independente intre ele, in sensul ca pot fi studiate separat, desi in realitate fiecare dintre ele are o
oarecare conexiune semantica cu celelalte. Cele mai multe dintre scenariile interesante traverseaza felii largi ale
arhitecturii, atingand mai multe seturi de clase si obiecte aflate in colaborare. Prin urmare, cele mai interesante
abstractiuni sunt acelea care apar in mai multe scenarii.
Insemnatatea scenariilor pentru dezvoltarea sistemelor OO decurge din urmatoarele:
Ele servesc ca mijloace esentiale de captare a cerintelor unui sistem.
Reprezinta o modalitate de comunicare.
Constituie instructiuni pentru proiectantii individuali si pentru echipa de testare.
Formeaza o baza importanta pentru planificarea in timp a iteratiilor macro-procesului, pe durata proiectarii si a evolutiei.
La ce NU sunt bune scenariile? Ele NU definesc arhitectura sistemului, ci doar ilustreaza interactiunile dinamice care apar
intr-o arhitectura.

Din cartea lu sima

Modelul use-case
Acest model este creat in faza de analiza si isi propune sa prezinte functiile sistemului din pui vedere al utilizatorului. in
acest context termenul scenariu desemneaza o secventa de pasi ce descriu interactiunea dintre utilizator si sistem. Un
caz de utilizare (use case) este compus din set de scenarii care apar impreuna cand utilizatorul foloseste sistemul pentru
a-si atinge un scop, ca si ghid practic de utilizare a "use case"-urilor, Fowler ([FowOl]) sugereaza sa se identifice
scenariul principal de utilizare cu succes a sistemului. Acest scenariu este o secventa numerotata de pasi care se succed
la o utilizare normala. La acest scenariu se adauga extensiile care reprezinta variante secventa principala.
Actori
Actorii nu sunt parte a sistemului - ei repreiinta orice sau pe oricine care trebuie sa interactioneze cu sistemul. Un actor
poate sa introduca informatii in sistem , sa receptioneze informatii din sistem,fie sa faca ambele operatii. In mod normal
actorii sunt detectati dm enuntul problemei si pe baza discutiilor purtate cu beneficiarii sistemului sau cu expert! in
domeniu. Urmatoarele intrebari utile pentru identificarea actorilor dintr-un sistem:
• Cine este interesat de o anumita cerinta ?
• Cine este beneficiaru! utilizarii sistemului'1
• Cine furnizeaza informatii sistemului. cine utilizeaza aceasta informatie si cine el informatti din sistem0
• Care sunt resursele externe pe care Ie foloseste sistemul
Cum identificam corect actorii? Trebuie avuta mare grija atunci cand este vorba dc identificarea actorilor pentru un
sistem. Aceasta identificare se desfasoara intr-o maniera iterativa, rareori lista initiala de actori fiind si cea finala. Se pot
utiliza urmatoarele "reguli de aur":
• Regula 1: Doi actori care utilizeaza sistemul in acelasi fel reprezinta in fapt un singur actor.
• Regula 2: Daca fiecare functionalitate necesara unui nou actor (candidat) se suprapune peste functionalitatea
necesara unui alt actor deja identificat, vom renunta la inroducerea noului actor. Cu alte cuvinte, nu vom atribui cate un
actor pentru fiecare rol pe care o persoana il poate juca in raport cu sistemul.
Diagrame use-case
Un use case modeleaza un dialog intre un actor si sistem. Use case-urile reprezinta functionalitatea sistemului, adica
facilitatile oferite de sistem unui actor. Colectia use-case-urilor pentru un sistem reprezinta totalitatea modalitatilor in care
un sistem poate fi utilizat. 0 alta definitie mai formala a unui use-case este: Un use-case este o secventa de tranzactii
efectuate de sistem si care produce rezultate masurabile pentru un anumit actor. Urmatoarele intrebari ar putea fi utile in
identificarea UseCase-urilor pentru un sistem:
• Care stint sarcinile fiecarui actor?
• Exista un actor care sa creeze, sa stocheze, sa modifice, sa stearga sau sa citeasca informatii din sistem
• Care sunt Use Case-urile prin care se vor crea. Stoca, modifica, sterge si citi aceste informatii?
• Pot fi indeplinite toate cerintele functionale prin intermediui Use Case-urilor pe care le-am definit deja?
• Exista vreun actor care trebuie sa informeze sistemul asupra unor schimbari externe subite '
• Exista vreun actor care trebuie informat de catre sistem asupra anumitor evenimente care se produc in sistem?

UML= Unified Modeling Language


Cum Identificam Corect un Use-Case? Una dintre problemele principale care apar in alegerea unui use-case este nivelul

38
de detaliu ce se regaseste intr-un use-case. Cu alte cuvinte, cat de mic sau de mare ar trebui sa fie? Nu exista un
raspuns univoc la aceasta intrebare. 0 "regula de aur" ar putea fi aceasta:
Un use-case reprezinta o parte de fiinctionalitate completa Un use-case trebuie sa ofere ceva util unui actor.
0 regula ar putea fi: Daca mai mulle funclionalitati sum declansate de acelasi actor si manipuleaza aceleasi entitati din
sistem. acele functionalitati formeaza impreuna un use-case unic.
Relatii intre Actori si I'sc-Cascs
Intre un actor si un use-case poate exista o re/atie de asociere. Acest tip de asociere este adesea referita ca fund o
asociere tic comunicare intrucat reprezinta comunicarea dintre un actor si un use-case. O astfel de asociere poate fi
navigabila in ambele directii (de la actor la use-case si invers). sau poate fi navigabila nurnai intr-o directie. Sensul de
navigare pentru o astfel de asociere indica cine a initial comunicarea. In figura de mai jos, actortil "Operator" comunica cu
doua use-case-uri. in ambele cazuri actorul initiind comunicarea:
Intre doua usc-casc-uri pot exista relatii: include, extends si de generalizare. Mai multe case"-uri pot avea anumite
"blocuri" cu aceeasi funcfionalitate. Aceasta functionalitate com prin urmare plasata in use casc-uri separate, pentru a se
eviita documentarea repetata functionalitati. Acest tip de rela|ie este de tip include.
In contrast cu aceasta, relajia de tip extends este utilizata pentru a indica un comportament sau un comportanlent care se
va executa doar in anumite conditii. Intre doua cazuri de utilizare poate sa existe o relatie de generalizare: transfer este
un caz particular de Transaction.
3.1.2 Exemplificare ATM
• Actorii din sistemul ATM:
1. Operator
2. Customer
3. Bank

Eveninicntelc din cadrul fiecarui Use-Case


Use-Case pentru startarea sistemului (System Startup Use Case)
Sistemul pornejte in momentul in care operatorul ac|ioneaz3 comutatorul pc pozitia "ON". In continuare se cere
operatorului sa alimenteze ATM-ul (depunere bani in CashDispcner). Dupa ce s-a facut alimentarea se stabilejle legatura
cu banca. Din acest moment servirea clientilor poate sa inceapa.
Use-Case pentru oprirea sistemului (System Shutdown Use Case)
Sistemul este oprit de catre operator (care se asigura ca nu utilizeaza nimeni ATMul). trecand comutatorul in pozitia
'"OFF". Conexiunea cu banca este intreruptS. Operatorul are acces in interiorul ATM.
Putem face o descrie mai precisS cu ajutorul diagramelor de stare:
Diaerama de stare a ^jstemului ATM

39
ComuUtorpe ON/ st&rtsre sistem
ComuUtorOFF/ oprire sistem
ServireChenC
include
Session
,sesiune completa sau Cancel
OFF afisaremesaj: 'Not available1
Session Use Case
O sesiune este startata cand clientul introduce cardul in cititorul ATM-ului. Daca se introduce un
card defect acesta este respins, se afiseazS eroare sj se termina sesiunea. Daca d.p.d.v tlzic cardul
este o.k. se cere PIN-ul. Daca PIN-ul e corect apare un meniu pe consola client, cu ajutorul caruia
clientul poate efectua una sau mai multe tranzacjii. Dupa fiecare tranzac|ie clientul este intrebat
daca doreste $i alte tranzacjii. Daca nu, card-ul este eliberat 5! sesiunea se incheie.
Dac3 tranzac(ia se termina din cauza ca s-a tastat PIN incorect de prea multe ori, sesiunea se termin
$i card-ul se retine in ATM.
Clientul poate sa tasteze "Cancel" cand introduce PIN-ul sau alege o tranzactie din meniu.
Diagrama de stare corespunzatoare:
Diagrama de stare pentru o sesiune

Transaction Use Case - comportarea comuna tuturor tipurilnr de tran/actii


Aeest use-case este startat de client in cadrul unei sesiuni. atunci cand se alege tipul unei trar din meniu. Dupa seleetie
clientul trebuie sa fumizeze diferite inibrmatii specifice selectiei: cc suma de bani. etc. Tranzactia se trimite la banca
impreuna cu id-ul cardului $i PIN-ul introdus. banca aproba tranzactia. se trece la pasii urmatori. specific! tipului de
tranzactie (eliberare transfer.etc) si se tipareste chitanta. Se intreaba clientul daca doreste o noua tranzactie.
Daca banca detecteaza PIN invalid se executa extensia corespunzatoare situatiei PFN' invalid, se retine card-ul (PIN
gresit de un nr. de ori) tranzactia se termina si nu mai apare optiune; continua cu o noua tranzacjie.
La -Cancel" sau o eroare. alta decat PIN invalid, se afiseaza mesajul de eroare si se poate co cu aha tranzacjie.
Toate mcsajele trimise'receptionate catre/dinspre banca sum m morale ca intrari separate in " ul ATM-ului.

Explicati unul dintre pricipiile de proiectare obiectuala : OCP, Liskov sau DIP *sima * m5, x53

Principii ale proiectarii claselor


OCP - Open Closed
open pt a fi extins
closed la modificarea codului sursa

5.1.1 Principiul Open Closed (OCP)


« Software entities (classes, modules, functions, etc) should be OP E^ for extension, but CLOSED for modification »
Bertrand Meyer- Object Oriented So/ware Construction DacS un modul respecta acest principiu, atunci el este :
a- OPEN pentru a fi extins, adica comportarea lui poate fi extinsa in diferite moduri in sitnatia in
care cerintele aplicatiei se modifies b- CLOSED la modificarea codului sursa

40
Cele doua cerinje sunt contradictorii. Toate tehnicile utilizate pentru rezolvarea acestei contradictii se bazeazS pe
abstractizare. In limbajele obiectuale abstrac[iile sunt clase de baza, abstracte, care nu se modifica Toate clasele care ar
putea fi derivate din aceste clase abstracte reprezinta posibile variatii de comportare.
Un modul care manipuleaza abstractii este « closed for modification » deoarece depinde de clase abstracte. care nu au
nici un motiv sa se modifice in timp (ele cfera interfata. nu implementarea). In acelasi timp clasele abstracte pot fi extinse
pentru a obtine comportarea dorita.
REMARCA : Daca intr-un program OOP apar frecvent secvenfe lungi de tip if- else if sau asta constitute deseori un
semnal ca se violeaza OCP.
Observatie : in practica, principul OCP nu poate si fie respectat totdeauna deoarece posibilitati de modificare au fost luate
in calcul, exista posibilitatea sa mai apara o modifiicare la care nu ne-am gandit. Ca urmare, se aplica principiul «
inchiderii strategice » : se iau In consderarei schimbarile cele mai probabile. (Pentru a cunoaste care sunt acestea este
necesara ceva experientai in proiectarea de sisteme )

LSP - substitutiei lui Liskov


Subclasele tre sa poata substitui clasele de baza
Pricipiul LSP arata ca daca o metoda dintr-o clasa (User) functioneaza corect cand utilizeaza instante ale unei clase
(Base), metoda trebuie sa functioneze corect si cu instante ale unei derivate din clasa de baza (Derived).

Deci, conform schemei de mai sus, daca o metoda User accepta ca si parametru o instanta Base, ar trebui sa fie legala si
pasarea ca parametru a unei instante de tip Derived.

DIP - Principiul Dependentei inverse


Sa depinzi de abstract si nu de concret

Daca OCP exprima scopul arhitecturii OO. DIP exprima mecanismul principal. Intr-o diagrama a modulelor unei aplicatii
se observa ca moduleie de nivel mai inalt depind de modulele de nive! mai scazut (API ... ) - acest gen de dependents
structural (top-down) este una slaba.

In cazul arhitecturilor obiectuale are loc o


inversare a sensului dependenielor: atat dependentele modulelor de nivel inalt ca si ale celor care conjin implementari
sunt directionate catre interfete sau clase abstracte
Modulele de nive! inalt nu trebuie sa depinda de modulele de nivel scazut. Ambele tre depinda de abstracti.
Abstractiile nu trebuie sa depinda de detalii. Detaliile trebuie sa depinda de abstractii.

ISP -Principiul segregarii interfetelor


mai multe interfete specifice sunt de preferat uneia generale

Ce se intelege prin "dynamic dispatch" in contextul apelului unei metode? *sima poo*

legarea dinamica (tarzie - ''late binding'')


In acest caz compilatorul si editorul de legaturi fac corespondenta intre numele metodei si. adresa acesieia din segmentui

41
de cod prin intermediul unui tabel de adrese posibile de salt. Alegerea adresei efective de apel se face in momentul
rularii. in functie de obiectul pentru care se apeleaza (deci, decizia legarii este intarziata). La nivelul cel mai de jos.
legarea dinamica corespunde apeluiui indirect al unei proceduri (folosind de exemplu o instructiune de tip CALL indirect).
Acesta este modul de legare foiosit de limbajele obiectuale pentru metodele virtuale.
Polimorflsmui fiind un exemplu de solutie avand la baza indirectare prezint5 binecunoscutele avantaje §i dezavantaje aie
acestor metodc:
• avantaje: se asigura (introduce) un grad de flexibilitate
• dezavantaj: ca in orice apei indirect, se inrautajesc pcrformantele de vite/a
Comproraisul avantaje /dezavantaje (flexibilitate / \piieza) se poate stabiii de caire programatoi. prin posibilitatea alegerii.
pentru fiecare rneioda in parte, a tipuiui de legare: statica sau dinamica.

Dynamic dispatch of methods


You can now override methods-that is, you can reimplement methods in subtypes to provide more specific functionality.
DB2(R) executes the most specific method at run time, depending on the dynamic type of the subject. This is called
dynamic dispatch.

If you do not want a method defined for a supertype to be used for a particular subtype, you can override the method. To
override a method means to reimplement it specifically for a given subtype. This facilitates the dynamic dispatch of
methods (also known as polymorphism), where an application will execute the most specific method depending on the
type of the structured type instance (for example, where it is situated in the structured type hierarchy).
To define an overriding method, use the CREATE TYPE (or ALTER TYPE) statement, and specify the OVERRIDING
clause before the METHOD clause. If OVERRIDING is not specified, the original method (belonging to the supertype) will
be used. For an overriding method to be defined, the following conditions must be met:
The type you are creating (or altering) must be a subtype of the structured type whose method you intend to override.
The signature (the method's name and parameter list) of the method you are declaring is identical to that of a method
belonging to the supertype.
An overriding method must implicitly override exactly one original method.
The routine you intend to override is a user-defined structured type instance method.
The original method is not declared with PARAMETER STYLE JAVA.

Cãutarea euristicã *volo* m2, m16, x9

Ca adjectiv. cea mai frecventa defmire din dictionare a termenului euristic este aceea de "servese pentru a descoperi".
Ca substantiv, euristica este o ramura obscura a fllozofiei care se ocupa cu studiul metodelor s! regulilor de descoperire
s.i inventare.
Atunci cand iernienul a inceput sa fie folosit'pentru a descrie tehnicile A I. unii . autori au facut distinctie intre metodele
pentru descoperirea solutiei si metodelor pentru producerea lor algoritmica. Astfel. definitia lui Newell. Shau. Simon
(1957) este: "un proces care ar putea rezolva o problema data dar nu ofera nici o garantie ca o va face , se numeste
euristica pentru acea problema ". Acest injeles nu a fost insa unanim acceptat. De exemplu : in 1961 Minsky afirma
ca :"Adjectivul euristic. asa cum este folosit aici. si in mare masura in toata literatura Al, inseamna legat de imbunatarirea
performantei de solutionare de probleme. De asemenea. ca substantiv este folosit cu privire la orice metoda folosita
pentru a imbunatati eficienta unui program de rezolvare a problemelor , dar inetoaeie irnperfecte nu sum neaparat
euristice. Deci cuvantul euristic nu trebuie vazut ca opusul lui simplu (necomplicat)". Aceste doua definitii se refera vag
la doua multimi diferite :• dispozitie care imbunatajesc experienta si dispozitive care nu sunt garantate. Feingenbau,
Feidman in 1963 au limitat aparent euristica la acele dispozhive care au-ambele proprietati. 11 0 euristica (regula
euristica. metoda euristica) este o regula de indexare, o strategic, un artificiu. o simplificare sau orice fel de unealta care
limiteaza puternic cautarea solutiilor in spa;ii mari ale problemelor . Euristicile nu garanteaza solujii optimale: de fapt. nu
garanteaza nici un fel de solujie, tot ce se poate spune despre
o euristica utila este ca ea ofera soluiii care sum suficient de bune de cele mai multe ori".
Actualmente. injelesul dat cautarii euristice este eel dat de Nilson. in 1971. care ofera tratamentul eel mai detaliat al
acestui subiect. Pentru el distinctia cea mai importanta este aceea dintre cautarea euristica si cautarea oarba. Cautarea
oarba corespunda aproximativ generarii sistematice si testarii elementelor spatiului de cautare dar ea opereaza cu
ajutorul unui formalism care mai bine lasa loc pentru informatii suplimemare despre domeniul specific problemei decai
sa-1 excluda prin defintie. Daca astfel de informaui sum efeciiv introduse. e posibil sa se restranga pulernic cautarea. Intr-
un asemenea caz. cautarea se numese mai degraba euristica decat oarba.

in cautarea oarba numarul de noduri dezvoltate este prea mare.


1)se decide ce nod urmeaza a fi dezvoltat (nu in adancime sau latime)
2) nu se genereaza orb tori succesorii
3)taierea unor noduri din arborii de cautare (prunning)
functia f de evaluare a nodurilor

42
A* in acelasi context f(n)=g(n)+h(n)

P 50.66 volo

Reprezintă o metodă de căutare care foloseşte informaţie euristică.


Informaţiile euristice reprezintă acele informaţii despre proprităţile domeniului specific

Arbori de cautare euristica


Cautarea euristica.
Algoritmul A*.
O alta modalitate ar fi implementarea unui algoritm de tip A*. Acesta este un algoritm de gasire a unui drum spre o stare
finala. Se bazeaza pe o estimare euristica a distantei de la o anumita stare la starea finala.
Aceasta estimare poate sa fie optimista (mai mica decit distanta reala de la starea respectiva la solutie) sau pesimista
(mai mare).
Algoritmul A* bazindu-se pe o estimare optimista va conduce intotdeauna la o solutie minima ca numar de pasi (dar insa
si nu ca timp de executie).
De exemplu daca stabilim distanta de la o stare oarecare la starea finala ca fiind mereu 1 vom obtine o estimare
optimista, insa vom sfirsi prin a face o cautare pe toate variantele de mutari("brute-force").
Cautarea solutiei optime: algoritmul A*
Se urmareste determinarea caii de cost minim intre nodul asociat starii initiale si cel
asociat starii finale, in conditiile in care problema are costuri asociate tranzitiilor intre
stari. Se gaseste astfel si calea spre solutie care contine un numar minim de arce, adica
care are un numar minim de operatori intre starea initiala si starea finala. Acest lucru se
obtine considerand costul unei tranzitii implicit egal cu 1 si se poate aplica si in cazul
problemelor care nu au costuri atasate tranzitiilor de stari. In acelasi timp algoritmul A*
este o strategie informata de tip "best-first" care urmareste gasireasolutiei optime cu un
efort de cautare cat mai mic. De aceea algoritmul trebuie sa includa in evaluarea starilor atat o componenta care sa
surprinda distanta intre starea initiala si starea curenta (pentru a ghida cautarea pe drumul de cost minim) cat si o
componenta care sa estimeze meritul
starii curente din punct de vedere al avansului spre solutie.
Functia de evaluare euristica, f(S), este formata din doua componente: g(S) care
estimeaza costul real, g(S), al caii dintre starea initiala si S si h(S) care estimeaza costul
real, h(S), al caii dintre S si starea finala.
F(S)=g(S)+h(S)

Învãtarea pe de rost *volo* m25, x1, x17

memorare- se salveaza cunostintele noi astfel incat atunci cand sunt din nou necesare singura problema va fi gasirea lor
si nu un calcul repetat

-este memorare
- reprezinta salvarea cunostiintelor noi a.i. atunci cand ele sunt iar necesare, sg problema va fi regasirea lor si nu un
calcul repetate sau intrebare
- mem pe de rost poate fi vazuta ca un proces elementare de invatarea, nu suficiient de puternic pt a obtine o invatare cu
inteligenta in sine, dar reprez. o parte import. in orice sistem de invatare
- sist de invatare mai sofisticate intai achizitioneaza cunopasterea din exemple sau din sfaturi si apoi le mem, astfel toate
sist de inv sunt construite pe un proces de invatare pe de rost care mem, retine si regaseste cunoasterea intr-o baza de
cunostinte
Poate fi privita in 2 modalitati:
-memorarea este o necesitate atat de fundamentala pt un program inteligentincat ea nu poate fi considerata un proces
separat de invatare
-memorarea este un subiect complex , vital pt orice sistem cognitiv si el trebuie studiat si modelat bine
CZ: proces elementar de invatare, nu suficient de puternic pt a obtine invatrea inteligenta in sine, dar care este o p.
Inerenta si imp in orice sistem
Lucreaza prin luarea pb oe care el de performanta le-a rezolvat si prin memorarea pb si a solutiei sale
Pb de proiectare a astfelor de sist:
-organizarea mem: invatarea pe de rost este utile numai dc ia mai putin timp invatarea pe de rost decat recalcularea rez
-stabilirea mediului si pb cadrului: un sistem trebuie sa fie capabil sa fie capabil sa detecteze atunci cand lumea s-a
schimbat atat de mult incat informatia nu mai e valida
-memorare sau calcul: trebuie decis la momentul la care inf este disponibila pt prima oara dc ea trebuie sau nu
memorata(analiza cost-benefici sau met uitarii selective)

43
Cadre si scenarii *volo*x17

Cadrele au fost propuse ca o baza pentru intelelegerea perceptiei vizuale, a dialogurilor in limbaj natural, si a altor
comportari complexe.
Scenariile sunt structuri asemanatoare cadrelor, proiectate special pentru reprezentarea secventelor de evenimente.
Cadrele si scenariile sunt incercari ale cercetatorilor de inteligenta artificiala de a asigura o metoda de organizare
cantitatii mari de cunostinte necesare pentru a realiza sarcinile cognitive
Un cadru este un şablon general, în care datele noi sunt interpretate în termenii sau conceptele experienţei dobândite
anterior Se ştie că oamenii nu interpretează noile situaţii construind de fiecare dată o structură nouă de cunoştinţe, ci
folosesc structuri memorate, derivate din experienţele anterioare Pentru a analiza, o experienţă nouă, se utilizează o
structură deja existentă, care se particularizează cu detaliile situaţiei curente Marvin Minsky (1975) a încercat să
reunească unele din conceptele de bază ale metodelor de reprezentare a cunoaşterii într-o teorie unitară . teoria cadrelor
(engl. frame theory), o generalizare a gramaticii de cazuri din lingvistică, în care e cuprinsă atât informaţie declarativă,
cât şi procedurală, acestea fiind captate sub forma unor relaţii predefinite Reprezentare prin cadre favorizează
prelucrarea bazată pe aşteptare, deoarece nu contrazice orizontul de aşteptare
avantaje/dezav:
Cadrele pot fi considerate o extindere a reţelelor semantice, cu o serie de avantaje: ! sunt mai clare în ceea ce priveşte
scena descrisă: reţelele semantice reprezintă o colecţie de noduri, în interpretarea cărora trebuie să ne bazăm pe
cunoştinţe subiective, care depind de experienţele anterioare ! uşurează organizarea ierarhică a cunoaşterii; ! există
posibilitatea includerii sau ataşării de proceduri, deoarece unele cunoştinţe nu se adaptează bine reprezentării declarative
! suportă moştenirea claselor în ierarhie ! permit ca obiecte complexe să fie reprezentate ca un singur cadru şi nu ca o
structură-reţea de mari dimensiuni

Un scenariu (engl. .script.) este o modalitate de reprezentare a cunoaşterii ce descrie o secvenţă stereotipă de
evenimente într-un anumit context, adică situaţii care se repetă, păstrând aceeaşi structură Utilitatea scenariilor rezultă
din faptul că, în lumea reală, există diverse modele de apariţie a evenimentelor, modele datorate relaţiilor cauzale dintre
evenimente Aceste evenimente descrise într-un scenariu alcătuiesc un lanţ cauzal, al cărui punct de start îl reprezintă
condiţiile iniţiale, iar punctul final constă în rezultate În cadrul lanţului, evenimentele sunt conectate atât cu
evenimentele anterioare, care le determină apariţia, cât şi cu evenimentele ulterioare, pe care le autorizează la rândul lor
Scenariile prezintă avantajul de a surprinde relaţiile cauzale dintre evenimente, în care evenimentele prezente sunt
conectate cu evenimentele anterioare şi ulterioare Limitele derivă din faptul că sunt structuri mai puţin generale decât
cadrele
avantaje/dezav:
! Scenariile prezintă avantajul de a surprinde relaţiile cauzale dintre evenimente, în care evenimentele prezente sunt
conectate cu evenimentele anterioare şi ulterioare ! Limitele derivă din faptul că sunt structuri mai puţin generale decât
cadrele Utilitatea scenariilor rezultă din faptul că, în lumea reală, există diverse modele de apariţie a evenimentelor,
modele datorate relaţiilor cauzale dintre evenimente ! Aceste evenimente descrise într-un scenariu alcătuiesc un lanţ
cauzal, al cărui punct de start îl reprezintă condiţiile iniţiale, iar punctul final constă în rezultate ! În cadrul lanţului,
evenimentele sunt conectate atât cu evenimentele interioare, care le determină apariţia, cât şi cu evenimentele
ulterioare, pe care le autorizează la rândul lor

http://www.ace.tuiasi.ro/~fleon/Curs_IA/CursuriIA.pdf

Arbori de joc*volo*m8, m33, x18

Arbori de joc. P.34

Trasaturi fundamentale:
-exista 2 jucatori care muta pe rand
--la fiecare mutare, regulile definesc atat ce mutari sunt legale , cat si efectul pe care l-ar avea fiecare mutare posibila
-fiecare jucator are informatia completa despre pozitia adversarului, inclusiv despre alegerile pe care acesta le-ar putea
face
-jocul incepe dintr-o stare specificata, adesea o anumita configuratie a pieselor pe tabla
-se sfarseste prin castigul unui jucator si pierderea celuilalt, sau prin egalitate
Un arbore de joc complet este o reprezentare a tuturor partidelor posibile ale unui astfel de joc. Modul radacina este
starea initiala, in care este randul primului jucator la mutare. Succesorii sai sunt starile in care se poate ajunge din el
printr-o singura mutare, succesorii acestor stari fiind starile rezultate din replicile posibile ale celuilalt jucator...
Starile finale sunt acelea care duc la o victorie, infrangere sau remiza
-fiecare cale completa de la nodul radacina la un nod terminal da o partida completa
-un arbore se reprezinta din pdvd al unui singur jucator:
-nodurile posibile ale acestuia sunt reprezentate prin noduri OR
-mutarile pe care le poate primi in replica sunt noduri AND pt ca reprezinta mutari la care jucatorul trebuie sa le faca fata
Fomalismul min-max
-tehnica de cautare in arborii de joc
-datorita modului in care sunt evaluate modurile jucatorul A este adesea numit max iar jucatorul B min

44
 Aplicaþii ale inteligentei artificiale*volo*
1
Chiar daca aceste tehnici au condus, sau nu la o mai buna intelegere a mintii. este evident ca aceste dezvoltari vor
conduce la o noua tehnologie. una inteligenta care poate avea etecte dramatice in societate. Sistemele AI experimentale
au general deja, interes s,i entuziasm, in Industrie si au t'ost dezvoltate comercial. Aceste sisteme experimentale includ
programe care:
a) rezolva probleme dificile in chimie, biologie, geologie, inginerie ,?i mddicina la nivelul de performanfa al expertilor
umani.
b) manipuleaza robotii pentru a realiza sarcini motoare repetitive.
c) raspund la intrebari puse in dialecte simple ale englezei, sau francezei, • japonez'ei- sau oricarui alt limbaj
natural.
Examples include control, planning and scheduling, the ability to answer diagnostic and consumer questions, handwriting,
speech, and facial recognition. As such, it has become a scientific discipline, focused on providing solutions to real life
problems. AI systems are now in routine use in economics, medicine, engineering and the military, as well as being built
into many common home computer software applications, traditional strategy games like computer chess and other video
games.

Subdomenii ale inteligentei artificiale*volo*

Cele mai multe discipline §tiinjifice au cateva domenii distincte de cercetare, fiecare dintre ele cu interese speciftce,
tehnici de cercetare 5! terminologie proprie. In AI, aceste specializari incl'ud cercetari in: injelegerea limbajului, sisteme de
vedere, rezolvare de probleme, limbaje de programare AI, programare automata 5! cateva altele.
A face aritmetica sau a inva{a literele tuturor jarilor din lume, de exemplu, sunt cu siguranja activitafi care indi'ca
inteligenja umana. Apare aici o intrebare filosofica importanta: daca un sistem de calcul poate realiza aceste sarcini, se
poate spune ca §tie sau infelege orice? Noi vom evita un raspuns la aceasta intrebare prin descrierea comporlarilor ca
inteligenle fara a ne preocupa de descrierea (etichetarea) majinilor >•' care produc aceste comportari. In afara de
calculele numerice 5! de regasirea •; informapei, multe ahe activitaji inteligente au fost realizate prin programare.
Totus.1, multe procese importante de gandire (cum ar fi recuneajterea fejei oamer.ilor sau rationamentul prin analogice
sunt inca puzzles pentru ca ele sunt realizate atat de "inconstient" de catre oameni incat nu au purut fi postulate
mecanisme de calcul
adecvate pentru ele.
Trebuie atrasa atenjia ca diferitele subdomenii ale AI nu sunt deloc independente. Separarea lor este numai o cale
convenabila pntru a indica ce pot s.i ce nu pot face programele AI obijnuite. Cele mai multe proiecte de cercetare AI se
ocupa cu mai multe, daca nu cu toaie aspectele inteligenjei.

Tabela metodelor virtuale VMT

The solution found for this problem is also relatively simple: the use
of a Virtual Methods Table (VMT), a table that stores the addresses of
the virtual methods associated with the class of which the instance has
been created.

Is it necessary for each instance to have its own copy of the virtual
methods table? No, it's enough that a single virtual methods table
exists that is associated with the class and that the instance "knows"
where to locate it. The simplest way would be, when creating the
instance, to place the address of the virtual methods table as a pointer
in one of its fields.
VMT - Virtual Method Table. Table of pointers where the addresses
associated to the virtual methods of an instance of a class are
stored.
Pentru fiecare clasa compilatorul construieste o tabela cu met virt ale clasei resp, tabela numita VMT si include in fiecare
instanta (obiect) a clasei un pointer spre tabela VMT coresp clasei; pentru o met nevirt, leg e neconditionat statica, iar pt o
met virt legarea e neconditionat dinamica (atat la apel dir prin obiect sau prin pointer la obiect cat si al apel din cadrul altor
metode)
Dimensiunea obiectului cu clase virtuale=dimensiunea var membru (adaugate sau mostenite)+dimens unui pointer(vmt
pointer) POO pag 49

 recursivitate, backtracking si utilizarea lor *ciurea* m27, x43

45
Backtraching : - tehnica de cautare sistematica a solutiei prin explorarea ruturor cailor dintr-un sp de stari;
- pleaca de la starea declarata de start (initiala, origine) si urmeaza o cale pana atinge scopul sau se blocheaza (ajunge
la o stare de unde nu mai poate cauta). Daca .a -gasit,scopul cautarea s-a terminat si programul returneaza solutia, Daca
ajunge pe un drum inchis, se intoarce inapoi (backtrace) in cel mai recent nod de pe acele arce ce nu au fost parcurse 'si
continua pe una din ac ramuri.
Recursivitate - proprietatea unui subprogram de a se autoapela;

 durata de viata si domeniul de vizibilitate a variabilelor *poo* m15,m29, x55

Domeniul de vizibilitate a unui variabile: zona de program în care acesta recunoaşte o variabilă

Var. locale, var globale


Variabile locale:
-variabile declarate in interiorul functiei
-valabile in interiorul functiei
-sunt init cu valori neprecizate
-sunt generate intr-o zona de memorie de tip stiva(LIFO)
Variabile globale:
-var declarate in afara fct
-sunt init cu valori nule
-pot fi folosite in orice cu fct cu exceptia functiilor in care apar variabile locale cu acelasi nume(in astfel de situatii, au
prioritate cele locale)
Vizibilitatea unui identificator, defineste portiunea de cod in care un program poate accesa identificatorul. Durata de viata
semnifica perioada de timp in care oricarui identificator I se aloca un spatiu in memoria sistemului.

 in contextul design patterns ce este un sablon creational; exemplificati *sima* m12, m18, x26, x50

p. 71, sima
pattern=o solutie comuna a unei probleme intr-un anumit context
Constructorul virtual (Factory Method)
Definitie
Acest sablon defineste o interfata pentru crearea unui obiect, dar lasa subclasele sa decida ce clasa trebuie instantiata.
Practic, presupune ca o clasa paseaza subclaselor sale sarcina instantierii.
Context
Consideram un generator de aplicatii (framework for applications) gen desktop. Asemenea aplicatii sunt de regula
concepute sa lucreze cu documente. Un generator de aplicatii desktop include abstractiuni care sa asigure suportul
pentru operatii ca: deschiderea, crearea sau salvarea unui document. Abstractiunile de baza sunt clasele Application si
Document. Ambele sunt clase abstracte, iar clientii trebuie sa creeze subclase din ele, pentru a-si defini propriile aplicatii.
Pentru a genera o aplicatie de desenare, de exemplu, trebuie sa se defineasca subclasele DrawingApplication, respectiv
DrawingDocument.
Clasa Application are ca sarcina gestionarea documentelor, actionand asupra acestora la cerere (de exemplu cand
utilizatorul selecteaza o comanda New sau Open din meniu).
Deoarece subclasa lui Document care trebuie instantiata este specifica aplicatiei, clasa Application n-o cunoaste dinainte,
deci nu stie CE sa intantieze. Application stie doar CAND trebuie creat un nou document. Apare astfel o dilema ("dilema
vampirului :)" ): generatorul de aplicatii trebuie sa instantieze o anumita clasa, dar el nu cunoaste decat clase abstracte,
care nu pot fi instantiate.
Sablonul FactoryMethod ofera o solutie acestei probleme. El propune incapsularea intr-un obiect a cunostintelor
referitoare la subclasa lui Document care trebuie instantiata, si pasarea acestor cunostinte in afara generatorului de
aplicatii. In figura de mai jos este ilustrat acest principiu de lucru:

46
In clasa Application operatia CreateDocument fie are
prevazuta o implementare implicita, fie este fara implementare (in C++, de exemplu, ea va fi o functie pur virtuala).
Aceasta operatie va fi redefinita in subclasa MyApplication astfel incat sa creeze un obiect de tip MyDocument si sa
returneze o referinta la el:
 
Document* CreateDocument( ) {
    return new MyDocument;
}
Presupunand ca in clasa Application avem un membru docs, care reprezinta o lista de documente gestionate de aplicatie,
atunci operatia NewDocument ar putea fi de forma:
 
void NewDocument( ) {
    Document *doc = CreateDocument( );
    docs.Add(doc);
    doc -> Open( );
}
Aceasta operatie va fi mostenita in clasa MyApplication si, deci, prin intermediul metodei CreateDocument va instantia de
fapt obiecte de tip MyDocument. Vom numi operatia CreateDocument metoda de generare (factory method), deoarece ea
este responsabila cu "manufacturarea" unui obiect. Prin intermediul acestei functii, redefinita in subclasele lui Application,
practic putem sa modelam situatia in care clasa Application creaza obiecte fara sa stie de ce tip sunt ele.
Motivatii
Sablonul Factory Method se foloseste cand:
o clasa nu poate anticipa clasa obiectelor pe care trebuie sa le creeze;
o clasa doreste ca subclasele sale sa specifice ce obiecte trebuie sa creeze;
avand o clasa A si o multime de subclase BC derivate dintr-o clasa C, clasa A doreste sa delege o anumita sarcina uneia
dintre subclasele BC si se doreste localizarea informatiilor despre subclasa care va fi efectiv delegatul.
• sabloanele creationale ale obiectelor acopera situatiile in care o pane din procesul crearii unui obiect cade in sarcina
unui alt obiect.

formatul unui sablon - nume, scop, motivatia,problema,solutia,consecintele


Un pattern (sablon) reprezinta o solutie comuna a unei probleme intr-un anumit context.
Sabloanele de proiectare reprezinta decizii de proiectare privind modul in care coopereaza colectiile de obiecte
„ Fiecare sablon descrie o problema care apare mereu in domeniul nostru de activitate si indica esenta solutiei ac
probleme , intr-un mod care permite utilizarea sol de nenumarate ori in contexte diferite":
Ciasificare :
a) Sabloane creationaie : - Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
b) Structurale ~ Adapter (ptr class)
— Adapter (ptr object)
—- Bridge
— Composite ~ Decorator
— Facade ~ Flyweight
—- Proxy

47
c) Comportamentale: — Interpreter
— Templete
— Chain of Responsability ~ Command
— Iterator
—- Mediator "
— Memento
— Observer
—- State
— Strategy
— Visitor
Patern-urile creationaie
privesc modul de creare a obiectelor
a) Factory Method (Constructor virtual) *
- defmeste o interfata ptr crearea unui obiect , dar lasa subclasele sa decida care clasa va fi instantiata.
b) Abstract factory
- furnizeaza o mterfata ptr crearea unor familii de obiecte inrudite sau dependente, fara a specifica clasele lor concrete
c) Singleton " " " • ...... . .
- asigura ca o clasa are o sg instanta si furnizeaza un pet global de acces la ea
Patern-urile structurale
a) Adapter - converteste interfata unei clase in alta interfata, ceruta de client. Adapterul lasa clasele sa lucreze impreuna
cand sunt probleme datorate incompatibilitatii interfetelor; ^
b) Bridge -- separa abstractizarea de implementare, a.i. ac se pot modifica independent /
c) Composite
d) Decorator - ataseaza dinamic responsabilitati unui obiect; furnizeaza o altemativa mai flexibila decat subclasarea ptr
extinderea functionabilitatii;

clasificare:
creationale - modul de creeare a obiectelor
structurale- compozitia claselor si a obiectelor
comportamentale- modul in care obiectele si clasele colaboreaza pentru indeplinirea unei anumite sarcini

Scop domeniu de creationale Structurale Comportamentale


aplicare
clasa Factory method Adapter Interpreter
Tempalate Method
Obiect abstractFactory Adapter Chain of
Builder Bridge responsabilty
Prototype Composite Command
Singleton Decorator Iterator
Facade Mediator
Flyweight memento
Proxy Observer
State
Strategy
Visitor

 algoritmi de inlocuire la cache, memoria virtuala, TLB *mihu vintan* m38, x10

TLB:MP capacitate maretabela de translatare are f multe locatiiimposibila implementarea ei intr-un hardware f. Rapid
-actioneaza ca un cahe de date retinand adresele care vor fi cel mai probabil referite(celor mai uitilizate pagini trebuie sa
fie translatate in hardware)
TLB are 2 functii:
-translatarea ultrarapida a adreselor virtuale localizate in TLB
-un algoritm de inlocuire a liniilor TLB atunci cand o noua adresa virtuala trebuie actualizata in TLB
Translatarea adreselor: mapare directa
Complet asociativa
In seturi asociative
Utilizatorului i se creeaza impresia unui unic spatiu de memorie inttinsa. Numai paginile celemai folosite sunt translatate
in hardware
TLB= tabela de viteza mare(cache) care retine intrarile in paginile cele mai utilizate
proc emite adrese virtuale tabela de translatare o transforma in adresa reala, daca PR nu este in MP atunci ea trebuie
adusa (exceptie page fault). Tabela de translatare a dreselor de pe disk si tabela de translatare a adreselor din memorie.
TLB necesar deoarece spatiul adrselor din MP este prea mare.

48
Atunci când este încărcat un nou bloc în memoria cache, unul din blocurile existente în această memorie trebuie înlocuit.
Este necesar un algoritm care să selecteze blocul care va fi înlocuit. Se prezintă principalii algoritmi utilizaţi.
• LRU (Least Recently Used): Se înlocuieşte blocul care a fost cel mai puţin recent utilizat. Deoarece se presupune că
blocurile utilizate cel mai recent au probabilitatea cea mai mare de a fi accesate, această metodă dă cele mai bune
rezultate.
• FIFO (First-In, First-Out): Se înlocuieşte blocul care a fost încărcat primul în memoria cache (cel mai puţin recent).
• LFU (Least Frequently Used): Se înlocuieşte blocul care a fost utilizat cel mai puţin. Există şi o tehnică bazată pe
înlocuirea aleatoare a unui bloc, fără a se ţine cont de utilizarea acestuia.
8.5.2.4. Tehnica de scriere
Înaintea înlocuirii unui bloc, trebuie să se testeze dacă acest bloc a fost modificat în memoria cache, dar nu a fost
modificat şi în memoria principală. Dacă blocul nu a fost modificat în memoria cache, poate fi înlocuit, dar dacă a fost
modificat, trebuie să se actualizeze memoria principală cu noul conţinut al blocului. Sunt posibile mai multe tehnici de
actualizare a memoriei cache. Acestea trebuie să ţină cont de două elemente. În primul rând, la memoria principală pot
avea acces mai multe componente ale sistemului, de exemplu un modul de intrare/ieşire (I/E) utilizat pentru conectarea
unui periferic. Dacă un cuvânt a fost modificat în memoria cache, cuvântul corespunzător al memoriei principale nu mai
este valid. În al doilea rând, dacă un modul de I/E a modificat memoria principală, cuvântul din memoria cache nu mai
este valid.Tehnica cea mai simplă se numeşte “write-through”. În acest caz, toate operaţiile de scriere se efectuează atât
în memoria principală, cât şi în memoria cache, asigurându-se faptul că memoria principală este validă întotdeauna.
Dezavantajul acesteia este că există un număr ridicat de operaţii de scriere care nu sunt necesare. O altă tehnică, numită
“write-back”, minimizează numărul operaţiilor de scriere. in cazul acestei tehnici, actualizările se efectuează numai în
memoria cache. La o operaţie de actualizare, este setat un bit asociat cu blocul din memoria cache. La înlocuirea unui
bloc, acesta este scris în memoria principală numai dacă bitul asociat acestuia este setat. Problema care apare în acest
caz este că anumite porţiuni din memoria principală sunt invalide, deci accesul la memorie de către un modul de I/E poate
fi realizat numai prin memoria cache.

 retele semantice *volo, moisil* m20, x17

Volo P 140
Formate din noduri si arce care conecteaza nodurile. Ambele pot avea etichete. Nodurile reprezinta ob, concepte sau
situatii iar arcele sunt realtii intre acestea. Similaritatea superficiala a acestor notatii este tot ce au in comun unele sisteme
de tip retea semantica. Sunt la ora actuala o schema de reprezentare f populara. Structura nod-legatura capteaza ceva
esential despre simb si pointeri din cadrul simb si despre asociatii din psihologia mem
-Ce semnifica de fapt un nod
-Cum trebuie reprezentata trecerea timpului
-care sunt regulile pt mostenirea proprietatii in retele

Retele semantice simple


Retele semantice sortate
Retele semantice extinse

 drepturi de acces intr-o clasa *poo* m37.1, x8, x52

Clasa: entitate asemanatoare cu o structura, cu diferenta ca membrii unei structuri sunt implicit publici, iar membrii unei
clase sunt implicit privati
Public: membrii cu acest atribut pot fi accesati atat din interiorul cat si din exteriorul clasei
Private: membrii cu acest atribut pot fi accesati numai din interiorul clasei
Pt mostenire si incapsulare
Protected: se comporta ca si privat pentru incapsulare dar ca si public pt mostenire

operatorul new

aloca memorie ptr noul obiect, el stie cata rnem are nevoie , uitandu-se la defmirea clasei la variabilele definite i clasa;
apeleaza constructori ptr initializarea variabilelor obiectelor: Constructorii au fost rnentionati anterior
returneaza referinte la obiecte noi create. Ptr referirea ac obiecte in viitor , trebuie sa memorati referintele la variabile; Car
carl = new Car (,,BMW);

 invatarea: tehnici de invatare *bia*169

Invatarea prin primire de sfaturi

49
Cercetarile cauta sa automatizeze cele5 faze ale primirii de sfaturi:
-cerere =cererea unui sfat la un expert
-interpretare=asimilarea sfatului intr-o reprezentare interna
-operationalizarea = convertirea intr-o forma directa utilizabila
-integrarea = integrarea in baza de cunostinte
-evaluarea = evaluarea de catre elementul de performanta a actiunilor rezultante.
Invatarea pe de rost 177
Invatarea prin exemple
Un program care invata din exemple tre sa extraga din exemplele specificem, reguli generale care sa poata fi
folosite pt a ghida actiunile elementului de performanta. Se foloseste in sistemele de control si de recunoastere a
formelor.

 care din urm. Structuri ofera operatii mai eficiente: stiva, arbori, tabela de dispersie *sima* m14, m32, x28, x47, x53
Stiva permite accesul la un sg element : cel care a fost inserat ultimul. Majoritatea microprocesoarelor au o arhitectura
bazata pe conceptul de stiva . La apelul unei metode , adresa de intoarcere din ac si parametrii metodei se introduc intr-o
stiva, in timp ce , la revenire , ac inform sunt extrase din stiva . Op cu stiva sunt incorporate in microprocesor.
Plasarea unui elem in stiva se numeste introducere in stiva (push) iar stergerea unui elem din stiva se numeste extragere
(pop)
Elementele pot fi atat inserate cat si extrase din stiva intr-un tp constant O(l). Ac inseamna ca timpul nu depinde de nr
elementelor din stiva, fiind deci f.scurt. Nu sunt necesare comparatii sau deplasari.
Stiva este pe principiul LIFO (last in-first out).
Un arbore consta din noduri, care sunt unite prin muchii.
Un arbore binar este cel care ptr fiecare nod are cel mult 2 fii
Caracteristica esentiala a unui arbore binar de cautare este urmatoarea : cheia fiului stang trebuie sa fie mai mica decat
cea a parinteliii, iar cheia fiului 'drep't trebuie sa fie mai mare sau egala cu cea a parintelui
Tabela de dispersie: sunt semnificativ mai rapide decat arborii. Aceasta este si f simplu de programat.
Tab de dispersie sunt struct de date care ofera posibilitatea inserarii si cautarii extrem de rapide. Notiunea
fundamentala(dispersia) implicata este transformarea unui domeniu de valori ale unei anumite chei intr-un domeniu de
indici intr-un tablou. Ac. op este realizata printr-o fct de dispersie

O stiva este o structura de date de tip "container" (depoziteaza obiecte de un anumit tip) organizata dupa principiul LIFO
(Last In First Out). Operatiile de acces la stiva (push - adauga un element in stiva si pop -scoate un element din stiva) sint
create astfel incit pop scoate din stiva elementul introdus cel mai recent Tabela de dispersie:
- pentru regasirea eficienta a unui obiect cand acesta nu are o valoare numerica de identificare utilizabila direct ca indice
ıntr-un tablou
– ideea: gasirea unei functii h cu o valoare numerica unica pentru fiecare obiect considerat, ıntr-un domeniu restrans
(utilizabil ca indice)

Stiva LIFO - cautarea ia mult timp stiva nu este ordonata


arbori binari - log2(N+1), cautare ,
tabela hash - coliziuni, cautare rapida, adaugarea la fel

Rolul SO si rolul hardware in tratarea unei exceptii Page Fault.


Exceptia Page Fault apare in momentul in care se incearca translatarea unei adrese virtuale intr-o adresa reala, iar
adresa reala nu se gaseste in MP
Fiecarei pagini virtuale ii este asignata o pagina reala. Anumite pagini virtuale raman neasignate sau neutilizate. Atunci
cand o pagina virtuala este accesta de catre procesor:
-mai intai este activat hardware-ul care implementeaza tabela de translatare aferenta paginilor din MP; dc aceasta se
gaseste rezidenta intr-o pagina reala, va fi referita
-in cazul in care pagina nu se gaseste, va fi activata o rutina soft(de regula printr-o rutina de exceptie page fault) care va
cauta domiciliul paginii virtuale. Se transfera pagina reala din MS in pagina reala corespunzatoare(libera) din MP
- dc MP este complet ocupata, se evacueaza intai o pagina din MP(se scrie la locul ei in MS)

Sistemul de operare reprezintă o interfaţă între utilizator şi hardware.


Atunci când sunt referite datele dintr-o pagină şi pagina nu se află în memorie se activează mecanismul de Page Fault
Principiul mem virtuale, rolul resurselor hard, soft, TLB
Mem virtuala reprezinta o tehnica de organizare a mem prin intermediul careia progr ,,vede" un sp virtual de adresare f
mare si care, fara ca programatorul sa simta, este mapat in mem fizic disponibila.
Uzual, spatiul virtual de adrese corespunde suportului disc magnetic, progr avand iluzia prin macanismele de mem
virtuala (MV) ca detine o memorie (virtuala ) de capacitatea hard-discului si nu de capacitatea mem fizice preponderenta
DRAM
In cazul MV, mem principala este analogica mem cache intre CPU si mem principala numai ca de aceasta data ea se
situeaza intre CPU si hard disk.

50
In general prin mecanismele de MV, MP contine pag cele mai recent accesate de catre un program ea flind pe post de
cache intre CPU si discul hard.
Transf adresei virtuale emisa de catre CPU intr-o adr fizica (existenta in sp MP) se numeste mapare sau translatare.
In general sp virtual de adresare este impartit in entitati de capacitate fixa (4 - 64ko) numite pagini
Pnn pagiriare fiecare acces la o data necesita 2 accese Ja memorie: unul ptr obtinerea adr fizice din tabela de pagini iar
celalalt ptr accesarea propriu-zisa a datei in MP. In vederea reducerii ac tp de acces (dublu) tabela de pagini este
,,casata" memorata partial in CPU. Memoria cache care memoreaza maparea tabelei de pagini este TLB (Translation
Lookaside Burfe: Ca once cache TLB poate avea dif grade de asociativitate. Exista evacuari/incarcari intre TLB si tabe de
pag din MP.
Deoarece TLB este implementat in general ,,on-chip" capacitatea sa este relativ unica a (32-101 intrari)

51

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