Documente Academic
Documente Profesional
Documente Cultură
1. Limbaje de programare(Ciurea)
1. Operatori in C/C++
2. Variabile locale si variabile globale/ Durata de viata si domeniul de
vizibilitate a variabilelor
3. Tipuri de instructiuni
4. Instructiuni conditionale in C/C++
5. Instructiuni repetitive in C/C++
6. Siruri de caractere cu terminatie nula: declaratie, functii specifice
7. Functii: declaratie, apel, exemple
8. Recursivitate: definitie, exemple (multiplica instante ale aceleiasi cai).
Exista redundanta ? si utilizare
9. Backtracking: definitie, exemple si utilizare
10. Fisiere text: declaratie, deschidere, accesarea informatiei
11. Tipul pointer: declaratie, proprietati (tipuri de pointeri)
12. Alocarea dinamica a memoriei
2. POO (Breazu)
1. Explicati de ce se spune ca mostenirea multipla creeaza un graf orientat
aciclic.
2. Care este legatura intre mostenire si abstractizare.
3. Care este legatura intre polimorfism si mostenire ?
4. Diferenta intre "overloading" si "overriding".
5. Clase si obiecte
6. Drepturi de acces intr-o clasa.
7. Mostenirea
8. Incapsularea
9. Polimorfism
10. Constructori si destructori
11. Operatorul new, constructor si rol
12. Legaturi statice si dinamice la apelul functiilor
13. Tabela metodelor virtuale VMT
14. Solutii de tratare a exceptiilor
15. Durata de viata si vizibilitatea variabilelor
16. Transfer prin valoare si transfer prin referinta
17. Explicati: (cod cu mostenire)
18. Ce structuri de date se folosesc la functii ? Dar in cazul structurilor
obiectuale.
19. Fiecare obiect are o stare si o comportare si o " identitate". Explicati poza
3. Java (Sima)
1. Ce relatie exista intre structurile: coada cu prioritati, lista sortata si min/max
heap
2. Asemanarile si deosebirile intre o clasa abstracta si o interfata
3. Backtracking
4. Greedy
5. A*
6. Programarea dinamica
7. Care din struct ofera operatii mai eficiente: stiva, arbore, tabela de dispersie
1
8. Gestiunea mem in C si Java
9. Cls abstracte interfata java; asemanari si deosebiri
// Ingineria Programarii
10. Ce se intelege prin "use cases" si unde se intalneste ?
11. Explicati unul dintre pricipiile de proiectare obiectuala : OCP, Liskov sau
DIP
12. Ce se intelege prin "dynamic dispatch" in contextul apelului unei metode?
13. In contextul design patterns ce este un sablon creational; exemplificati ;
Singleton, Adapter
14. Ce desemneaza faza de analiza in cadrul ingineriei software
2
6. Limitări arhitecturale ale paradigmei superscalare şi independente de
caracteristicile microarhitecturale, referitoare la:
- maximizarea ratei de aducere a instrucţiunilor din memorie
- maximizarea ratei de execuţie a instrucţiunilor.
- Soluţii de principiu.
7. 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 ?
8. HLL, HSA
9. Limitarea issue-bottleneck. Reutilizarea dinamica a instructiunilor
10. 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” ?)
11. Optimizarea dinamica a procesarii programelor ; alg , aplicatii
12. Predictia statica si dinamica
13. Predictori de salturi
14. Predictori de valori
15. Caracteristici ale sistemelor cu microcontroller-e (memorii, componente
tipice ale sistemului I/O, set instrucţiuni, instrumente de dezvoltare).
9. Retele (Sigovan)
1. Care sunt nivelele ISO-OSI ale retelei de calculatoare si care este rolul lor.
2. Medii de comunicatie. Enumerare. Topologii de retea.
3. Rolul protocoalelor de acces la mediu. Exemple de protocoale.
4. Nivelul retea. Functionare. Rol. Exemplu de protocol.
3
5. Nivelul aplicatie. Servicii. Exemple de protocoale de serviciu.
------------------------------------ </Cuprins>------------------------------------
4
1. Limbaje de programare(Ciurea)
1. Operatori in C/C++
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(=), *=, +=,...
Op. Shiftare: <<, >> st, dr
Op. Diversi:
Conditional: ?: (min=a<b?a:b),
Apel de functie: () x(y)
Sizeof – dim in octeti a unei marimii,
de conversie – (tip) expresie
int a, b, c; float v; v= (float)a/b
virgula: x,y
[] pt vectori
. pt structuri
*, & pt pointeri
Variabile locale:
-variabile declarate in interiorul functiei
-valabile in interiorul functiei, in celelalte functii nu sunt accesibile
-sunt init cu valori neprecizate
-sunt generate intr-o zona de memorie de tip stiva(LIFO)
-variabilele statice locale sunt mai rapide, pastreaza valoarea la iesirea
din functie, dar vor ocupa loc in memorie pe toata durata programului.
Variabile globale:
-var declarate in afara fct
-sunt init cu valori nule
-pot fi folosite in orice fct cu exceptia functiilor in care apar variabile locale cu
acelasi nume(in astfel de situatii, au prioritate cele locale)
-variabilele sa fie stocate permanent in segmentul de date. =>
5
=>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, este recomandata evitarea
folosirii variabilelor globale, mai ales in cazul programelor care folosesc mai multe
functii si volumul datelor este mare.
3. Tipuri de instructiuni
-Instr. Vida: ;
-Instr. Expresie: expresie; (se evalueaza chiar daca nu folosim rez., se termina cu
;)
-Instr. Compusa: {i1,i2,i3....} - se folosesc ca sa putem scrie mai multe instr care sa
fie interpretate de compilator ca una singura
-Instr. Conditionale: if, switch
-Instr. Repetitive: while ,do ..while, for
-Instr. De iesire din ciclu: break; (det.iesirea fortata din ciclu)
-Instr.de revenire din functie : return sau return expresie
6
While(conditie)
Bucla for continua sa se execute atata timp cat conditia ramane adevarata.
Atunci cand devine falsa , bucla se termina iar executia programului continua cu
instr. Imediat urmatoare dupa for.
Concluzie : - 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.
Initializare :
char myword [] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ };
char myword [] = “Hello”;
In cel de-al 2lea caz cand se folosesc « caracterul null este inserat automat.
Functii :
size_t strlen(char* s); - intoarce lungimea unui sir fara car null | (pointer la char)
char* strcpy(char* to, const char* from); - copiaza un string care se termina in null in
alt string.
Char* strncpy(char* to, const char* from, size_t maxlen); - copiaza o portiune dintr-
un string care se termina in null in alt string
char * strcat ( char * destination, const char * source ) - concateneaza un string care
se termina in null la sfarsitul celui de-al doilea string
int strcmp(const char* s1, const char* s2); - compara 2 stringuri
int strncmp ( const char * str1, const char * str2, size_t num ); - compara primele n
caractere din 2 stringuri : // Returns -1 (s1<s2), 0 (s1==s2), or 1(s1>s2)
definire
tip_returnare numele_functiei (tip_parametru nume_parametru)
{Corpul functiei}
7
apelare
numele_functiei (parametrii);
Nu exista redundanta.
Utilizare: atunci cand e nevoie de reutilizarea codului metodei (a aparut datorita
nevoii de transcriere a formulelor matematice recusive)
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(pt param transmisi prin
valoare) sau adresa (pt cei transimi prin referinta). Cand executia fct se incheie , s.o al
calc descarca adresele de revenire din stiva in counter-ul de program al CPU.
8
File *f – implicit text
f=fopen(„.....”, [w,r, b])
fclose(denumire);
fprintf – afisare
fread(ptr loc. Mem, dim in bytes car de citit, nr. car, fis ) – citeste un nr de elemente
fscanf(file, format,...) – citeste din file si stocheaza in fct de param format
fgets(char *str, int num , file) – citeste num-1 car din file si le stocheaza in str
fwrite( ptr. tablou ce trebuie scris, dim in bytes car de scris, nr, file ) – scrie un tablou
de nr elem in file
Proprietati :
o se pot face atribuiri
o pointerul poate primi valoarea NULL(nu pointeaza spre ceva)
o comparatii intre pointeri de acelasi tip
o adunarea intre un pointer si un intreg
o incrementarea-decrementarea(adr ptr +/- 1)
o diferenta intre doi pointeri de acelasi tip (dc point spre ac. Vect. Arata
cate elem sunt intre ele)
o pointeri la functii (adresa de mem. Unde incepe codul unei fct)
9
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 acestea se foloseste tehnica bazata pe stiva, Ea
respecta urmatoarele :
=> referintele la param formali sau var locale sunt rezolvate inca de la compilare a.i.
la activare, locatia aflata la deplasamentul coresp este completata 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).
10
2. POO (Breazu)
Prin mostenire o clasa poate folosi functionalitatea unei alte clase. Prima este clasa
baza, iar cealalta este clasa de derivata.
Relatia dintre cele 2 clase este unidirectionala de la cea de baza la cea derivata. O
clasa poate sa fie clasa de baza pentru mai multe clase derivate. Se creeaza astfel o
structura de tip arbore. In cazul mostenirii simple, ramurile arborelui nu se unesc pe nivele
inferioare. In C++ o clasa derivata poate sa aiba mai multe clase de baza. Astfel ramuri ale
arborelui de mostenire ajung sa se uneasca, formand un graf orientat. Graful este aciclic
deoarece legaturile nu se pot intoarce asupra altor clase care sunt deja clase de baza.
Relatia de mostenire:
este un mecanism de abstractizare - fiecare clasa derivata este o forma
mai concreta a clasei de baza; obiectele claselor derivate pot fi folosite oriunde este
asteptat un obiect al clasei de baza (polimorfism)
permite reutilizarea codului - definit in clasa de baza.
11
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 diferite clase
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
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 clasa de derivata si cea de baza.
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.
-Supraîncărcarea tratează mai multe metode din aceeași clasă cu același nume, dar
semnături diferite
-Suprascreirea trateaza doua metode, una dintr o lasa de baza si una dintr o clasa
derivata, care au aceeasi semnatura
5. Clase si obiecte
Obiect: instanta a clasei; o clasa nu detine valori pentru membrii ei, este doar un
model pentru obiecte; obiectele sunt create dupa modelul clasei si folosite in
program; metodele statice tin de clasa, insa doar ca un comportament care nu tine
neaparat de o instanta a clasei.
12
6. Drepturi de acces intr-o clasa.
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
7. Mostenirea
Mostenirea la nivelul claselor este folosita pentru refolosirea codului unei clase
de catre una noua. Prima este clasa de baza, a doua este cea derivata.
Derivare:
Public
o public->public;
o protected->protected;
o private->null;
Protected
o public->protected;
o protected->protected;
o private->null;
Private
o public->private;
o protected->private;
o private->null;
8. Incapsularea
9. Polimorfism
13
10. Constructori si destructori
Tabela VMT este folosita pentru a pastra referintele la functiile declarate virtual.
Exista pentru fiecare clasa. In cazul unui apel al unei functii virtule, adresa acesteia
este cautata in tabela si apoi lansata. Aceasta legare se face runtime.
La derivarea unei clase noi dintr-una cu metode virtuale, tabela VMT este copiata si
acesteia. In cazul in care o metoda este redefinita, intrarea coresp din VMT este
inlocuita cu adresa acesteia. Vechea metoda poate fi lansata si ea insa explicitand
clasa de care apartine.
Exceptii:
Try
{
//bloc de date care pot genera exceptii
}
Catch(...; Exception; Exception e) // toate / tip de exceptie / tip si accesarea info
exceptiei
{
//bloc de cod de tratare a exceptiilor
}
14
Finally
{
// cod executat fie daca exceptia a fost prinsa fie daca nu
}
Blocurile catch sunt parcurse in ordine pana la primul care se refera la exceptia care a
fost aruncata. De regula se pun mai intai blocuri catch cu expectii concrete, apoi
blocuri cu exceptii folosind clase mai generale, posibile de baza pentru cele
precedente, iar la final blocul ... care prinde toate tipurile de exceptii.
Se poate folosi si int pe post de exceptie.
Cand o exceptie nu este prinsa, se trece pe nivelul superior (metoda care a apelat
metoda curenta), si tot asa pana se ajunge la sistem.
Var globale
o Durata de viata – pe toata durata executiei programului
o Vizibilitate – in toate metodele, insa doar in modulul curent
Var locale
o Durata de viata – de la locul declararii si pana la iesirea din corpul
functiei, sau al structurii cu {}
o Vizibilitate – doar in interiorul functiei sau al structurii {} in care a fost
declarata
Var statice
o Durata de viata – valorile lor raman si la iesirea din functie, iar la
apelul urmator aceasta poate fi folosita in continuare
o Vizibilitate – doar in int functiei
Var externe
o Durata de viata – pe toata durata executiei programului
o Vizibilitate – atat in interiorul modului curent cat si in celelalte in care
este declarata
15
17. Explicati: (cod cu mostenire)
- la momentu potrivit pe imaginea potrivita
19. Fiecare obiect are o stare si o comportare si o " identitate". Explicati poza
- metodele ii dau obiectului comportarea sa si membrii identitatea
3. Java(Sima)
Lista sortata
Structura de forma unui lant formata din noduri continand valori ordonate
Heap
Structura bazata pe arbori
Proprietate: daca B e copil pt A, atunci valoarea lui A e >=/<= cu valoarea lui
B (max-heap/min-heap)
Coada cu prioritati
Coada in care nu primul venit este primul care iese, ci cel cu prioritatea(sau
valoarea) cea mai mare
Poate fi implementata folosind
o Lista sortata
ineficient
O(n) pt inserare, O(1) pt get-next, O(nlogn) pt constructie
o Lista nesortata
ineficient
O(1) pt inserare, O(n) pt get-next,
o Heap
Toate operatiile au O(nlogn)
16
3 Asemanarile si deosebirile intre o clasa abstracta si o interfata
O interfata este un sablon pentru o clasa, contine prototipurile metodelor care trebuie
implementate de acea clasa pentru a putea spune ca implementeaza acea interfata.
Alte metode pot fi adaugate pe langa acestea.
O clasa abstracta serveste tot ca model pentru alte clase care o vor mosteni. Metodele
pure trebuie implementate de catre clasele derivate. Pe langa aceasta, clasele abstracte
adauga posibilitatea refolosirii codului din clasele de baza.
4 Backtracking
backtrack(x)
{
Foreach(componenta urmatoare y)
{
If(valid(y))
{
If(solutie(y)) output;
Else backtrack(y);
}
}
}
Pot fi variante care nu exploreaza toate solutiile, ci se opresc la prima solutie destul de
buna fata de un anumit criteriu.
5 Greedy
Algoritm de cautare euristica in care se merge spre solutie alegand de fiecare data
optimul local.
Reduce problema la o subproblema mai simpla, cea de alegere a urmatoarei
componente din solutie indiferent de cum ar afecta global urmatoarele alegeri.
Pentru Traveling Salesman un algoritm greedy alege de fiecare data cel mai apropiat
oras.
Algoritmii greedy sunt destinati problemelor simple, care au o structura optimala. Ei
au o vedere limitata asupra problemei.
6 A*
17
Acest algoritm gaseste solutia optima.
In plus fata de greedy, A* mai ia in considerare si dista nta deja parcursa.
Complexitatea de timp a A* poate fi in cel mai rau caz exponentiala, insa pentru spatii
de cautare arborescente aceasta este polinomiala.
Si compexitatea de memorie poate di de asemenea exponentiala. Numarul solutiilor
partiale care trebuie memorate creste exponential. Exista variante care combat aceasta
problema. IDA*,MA*, SMA* (iterative deepening; mem-bonded; simplified mem-
bounded)
7 Programarea dinamica
8 Care din struct ofera operatii mai eficiente: stiva, arbore, tabela de dispersie
Stiva
Inserare O(1)
Stergere O(n)
Cautare O(n)
Arbore
Inserare O(nlogn) + operatii de echilibrare
Stergere O(nlogn) + operatii de echilibrare
Cautare O(nlogn)
Tabela de dispersie
Inserare O(m)
Stergere O(m)
Cautare O(m)
n - nr de elem
m – constanta
Tabela de dispersie este cea mai eficienta insa are nevoie de memorie mai multa.
18
In C se pot aloca zone de memorie aleatoare, fara a fi folosite de obiecte. In
Java doar la instantierea obiectelor;
C este avantajos pentru softuri real-time
In C este permis ca un pointer sa adreseze o locatie deja dealocata. In Java
obiectele care mai au referinte in program nu sunt dealocate
In C destructorul este lansat sincron cu dealocarea obiectului. In Java
finalizatorii sunt apelati asincron, inainte ca obiectul sa fie dealocat, lucru care
poate sa nu se intample deloc (garbage colectorul poate sa nu decida sa
dealoce memoria daca nu este nevoie)
In C primitivele pot ramane neinitializate. Java impune initializarea lor
In C pot exista obiecte alocate fara referinte la ele (folosesc inutil memorie)
Modelul use-case
Acest model este creat in faza de analiza si isi propune sa prezinte functiile
sistemului din punctul 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.
Actorii nu sunt parte a sistemului - ei repreizinta 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 exper! in domeniu.
Pentru reprezentarea use-case–urilor se foloseste UML (Unified Modeling
Language). UML contine mai multe tipuri de diagrame care se pot clasifica:
• Diagrame de structura
• Diagrame de comportament
• Diagrame de interactiune
11. Explicati unul dintre pricipiile de proiectare obiectuala : OCP, Liskov sau
DIP
OCP(Open Closed Principle)- OPEN pentru a fi extins, adica comportarea lui poate
fi extinsa in diferite moduri in sitnatia in care cerintele aplicatiei se modifica
b- CLOSED la modificarea codului sursa
19
Cele doua cerinte sunt contradictorii. Toate tehnicile utilizate pentru
rezolvarea acestei contradictii se bazeaza pe abstractizare. In limbajele obiectuale
abstractiile 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.
mica paranteza
(
legarea statică (timpurie – “early binding”) – caz în care compilatorul şi editorul
de legături fac corespondenta între numele metodei şi adresa acesteia din segmentul
20
de cod. Odată fixată această legătura în momentul compilării ea este definitivă în tot
timpul rulării programului. La nivelul cel mai de jos, legarea statică corespunde
apelului direct al unei proceduri. Acesta este modul de legare clasic folosit de toate
limbajele structurate procedurale şi de limbajele obiectuale pentru metodele ne-
virtuale (clasice).
)
21
- 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
- Imbunatatirea programului si producerea de variante mai performante
- Modificari datorate cerinjclor utilizator
22
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
23
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 organizată 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).
Cache-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 directă.
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 impreună cu
index-ul (numarul setului) identifies complet linia respectiva. Mai intai, index-ul 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 emisă de
procesor. Daca un comparator semnalizeaza egalitate (hit), linia aferenta este accesată
si incarcată in procesor. Dacă nici un comparator nu semnalizeaza egalitate (miss), se
va recurge la accesul in MP
24
campuri, campul cel mai semnificativ care va identifica pagina (campul page) si
campul cel mai putin semnificativ care va identifica cuvantul (linia) in cadrul paginii
(campul line). Pentru un anumit sistem particular delimitarea cimpurilor line si page
este fixa si astfel realizata incat pagina si aiba o dimensiune optima (optimizarea
transferurilor MP - disc la momentele page fault). In cazul cache-urilor cu mapare
directa si a celor mapate in seturi asociative, adresa virtuala este de asemenea
impartita in doua campuri, campul superior tag si campul inferior index, (care
selecteaza setul sau linia cache). Daca campul index coincide cu campul line, atunci
selectia 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 reala). Dupa translatarea adresei in TLB
si obtinerea adresei reale, aceasta adresa va fi comparata cu tag-urile selectate in
cache.
Din considerente de cost si de viteza de operare, mult mai raspindite sunt
TLB-urile organizate in seturi asociative. In aceasta situatie, TLB-ul impune divizarea
campul page in 2 subcampuri, tag si index, asa cum indica figura 4.16 – pag 103
Pentru cache-urile cu mapare directa, in mod cert, suprapunerea operatiilor in TLB si
cache (paralelismul) se bazeaza pe faptul ca dimensiunea paginii este identica cu
dimensiunea cache-ului. Pentru cache-urile organlzate in seturi asociative restrictiile
impuse de paralelism nu mai sunt tot atat de severe (dimensiunea globala a cache-ului
organizat in seturi asociative poate sa creasca prin cresterea dimensiunii setului). Fara
a afecta esential paralelismul, va fi permis o anumita variatie a lungimii campurilor
delimitate in adresa virtuala. In particular, dimensiunea paginii poate fi mai mare,
astfel incat vor aparea mai multi biti in campul line decat numarul de biti necesari
pentru selectia setului (liniei) cache. Bitii ramasi vor fi concatenati la dreapta
campului Real page citit din TLB, rezultand astfel un camp extins care se va compara
cu tag-urile citite din cache (fig. 4.17 – pag 104).
25
Pentru a gestiona sinonimele adreselor virtuale li se pot atasa tag-uri de proces
(tag-uri suplimentare), pentru a putea diferenfia doua adrese virtuale identice dar care
apartin unor procese diferite.
O alta metoda de gestionare a sinonimelor din cache-urile adresate cu adrese
virtuale consta in utilizarea unui buffer de translatare inversa numit reverse translation
buffer (RTB) sau inverse translation buffer (ITB). In cazul unui ciclu cu miss in cache
adresa virtuala va fi translatata in adresa reala cu ajutorul TLB. Adresa reala obtinuta
va fi utilizata la accesarea MP; in paralel cu derularea accesului in MP, adresa reala va
suferi o translatare inversa pentru a se identifica toate adresele virtuale care conduc
prin translatare la aceasta adresa reala. Translatarea inversa se face cu ajutorul RTB.
a) Pentru cache
Inlocuire aleatoare - De exemplu, un numarator asociat intregului cache poate fi
incremental periodic. Valoarea momentana din numarator identifica linia de inlocuit.
Algoritmul first-in first-out - selecteaza pentru inlocuire linia care se afla in cache
de ce! mai mult timp. Algoritmul FIFO poate fi implementat in mod natural cu o
memorie FIFO sau cu un numarator
LRU – Se inlocuieste linia din cache cea mai putin recent referita (linia cea mai putin
utilizata din setul celor prezente in cache de ex). Implementare prin: numaratoare,
stiva de registri, matrice de biti de stare.
b) Pentru mem virtuala
Algoritmi globali (pagina de evacuat luand in considerate toate paginile existente in
MP) si locali(selecteaza pagina de evacuat luand in considerate numai paginile
asociate programului care a general exceptia page fault.)
Inlocuire aleatoare - La activarea exceptiei page fault, acest algoritm realizeaza o
selectie aleatoare paginii ce urmeaza a fi evacuata din MP.
Algoritmul 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.
Poate fi impl printr-o coada circulara.
Algoritmul first-in-not-usedfirst-out – este o modificare a FIFO astfel incat sa se
evite evacuarea paginilor
utilizate (care prezinta o probabilitate rnai mare de a fi accesate din nou).
LRU – La page fault, va fi evacuata din MP pagina care n-a mai fost referita de cea
mai lunga perioada de timp.
Working Set - Algoritmul working set se bazeaza pe faptul ca fiecare program are
propriul set de lucru; el inlocuieste pagina care n-a fost referita in intervalul T.
c) Pentru TLB
Algoritmii sunt similari cu cei de la cache (a). Alg de inlocuire a unei intrari in TLB
este insa complet hardware
26
b. RISC
c. CISC
d. Evidenţiaţi avantajele/dezavantajele fiecărei arhitecturi.
10 An 3 Intro
27
Interogare/Pooling : testarea de Mp a unui bit de stare asociat perifericului;
dezavantaj: Mp asteapta citirea bitului inaintea fiecarei actiuni; latenta mare
Intreruperi hardware : Mp abandoneaza executia instr curente si se ocupa de
intrerupere
DMA : pentru disp rapide; scrierea/citirea direct in memorie (o op de citire ~
cu latenta unei intreruperi)
11 An 3 Cache-uri
Localiate temporala: o instr accesata de procesor este f probabil sa fie accesata din
nou in viitorul apropiat
Localitate spatiala: o instr din vecinatatea instr curente accesata de procesor este f
probabil sa fie si ea accesata in viitorul apropiat
Tipuri:
Mapare directa:
o fiecare locatie din memorie are asignata o locatie in cache folosind o
functie de hash;
o un tag discrimineaza intre diferitele blocuri care pot ocupa aceeasi
locatie;
o la conflicte se suprascrie cu valoarea accesata cel mai recent
Complet asociative:
o Fiecare locatie din memorie poate ocupa orice locatie din cache
o Eliminare prin LRU
o Rapide, insa scumpe si de dim reduse
Semiasociative
o Cache cu mapare dinamica cu reducerea coliziunilor la nivel de de
intrare
o N-way associative – N intrari pentru fiecare set
o Fiecare locatie din mem are un singur set in care se poate gasi in cache
Strategii de scriere:
Write through
o Se scrie atat in cache cat si in MP
o Nu se mai evacueaza intrarea din cache in MP
o Dureaza mai mult ,de aceea se foloseste un buffer: DWB
o Mai usor de implementat decat WB
Write back
o Se scrie doar in cache, iar la evacuarea blocului in MP
o Comnum mai mic de putere
o Asigura mai usor coerenta
28
o Invalidarea intrarilor din celelalte cache-uri
Write Broadcast
o Actualizarea celorlalte copii
Victim cache
Mem complet asociativa intre L1 cache si MP
Blocurile evacuate din cache datorita missurilor sunt pastrate temporar in VC
Pot aparea multe interschimbari intre cache si VC
Selective Victim Cache
Aduce blocul din MP in cache sau SVC in mod selectiv
In cache blocul conflictual e A, in SVC e B
Hit B in cache
o Se trimite din cache la CPU
o Hit B=1 Sticky B=1
Hit B in SVC
o Se trimite din SVC la CPU
If sticky A=0
se aduce in cache; sticky B=1 hit B=1
Else
if hit B=0
copiaza B in blocul tranzitoriu; sticky A=0
else
interschimba A cu B; sticky B=1; hit B=0
Miss in ambele
If sticky A=0
A trece in SVC; B trece in cache; sticky B=1 hit B=1
Else
if hit B=0
B trece in SVC in blocul tranzitoriu; sticky A=0
else
A trece in SVC; B trece in cache; sticky B=1; hit B=0
29
Paginarea – impartirea mem in pagini de marime egala
Segmentarea – impartirea mem in segmente de lungime variabila
IF->ID->ALU->MEM->WB
Hazarduri:
Structurale
De date
De ramificatie
30
VLIW (Very long instr word) aduc mai multe instr simple RISC intr-o singura instr,
pe care le distribuie apoi unitatilor de procesare.
Este nevoie de softuri de exploatare a paralelismului din program pentru a grupa instr
independente.
Este mai simplu dpdv hardware, instr fiind asignate unitatilor de exec in ordinea
codificarii si nu dinamic ca la proc superscalare.
Compilatorul e puternic senzitiv la modificari hardware.
Dezavantaje VLIW:
Paralelism redus al programelor =.> unit de exec libere
Reorganizarea greoaie a aplicatiilor
Modificari hard => modificari ale compilatorului
Cresterea necesitatilor de memorare a aplicatiilor
3. Procesoare superscalare.
Un deziderat ambitios este acela de se atinge rate medii de procesare de mai multe
instructiuni per tact. Procesoarele care initiaza executia mai multor operatii simultan
intr-un ciclu (sau tact) se numesc procesoare cu executii multiple ale instructiunilor.
Un astfel de procesor aduce din cacheul de instructiuni una sau mai multe instructiuni
simultan si le distribuie spre executie în mod dinamic sau static (prin reorganizatorul
de program), multiplelor unitati de executie.
Principiul acestor procesoare paralele numite si "masini cu executie multipla" (MEM)
consta în existenta mai multor unitati de executie paralele, care pot avea latente
diferite. Pentru a facilita procesarea acestor instructiuni, acestea sunt codificate pe un
singur cuvânt de 32 sau 64 de biti uzual, pe modelul RISC anterior prezentat. Daca
decodificarea instructiunilor, detectia dependentelor de date dintre ele, rutarea si
lansarea lor în executie din bufferul de prefetch înspre unitatile functionale se fac
prin hardware, aceste procesoare MEM se mai numesc si superscalare.
Pot exista mai multe unitati functionale distincte, dedicate de exemplu diverselor
tipuri de instructiuni tip întreg sau flotant. Asadar executiile instructiunilor întregi, se
suprapun cu executiile instructiunilor flotante (FPFlotant Point). În cazul
procesoarelor MEM, paralelismul temporal determinat de procesarea pipeline se
suprapune cu un paralelism spatial determinat de existenta mai multor unitati de
executie. În general structura pipeline a coprocesorului are mai multe nivele decât
structura pipeline a procesorului ceea ce implica probleme de sincronizare mai dificile
decât în cazul procesoarelor pipeline scalare. Acelasi lucru este valabil si între diferite
alte tipuri de instructiuni având latente de executie diferite. Caracteristic deci
procesoarelor superscalare este faptul ca dependentele de date între instructiuni se
rezolva prin hardware, în momentul decodificarii instructiunilor. Modelul ideal de
procesare superscalara, în cazul unui procesor care poate aduce si decodifica 2
instructiuni simultan este prezentat în figura 4.1.
S-ar putea deci considera aceste procesoare MEM ca fiind arhitecturi de tip MIMD
(Multiple Instructions Multiple Data) în taxonomia lui Michael Flynn.
31
De remarcat ca procesoarele superscalare, determina apropierea ratei de executie la
una sau, în cazul în care se pot aduce mai multe instructiuni simultan, la mai multe
instructiuni per ciclu. Dificultatile de sincronizare sporite, se rezolva prin utilizarea
unor tehnici hardware bazate pe "scoreboarding" deosebit de sofisticate. Majoritatea
microprocesoarelor RISC actuale sunt de tip superscalar (contin cel putin un
coprocesor integrat în chip). Un procesor superscalar care aduce din cache-ul de
instructiuni mai multe instructiuni primitive simultan, poate mari rata de procesare la
1.2-2.3 instr./ciclu masurat pe o mare diversitate de benchmark-uri, la nivelul
realizarilor practice între anii 1995-1998
a) Modelul IN - IN
Este caracterizat prin faptul ca procesorul nu decodifica urmatoarea pereche de
instructiuni, decât în momentul în care perechea anterioara se executa. Asadar atât
executia cât si înscrierea rezultatelor se face în ordinea din program
b) Modelul IN - OUT
Este caracterizat de faptul ca executia propriu-zisa se face în ordine, în schimb
înscrierea rezultatelor se face de îndata ce o instructiune s-a terminat de executat.
Modelul este mai eficient decât cel precedent însa poate crea probleme de genul
întreruperilor imprecise care trebuiesc evitate
32
În cadrul acestei arhitecturi, detectia hazardurilor si controlul executiei instructiunilor
sunt distribuite iar rezultatele instructiunilor sunt "pasate anticipat" direct unitatilor de
executie prin intermediul unei magistrale comune numita CDB (Common Data Bus).
Arhitectura de principiu este prezentata :
33
s-a încheiat atunci când locatia alocata în RB a ajuns prima, bufferul RB nu va mai
avansa pâna când aceasta instructiune nu se va încheia. Decodificarea instructiunilor
poate însa continua atât timp cât mai exista locatii disponibile în RB. Daca apare o
exceptie, bufferul RB este golit, procesorul bazându-se pe contextul memorat In
Order în setul general de registri. Astfel, desi proceseaza Out of Order, procesorul
superscalar implementeaza un mecanism de exceptii precise.
4. BTB(branch pradiction).
O alta problema delicata consta în faptul ca desi predictia poate fi corecta, de multe
ori adresa de salt (noul PC) nu este disponibila în timp util, adica la finele fazei de
aducere IF. Timpul necesar calculului noului PC are un efect defavorabil asupra ratei
de procesare. Solutia la aceasta problema este data de metoda de predictie numita
"branch target buffer" (BTB). Un BTB este constituit dintr-un BPB care contine pe
lânga bitii de predictie, noul PC de dupa instructiunea de salt conditionat si eventual
alte informatii. De exemplu, un cuvânt din BTB ar putea contine si instructiunea tinta
a saltului. Astfel ar creste performanta, nemaifiind necesar un ciclu de aducere a
acestei instructiuni, dar în schimb ar creste costurile de implementare. Diferenta
esentiala între memoriile BPB si BTB consta în faptul ca prima este o memorie
operativa iar a 2-a poate fi asociativa, ca în figura urmatoare.
34
EX3) Predictia a fost corecta, însa numai daca si PC-ul predictionat este într-adevar
corect, adica neschimbat. În acest caz, se continua executia normala
35
Memoria TC e accesata cu adresa de inceput a basic block-ului curent n
paralel cu un predictor multiplu de salturi. Acest predictor predictioneaza toate cele
(M-1) adrese de inceput aferente celor (M-1) basic-blockuri ce urmeaza dupa blocul
curent.
Accesare: atat IC(instruction cache) cat si TC sunt accesate in paralel cu adresa de
inceput a noului bloc de instr. Ce trebuie executat. Prima oara cand un trace este
intalnit ii este alocata o linie in TC. Daca acelasi trace se intalneste din nou in timpul
executiei programului(aceeasi adr.de inceput si aceleasi preziceri ale branch-urilor) el
va fi gasit si va fi trimis decodorului.ste intalnit in TC se va cauta in IC si dc nici aici
se cauta in nivelele ierarhice superioare.
36
Predictia valorilor e o tehnica descoperita de Lipasti. Localitatea valorii se
refera la faptul ca rezultatul unei instr. care este din nou procesata sa se repete.
Predictia dinamica a valorilor instructiunilor (VP) repr. o tehnica speculativa
care se bazeaza pe predictia valorii instructiunilor urmata de executia speculative a
instructiuniilor successive dependente. Executia speculativa este mai tarziu validata
(late validation) dupa ce rezultatul instructiunii e produs. In cazul unei predictii
corecte timpul de executie al caii critice este redus. Altfel instructiunile prezise gresit
trebuie executate din nou (recovery), cu penalitatile de timp aferente.
Mica paranteza:
(
Daca prima intr este mov a, val 1 + val2 si a doua if (a==1) do ... instr a doua
presupune ca a =1 si se executa pe acea ramura , chiar daca nu se cunoaste inca val
din a. Cand se face ALU pt prima instr. se cunoaste rez. si ea va spune dc predictia e
valida sau nu. Dc nu e valida se face recovery –instr. sunt evacuate din pipeline si se
executa cealalta ramura.
Alti factori care determina limitarea ratei de issue a instructiunilor sunt: largimea de
banda limitata a interfetei procesor - cache, missurile în cacheul de date, alias-urile de
memorie. Pentru a contracara efectul acestor factori se poate utiliza cu succes
mecanismul Data Write Buffer (DWB). DWB reprezinta un mic procesor de iesire
care lucreaza în paralel cu CPU degrevându-l pe acesta de sarcina scrierii în cache.
DWB ofera porturi de scriere virtuale multiple spre deosebire de DataCache care
contine un singur port de citire (LOAD) si un singur port de scriere (STORE). DWB
rezolva prin "bypassing" elegant hazardurile de tip "LOAD after STORE" cu adrese
identice, nemaifiind deci necesara accesarea sistemului de memorie de catre
instructiunea LOAD.
37
7. 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 ?
Avantaje:
• scurtcircuitarea unor nivele din structura pipeline de catre instructiunile
reutilizate reducand presiunea asupra resurselor(SR, unit. de exec., etc)
necesare altor instr. aflate in asteptare
• la reutilizarea unei instr. rezultatul sau devine cunoscut mai devreme decat in
situatia in care s-ar procesa normal, permitand altor instr. dependente de
aceasta sa fie procesate mai rapid
• reducerea penalitatilor datorate predictiei eronate a adreselor destinatie in
cazul instr. de salt, prin reutilizarea codului succesor punctului de convergenta
• colapsarea dependenteleor de date determina imbunatatirea timpului de
executie al instructiunilor, crescand gradul de paralelism al arhitecturii
8. HLL, HSA
38
programming languages, it may use natural language elements, be easier to use, or be
more portable across platforms. Such languages hide the details of CPU operations
such as memory access models and management of scope.
This greater abstraction and hiding of details is generally intended to make the
language user-friendly, as it includes concepts from the problem domain instead of
those of the machine used. A high level language isolates the execution semantics of a
computer architecture from the specification of the program, making the process of
developing a program simpler and more understandable with respect to a low-level
language.(wikipedia is my homie :P )
Statistici deosebit de serioase arata ca în cadrul implementarilor de limbaje HLL
(High Level Languages) instructiunile CALL / RET sunt frecvent folosite si totodata
cele mai mari consumatoare de timp (ocupa între 5%-45% din referirile la memorie).
Pred. contextuale prezic urmat. Val. Pe baza aunui pattern anterior(context) care e
generat repetitiv in secventa de valori. Un pred. contextual e de ord k daca contextul
sau include ultimele k valori si deci cautarea se face prin aceste ultime k valori.
Ex: PPM si pred adaptive pe 2 nivele
Pred. hibride foloseste 2 /mai multe predictoare diferite. Ideea de baza e urmat.: dc un
predictor greseste( prezice gresit) celalalt predictor e lasat sa prezica.
39
- issue bottleneck – DIR si VP
->vezi sub 6
40
Se poate observa ca functia conditionala a celui de al doilea salt este dependenta de
cea a primului. Astfel, daca prima ramificatie nu se face atunci se va sti sigur ca nici
cea de a doua nu se va face. Daca însa prima ramificatie se va face atunci cea de a
doua va depinde exclusiv de valoarea logica a conditiei "cond2". Asadar în mod cert
aceste doua ramificatii sunt corelate, chiar daca comportarea celui de al doilea salt nu
depinde exclusiv de comportarea primului.
Un alt avantaj al acestor scheme este dat de simplitatea implementarii hardware, cu
putin mai complexa decât cea a unui BPB clasic. Aceasta se bazeaza pe simpla
observatie ca "istoria" celor mai recent executate m salturi din program, poate fi
memorata într-un registru binar de deplasare pe m ranguri (registru de predictie).
Asadar adresarea cuvântului de predictie format din n biti si situat într-o tabela de
predictii, se poate face foarte simplu prin concatenarea c.m.p.s. biti ai PC-ului
instructiunii de salt curente cu acest registru de deplasare în adresarea BPB-ului de
predictie.
GAg (Global History Register, Global Prediction History Table);
PAg
În scopul reducerii interferentelor diverselor salturi în tabela de predictii, în [Yeh92]
se prezinta o schema numita PAg- Per Address History Table, Global PHT, a carei
structura este oarecum asemanatoare cu cea a schemei GAg.
41
ultimele N adrese tinta.
42
microprocessor has three parts - ALU, Control Unit and registers, but the
microcontroller has additional elements like ROM, RAM etc.
Memoria: arh Harvard (spatii de adrese separate pt instr si date). Mem program e
RAM sau EPROM si e adresata pe 16b; mem de date e ROM si adresata pe 8 sau 16b.
Nu au bus special pt date si adrese.
Tipuri de instructiuni: instr aritmetice, logice (AND, OR, NOT, XOR), de salt
conditionat sau neconditionat, de transfer de date (MOV, PUSH, POP, XCH-face cat
3 MOV-uri)
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
Instrumentele de dezvoltare: magistrala I2C, magistrala ACCESS, placa DB-51 !!
habar n-am ce-s astea
Prin partitionare discul fizic este impartit in mai multe discuri logice. Fiecare dintre acestea se
comporta ca si cum ar fi un disc separat.
Informatiile despre partitionarea discului sunt stocate intr-un tabel de partitie principala
localizat pe primul sector fizic al discului (0,0,1).
Scopuri:
organizarea discului;
folosirea discurilor mai mari decat pot fi manipulate de strucrura logica a SO
permite stocarea de SO si sisteme de fisiere diferite pe acelasi disc;
43
planificat si rulat conform algoritmului de planificare utilizat. In ac mod se realizeaza
multiplexarea proceselor.
Deosebiri:
firele de executie nu pot rula decât în cadrul unui proces
fiecare proces are propria sa memorie (propriul sau spatiu de adrese)
La crearea unui nou proces prin instr fork() se copiaza datele si codul
procesului initial, firele doar codul
firele de executie au acces la aceleasi date, datele procesului care le
contine
44
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.
Monitor:
contine un set de variabile si operatori definiti de programator
procedurile monitorului pot accesa doar variabilele monitorului si cele
formale, iar var locale ale monitorului pot fi accesate doar de catre
procedurile sale
un singur proces poate fi activ in cadrul unui monitor
sincronizarea se face prin variabile de tip condition si operatorii wait()
si signal()
wait suspenda procesul pana cand alt proces foloseste signal
Blocarea cu bariere
Bit de lock - slabutz
45
Cu ajutorul unor functii primitive ale sistemului de operare, care permit
deblocarea unui proces care a intrat în starea de asteptare
Concomitent, se poate realiza si schimbul de date între cele douã procese,
utilizând directive ale sistemului de operare de tipul SEND, RECEIVE;
Paginare: impartirea mem. In pagini (4-64 KB) => mem poate fi astfel alocata
noncontiguu
46
- Daca adresa e invalida procesul este incheiat anormal, altfel se cere SO sa incarce
pagina(HARD)
- Se cauta un cadru liber(SO)
- Se solicita o op I/O de incarcare a paginii(SO)
- Modificarea tabelei de pagini pt a indica existenta paginii in mem
- Reinceperea instr care a det page fault
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ă.
47
Scopul unui SO este de a furniza un mediu in care un utilizator poate executa
aplicatiile. Acesta trebuie sa fie usor de utilizat. In plus trebuie sa foloseasca in mod
eficient resursele pe care le aloca aplicatiilor.
O def mai comuna este aceea ca SO este un program care ruleaza tot timpul pe
calculator, de obicei numit kernell, toate celelalte programe fiind aplicatii.
HARD – componentele care realizeaza fizic calculele si actiunile cerute de
utilizator prin intermediul aplicatiilor, intermediate de SO.
SOFT – modul in care sunt folosite resursele hard de catre SO pentru a servi
aplicatiile si utilizatorul.
48
Concurenta BD(bazei de date) apare atunci cand mai multi utiliz. vor sa
acceseze aceleasi date simultan => SGBD trebuie sa mentina integritatea BD.
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
acelasi 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.
● Cand mai multi utilizatori incearca sa faca 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. Toate
tranzactiile sunt atomice, adica orice tranzactie individuala fie este complet
executata, fie nu se executa deloc.
49
Izolarea : implică protejarea rezultatelor intermediare ale operaţiilor din cadrul unor
tranzacţii 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.
Durabilitatea: presupune ca actualizarile tranzactiilor executate cu succes nu sunt
niciodata pierdute. Ele pot fi refacute in cazul unor defectiuni aparute la nivelul
sistemului.
5. Ce se înţelege prin baze de date distribuite? Dar prin baze de date orientate
obiect?
Baze de date distribuite
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, compacta (nivelul logic), cu toate ca, in realitate, ea
este distribuita pe mai multe calculatoare legate intre ele (nivelul fizic).
Porţiunea unei baze de date distribuite ataşată la unul singur dintre
calculatoarele involvate este numită partiţie sau fragment. Fiecare partiţie a unei baze
de date distribuite se poate replica (duplica) identic în alt calculator din reţea cu
scopul de a creste fiabilitatea. Arhitectura de baza este cea de tip client-server.
Av. SBDD: se mareste limita max a dim unei BD, viteza de acces mai mare,
reflecta structura organizationala, autonomie locala, performanta imbuntatita,
economie, modularitate.
9. Retele (Sigovan)
1. Care sunt nivelele ISO-OSI ale retelei de calculatoare si care este rolul lor?
50
c) Nivelul retea : 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).
d) Nivelul Transport: Nivelul transport realizeaza o conexiune intre doua
calculatoare gazda (host) detectand si corectand erorile pe care nivelul retea nu le
trateaza. Functiile principale sunt: stabilirea unei conexiuni sigure intre doua
masini gazda, initierea transferului, controlul fluxului de date si inchiderea
conexiunii.
e) Nivelul Sesiune: 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
f) Nivelul Prezentare: Nivelul prezentare realizeaza operatii de transformare a
datelor in formate intelese de entitatile ce intervin intr-o conexiune. Nivelul
prezentare ar trebui sa ofere si servicii de criptare/decriptare a datelor, in vederea
asigurarii securitatii comunicatiei in retea.
g) Nivelul Aplicatie: Nivelul aplicatie are rolul de "fereastra" de comunicatie intre
utilizatori, acestia fiind reprezentati de entitatile aplicatie (programele). Alte
functii: identificarea partenerilor de comunicatie, autentificarea lor, selectarea
modului de dialog, identificarea constrangerilor asupra reprezentarii datelor . Ex:
FTP, HTTP, telnet, SMTP
51
● Reteaua tip arbore nodurile sunt grupate in mai multe topologii
de tip star care sunt legate la un cablu central (combina top. star si bus)
● Reteaua fara fir(wireless)
CSMA nepersistent
- 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.
52
- 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 bitul cel mai semnificativ a adr la bitul cel mai
putin semnificativ .
Ex: HTTP, HTTPS, SMTP, FTP, UUCP, NNTP, SSH, , RTP, Telnet
53
10. Bazele Inteligentei Artificiale
1. Cãutarea euristicã
Reprezintă o metodă de căutare care foloseşte informaţie euristică.
Informaţia euristica reprezintă acea informaţie despre proprităţile domeniului specific,
care ne ghideaza spre solutie.
Aceste informatii sunt de obicei utilizate prin intermediul unei functii, numita
functie de evaluare care indica masura în care nodul respectiv este indicat pentru
expandare.
O metoda euristica s-ar putea sa nu gaseasca intotdeauna cea mai buna
solutie, dar garantat ea va gasi o solutie buna intr-un timp rezonabil. Este utila pentru
problemele a caror rezolvare ar lua foarte mult timp.
F(S)=g(S)+h(S)
g(S) = costul caii de la nodul de start la un nodul current
h(S) = costul caii de la nodul curent la un nodul fina
Functia de estimare trebuie sa aprecieze costul unei cai în arborele de
cautare la o valoare mai mica sau cel mult egala cu valoarea reala a costului
respectiv. Aceasta metoda este completa si optima.
b) Invatarea pe de rost
Invatarea pe de rost(memorarea) – se refera la salvarea cunostintele noi astfel
incat atunci cand sunt din nou necesare singura problema va fi gasirea lor si nu un
calcul repetat. Memorarea pe de rost poate fi vazuta ca un proces elementar de
54
invatare, nu suficient de puternic pt a obtine o invatare cu inteligenta in sine, dar
reprez. o parte importanta in orice sistem de invatare. Lucreaza prin luarea problemei
pe care el le-a rezolvat si prin memorarea problemei si a solutiei sale
3. Cadre si scenarii
Un cadru este un şablon general, în care datele noi sunt interpretate în
termenii sau conceptele experienţei dobândite anterior.Pentru a analiza, o experienţă
nouă, se utilizează o structură deja existentă, care se particularizează cu detaliile
situaţiei curente. Reprezentare prin cadre favorizează prelucrarea bazată pe aşteptare,
deoarece nu contrazice orizontul de aşteptare.
Un scenariu 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.
4.Arbori de joc
Arborii de joc se aplica doar in cazul jocurilor la care :
Exista 2 jucatori care muta pe rand si care cunosc la fiecare mutare pozitiile si
alegerile posibile ale adversarului.
Jocul incepe cu o stare specificata si se termina cu victoria unui jucator,
pierderea celuilalt sau un rezultat de egalitate.
Exista reguli care definesc daca o mutare este legala si care sunt efectele ei
55
h) sistemele expert
6. Subdomenii ale inteligentei artificiale
Rezolvarea problemelor :ex: in domeniul jocurilor – dame, sah,etc
Intelegerea limbajului : exista programe care traduc propozitii dintr-o limba in
alta, care acumuleaza cunostiinte prin citirea de texte scrise si prin construirea
unei BD interne.
Programarea automata : folosite la sistemele care pot scrie programe pt a
descrie scopul lor : ex – descrieri in engleza ale algoritmilor
Sistemele expert :diagnoza medicala, analiza de date chimice si geologice
Robotica si vedere : ex: miscarea bratelor unui robot, recunoasterea obiectelor
si a umbrelor in scene vizuale
Sisteme si limbaje de programare specializate : ex : cu posibilitati [roiectate pt
a facilita manipularea robotilor, modelarea cunoasterii,etc.
Rationamentul logic (un domeniu foarte insistent cercetat) : atat timp cat
faptele originale au fost corecte programele vor putea demonstra toate
teoremele care rezulta din aceste fapte
7. Reprezentarea cunostintelor
O reprezentare este definita ca o multime de conventii pentru descrierea
obiectelor. In IA o reprez. a cunoasterii este o combinatie de structuri de date pt
memorarea informatiei in programe si de proceduri de utilizare a acestor structuri
pentru realizarea de interfete.
Programatorul alege reprezentarea care i se pare cea mai adecvata pentru o
sarcina data, luand in considerare compromisurile care trebuie sa le faca.
56
Mixte cu ajutorul obiectelor, cadrelor (=frames), schemelor
Avantaj: combină cele două forme de reprezentare sus menţionate optimizând
avantajele şi echilibrul dintre avantaje şi dezavantajele lor, în funcţie de natura
aplicaţiei considerate.
8. Algoritmi de cautare
Uzual spatial starilor este identificat printr-un graf orientat in care fiecare
nod este o stare si fiecar arc reprezinta aplicare unui operator de transformare a unei
stari intr-o stare successor. O solutie este o cale de la o stare start la o stare scop.
9. Retele semantice
O retea semantica este folosita ca o forma de reprezentare a cunostiintelor.
Este reprezentata printr-un graf care are noduri si arce. In mod normal nodurile
reprezinta obiecte, concepte sau situatii ale domeniilor, iar arcele sunt relatii intre
acestea. Popularitatea folosirii retelelor semantice a aparut datorita faptului ca se pot
deduce usor ierarhiile mostenitoare.
57
si presupunem ca avem un arbore de joc in care A este max (A e max pt ca arborele
este desenat din punctul de vedere al lui A) si B este min. :
Valoarea pt jucat. A a unui nod cu succesori OR (un nod in care A alege
urmat. mutare) este maximul dintre valorile succesorilor sai.
Valoarea pt jucat. A a unui nod cu succesori AND (un nod in care B alege
urmat. mutare) este minimul dintre valorile succesorilor sai.
Nodurile notate cu OR - sunt alegeri pe care A le poate face, iar cele notate cu
AND sunt alegeri pe care adversarul le face si carora A trebuie sa le poata raspunde.
http://en.wikipedia.org/wiki/Minimax (vezi imagine ca se intelege mai bine)
58