Documente Academic
Documente Profesional
Documente Cultură
1
Din punct de vedere computaional suntem interesai s reprezentm grafurile ca date. Acest
lucru este convenabil din moment ce noi putem defini un graf n termeni de tuple, mulimi
sau submulimi. Un graf G se reprezint ca i o pereche (N,A) unde N este o mulime de
noduri iar A este o mulime de arce. Dac G este un digraf, atunci arcele n A pot fi
reprezentate prin perechi ordonate, unde perechea (a, b) reprezint arcul cu o sgeat de la a
la b. n acest caz mulimea A, a arcelor, este o submulime a lui N x N, adic A este o relaie
binar asupra lui N. Dac G este un multigraf direcionat, atunci putem reprezenta arcele ca i
un multiset (multimulime) de perechi ordonate. Dac un graf nu este direcionat, putem
reprezenta arcele sale n mai multe feluri. Putem s pstrm notaia unor perechi ordonate,
fiind de acord c reprezint o legtur nedirecionat ntre a, b. Putem s reprezentm, de
asemenea, legtura prin mulimea {a, b}.
5. ntr-un graf, s se defineasc o cale Euler, respectiv un circuit Euler i s se enune condiia
de existen a acestora.
Raspuns:
Calea care conine fiecare arc al grafului exact o singur dat se numete cale Euler. Un
circuit Euler este orice cale care ncepe i se termin n acelai nod i conine fiecare arc al
grafului exact o singur dat. Euler a demonstrat c ntr-un multigraf (conex) exist o cale
eulerian dac i numai dac are exact dou noduri avnd grade impare. O astfel de cale
trebuie s plece dintr-unul din cele dou noduri i s se termine n cellalt. De asemenea,
exist un circuit eulerian dac i numai dac toate nodurile grafului au grade pare. Se
definete gradul unui nod ca fiind numrul de arce sau muchii pentru care nodul este punct
terminal.
Rspuns:
Din moment ce fiecare nod are doi subarbori, reprezentm un arbore binar nevid ca i o list
cu trei elemente de urmtoarea form: <L, x, R>, unde x este rdcina, L este subarborele
stng i R subarborele drept. De exemplu, arborele cu un singur nod x se reprezint <<>, x,
<>>. Arborele T din figur se reprezint prin lista:
T = <<<d>, b, <e>>, a, <c>>
n memoria calculatorului va apare:
2
7. S se defineasc noiunea de funcie calculabil prin modelul de main Turing.
Raspuns:
Modelul de main de calcul propus de Turing se refer la o maina idealizat matematic.
Aceasta cuprinde un set finit de stri interne; dei are un set finit de stri, maina trebuie s
fie capabil s trateze cu intrri nerestricionate n mrime; s fie capabil s apeleze un
spaiu de stocare extern nelimitat; s produc o ieire de mrime nelimitat. ntr-o descriere
formal, o main Turing standard este definit ca un 7-tuplu M = (Q, , , , q0, , F), unde
Q este mulimea de stri interne, este alfabetul de intrare, care nu conine simbolul blanc
( { }), este alfabetul simbolurilor de pe band, este funcia de tranziie, : Q
Q {L, R} (L i R denot deplasarea benzii la stnga, respectiv la dreapta), q0 Q este
starea iniial sau de start, este simbolul blanc, iar F este mulimea strilor finale sau
acceptoare.
Dac p atunci q (p q)
q
p
3
10. S se defineasc rezoluia i s se enune etapele metodei de inferen demonstrativ prin
rezoluie.
Raspuns:
Regula de inferen prin rezoluie n logica propoziional are urmtoarea form:
A B, B C sau A B, B C
A C AC
Aplicarea ei implic urmtorii pai: (1) Se presupune mai nti ca negata teoremei este
adevrat. (2) Se demonstreaz plecnd de la negata teoremei, cu ajutorul axiomelor, c nu
poate fi adevrat. (3) Se deduce ca presupunerea fcut nu poate fi adevrat pentru c duce
la o contradicie. (4) Concluzia este c teorema trebuie sa fie adevrat, de vreme ce negata
acesteia nu poate s fie adevrat.
Tehnici de programare
Iteraia Recursivitatea
4
execuia repetat a unei secvene de execuia repetat a unei funcii
instruciuni
un nou apel recursiv se execut tot n
nou iteraie se execut doar n urma urma evalurii unei condiii (pe
evalurii unei condiii (la nceput sau parcurs)
sfrit)
funcia recursiv se apeleaz din nou,
fiecare iteraie se execut pn la capt nainte de terminarea apelului
i apoi se trece, eventual, la o nou precedent
iteraie
se recomand doar atunci cnd
se recomand atunci cnd algoritmul de problema este prin definiie recursiv
calcul este exprimat printr-o formul (recursivitatea consum resurse n
iterativ exces)
Dei, aparent, cele dou variante sunt echivalente, se impune totui urmtoarea remarc
general: dac algoritmului de calcul i corespunde o formul iterativ este de preferat s se
foloseasc aceasta n locul apelului recursiv, ntruct viteza de prelucrarea este mai mare i
necesarul de memorie mai mic.
5
Folosind aceast valoare ca pe o variabil cu indici, funcia poate accesa i poate modifica
direct orice element al tabloului.
8. Descriei procesul de rafinare a unui program n pai succesivi (Step Wise Refinement).
Raspuns:
Pasul 1 : Se scrie funcia principal(main) utiliznd, pe ct posibil, apeluri de funcii
corespunztoare operaiilor de baz care se disting n aceast faz. Se descriu structurile de
date aferente programului. Funciile apelate din funcia principal se definesc doar la modul
generic (prototip urmat de /*comentarii*/).
Paii 2, 3, ... : Se dezvolt funciile apelate direct din funcia principal (pasul 2), apoi
funciile apelate din acestea din urm (pasul 3) .a.m.d., pn la elaborarea, n amnunt, a
ntregului program.
9. Care este principiul de baz al metodei de rezolvare Devide and Conquer? Ilustrai aceast
tehnic n pseudocod.
Raspuns:
Metoda Devide and Conquer este o metod fundamental de proiectare a algoritmilor care
poate s conduc la soluii deosebit de eficiente.
Principiul de baz al acestei tehnici este acela de a descompune n mod repetat o problem
complex n dou sau mai multe subprobleme de acelai tip, urmat de combinarea soluiilor
acestor subprobleme pentru a obine soluia problemei iniiale. ntruct subproblemele
rezultate din descompunere sunt de acelai tip cu problema iniial, metoda se exprim n
mod natural printr-o funcie recursiv.
Apelul recursiv se continu pn n momentul n care subproblemele devin banale i soluiile
lor evidente.
6
Se previne modificarea accidental a datelor. Utilizatorul tipului abstract este
forat s manipuleze datele doar prin intermediul operatorilor ce compun tipul
abstract (se reduce riscul unei distrugeri a datelor).
2. Cum se face transmiterea parametrilor n Java? Precizai efectul asupra tipurilor elementare
i asupra tipurilor referin (nu este necesar scrierea de cod).
Raspuns:
n Java parametrii se transmit ntotdeauna prin valoare, ceea ce nseamn c ntr-o metod se
lucreaz cu copii ale parametrilor, lsndu-se nemodificai parametrii din apel. Dac
parametrii sunt de tipuri elementare, orice modificare efectuat asupra lor n metod nu este
vizibil n punctul de apel. Dac parametrii sunt de tipuri referin, modificarea valorii
referinei nu este vizibil n punctul de apel; prin valoarea transmis a referinei se poate ns
modifica starea obiectului referit n momentul apelului.
3. Enumerai i caracterizai pe scurt cei 4 modificatori de acces pentru metode din Java.
Raspuns:
Modificatorii de acces pentru metode sunt: public, protected, private i package. O metod cu
modificatorul de acces public este vizibil peste tot unde clasa este vizibil. O metod cu
modificatorul de acces protected este vizibil n orice clas derivat din cea curent i n
clasele pachetului curent. O metod cu modificator de acces private este vizibil numai n
clasa curent. n absena unui modificator de acces se consider c metoda este vizibil n
clasele pachetului curent.
4. Ce se nelege prin polimorfism? Ilustrai printr-un exemplu (nu este necesar scrierea
complet a unui program).
Raspuns:
Polimorfismul este legat de conceptul de motenire. O metod (public sau protected) a unei
clase poate fi nlocuit cu alt implementare ntr-o subclas, iar la execuie selectarea
implementrii se face n funcie de tipul efectiv al obiectului (late binding), indiferent de
tipul declarat al referinei utilizate n apel. Astfel, dac exist o clas Vehicul i o clas
derivat Avion i o referin ref de tipul Vehicul, ref poate conduce la execuie fie spre obiecte
Vehicul, fie spre obiecte Avion, iar la apelul unei metode prin ref.oMetoda() se va selecta
implementarea corespunztoare tipului obiectului spre care indic momentan ref.
7
Raspuns:
O interfa conine numai declaraii de metode, fr implementri (metode abstracte); o clas
care implementeaz interfaa trebuie s conin implementri pentru toate metodele interfeei
(posibil implementri nule) sau s fie declarat clas abstract. O clas abstract conine cel
puin o metod abstract, dar poate avea implementri pentru oricte alte metode. Utilizarea
claselor abstracte implic utilizarea motenirii, pe cnd o interfa poate fi implementat
indiferent de poziia clasei n ierarhia de clase.
6. Ce se poate ntmpla dac ntr-o metod este generat o excepie care nu este declarat n
clauza throws a metodei? (Explicai toate cazurile pe care le considerai posibile).
Raspuns:
Dac ntr-o metod este generat o excepie care nu este declarat n clauza throws a metodei,
pot fi deosebite urmtoarele situaii:
- excepia poate fi una dintre cele pentru care metoda are o clauz catch, care o trateaz;
- excepia poate fi de un subtip al unui tip prevzut n clauza throws a metodei, fiind
propagat n punctul de apel;
- excepia este neverificabil, conducnd probabil la terminarea execuiei programului.
8. Dac un program conine la un moment dat 10 obiecte de un anumit tip (clas), cte
exemplare ale codului metodelor statice, ale codului metodelor ne-statice, ale cmpurilor
statice i ale cmpurilor ne-statice ale clasei vor exista n program? De ce?
Raspuns:
Codul metodelor statice i ne-statice ale unei clase se pstreaz n memorie ntr-un singur
exemplar, indiferent de numrul de obiecte active din clasa respectiv, deoarece nu este
modificat pe parcursul execuiei. De asemenea, variabilele statice (variabilele de clas) vor
exista ntr-un singur exemplar. Doar cmpurile (variabilele) de exemplar, care pstreaz
starea unui anumit obiect, trebuie s existe separat pentru fiecare obiect, adic de 10 ori n
acest caz.
9. Cte fire de execuie are un program cu interfa grafic n care s-a creat i activat un
obiect al unei clase derivate din Thread? Explicai.
Raspuns:
Un program cu interfa grafic (GUI) are implicit 2 fire de execuie cnd este lansat: firul
creat pentru execuia metodei main() i firul destinat execuiei codului de tratare a
evenimentelor. Aceasta nseamn c n cazul descris programul va avea 3 fire de execuie.
10. Cte clase ale unui program Java pot conine o metod main()? Cum se face lansarea n
execuie a programului?
Raspuns:
Oricte clase ale unui program Java pot conine o metod main(), ceea ce este util n special
pentru testarea programului. Pentru lansarea n execuie a programului se poate folosi numele
8
oricrei clase care conine o metod main():
java OClasaCuMetodaMain
n final trebuie desemnat clasa principal a programului i lansarea n execuie se va face cu
numele clasei respective.
Arhitectura calculatoarelor (fara rezolvari)
9
Raspuns:
Punctul de funcionare se gsete la intersecia dintre caracteristica volt-amper a diodei i
dreapta de sarcin. P punctul de funcionare.
3. Care sunt regimurile de funcionare ale unui tranzistor bipolar. n circuitele integrate care
din regimurile de lucru sunt preferate i de ce?
Raspuns:
Regimurile de funcionare ale unui tranzistor bipolar sunt: regimul blocat, regimul activ,
regimul invers i regimul saturat.
n circuitele integrate regimul blocat i saturat sunt de preferat deoarece sunt regimurile cele
mai stabile ale unui tranzistor bipolar i permit obinerea unor nivele logice de tensiune cu
diferena cea mai mare.
5. Definii valorile standard ale nivelelor logice de tensiune la circuitele integrate TTL.
Raspuns:
VL = 0.2V; VH = 3.5V
10
8. S se defineasc marginea de zgomot, pentru cazul cel mai defavorabil, la un circuit
integrat numeric.
Raspuns:
11
Raspuns:
Definiie: Factorul de ncrcare la intrare i la ieirea unui circuit determin regulile de
interconectare ale acestora.
sau
sau
unde N reprezint numrul de pori comandate. Cele dou relaii trebuie satisfcute simultan.
10. Care sunt cele trei componente ale puterii consumate de un circuit integrat.
Raspuns:
Puterea static puterea consumat n regimul de funcionare static (sau de frecvene de
lucru sub 1Mhz) de ctre circuitele logice integrate; aceast component este dat n catalog;
Puterea dinamic puterea consumat n regim de comutare a circuitelor logice integrate;
component este dependent de configuraia sistemului numeric i de frecvena de lucru a
acestuia; ea se calculeaz de ctre utilizator n funcie de particularitatea sistemului.
Puterea dinamic suplimentar putere consumat n regim de comutare a circuitului
numeric; este dependent de schema electronic intern a circuitului integrat; este
componenta rspunztoare de generarea zgomotelor interne n sistemele numerice ce pot crea
grave disfuncionaliti n sistem.
12
if(r>i)quick_sort(i,r);
}
5. S se scrie operatorii de inserie i de cutare a unui nod ntr-o list simplu nlnuit cu
chei ntregi, implementat cu pointeri. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
struct nod {
int cheie;
struct nod *urm;
};
struct nod *insereaza_nod(struct nod *lista, struct nod *nodNou) {
if (list == NULL)
list = nodNou;
else {
nodNou->urm = list;
list = nodNou;
}
return list;
}
struct nod *cauta_nod(struct nod *lista, int cheie) {
struct nod *p;
6. S se scrie operatorii pentru adugarea sau extragerea de elemente dintr-o stiv. Se accept
pseudocod, cod C, C++ sau Java.
Raspuns:
struct nod {
int cheie;
struct nod *urm;
13
};
void push(struct nod **stiva, struct nod *nodNou) {
if (*stiva == NULL)
*stiva = nodNou;
else {
nodNou->urm = *stiva;
*stiva = nodNou;
}
}
struct nod *pop(struct nod **stiva) {
struct nod *p;
if (*stiva == NULL)
return NULL;
p = *stiva;
*stiva = (*stiva)->urm;
return p;
}
t = *radacina;
if (t != NULL ) {
if (nodNou->cheie < t->cheie)
inserare(&t->stang, nodNou);
else
inserare(&t->drept, nodNou);
}
else {
*radacina = nodNou;
}
}
14
mulimea nodurilor vizitate de mulimea nodurilor nevizitate. Se accept pseudocod, cod C,
C++ sau Java.
Raspuns:
prim(graf g) {
initializeaza multimea A a arcelor arborelui de acoperire T cu multimea vida
initializeaza multimea N nodurilor arborelui de acoperire T cu un nod
oarecare din g, considerat nodul de pornire
while (N nu contine toate nodurile grafului g) do {
alege arcul (u,v) de pondere minima care uneste un nod u din N cu un
nod v din g care nu este in N
adauga arcul (u,v) in multimea A
adauga nodul v in multimea N
}
}
1. CumsereprezintaintrodiagramaUMLdeclasarelatiaintreoclasaVagonsioclasa
Trenconsiderandcauntrenestecompusdinunulsaumaimultevagoanesicaunobiect
VagonpoatefirefolositinrelatiecudiferiteobiecteTren.Precizaticumsenumesteacest
tipderelatiedescrissicareaufostindiciilecarevauajutatsailidentificati.
Raspuns:
Relatia descrisa se numeste agregare, si se reprezinta in UML ca in figura de mai jos:
Relatia intre Vagon si Tren este in mod clar o relatie de tip HAS-A (intreg-parte), adica
un obiect Tren este compus din obiecte Vagon. Astfel, am oscilat intre o relatie de
agregare si una de compozitie. Indiciul din enunt care a facut diferenta este acela ca obiectel
Vagon pot fi refolosite in relatie cu diferite obiecte Tren, ceea ce inseamna ca viata
obiectelor Vagon este distincta de cea a obiectelor Vagon. Astfel, relatia este una de
agregare.
2. Dacaintrunsistemartrebuiesafavorizati performantadetimp,atioptapentrustilul
arhitectural Layered (arhitecturastratificata)?Dardacaartrebuisafavorizati securitatea?
Justificatisuccintraspunsul.
Raspuns:
Daca trebuie favorizata performanta de timp, stilul architectural Layered, NU este
recomandat. Motivul este acela ca apelarea unui serviciu la nivelul cel mai din exterior
15
(accesibil clientului aplicatiei) implica cel mai adesea o dubla parcurgere a tuturor
nivelurilor / straturilor, adica atat pentru transmiterea serviciului, cat si pentru receptarea
rezultatului/rezultatelor.
Daca insa trebuie favorizata securitatea stilul architectural Layered, este extrem de indicat!
Motivul este acela ca fiecare layer poate oferi un nivel distinct de securitate, ce poate fi
verificat atunci cand acel nivel este accesat. In plus, faptul ca fiecare nivel comunica doar cu
nivelul imediat inferior (ca si client) respectiv cu nivelul imediat superiar (ca si server) face
ca incapsualrea datelor, si deci securitatea lor sa fie mai buna.
3. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul: Latestareblackboxavemnevoiesidecodpentruaverificadacadateledetest
acoperatoatecailedinprogram?
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
Raspuns:
Afirmatia este fundamental FALSA. Motivul este acela ca testarea blackbox, prin insasi
definitia sa, nu implica cunoasterea codului. In testarea blackbox, cazurile de test se scriu
strict pe baza contractului modului testat, adica a (specificatiilor ?) datelor de intrare,
respectiv a celor de iesire.
4. Care este diferenta intre urmatoarele tipuri de relatii intre clase: asociere, agregare,
compozitie?
Raspuns:
Asocierea reprezinta forma cea mai slaba (si mai generala) in care putem exprima relatia
dintre doua clase. Atunci cand spunem ca o relatie este de asociere tot ce stim este ca intre
cele doua clase exista o relatie.
Atunci cand afirmam ca o relatie intre doua clase este una de agregare sau compozitia,
inseamna ca din descriere cerintelor putem spune ca intre cele doua clase implicate exista o
relatie de tip HAS-A, o relatie de tip parte-intreg (containment). Mai departe, distinctia
intre agregare si compozitie este de data masura in care obiectele parte pot fi reutilizate de
diferite obiecte intreg: daca obiectele parte sunt create si folosite exclusiv de catre un
singur obiect, atunci relatia este una de compozitie; in caz contrar, daca obiectele parte pot
fi folosite shared de catre mai multe obiecte intreg atunci relatia este una de agregare. Pe
scurt: compozitia este o forma de relatie mai stransa decat agregarea,
16
In sisteme cu modularitate foarte buna, creste intr-adevar gradul de partitionare, si deci
capacitatea de diviziune a task-urilor intre membrii echipei. Totusi, legea lui Brooks ramane
valabila, din 2 motive: (i) surplusul de comunicare este semnificativ indiferent de
modularitate si (ii) oricat de modular ar fi proiectat un sistem, totusi nu se poate ca sistemul
sa devina unul perfect partitionabil.
6. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul: Testelewhiteboxnupotgarantacatoateeroriledintrofunctievorfidetectate,
dardacasuntdublatedetesteblackboxsepoategarantacavorfigasitetoateeroriledin
respectivafunctie.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
Raspuns:
Afirmatia este fundamental FALSA. Nici o forma de testare, si nici o combinatie de tehnici
de testare nu pot vreodata garanta absenta bug-urilor. Asa cum spunea Dijkstra, testarea poate
evidentia doar prezenta bug-urilor, dar nu poate niciodata garanta absenta lor. Desigur,
utilizarea concertata a mai multor tehnici de testare contribuie la reducerea numarului de bug-
uri, dar ceea ce face enuntul de mai sus, complet fals este cuvantul garanta.
7. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul:Testareaderegresieestebazatapeideeacaatuncicandseopereazaschimbari
intrunmodul,imediatdupamodificare eforturile detestaretrebuie concentrate exclusiv
asupraasupramodululuimodificat.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
Raspuns:
Afirmatia este FALSA. Ideea de baza in testarea de regresie este reluarea unui subset de teste
care au fost rulate anterior. Desigur, aceste teste se refera la modulul modificat, dar in nici un
caz exclusiv asupra sa. In testarea de regresie, pe langa testele ce vizeaza modulul modificat
se mai reiau doua clase de teste: (i) un set de teste reprezentative prin care se retesteaza
principalele functionalitati ale sistemului; (ii) un set de teste ce vizeaza modulele direct
conectate cu modul modificat, avand in vedere ca impactul schimbarii ar putea sa le fi
influentat in primul rand pe acestea.
8. Precizati, si argumentati succint daca relatia descrisa de diagrama UML de mai jos
modeleaza saunucazul unui telefon dualsim (carepoate tine simultan doua cartele) cu
cartelecarepotfioricandreutilizatesiinalttelefon.
Raspuns:
Relatia descrisa de diagrama UML NU modeleaza intrutotul ceea ce sustine enuntul de mai
sus! Intr-adevar relatia de mai sus, indica faptul ca un obiect telefon are in compozitia sa un
numar de cartele ce poate varia intre niciuna si doua cartele... dar partea care nu este bine
interpretata se refera la reutilizarea oricand in alt telefon. Relatia din figura este una de
compozitie, marcata prin rombul negru, si deci obiectele Cartela sunt construite specific
pentru un anumit obiect Telefon, putand fi folosite doar de catre acel obiect.
17
9. Considerand urmatoarele doua procese de dezvoltare: Waterfall si respectiv Extreme
Programming, precizati si argumentati succint pe care lati alege daca ati fi pe rand in
urmatoarelecazuri:
- Cazul1:trebuiesareimplementatidelazero,unsistemcomplex(cca.1milionde
liniidecod)pentrugestiuneapersonaluluisiasalariilor,caresainlocuiascasistemul
existentinprezent,faraniciomodificaredecerinte.
- Cazul2:avetideconstruitunsistempentruplatataxelorsiimpozitelorpentrutara
imaginaraAinamorcuolegislatiehaoticasiinpermanentamodificare
Nota:cele2cazurisuntcompletindependente.
Raspuns:
Pentru Cazul 1 as alege procesul de dezvoltare Waterfall din urmatoarele motive: (i) e
vorba de un sistem de mari dimensiuni, ce implica deci echipe de mari dimensiuni, ceea ce
face ca un proces mai formal sa fie dezirbabil; in plus (ii) cerintele sistemului sunt f. bine
cunoscute, si clar fixate, deci nu exista riscul de a trebui sa reluam toate fazele procesului
(principalul dezavantaj la Waterfall) datorita unei schimbari de cerinte.
10. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12
fraze) raspunsul: Procesul de dezvoltare in cascada (waterfall) este recomandat in
majoritateaproiectelorintrucat,datoritastructuriisalerigide,poateconstrangeclientulsa
descopere,incadelainceput,toateposibilelecauzedeschimbaredinsistem.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
Raspuns:
Afirmatia este FALSA. Procesul de dezvoltare Waterfall este recomandat in foarte putine
cazuri, tocmai datorita structurii sale rigide, nebazata pe iteratii si incremente, ce impiedica o
adaptare rapida la schimbari de cerinte. Cu atat mai putin este recomandat procesul Waterfall
atunci cand vine vorba de un sistem unde cerintele nu sunt bine intelese. Structura rigida a lui
Waterfall NU poate sub nici o forma constrange (determina) clientul sa descopere de la
inceput toate posibilele cauza de schimbare... Aceasta este o utopie. Chiar si in sisteme unde
cerintele sunt clar specificate de la inceput, pot interveni in timp schimbari ce nu pot fi sub
nici o forma prevazute. De aceea, trebuie favorizate procesele de dezvoltare (iterative si
incrementale) care pot face fata schimbarilor neasteptate.
Rezolvare
La accesarea unui cache, atunci cnd slot-urile acestuia sunt ocupate, se impune dislocarea
unui bloc n vederea creri de spaiu pentru plasarea blocului cu cuvntul int dorit. ntruct
la soluia de mapare direct nu exist alternative, blocul de dislocat fiind unic, problema
replasrii se pune doar la versiunile set-asociativ pe k ci i complet asociativ de mapare a
adreselor de memorie principal n cache.
18
Pentru problema replasrii exist 4 metode fundamentale, precum i soluii care
combin aceste metode. Cele 4 metode de baz, n ordinea frecvenei de aplicabilitate a
acestora, sunt: LRU (Least Recently Used), random, FIFO (First In First Out) i LFU (Least
Frequently Used).
Metoda alegerii blocului celui mai puin recent utilizat (LRU) din cadrul set-ului, la
maparea set asociativ, sau din cadrul ntregului cache, la maparea complet asociativ, se
poate implementa prin 3 soluii tehnice, anume: cu registre de vrst (age registers), cu o
construcie tip stiv (stack implementation) sau uzitnd de o matrice (matrix implementation).
Metoda age registers, aloc fiecrui slot un numr de log 2 k bii, unde k
reprezint numrul de slot-uri ale set-ului sau a ntregului cache i barele semnific, cel mai
mic ntreg mai mare sau egal cu valoarea logaritmului, care formeaz registrele de vrst.
Coninutul acestor registre, la umplerea setului sau a cache-ului, trebuie s fie diferite, fiind
dislocat, la un miss, slot-ul cu valoarea cea mai mare a registrului de vrst. Pe de alt parte,
la un hit, registrului de vrst corespunztor slot-ului care a dat hit i se aloc valoarea 0,
valorile celorlalte registre de vrst fiind modificate astfel nct blocul cel mai vrstnic (cu
valoarea cea mai mare a registrului de vrst) s fie dislocat la un proxim miss.
Metoda stack implementation urmrete valoarea slot-ului dislocat dintr-un registru
de deplasare alocnd fiecrui slot acelai numr log 2 k de bii ca i metoda anterioar.
Aceast soluie tehnic se aplic cu succes, cu precdere, n cazul irurilor de hit-uri.
Metoda matrix implementation se bazeaz pe o matrice de dimensiune de (k*k) bii
din care se elimin biii de pe diagonal. La accesarea unui slot, elementele de pe liniile
matricii corespunztoare slot-ului accesat se fac 1, iar cele de pe coloana corespunztoare
aceluiai slot se fac 0. La umplerea matricii, numerele de 1-uri i 0-uri, de pe linii i coloane
sunt diferite i linia matricii avnd doar 0-uri va stabili slot-ul a crui bloc se impune dislocat.
Metoda random prevede alegerea aleatoare a blocului de dislocat. Totui, n scop de
depanare, hardware sau software, secvena aleatoare se impune a fi repetabil deci metoda se
bazeaz, de fapt, pe generarea unui set de numere pseudoaleatoare. Din punct de vedere
tehnic, implementarea unui astfel de generator de numere pseudoaleatoare se realizeaz
favorabil uzitnd de un registru de deplasare prevzut cu reacie, un aa numit LFSR (Linear
Feedback Shift Register). Acesta are la baza sintezei expresia unui polinom , aa numit
generator, care are intercalate ntre rangurile registrului de deplasare, sau conectate n
exteriorul acestuia, circuite SAU-EXCLUSIV corespunztoare termenilor interni ai
polinomului generator.
Metodele FIFO i LFU sunt mai puin utilizate.
Rezolvare
Una dintre problemele importante ale sintezei unui cache (vom considera un singur, unic,
nivel al cache-ului, ignornd divizarea, existent n realitate, a acestuia pe niveluri) este
determinat de operaia de scriere. Soluiile tehnice difer dependent de faptul c avem de-a
face cu un succes (hit) sau cu un rateu (miss) a accesului la cache.
n cazul unui hit, scrierea poate fi realizat n baza metodei write through, att n
memoria principal ct i n cache sau, n baza metodei write back, doar n cache. Comparnd
cele doua metode, varianta write through este mai simplu de implementat n termeni de
circuite, implicit cost, i are avantajul c prezint copiile de informaie din cache i din
memoria principal permanent actualizate. Dezavantajul esenial al metodei write through
const n apelarea, la fiecare scriere, a magistralei memoriei, provocnd gtuiri ale
19
traficului pe aceasta i, n plus, accesul se realizeaz la viteza mult mai lentei memorii
principale fa de cache. Acest din urm dezavantaj poate fi, ntructva, surmontat prin
includerea unui aa numit write buffer. Aceast investiie determin ca accesul s se
desfoare la viteza memoriei principale doar cnd write buffer-ul se umple.
Pe de alt parte, metoda write back, mai costisitor de implementat, implic realizarea
accesului la viteza mult mai rapidului cache, permind mai multe scrieri fr a necesita
actualizarea copiei din memoria principal. Actualizarea acestei copii are loc la un read miss
cnd se impune transferat blocul scris n memoria principal cu o investiie de timp
important, prohibitiv. Aceasta poate fi mbuntit prin prevederea, la fiecare slot de
cache, a unui aa numit dirty bit prin care se urmrete actualizarea doar acelor copii care
au fost nscrise (murdrite) n cache.
n ceea ce privete miss-urile, exist, de asemenea, dou soluii tehnice anume write
around, care implic scrierea doar n memoria principal i write allocate, care implic
scrierea doar n cache, operaie care trebuie precedat de transferurile de informaie specifice
unui read miss.
Chiar dac cele 2 metode de scriere la hit pot fi combinate cu oricare dintre cele 2
metode de scriere la miss, uzual write through se combin cu write around i write back cu
write allocate.
Rezolvare
Plecnd de la formula care d timpul mediu de acces la o ierarhie de memorie AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea valorii parametrului
Miss Penalty. Exist 5 metode de reducere a acestui parametru: divizarea cache-ului n mai
multe niveluri (Multilevel caches), selectarea, mai nti a cuvntului critic i restartarea
timpurie (Critical word first and early restart), acordarea de prioritate read miss-urilor n
raport cu scrierile (Giving prioriy to read misses over writes), unificare write buffer-ului
(Write buffer merging) i utilizarea unui buffer pentru blocuri dislocate ce urmeaz a fi
reaccesate, a unui aa numit Victim buffer.
Metoda Multilevel caches sparge cache-ul pe trei niveluri, primul de capacitate
mic, funcionnd apropiat, ca vitez, cu procesorul, iar celelalte de capacitate tot mai mare
pentru a capta ct mai multe dintre accese astfel nct acestea s nu ajung la memoria
principal.
Metoda Critical word first and early restart se aplic la blocuri de dimensiune mari
selectnd fie cuvntul int (aa numitul cuvnt critic) pentru a fi trimis, la un miss, primul de
la memoria principal la cache. Pe de alt parte, restartarea timpurie aduce, la un miss, blocul
n ordine din memoria principal n cache, dar trimite nspre procesor cuvntul int imediat
ce acesta a fost adus n cache.
Metoda Giving priority to misses over writes se refer, cu precdere, la aplicarea
metodei de scriere write through i const n crearea unei ci de bypass pentru ca la miss-uri
la citire s nu trebuiasc s se atepte descrcarea informaiei din write buffer n memoria
principal, potenial cauz de apariie a hazardului RAW (Read After Write).
Metoda Write buffer merging const n organizarea de aa manier a informaiei din
write buffer nct condiia de umplere a acestuia s fie amnat ct mai mult posibil.
Metoda Victim buffer const n prevederea unui buffer reprezentnd o memorie
asociativ format din cteva slot-uri n care se ncarc acele blocuri dislocate din cache care
prezint probabilitate ridicat s fie accesate n viitorul imediat urmtor.
20
4. S se prezinte metodele de reducere ale miss rate-ului la accesarea cache-lui si s se scoat
n relief elemetele specifice fiecrei soluii.
Rezolvare
Plecnd de la formula de evaluare a timpului mediu de acces la ierarhia de memorii, AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea valorii parametrului
Miss Rate. Exist 5 metode de reducere a acestui parametru: creterea dimensiunii blocurilor
(Increasing block size), creterea dimensiunii cache-ului (Increasing cache size), creterea set
asociativitii (Higher set associativity), apelarea la cache-uri pseudoasociative
(Pseudoassociative caches) i optimizri de compilator (Compiler optimizations).
Metoda Increasing block size permite reducreea numrului de miss-uri obligatorii
(compulsory misses), dar poate conduce la creterea miss-urilor de capacitate i de conflict.
Metoda Increasing cache size permite reducerea miss-urilor de capacitate, dar
revendic putere suplimentar absorbit de la reea, defavorabil n contextul unui design
axat pe low-power.
Metoda Higher associativity se bazeaz pe reducerea miss-urilor de conflict dar
poate afecta negativ hit time-ul, majornd valoarea acestuia. Menionm n acest context
regula statistic 2:1 care stabilete n mod grosier, c un cache de dimensiune de n sloturi cu
mapare direct prezint acelai numr de miss-uri ca un cache set asociativ pe 2 ci de
capacitate n/2.
Metoda Pseudoassociative caches prevede funcionarea unui cache cu mapare
direct ca unul set asociativ pe 2 ci prin divizarea n 2 pri a cache-ului cu mapare direct i
cutarea informaiei int, la un miss, mai nti n blocul din cealalt parte, bloc a crui
numr este obinut prin complementarea bitului celui mai semnificativ a numrului de bloc.
Metoda compiler optimizations implic investiia hardware cea mai redus (tinznd
spre 0) urmrind rearanjarea buclelor de program de ctre compilator n vederea mbuntirii
localizrii spaiale sau a aplicrii metodei blocrii n vederea mbuntirii localizrii
temporale.
Rezolvare
Plecnd de la formula de evaluare a timpului mediu de acces la ierarhia de memorii, AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea, bazat pe
paralelism, a valorilor parametrilor Miss Rate i Miss Penalty. Exist 3 metode bazate pe
paralelism i anume: prevederea de mecanisme de funcionare nonblocking a cache-ului
(Nonblocking caches), prevederea de buffer-e hardware pentru prefetch-ul instruciilor i
datelor (Hardware prefetching of instructions and data) i realizarea prefetch-ului de ctre
compilator (Compiler prefetching)
Metoda Nonblocking caches se aplic sistemelor cu control pipeline a procesorului,
permind, prin consistent investiie hardware, suprapunerea de hit-uri de instrucii cu miss-
uri de date (hit under misses).
Metoda Hardware prefetching of instructions and data prevede adaosul unui buffer
pentru instrucii i a unuia sau a mai multor buffer-e pentru date n care s se aduc n avans,
pe lng blocul cu informaia int, care se ncarc n cache, i urmtorul bloc care se ncarc
n buffer (n aa numitul instruction stream buffer n cazul instruciilor, respectiv n data
21
stream buffers n cazul datelor) n sperana c accesul la urmtorul bloc l gsete pe acesta n
mult mai rapidul buffer, nefiind necesar accesarea mult mai lentei memorii principale.
Metoda Compiler prefetching pleac de la premisa c sistemul este prevzut cu
cache nonblocking, astfel nct se permite funcionarea suprapus a instruciilor ordinare ale
unui program cu instrucii de prefetching. Acestea din urm aduc n cache, n avans,
informaia ce urmeaz a fi accesat n viitor, sens n care se face uz de desfacerea buclelor de
program (loop unrolling) i intercalarea instruciilor de prefetching. Aceast metod se aplic
n mod eficient la nmulirea de matrici.
Rezolvare
Maina MIPS este prevzut cu un set restrns de moduri de adresare, n esen , un mod de
adresare cu referire la locaii de memorie (din care sunt derivate alte dou) i dou moduri de
adresare cu referire la registre.
Modul de adresare cu referire la locaii de memorie se bazeaz pe cmpul de
deplasament, parte a cuvntului instrucie. La MIPS, cuvntul instrucie prezint lungimea de
32 de bii, existnd 3 tipuri de instrucii (I, R, J). La instruciile de tip I, incluznd instruc iile
cu referire la memorie Load i Store, avem urmtoarea partajare a biilor: primii 6 bii sunt
destinai codului operaie, urmtorii 5 bii sunt destinai specificrii adresei registrului general
surs, apoi urmtorii 5 sunt destinai specificrii adresei registrului general destinaie iar n
restul de 16 bii se specific valoarea deplasamentului. O instrucie cu referire la memorie,
spre exemplu de ncrcare (Load), ca enun n limbajul de asamblare MIPS se prezint astfel:
LD R2, 45(R7). Prin acest enun, coninutul registrului R7, cu adresa specificat de cei 5 bii
destinai registrului surs se adun cu valoarea deplasamentului 45, codificat n cei 16 bii de
deplasament, iar rezultatul, obinut printr-o unitate aritmetic de nsumare, reprezint adresa
de memorie (mai exact adresa din cache-ul de date) de la care se efectueaz citirea datei int.
Aceasta din urm este ncrcat n registrul R2 a crui adres este specificat prin cei 5 bi i
alocai registrului destinaie.
Din acest mod de adresare general, prin particularizare, sunt derivate alte 2 moduri
de adresare. Atunci cnd n cmpul de 16 bii alocat deplasamentului se stocheaz valoarea 0,
obinnd un enun de forma LD R2, (R7) se obine modul de adresare indirect cu referire la
registre. Pe de alt parte cnd avem un enun de tipul LD R2, 45(R0), lund n considera ie
particularitatea mainii MIPS care prevede pstrarea constantei 0 n registrul general R0,
avem de a face cu modul de adresare direct la memorie.
n ceea ce privete modurile de adresare cu referire la registre, acestea sunt fie de tipul
register-immediate fie de tipul register-register. Formatul de instrucie pentru modul register-
immediate este tot de tipul I, cu meniunea c n cmpul de 16 bii destina i anterior
deplasamentului, se stocheaz, de aceast dat, un operand tip constant, denumit immediate.
n calitate de exemplu, considernd instrucia de scdere SUB R3, R2, #45, aceasta prevede
scderea din coninutul registrului R2 specificat prin adresa din cmpul aloca registrului surs
a valorii constantei 45 specificat n cei 16 bii de operand, aa numit immediat, iar rezultatul
diferen este stocat n registrul cu adresa specificat n cei 5 bii alocai registrului destinaie.
Legat de modul de adresare register-register, acesta uziteaz de un alt tip de format de
instrucie, anume de tip R. La acesta, primii 6 bii sunt destinai codului operaiei, ca i la
formatul de tip I, urmnd apoi 3 cmpuri de 5 bii n care se stocheaz, n primele 2, adresele
operanzilor surs, iar n cel de al treilea, adresa registrului destinaie. Cei 11 bii rma i sunt
alocai, 5 dintre ei, cmpului de specificare a numrului de bii de deplasat pentru instrucii cu
deplasare de coninut de registre i ultimii 6 bii sunt destinai specificrii aa numitei funcii
22
(function), cmp prin care se poate extinde repertoriul de instrucii. n calitate de exemplu,
considernd enunul din limbajul de asamblare MIPS reprezentat de ADD R5, R2, R1 acesta
prevede, prin modul de adresare cu referire la registre, adunarea coninutului registrelor surs
R2 i R1, avnd adresele specificate n corespondentele cmpuri de 5 bii, i stocarea
rezultatului sum n registrul R5 avnd adresa specificat n cei 5 bii alocai registrului
destinaie.
Rezolvare
Clasele de hazarduri sunt:
RAW (Read After Write)
WAW (Write After Write)
WAR (Write After Read)
Definite global, prin hazardurile de date ale unei maini pipeline se nelege alterarea
cauzat de execuia suprapusa a instruciilor ordinii acceselor (citiri i scrieri) la date n
raport cu ordinea acestora specific unei maini non-pipeline, cu execuia n secven a
instruciunilor. Pentru a defini n particular clasele anterior menionate, admitem c, n fluxul
de instruciuni al unui program, instrucia i o precede pe instrucia j i ambele se refer la o
anumit dat.
n condiiile specificate, un hazard de date de tip RAW apare atunci cnd succesiva
instrucie j citete o data pe care anterioara instrucie i nu a ajuns nc s o scrie.
Pe de alta parte, n aceleai condiii specificate, un hazard de date de tip WAW apare
atunci cnd succesiva instrucie j scrie o dat pe care anterioara instrucie i nu a ajuns s o
scrie.
n fine, n aceleai condiii specificate, un hazard de date de tip WAR apare atunci cnd
succesiva instrucie j scrie o dat pe care anterioara instrucie i nu a ajuns nc s o citeasc.
8. S se prezinte soluiile de combatere a hazardurilor de date de tip RAW (Read After Write)
pentru instruciile load si store la maina MIPS (Microprocessor without Interlocked Pipeline
Stages) convenional cu 5 stagii.
Rezolvare
O prim soluie de combatere a hazardurilor de date de tip RAW o reprezint a a numita
forward-are (sau bypass-are) implementarea crui mecanism revendic un adaus de
circuistic constnd pe de o parte, din circuite comparatoare de cmpuri ale instruciilor,
menite a detecta hazardul RAW, si pe de alt parte, din asigurarea unor ci de comunica ie
interstagii (via multiplexoare) corespunztor comandate prin rezultatele comparaiilor
anterior amintite.
O a doua soluie de combatere a hazardurilor RAW o reprezint aa numita pipeline
interlock. La ea se apeleaz cnd instrucia care provoac RAW-ul este, n cazul mainii
MIPS, o instrucie de ncarcare. Data citit din cache-ul de date este acum disponibil n
registrul pipeline abia dup stagiul al 4-lea (MEM) si pentru surmontarea unei situa ii de
dependen direct cu instruciunea urmtoare este necesar interclasarea unui stall, dup care
este declanat mecanismul de forwarding.
O a treia soluie de combatere a hazardurilor de date de tip RAW o reprezint
optimizarea de compilator. Daca se succed operaiile a=b+c si d=e-f, atunci hazardurile RAW
care apar la fiecare dintre cele doua instrucii datorit instruciilor de ncrcare sunt
23
surmontate prin programarea de ctre compilator a instruciilor n manier intercalat evitnd
astfel RAW-urile.
Rezolvare
La maini pipeline, hazardul de control este provocat, cu precdere, de instrucii de salt, dar i
de alte instrucii care modific starea numrtorului de program (Program Counter- PC).
Astfel la maina MIPS cu 5 stagii, este tiut c instruciunea de salt condi ionat BEQZ (salt
cnd coninutul registrului A este zero) prevede n stagiul EX, testarea condiiei (dac
coninutul lui A este zero) si calculul adresei de salt (prin adunarea coninutului registrelor
NPC si Imm). Apare astfel o degradare de performan cnd condiia de salt nu e ndeplinit
(branch untaken) de 2 cicluri de clock.
Pe de alt parte, degradarea de performan este de 3 cicluri de clock dac este
ndeplinit condiia de salt (branch taken).
Situaia prezentat se poate ameliora ntr-o anume msur prin mutarea testului de
condiie din stagiul de EX n stagiul de ID. De asemenea, calculul adresei de salt poate fi
ntreprins n stagiul ID, dar aceasta, pe seama unei investiii suplimentare n circuistic ntr-
un sumator destinat adunrii coninutului regitrilor NPC si Imm. n acest mod, anterior
prezentata penalitate de performan defavorabil de 3 cicluri de clock se poate reduce la doar
unul.
Rezolvare
Prin prisma operaiilor elementare implicate, situaiile constnd din execuia unei instruciuni
de CALL a, care apeleaz subrutina de la adresa a, sau a receptrii unei cereri de ntrerupere
sau de trap, implic o derulare asemnatoare a evenimentelor.
Pentru simplitate, vom considera ca avem codul de operaii si adresa instruciilor de
aceeai lungime de 1 byte (8 bii).
Considerm urmtoarea organizare a memoriei principale:
24
Sisteme de operare
2. Calculai numrul total de blocuri necesar pentru un fiier cu dimensiunea de 1 Moctet ntr-
un sistem de fiiere UNIX cu blocuri de 1 koctet i adrese de bloc pe 4 octei.
Rspuns:
Numrul de blocuri de date necesar:
1 Moctet (1024 Koctet) / 1 koctet = 1024 blocuri
Primele 10 blocuri sunt adresate direct. Trebuie folosit i adresarea indirect simpl, care
permite accesul la 1 koctet (1024 octei) / 4 octei = 256 blocuri. Nu este suficient, se trece la
dubl indirectare, pentru 1024-10-256 = 758 blocuri de date. Acestea necesit nc 758/256 =
3 blocuri de simpl indirectare.
Numrul total de blocuri: 1024 (date) + 1 (simpl indirectare) + 1 (dubl indirectare) +3
(simpl indirectare) = 1029
3. Enumerai (cu o scurt caracterizare) cel puin 5 directoare de pe primul nivel al unui
sistem de fiiere UNIX.
Rspuns:
Directoare de pe primul nivel al unui sistem de fiiere UNIX:
a) /boot sau /kernel - conine imaginea nucleului sistemului de operare;
b) /dev - conine fiiere care corespund perifericelor conectate la sistem;
c) /home - conine directoarele gazd ale utilizatorilor;
d) /bin - conine principalele comenzi ale sistemului (uneori doar legtur la /usr/bin);
e) /etc - conine fiiere i directoare destinate n special administrrii sistemului;
f) /tmp - conine fiiere temporare create de diverse comenzi ale sistemului sau de
utilizatori.
4. Care sunt activitile efectuate de un interpretor de comenzi (Shell) UNIX pentru stabilirea
ambianei de execuie a unei comenzi?
25
Rspuns:
Activitile efectuate de un interpretor de comenzi (Shell) UNIX pentru stabilirea ambianei
de execuie a unei comenzi sunt:
- mprirea liniei de comand n atomi;
- interpretarea caracterelor de citare;
- redirectarea intrrilor i ieirilor;
- substituia variabilelor de mediu;
- substituia comenzilor;
- expandarea numelor de fiiere.
6. Care sunt categoriile de utilizatori la stabilirea drepturilor de acces ntr-un sistem de fiiere
UNIX i cum se interpreteaz drepturile de acces la fiierele obinuite i la directoare?
Rspuns:
Pentru stabilirea drepturilor de acces ntr-un sistem de fiiere UNIX se consider 3 categorii
de utilizatori:
a) proprietarul unui fiier/director; b) grupul proprietarului; c) ali utilizatori. Pentru fiecare
categorie se controleaz dreptul de citire, de scriere i de execuie. n cazul directoarelor
dreptul de execuie are semnificaia de a permite traversarea acelui director.
8. Care este rolul semnalelor in UNIX? Precizai cum se pot genera semnale i ce aciuni
poate specifica un proces pentru un anumit semnal.
Rspuns:
Semnalele UNIX constituie un mecanism elementar de comunicare ntre procese i o
modalitate de tratare a unor evenimente asincrone cu execuia unui proces. Ele pot fi
considerate ca ntreruperi software. Surse de semnale pot fi:
- acionarea anumitor taste/combinaii de taste (ex. Ctrl-C);
- apariia unor excepii hardware;
- apelul sistem sau comanda kill;
- apariia unor condiii software particulare (ex. terminarea unui proces fiu).
Un proces poate specifica pentru un semnal una din urmtoarele aciuni:
- ignorarea semnalului (nu se pot ignora SIGKILL i SIGSTOP);
- interceptarea i tratarea semnalului;
- aplicarea aciunii implicite (de regul terminarea procesului).
26
9. Care este rolul unui pipe i n ce condiii se poate utiliza?
Rspuns:
Pipe-ul este un mecanism de comunicare unidirecional ntre procese i funcioneaz similar
cu comunicarea ntre un proces i un fiier. Un pipe folosete ns 2 descriptori de fiier, de
regul un proces scriind n pipe, iar altul citind din pipe. Octeii citii dispar din pipe. ntre
cele 2 procese care comunic prin pipe trebuie s existe o relaie de rudenie, de regul
procesul care creeaz pipe-ul fiind printele celuilalt proces. Cnd captul de citire al unui
pipe este nchis, procesul care scrie poate primi semnalul SIGPIPE. Cnd captul de scriere
este nchis, procesul care citete va primi semnalarea de sfrit de fiier (un apel read
returneaz 0).
10. Ce relaie exist ntre un proces i un fir de execuie? n ce moduri se pot implementa
firele de execuie?
Rspuns:
Un fir de execuie reprezint un fir de control separat n cadrul unui proces. Astfel, un proces
poate avea mai multe fire de execuie care partajeaz resursele procesului, n particular
spaiul de memorie al procesului. Resursele proprii ale unui fir de execuie sunt n general
limitate la stiv i la un numrtor de program Exist dou modaliti principale de
implementare a firelor de execuie: a) n spaiul utilizator, ceea ce nseamn c nucleul
sistemului de operare nu cunoate existena lor i b) n spaiul nucleu, ceea ce face ca nucleul
s le ia n considerare la planificarea pentru execuie.
2. Informaiile despre un fenomen din lumea real sunt reprezentate n bazele de cunotine
prin intermediul clauzelor Horn? Cum se definete o clauz Horn? Dati un exemplu.
Rspuns:
O clausa Horn este o construcie de forma :
( x1)( xn) A1 .. Am - B1 V V Bk
unde Ai i Bi sunt formule atomice (propozitii elementare) iar n, m i k pot fi eventual 0.
Pentru cazul in care k = 1 clauzele poart denumirea de clause Horn, Utiliznd acest tip de
27
reprezentare devina posibil cuantificarea propozitiilolor si frazelor din limabj natiural care
conin informaiil relative la fenomenul descris prin construcii care vor permite accesul la
semantica fenomenului descris. De exemplu :
Fraza Este iarna si este frig conduce la clausa Horn :
este (iarna),este(frig)
Relaiile dintre componentele fenomenului : Este luna ianuarie atunci Este iarna si
este frig conduce la clausa Horn :
este_luna(ianuarie) este (iarna),este(frig)
3. Clauzele Horn utilizate pentru descrierea cunotinelor conin constante i variabile. Care
este semnificaia conceptului de constant, respectiv variabil? Care sunt strile in care poate
fi prezenta o variabila i ce reprezint respectivile stri? Eemplificai aceste concepte.
Rspuns:
In propozitiile elementare care apar in cadrul unei clause Horn, cuantificarea proprietilor
unei entiti (obiect, fenomen descris) este asigurat de atribute. Aceste atribute pot fi
constante caz in care definesc o proprietate care nemodificabil n contextul bazei de
cunotine. De exemplu :
este (iarna),este(frig)
unde clasa Anotimp urmeaz s fie instaniat la o valoare constant (de exemplu constanta
iarna, toamn etc.
Interogarea procedural : - se urmrete obinerea unui rezultat ,cel puin una dintre
variabile fiind de ieire. Pentru procedura de apartenen ntrebarea se pune astfel: "Care
sunt elementele care aparin listei specificate ?"
?- aparine ( X,[ 1,2,3,4 ] ) - variabilele sunt de tip ieire ,intrare
X=1
X=2
X=3
28
X=4
4 soluii.
7. Se da arborele de joc:
29
a) In ce consta Principiul strategiei MinMax?
b) Care este mutarea ce o va face Max n cadrul strategiei MinMax
Rspuns:
Strategia minimax poate fi rezumat astfel
ntr-un joc strategic atunci cnd este confruntat cu cteva posibilitti de alegere, oponentul
va alege cea mai buna mutare pentru el, ceea ce nsemna alegerea cea mai nefavorabila
pentru mine. Tinta mea este deci de a face mutarea care maximizeaz pentru mine valoarea
poziiei dupa ce oponentul face cea mai buna mutare a sa, ceea ce nseamna c se
miximizeaz valoarea poziiei pentru el.
Precizri
(1) Funcia de evaluare se transform ntr-un estimator euristic, care evalueaz sansele de
cstig din punctual de vedere al unuia dintre juctori. Astfel cea mai mare valoare va
reprezenta sansa de a cstiga cea mai mare pentru un juctor n timp ce cea mai mic
valoare ve defini ansa de a cstiga a oponentului.
(2) Deoarece unul din cei doi juctori va tinde sa obina poziia cu cea mai mare valoare iar
cel de al doilea poziia cu valoarea cea mai mic, cei doi juctori pot fi numiti MAX i
MIN. Ori de cte ori MAX este la mutare va alege mutarea care maximizeaz valoarea
obinuta din evaluarea funciei euristice ce caracterizeaz poziia, iar n opoziie MIN va
alege mutarea care minimizeaz valoarea
(3) Fiind date valorile de pe nivelul cel mai de jos al arborelui de cutare, strategia minimax
va determina valorile pentru toate celelalte poziii din arborele de cutare
30
Rspuns:
Cutarea in adncimea sau limea spaiului configuraiilor posibile ridic problema
proliferrii alternativelor care trebuiesc a fi explorate. Acest aspect face ca o serie de
probleme din lumea real s nu poat fi rezolvate datorit creterii timpului de explorare si a
cantitilor mari de memorie solicitat. Cutarea euristica ncearc sa remedieze in mod mai
eficient aceasta problema prin faptul ca ia in considerare numai alternative (configuraia) cea
mai promitoare la un moment dat. Cu alte cuvinte se procedeaz la o estimare a
configuraiilor care pot fi generate la un moment dat, estimare care se efectueaz in
conformitate cu scopul (configuraia int) care urmeaz a fi atins, dup care se pleac mai
departe cu alternativa cea mai promitoare. Concomitent, se menine setul de alternative
candidat gsite, urmnd ca mai departe acestea sa fie folosite pentru urmtoarea estimare.
Sisteme ncorporate
31
b. Un SI este un sistem de calcul cu scop predefinit inclus ntr un dispozitiv pe care l
conduce.
c. Un SI este un sistem de calcul cu cerine specifice. Spre deosebire de calculatorul de uz
general, SI execut sarcini predefinite.
d. Un SI este este o combinaie de hardware i software cu programare i faciliti fixe,
proiectat pentru un tip de aplicaii.
e. SI constituie un subdomeniu al domeniului ingineriei calculatoarelor, bazat pe circuite
logice programabile de utilizator i orientat pe aplicaii de timp real.
32
sau
33
ntreruperi externe
CPU
P0 P1 P2 P3 TxD RxD T0 T1
34
PWM nseamn Pulse Width Modulation adic generarea de semnale cu perioad constant
dar cu durate variabile. Facilitatea este util la comanda motoarelor de curent continuu.
Divizor de
fOSC / 2 prescalare
Numrtor
Comparator Comparator
PWM0 PWM1
Separator Separator
PWM0 PWM1
35
nemodificate (pentru a evita tranziii inutile) iar noua adres este calculat la recepie; dac
cele 2 adrese nu sunt consecutive, linia INC = 0 iar liniile de adrese vor lucra normal).
Baze de date
36
2. Definiia relaiei n algebra relational.
Rspuns:
Definiia relaiei n algebra relational
O relaie N-ar R(X) se definete prin trei elemente:
precizarea unui N-uplet de constituani (X1, X2, , XN);
definirea domeniului pentru fiecare constituant Xi;
definirea unui predicat logic care pentru orice N-uplet de date (a 1, a2, , an) unde ai
dom(Xi) pentru i=1..n d o propoziie adevrat sau fals.
Notm aceast relaie R(X1,X2,X3,.Xn) sau R(X).
Relaia R(X) este format din ansamblul N-upleilor pentru care predicatul d propoziii
adevrate.
Relaia STUD(Cods, Nume, Adresa, Data_n, Bursa) va cuprinde toi N-upleii
(nregistrrile) pentru care condiiile (predicatul) de student sunt ndeplinite (admis,
neexmatriculat, netransferat, nu a absolvit,etc.). Nu orice combinaie de valori, care aparine
domeniilor constituanilor ne d un n-uplet valid.
JOIN (reuniune) combin n-upleii din dou relaii comparnd dou coloane (union
compatibile) din tabele diferite.
Afiare nume student,adresa i notele fiecrui student bursier la diferite cursuri(codc)
identificate n tabela Note prin Cods.
37
Forma normal urmrete eliminarea redundanei informaiilor din baza de date. Orice
informaie va apare o singur dat n BD. Singurele informaii care se repet sunt cheile
simbolice care fac referine spre tabelele printe.
Normalizarea bazei de date presupune aducerea relaiilor gradual pe diverse forme normale
1, 2, 3. Primele 3 forme normale se bazeaz pe dependena funcional fa de cheia primar
a atributelor. Fiecare form normal preia constrngerile formei anterioare la care adaug noi
condiii. O tabel care nu respect forma normal va fi spart n doua tabele legate prin cheia
simbolic..
Cod profesor, determin Nume profesor, Telefon, Adresa. Se va crea o alt tabel Prof n care
CodP este cheie primar i care va fi referit prin CodP din alte tabele (Curs, Orar) n care se
cer date despre profesor. Datele despe un profesor student sau curs apar o singur dat n BD.
Notele se trec ntr-o tabel Note i se identific prin cod student CodS i cod curs CodC la
care se refer.
Forma normal 2 (2NF) O relaie R este n 2NF dac orice atribut este complet dependent
funcional de cheia primar.
Variant: Se cere s nu existe atribute care s depind numai de o parte a cheii primare.
7. Cum se deschid i cum se utilizeaz mai multe fisiere de date i index n XBase?
Rspuns:
In XBase se pot utiliza mai multe fiiere deshise fiecare ntr-o zon de lucru, pentru care se
aloc cte o zona de memorie. O zon delucru conine:
Numele fierului deschis n zon i a fiierelor index asociate
Zonele tampon pentru acel fiier i pentru fiiere index asociate
Zona care conine nregistrarea curent i structura cmpurilor nregisrtrii
Lista referinelor spre alte fiiere de date fcut prin declaraiile de Set Relation
Adresa blocului curent citit din fiier i numrul nregistrrii curente
Cnd se utilizeaz un fiier se selecteaz nti zona unde fiierul este deschis prin:
SELECT alias1 (sau nr_zona)
Toate comenzile folosite (Display, Replace, Edit, Browse, Seek, Go, Skip) se vor referi la
nregistrarea curent din fiierul deschis n acea zon.
8. Cum se face accesul direct la nregistrrile dintr-un fiier folosind fiirele index?
Rspuns:
Un fiier deschis se poate indexa dup unul sau mai multe cmpuri prin comanda:
INDEX ON camp TO index1
38
Fiecare index creat este un arbore de ordinul k (nr de articole index pe bloc) avnd X nivele.
Ultimul nivel conine referine spre fiierul de date. Fiecrei nregistrri din fiierul de date i
corespunde o nregistrare n fiierul index format din valoarea cheii + pointer spre fiierul de
date (pentru ultimul nivel) sau spre urmtorul bloc index din arbore. Numrul de accese disc
pentru a citi o nregistrare este nr.de nivele index X+1.
La comenzile de afiare (List, Browse ) nregistrrile se parcurg secvenial n ordinea valorii
cheii din fiierul index master.
Cutarea unei nregistrri cu o cheie dat se face astfel:
USE student INDEX Inume IN 4 ALIAS st
ACCEPT Nume student: TO Vnume
SEEK Vnume
IF EOF()
? Studentul cu numele + Vnume + Nu exista
ELSE
DISP
ENDIF
..
9. De ce se deschid mai multe fiiere index pentru un fiier de date ? Care este fiierul index
dup care se fac cutrile n acces direct i parcurgerea secvenial n fierul de date n acest
caz ?
Rspuns:
La adgarea de noi nregistrri n fiierul de date se actualizeaz toate fiierele index
deschise pentru a asigura coerena informaiilor din baza de date. Fierele index care nu sunt
deschise, nu se actualizeaz i nregistrrile adugate nu pot fi gsite n acces direct.
Dac se adaug multe nregistrri la un moment dat se poate ca fiiere index s nu fi deschise,
dar la sfritul operaiei se va face o rendexare dup fiecare cheie.
Comanda REINDEX reface toate fiiere index deschise. Dac nu sunt fiiere index deschise
comanda nu are nici un efect.
Cutarea ntr-un fiier deschis ntr-o zon se face dup fiierul index master, care este primul
din list, sau fiierul indicat prin:
USE student INDEX Inume,Icods,Itel
SEEK Popa V -- index master Inume cautare dupa nume student
DISP
SET ORDER TO 3 -- indexul master este Itel
SEEK 0256493111 -- cautare dupa numar de telefon
DISP
10. Cum se realizeaz o legtur automat dintre dou tabele ntr-o baz de date prin cheie
simbolic?
Rspuns:
Legtura automat dintre 2 tabele din BD se realizeaz prin comanda SET RELATION, care
definete un cmp cheie extern n prima tabel, care face referin spre un cmp
corespunztor fierului index master din a doua tabel.
USE student INDEX Inume IN 1 ALIAS ST
USE masini INDEX Inrm IN 3 ALIAS MS
SET RELATION nrm INTO MS -- legatura NRM din Student si NRM din Masini
SEEK Popescu B
? Nume, Adresa, Nrm, MS--> Marca, MS-->anF, MS-->Putere
39
40