Sunteți pe pagina 1din 108

BAZELE INFORMATICII

I N T R O D U C E R E Informatica este o disciplin care construiete baza tiinific pentru mai multe domenii, ca : proiectarea i programarea calculatoarelor prelucrarea informaiilor rezolvarea algoritmic a problemelor procesul algoritmic propriu-zis Prin urmare, nu putem reduce studiul informaticii la deprinderea modului de utilizare a calculatoarelor actuale (eventual a PC-urilor , ci trebuie s !nelegem at"t aria de cuprindere, c"t i dinamica unui mare numr de domenii !nrudite# a Studiul algoritmilor Algoritm $ set de pai prin care se definete modul n care poate fi dus la ndeplinire o anumit sarcin. %n domeniul calculatoarelor algoritmii sunt reprezentai prin programe# &ceste programe formeaz software-ul, spre deosebire de calculatoarelor propriu-zise care poart numele de hardware# Pentru ca un calculator s poat duce la !ndeplinire o anumit sarcin, trebuie 'ca mai !nt"i( s se descopere i s se reprezinte sub form de program un algoritm pentru efectuarea sarcinii respective# &lgoritmii ocup un rol central !n informatic# Principalul obiectiv al acestor eforturi era descoperirea unui set mic de instruciuni care s descrie modul de rezolvare a oricrei probleme dintr-o anumit categorie# )nul dintre cele mai cunoscute rezultate obinute !n acest domeniu este algoritmul lui *uclid (descoperit !n antic+itate de matematicianul precizat # ,eterminarea celui mai mare divizor comun a - numere !ntregi pozitive# ,escriere: Algoritmul primete ca intrare 2 numere ntregi pozitive i calculeaz cel mai mare divizor comun al celor 2 numere. Procedura: Pasul 1 : .e noteaz cu M cea mai mare valoare i cu N cea mai mic Pasul 2 : .e !mparte M la N i se noteaz cu R restul !mpririi# Pasul : ,ac R 0, se atribuie lui M valoarea N i lui N valoare R, apoi se revine la pasul -: cel mai mare divizor comun al celor - numere este valoarea notat cu N# valoare de intrare#

,up descoperirea algoritmului (!n cazul nostru al lui *uclid , !ntr-un fel, putem spune c toate informaiile necesare pentru efectuarea 'activitii( operaiei respective sunt incluse !ntr-o form codificat !n algoritm# ,ezvoltarea algoritmilor este o preocupare ma/or !n domeniul efecturii calculelor i principalele probleme legate de aceast aciune sunt : ,escoperirea unui algoritm care s rezolve o problem (gsisirea soluiei pentru o problem # Pentru anumite domenii (e0# contabilitate , algoritmii se gsesc e0primai !n legi i metodologii (norme specifice#
1

2eprezentarea algoritmului !ntr-o form !n care poate fi comunicat unei maini sau altor oameni# &dic scrierea unui algoritm trebuie transcris din forma conceptual !ntr-un set clar de instruciuni lipsit de ambiguitate# *0ist o mulime de variante de sc+eme de reprezentare a algoritmilor numite lim a!e de programare# %n prezent, !n acest domeniu s-au realizat sisteme automate de organizare i planificare care permit i nespecialitilor s dezvolte, fr a/utor din afar, sistemele de care au nevoie# *0primarea curent a acestei activiti este ingineria software# .copul acestor prelegeri nu este prezentarea !n detaliu a modului !n care ar+itectura calculatoarelor este implementat prin intermediul circuitelor electronice (este vorba de un alt domeniu electronic # &r fi de dorit ca ar+itectura calculatoarelor s reflecte numai cunotinele legate de procesele algoritmice i s nu fie limitat de te+nic# &r+itectura calculatoarelor poate fi studiat i !n alt conte0t dec"t acela al stocrii i regsirii datelor# %n acest domeniu, caracteristicile interne ale calculatorului se reflect adesea !n caracteristicile e0terne# Proiectarea sistemele de calcul este str"ns legat de interfaa lor cu lumea e0terioar# ,e e0emplu, se pune problema modului !n care algoritmul poate fi furnizat calculatorului i a modului de precizare !n care algoritm s fie e0ecutat# %n conte0tul !n care calculatorul !ndeplinete diferite sarcini, trebuie rezolvate multe probleme legate de coordonarea activitilor i alocarea resurselor # b D!"#oltar!a ma$i%ilor algoritmi&! )nul din primele dispozitive de calcul utilizate de oameni a fost a acul# Prezena lui a fost atestat !n civilizaiile antice (greac i roman , el fiind folosit i astzi# 3ilele poziionate pe s"rme !n cadrul abacului semnific anumite valori# &bacul reprezint i stoc+eaz valori prin poziia bilelor aezate de operatorul uman (intrrile care, de asemenea, observ poziiile finale ocupate de bile, ceea ce reprezint rezultatul (ieirile # ,eci abacul este o main de stocare a datelor i devine o main algoritmic numai !mpreun cu omul care-l utilizeaz# Proiectarea mainilor de calcul s-a bazat !ntr-o vreme pe te+nologia roilor dinate# Printre inventatorii acestui tip de maini de calcul s-a aflat i 3laise Pascal (14-5 144- , 6ottfried 7eibniz (14841914 i C+arles 3abbage (19:-1;91 # <ainile lor reprezentau datele prin poziionarea unor roi dinate, datele de intrare erau furnizate mecanic prin stabilirea poziiei particulare a acestor roi# %n cazul mainilor lui Pascal i 7eibniz, valorile de ieire erau obinute prin observarea poziiei finale a roilor (similar citirii numerelor pe indicatorul de =ilometra/ al mainii # 7a maina lui 3abbage rezultatele se tipreau pe +"rtie, evit"nd erorile de transcriere# %n ceea ce privete abilitatea de a urma algoritm putem spune c: - maina lui Pascal efectua numai adunri> - maina lui 7eibniz avea algoritmii (operaiile aritmetice !nglobai, dar operatorul trebuia s-l selecteze pe cel dorit> - maina lui 3abbage era astfel proiectat !nc"t secvena de pai trebuia e0ecutat s poat fi comunicat acesteia prin perforarea !ntr-un anumit mod a unor cartele de +"rtie# <ai t"rziu, ?erman ?ollerit+ (1;4@1:-: a folosit ideea reprezentrii informaiilor sub forma unor perforaii !n cartele de carton, pentru !mbuntirea procesului de !nregistrare !n cadrul recensm"ntului efectuat !n 1;:@ !n .tatele )nite# 7ucrrile sale au stat la baza crerii companiei I 3 <#

&nul de nastere al informaticii te+nice este 1:84 cand a fost creat creat computerul electronic de integrare numerica aritmetica construit cu tuburi electronice si cantarind sute de tone# Ao+n von Beumann a construit in 1:C1 calculatorul *,D&C (*lectronic ,iscrete Dariable &utomatic Computer , iar in 1:8: la )niversitatea Cambridge (.)& a fost realizat *,.&C (*lectronic ,elaE .torage &utomatic Computer , primul calculator care dispunea de sistem de operare# c E#olu'ia i%(ormati&ii Capacitatea-limit de stocare a datelor, ca i procedurile de programare consumatoare de timp au reprezentat restricii care au redus comple0itatea algoritmilor e0ecutai de primele generaii de calculatoare# Pe msur ce aceste limite au !nceput s fie depite, sistemele de calcul au !nceput s fie folosite pentru sarcini de mai mare anvergur, din ce !n ce mai comple0e# *forturile s-au !ndreptat din ce !n ce mai mult ctre studiul algoritmilor i al procesului de programare# &ceste eforturi se pot aduna, fr a e0agera, !n tiina algoritmilor# &ria de cuprindere a acestei tiine este foarte larg, incluz"nd subiecte de matematic, inginerie, psi+ologie, management, lingvistic etc# Ceea ce ne propunem s prezentm !n cadrul acestor prelegeri (lecii sunt : F ideea central a fiecrui domeniu F direciile curente de cercetare F te+nicile utilizate !n domeniul respectiv# ,e e0emplu, !n domeniul programrii ne vom concentra asupra principiilor de baz ale instrumentelor de programare i asupra evoluiei lor, i nu asupra dezvoltrii abilitilor de programare# Pentru a nu pierde din vedere imaginea de ansamblu, vom !ncerca s identificm c"teva !ntrebri fundamentale pentru informatic : 1 Ce probleme se pot rezolva prin procesele algoritmice G - Cum se pot descoperi algoritmii G 5 Cum se pot !mbunti te+nicile de reprezentare i comunicare a algoritmilor G 8 Cum pot fi aplicate cunotinele dob"ndite cu privire la algoritmi ( te+nologia !n vederea obinerii unor maini algoritmice !mbunttite G C Cum pot fi analizate i comparate caracteristicile diverilor algoritmi G Limit! A%ali"* D!s&o+!rir! Algoritmi E)!&u'i! Comu%i&ar! R!+r!"!%tar!

Hig# c# 2olul central detinut de algoritm in informatica d Rolul a,stra&ti"*rii Pentru sistemele de o comple0itate care depete capacitatea noastr de !nelegere se poate privi sistemul respectiv ca un ansamblu de componente ale cror caracteristici interne pot fi ignorate, ceea ce ne permite s ne concentrm asupra modului !n care componentele respective interacioneaz unele cu altele i asupra modului cum sunt utilizate pentru construirea unor componente de nivel mai !nalt#
5

&ceast distincie care se face !ntre proprietile e0terne ale unei componente i detaliile interne care in de construcia componentei respective poart numele de abstractizare# %n orice progres obinut, o mic parte a societii noastre se specializeaz !n implementarea lui, ceilali folosesc rezultatul ca pe un instrument abstract, deci o unealt a crei implementare intern nu suntem obligai s o !nelegem# e Im+li&a'ii !ti&!- so&ial! $i .uridi&! Informatica estompeaz multe distincii are serveau !n trecut ca reguli pe care oamenii !i !ntemeiau deciziile i pune sub semnul !ntrebrii o parte din principiile care stau la baza societii, ca de e0emplu : - Care este diferena !ntre un comportament inteligent i inteligena propriu-zis G - %n ce condiii putem vorbi despre e0istena vieii G - Care este diferena !ntre plante i animale G Informatica genereaz asemenea !ntrebri, pun"nd !n discuie principiile i bazele pe care este construit cunoaterea noastr# %n conte0t /uridic, se pune !ntrebarea !n ce msur cineva poate deine !n proprietate un produs software i care sunt drepturile i obligaiile care decurg din aceast proprietate# %n domeniul eticii, suntem confruntai cu numeroase opiuni care pun la !ndoial principiile uzuale de comportament# %n conte0t politic, apare !ntrebarea dac i !n ce msur te+nologia calculatoarelor i aplicaiile acesteia trebuie controlate de stat# 2ezolvarea acestor probleme necesit e0istena unor cunotine organizate sub forma metodelor, te+nicilor, normelor pentru fiecare tiin sau te+nologie pus !n discuie# Pentru a putea s lum decizii logice cu privire la depozitarea deeurilor radioactive, trebuie s !nelegem care sunt efectele radiaiilor, care sunt msurile de protecie care trebuie luate i s putem evalua durata de risc# Pentru a acorda sau nu guvernelor sau companiilor dreptul de a construi baze de date referitoare la ceteni sau clieni, membrii societi trebuie s !neleag care sunt posibilitile, limitele i implicaiile te+nologiei bazelor de date# Ceea ce va fi prezentat !n cursul pe care-l propunem v furnizeaz aceste cunotine elementare !n domeniul a ceea ce numim i % ( o r m a t i & *# Cu toate acestea, tiina nu reuete !ntotdeauna s rspund clar i +otr"t tuturor problemelor sociale care-i sunt ridicate# Bu !ntotdeauna e0ist un singur rspuns corect> de multe ori aa-zisele soluii sunt !n fapt compromisuri !ntre mai multe puncte de vedere# *ste nevoie de capacitatea de a asculta i de a !nelege i alte puncte de vedere, de a purta discuii raionale i de a-i sc+imba opiniile !n funcie de datele obinute !n urma dialogului# Pentru a !ncura/a un astfel de comportament, fiecare capitol al cursului se va finaliza cu un set de pro leme de etic, pe care le considerm, mai ales !n conte0tul profesiunii pe care ai ales-o, la fel de importante ca i aspectele te+nice propuse spre dezbatere#

BAZELE CALCULATOARELOR / STRUCTURA CALCULATORULUI 0


8

11

STOCAREA DATELOR

1111 2 Sto&ar!a ,i'ilor Calculatoarele utilizate !n prezent reprezint informaiile sub forma iruri de bii# )n ,it ( iniar" digit $ cifr binar simbolizeaz una din cifrele @ sau 1# .tocarea unui bit !ntr-un calculator necesit un dispozitiv care s poat s se afle !ntr-una din cele dou stri# ,e e0emplu: un !ntreruptor (+or%it3o+rit un releu (d!s&4is35%&4is un steag de start (ridi&at3&o,or6t # )na din stri este utilizat pentru reprezentarea simbolului 0, iar cealalt pentru reprezentarea simbolului 1# 1#1#1# Pori logice i circuite basculante bistabile

Irebuie introduse operaiile AND ($ i , OR ($ sau i 7OR ($ sau e0clusiv care sunt prezentate mai /os : &B, @ @ @ @ @ @ @ @ @ &B, @ 1 @ @ 1 1 @ 1 1 &B, 1 @ @ 1 @ 1 1 @ 1 &B, 1 1 @ 1 l 1 1 1 @

J2

J2

J2

J2

KJ2

KJ2

KJ2

KJ2

Hig# 1#1# Jperaiile &B,, J2 i KJ2 &ceste operaii lucreaz cu valorile ad!#*r /true)3(als /false0 i sunt denumite opera#ii ooleene# Intrrile operaiei &B, sunt reprezentate de adevrul sau falsitatea componentelor e0presiei> ieirea reprezint adevrul sau falsitatea e0presiei compuse# *0presia $ AN% & este adevrat numai c"nd ambele sale componente sunt adevrate# Ioate variantele operaiei &B, se pot vedea !n prima linie a figurii 1#1# .imilar, operaia 'R se bazeaz pe o e0presie compus sub forma $ 'R &# &semenea e0presie compus este adevrat c"nd cel puin una dintre componente este adevrat, ceea ce coincide cu reprezentarea 'R din linia a doua a figurii 1#1# %n limba/ul curent nu e0ist o con/uncie care s poat e0prima semnificaia operaiei ('R# ('R produce ca rezultat o ieire cu valoarea 1 atunci c"nd una dintre intrrile sale este 1 i cealalt @ (vezi linia a treia din fig# 1#1# # Jperaia N') este o alt operaie boolean de AN%* 'R i ('R, prin faptul c are o singur intrare i o singur ieire# Ieirea reprezint opusul intrrii> dac intrarea operaiei N') este adevrat, ieirea este fals, i invers#

1#1#-# Ie+nici de stocare


C

Calculatoarele anilor L4@ conineau inele de material magnetic de dimensiuni mici, denumite mi!"uri (cores , pe care erau !nfurate fire electrice, 'mini(bobine# 7a trecerea curentului electric prin bobine, miezul poate fi magnetizat !ntr-una din cele dou direcii# ,irecia c"mpului magnetic poate fi detectat observ"ndu-se efectul asupra unui curent electric ce trece prin centrul miezului# &stfel un miez reprezint o posibilitate de memorare a unui bit# ,atorit dimensiunilor lor mari i a necesarului ridicat de putere 'electrica(, aceste sisteme sunt depite astzi# Calculatoarele !nregistreaz datele !nc utiliz"nd te+nologia magnetic, dar !ntr-un mod foarte apropiat de acela !n care se fac !nregistrrile pe band magnetic# In unele sisteme de calcul se folosete, de asemenea, i te+nica laserului pentru !nregistrarea bitilor# ,iferenele dintre circuitele basculante bistabile electronice i dispozitivele de stocare magnetice (sau laser reprezint argumente pro i contra !n ceea ce privete aplicaiile lor# Circuite basculante bistabile electronice care pot fi acionate electronic sunt mai rapide dec"t cele magnetice i, de aceea, sunt utilizate pentru stocarea datelor !n circuitele interne ale calculatorului# %ns un circuit basculant bistabil electronic pierde informaia stocat !n el atunci c"nd sursa de alimentare este oprit# %n sc+imb, dispozitivele de stocare magnetice sau cu laser pstreaz datele, ceea ce le recomand pentru realizarea de sisteme de stocare cu longevitate mare# 1#1#5# .istemul de notaie +e0azecimal C"nd ne referim la activitile din interiorul unui calculator lucrm cu iruri de bii, care pot fi uneori foarte lungi# Pentru a simplifica reprezentarea irurilor de bii, se va analiza o notaie prescurtat, denumit %ota'ia 4!)a"!&imal* (+e0adecimal notation # Nota'ia 4!)a"!&imal* utilizeaz un singur simbol pentru reprezentarea a patru bii# .istemul de codificare +e0azecimal: Cod binar 2eprezentare +e0azecimal @111 9 1@@@ ; 1@@1 : @@@@ @ 1@1@ & @@@1 1 1@11 3 @@1@ @@11 5 11@@ C @1@@ 8 11@1 , @1@1 C 111@ * @11@ 4 1111 H

Hig# 1#-# .istemul de notaie +e0azecimal 11212 M!moria +ri%&i+al* %n scopul stocrii datelor, un calculator conine un mare numr de circuite, fiecare dintre ele fiind capabile s stoc+eze bii# &cest MrezervorM de bii este cunoscut sub numele de m!mori! +ri%&i+al* (main memor" # 1#-#1# Jrganizarea memoriei principale Celulele de stocare din memorie sunt organizate !n uniti, (cuvinte cu dimensiunea uzual de ; bii# &cest ir de ; bii a impus cuv"ntul octet i, de asemenea, a impus pentru cuv"ntul "te ir de bii cu aceeai lungime# ,imensiunea memoriei este adesea msurat !n multipli de 1#@8;#C94 celule (1#@8;#C94 $ --@, fiind mai natural pentru a fi utilizat dec"t 1#@@@#@@@ care este o putere a lui 1@ # Pentru a desemna aceast unitate de msur se folosete termenul mega#
4

,eci: 1 mega "te (1 M+ N 1#@8;#C94 "te# &lte uniti de msur a dimensiunilor de memorie sunt 8iloo&t!tul N ,ilo "te (-+ care este egal cu 1@-8 octei (-1@ octei i gigao&t!tul N giga "te (.+ care este egal cu 1@-8 M+ (-5@ octei # Pentru identificarea celulelor individuale din memoria principal a unui calculator, fiecare are atribuit un nume unic, denumit adres# &dresele utilizate in te+nica de calcul sunt !n !ntregime numerice# Pentru e0emplificare putem considera toate celulele de memorie plasate pe un singur r"nd i numerotate !n ordine cresctoare pornind de la @# &cest sistem permite identificarea unic a unei celule i, de asemenea, o relaie de ordonare !ntre celule permite referiri de tipul Mcelula precedentM sau Mcelula urmtoareM# Celulele din memoria principal care stoc+eaz bii sunt combinate cu circuite necesare pentru a permite, si altor circuite s stoc+eze i s recupereze datele din celulele memoriei principale# *0ist astfel si alte celule (circuite care pot prelua datele din memorie solicit"nd informaii despre coninutul unei anumite adrese (operaie de citire sau pot !nregistra informaii !n memorie solicit"nd ca un anumit ir de bii s fie plasat !n celula aflat la o anumit adres (operaie de scriere # &cest sistem de identificare a celulelor memoriei principale permite apelarea, cercetarea i modificarea individual a acestora# &stfel, o celul a memoriei principale cu o adres mic este la fel de accesibil ca si una cu o adres foarte mare, deci datele stocate !n memoria principal a calculatorului pot fi prelucrate !n orice ordine# ,in aceste motive memoria principal a unui calculator se mai numete i m!mori! &u a&&!s al!ator (random access memor" / RAM # &cest acces aleator la mici uniti de date (celula se deosebete radical de sistemele de stocare de mas (care manipuleaz iruri lungi de bii sub forma de blocuri # 1#-#-# Jrganizarea unei celule de memorie Considerm biii dintr-o celul de memorie ca fiind aran/ai pe un r"nd# Dom denumi capetele acestui r"nd marginea superioar , iar cellalt capt marginea inferioar# Considera deasemenea biii aran/ai !ntr-un r"nd orientat de la st"nga la dreapta cu marginea superioar plasat la st"nga# 3itul de la captul din st"nga este denumit cel mai semnificativ it# cel mai semnificat iv bit 9 1 (marginea superioar 9 1 1
cel mai putin semnificativ bit

1 9 (marginea inferioar

Hig# 1#5# Jrganizarea unei celule de memorie cu dimensiune de un octet M!moria +rimara <emoria (Memor" pstreaz programele i datele# Hr o memorie, din care procesoarele s poat citi i !n care s poat scrie informaii, nu poate e0ista nici un calculator numeric cu program memorat# B i ' i )nitatea elementar a memoriei este cifra binar, numit ,it# )n bit poate conine un @ sau un 1# .istemul de numerotare binar necesit numai dou valori distincte, reprezent"nd cea mai sigur metod pentru codificarea informaiei numerice#

Adr!s! d! m!mori! <emoriile sunt alctuite dintr-un numr de celule sau locaii# Hiecare celul are un numr, numit adres, prin care programele se pot referi la ea# %n figur se prezint trei organizri diferite a , b , c pentru o memorie de :4 de bii : &dresa @ @ @ @ a0 @ 1 1 1 1

1 1

&dresa @ @ @ @

,0 1 1 1

&dresa @ @ @ @

&0 1 1 1

,ac o adres are n bii, atunci numrul ma0im de celule adresabile este -n# Pentru a ne referi la memoria din fig# a , o adres are nevoie de cel puin 8 bii, iar pentru a ne referi la memoriile din fig# b i c , o adres are nevoie de 5 bii# Bumrul de bii din adrese determin numrul ma0im de celule adresabile direct !n memorie#
;

Celula este cea mai mic unitate de memorie adresabil# &proape toi productorii de calculatoare au aderat la standardul celulei de ; bii $ 1 octet (bEte # Jcteii sunt grupai !n cuvinte# )n calculator cu un cuv"nt de 5- bii are 8 octeiOcuv"nt, iar altul cu un cuv"nt de 48 bii are ; octeiOcuv"nt# Cuv"ntul este important, deoarece instruciunile (ma/oritatea acestora opereaz cu cuvinte !ntregi#

Ordi%!a o&t!'ilor Jcteii dintr-un cuv"nt pot fi numerotai de la st"nga la dreapta, sau de la dreapta la st"nga# Dom reprezenta !n figur o parte a memoriei unui calculator pe 5- bii#

&dresa Cel mai semnificativ P primul (I3<, .P&2C @ 9 : > 12 1 ; ? 1 2 < 19 (@ Q @11@ = 11 1;

8 ; 1-

1:

o&t!t a0 Bi'i %um!rota'i d! la st6%ga la dr!a+ta (Intel Cel mai semnificativ P ultimul 2 1 &dresa 9 (@ Q @11@ :
@ 8

= 11 1;

< 19 1:

; ?

> 12 o&t!t

1-

Cu#6%t d! 2 d! ,i'i ,0 Bi'i %um!rota'i d! la dr!a+ta la st6%ga . precizm cum vom reprezenta valoarea numeric: 4 este reprezentat de biii 11@ !n partea cea mai din dreapta a unui cuv"nt i de zerouri pe ceilali -: de bii din st"nga#
:

<a/oritatea aplicaiilor au nevoie de un amestec de numere intregi, iruri de caractere i alte tipuri de date# . considerm o fi simpl de personal: nume anga/at, v"rsta i codul departamentului (Paul .andu, -1 ani, ,epartament $ -4@ $ 1 0 -C4 R 8 i s o reprezentm !n cele dou moduri precizate mai sus#

&d# P . 8 ) ; @ @ 114 @

& & @ @ @

) B @ @ 1

7 , @ -1 8

7 , @ @ @

) B @ @ @

& & @ @ 1

&d# P . ) -1 8

@ 8 ; 114

2eprezentrile sunt bune i consistente intern, problema apare la transmiterea fiei, prin reea de la maina cea mai semnificativ ctre cealalt main# 2ezultatul transferului propus arat astfel : 7 , @ -1 8 ) B @ @ 1 & & @ @ @ P . ) @ <aina a inversat !n timpul transmisiei:

@ ordinea caracterelor din cuv"nt (ceea ce este corect , octeii dintr-un !ntreg (ceea ce este incorect #

J soluie este de a inversa octeii prin softSare (dup crearea unei copii , ceea ce va conduce la : P . U)T @ @ & & @ @ @ ) B @ @ 1 7 , @ -1 8

Problema este poziia caracterului M)T poziionat prost# .oluii de !ndreptare nu e0ist la transferul !ntre maini diferite ca organizare a memoriei# &pare evident necesitatea unui standard pentru stabilirea ordinii octeilor !n cadrul organizrii memoriei#

1@

M!moria i%t!rm!diar* %ntotdeauna CP)-urile au fost mai rapide dec"t memoriile# Proiectanii CP)-ului sunt preocupai de sporirea vitezei acestora, pe c"nd proiectanii memoriilor sunt preocupai de sporirea capacitii, i nu de sporirea vitezei# ,atorit acestor abordri, situaia CP)-urilor i a memoriilor, vis-V-vis de vitez, continu s se !nruteasc !n timp# Practic, acest dezec+ilibru are urmtoarea metamorfozare: dup ce CP)-ul a lansat o cerere ctre memorie, nu va primi cuv"ntul ateptat timp de mai multe cicluri CP)> cu c"t memoria este mai lent, cu at"t CP)-ul are mai mult de ateptat# %n acest moment, inginerii tiu cum s construiasc memorii la fel de rapide ca i CP)urile, dar ar trebui !ncorporate !n cip-ul CP), cresc"ndu-i dimensiunile i costul# Cip-ul CP) este limitat la anumite dimensiuni# %n acest sens, se cunosc te+nici de combinare a unei cantiti mici de memorie rapid cu o cantitate mare de memorie lent, la un pre moderat# <emoria mic, rapid, se numete m!mori! i%t!rm!diar* (cache # Ideea de baz a unei memorii intermediare : cuvintele de memorie cele mai frecvent utilizate sunt pstrate !n memoria intermediar# m!mori! CPU +ri%&i+al* m!mori! i%t!rm!diar*

magistral*

Plasarea memoriei intermediare se face !n mod logic !ntre CP) i memoria principal#

11 12 Dis+o"iti#! d! sto&ar! d! mas* 7imitele te+nologice precum i necesitatea stocrii unor copii de siguran ale datelor vitale, au fcut ca memoria principal a unui calculator s nu satisfac cerinele impuse de diversele aplicaii# ,in aceste motive, calculatoarele sunt ec+ipate, pe l"ng memoria principal, cu sisteme de stocare de mas (mass storage s"stem , denumite i m!mori! s!&u%dar*# .tocarea datelor pe aceste sisteme se face !n uniti de mari dimensiuni denumite (i$i!r! (files # )nul din principalele dezavanta/e ale sistemelor de stocare de mas este acela c, !n general, ele necesit o micare suplimentara mecanic, astfel fiind mai lente la stocarea i recuperarea datelor !n comparaie cu memoria principal a calculatorului# Principalul avanta/ al dispozitivelor de stocare de mas este acela c, !n multe situaii, sunt mai ieftine dec"t memoria principal, iar suportul pe care se !nregistreaz datele poate fi e0tras din calculator i depozitat !ntr-un loc sigur !n scopul recuperrii ulterioare a datelor# Cu privire la dispozitivele care pot fi cuplate sau decuplate de la calculator, se folosesc termenii on0line i off0line# Iermenul 'n0line indica c dispozitivul sau informaiile sunt conectate i pot fi folosite de calculator fr intervenie uman# Iermenul 'ff0line indica c este necesar intervenia uman !nainte ca dispozitivul sau informaiile s poat fi utilizate de calculator> dispozitivul trebuie pornit sau informaiile trebuie introduse !ntr-un anumit mecanism# M!moria s!&u%dar* Jric"t de mare ar fi memoria principal# !ntotdeauna ea va fi prea mic pentru cerinele utilizatorilor#
11

I!rar4ii d! m!morii

CP) /R!gistr!0 M!mori! i%t!rm!diar* M!mori! +ri%&i+al* Dis&ul mag%!ti&

Ba%da mag%!ti&*

Dis&ul o+ti&

Ierar+ie de memorii cu cinci niveluri

<rimea memoriei intermediare are dimensiuni de la 5- W3 p"n la zeci de <3# <emoria principal are dimensiuni de la 14 <3 p"n la zeci de 63# ,iscul magnetic este suportul actual pentru pstrarea permanent (;@ 63, 1@@ 63, 1-@ 63, -@@ 63 i st la baza ierar+iei de memorii, iar banda magnetic i discul optic sunt destinate pstrrii ar+ivelor# *0ist urmtorii parametri importani de caracteristice specifice, pe msur ce ne deplasm spre baza ierar+iei : 1# Iimpul de acces se mrete (crete # - 2egistrele CP) pot fi accesate !n &6t!#a mo%os!&u%d!# - <emoriile intermediare pot fi accesate !ntr-un multi+lu a+ro+iat d! tim+ul d! a&&!s al r!gistr!lor# - Iimpii de acces la memoria principal au valori tipice de c"teva "!&i d! %a%os!&u%d!# - Iimpii de acces la discul magnetic @ 1@ msec# - Iimpii de acces la banda magnetic i discul optic sunt de mrimea secundelor (inclusiv timpul de e0tragere i inserare !n dispozitivul de intrareOieire # -# Capacitatea de stocare crete# - 2egistrele CP) pot stoca 1-; octei# - <emoriile intermediare pot stoca c"iva megaoctei (<3 # - <emoriile principale: zeci X mii <3# - ,iscurile magnetice: zeci X sute 63# - 3enzile magnetice i discurile optice nu sunt tot timpul utilizate, astfel !nc"t capacitatea lor este limitat de bugetul proprietarului# 5# Bumrul de bii primit pe dolar crete# Preurile pe componente se msoar astfel : - <emoria principal, !n dolariO<3# - .tocarea pe discul magnetic !n centimeOpenniesO<3# - .tocarea pe banda magnetic, !n dolariO63# 11 111 Dis&uri mag%!ti&! )n disc magnetic este alctuit din unul sau mai multe platane de aluminiu, cu un !nveli magnetizabil# Iniial, diametrele acestor discuri erau de C@ cm, 1- cm, dar acum (-@@C au !n general 5 cm sau mai puin> )n cap de citireOscriere, care conine o bobin de inducie ce se
1-

deplaseaz foarte aproape de suprafaa platanului, Yspri/inindu-seT pe o pern de aer (cu e0cepia discurilor fle0ibileOdisc+etelor unde atinge suprafaa # 7a trecerea unui curent negativOpozitiv prin bobina capului, acesta magnetizeaz suprafaa de dedesubtul capului, aliniind particulele magnetice la dreapta sau la st"nga, funcie de polaritatea curentului# &stfel, se realizeaz scrierea, citirea realiz"ndu-se !n modul precizat !n paragraful urmtor# 7a trecerea capului de citire peste o suprafa magnetizat, un curent pozitivOnegativ este indus !n bobina capului# %n continuare este prezentat geometria unei piste specifice discului magnetic#

date preambul l,it B 9-1 C 9-2 D

cap de citire/scriere braul discului dir!&'ia d! mi$&ar! ,ra'

J poriune a unei piste a discului (sunt precizate dou sectoare .ecvena circular de bii scris la rotaia complet a discuie se numete pist ( trac, # Hiecare pist este !mprit !n sectoare de lungime fi0, de obicei de c"te C1- octei de date, precedai de un preambul care permite capului s se sincronizeze !nainte de citire sau scriere# ,up zona de date urmeaz un cod corector de erori (*CC P *rror Correcting Code , fie un cod ?amming, fie un cod care poate corecta erori multiple numit Cod 2eed .olomon# .ectoarele consecutive sunt separate de un spaiu !ntre sectoare (1ntersector gap # Capacitatea discului formatat este cu cca# 1CZ mai mic dec"t cea a discului neformatat# 7a fiecare distan radial poate fi scris o alt pist# Pistele (coroane circulare sunt cercuri concentrice fa de a0ul discului# Cu te+nologia actual, discurile au !ntre ;@@ i -@@@ de piste pe centimetru, lrgimea pistei fiind !ntre C-1@ microni# ,iscurile actuale a/ung de la densiti de C@@@@ p"n la 1@@@@@ biiOcm# &stfel de discuri se numesc dis&uri Ai%&i!st!r# <a/oritatea discurilor sunt constituite din mai multe platane suprapuse pe vertical# Hiecare platan dispune de propriul bra i cap# 3raele sunt sudate !ntre ele> la o deplasare !ntr-o nou poziie radial sunt mutate toate odat# .etul de piste dintr-o poziie radial se numete cilindru# Hactorii care influeneaz performanele discurilor sunt : deplasare !n poziia radial corect, cutare (see, > timpii medii de cutare (!ntre piste alese aleatoriu se situeaz !n intervalul C-1C msec#>

15

latena de rotaie (rotational latenc" necesar rotirii platanului astfel !nc"t sectorul dorit s a/ung sub capul de citire> !nt"rzierea medie: 8 X ; msec# <a/oritatea discurilor se rotesc la C8@@, 9-@@, 1@;@@ rotaiiOminut> timpul de transfer depinde de densitatea linear i de viteza de rotaie i are valori de -C X 1@@ microsecunde (la data de transfer C X -@ <3Osec#, pentru un sector de C1- octei # *vident, timpul de cutare i latena sunt predominante !n timpul de transfer# Hiecrui disc !i este asociat un controlor de date (dis, controller , un cip care controleaz dispozitivul# Printre sarcinile controlorului sunt : acceptarea comenzilor de la softSare, de tipul 2*&,, [2II*, HJ2<&I> controlul micrii braului> detecia i corecia erorilor> conversia datelor citite din memorie> c"nd controlorul descoper un sector defect, !l !nlocuiete cu unul din sectoarele libere rezervate !n acest scop !n cadrul fiecrui cilindru#

Cea mai obinuit form de stocare de mas utilizat !n prezent o reprezint stocarea pe disc# %n aceast structur, stocarea datelor se face pe un disc subire care se !nv"rtete i care este acoperit cu o pelicul subire de material magnetic# ,easupra iOsau dedesubtul discului sunt plasate capete de &itir!3s&ri!r!, astfel !nc"t, pe msur ce discul se rotete, fiecare cap parcurge un cerc denumit +ist* (trac, care se afl pe suprafaa de sus sau /os a discului# ,eoarece fiecare pist conine mai multe informaii dec"t vom dori s prelucrm la un moment dat, pistele sunt !mprite !n arce de cerc denumite s!&toar!, unde informaiile sunt !nregistrate ca un ir continuu de bii#

disc

piste divizate !n sectoare capde citireOscriere bra

mic piste divizate !n sectoare micarea discului Hig# 1# 8# .tructura unui sistem de stocare pe disc

miscarea braului

Prin repoziionarea capetelor de &itir!3s&ri!r! se obine acces la sectoare situate pe diferite piste concentrice# Pistele sunt compuse din mai multe sectoare individuale, fiecare dintre ele put"nd fi tratate ca un ir de bii independent# Bumrul de piste de pe suprafaa discului, precum i numrul de sectoare de pe o pist, difer de la un sistem la altul# ,imensiunile sectoarelor sunt !n general fie de C1- octei, fie de 1@-8 octei#
18

7ocalizarea pistelor i sectoarelor nu reprezint ceva permanent !n structura fizic a discului, ele sunt marcate magnetic printr-un proces denumit formatare (sau iniializare a discului# Cele mai multe sisteme de calcul pot reformata discurile atunci c"nd formatul acestuia nu este compatibil cu cel propriu# 2eformatarea unui disc distruge toate informaiile stocate anterior pe el# .istemele cu capacitate mic utilizeaz un singur disc, denumit i dis&4!t*3dis& (l!)i,il (flopp" dis, # .unt disponibile in comer astfel de disc+ete# ,isc+etele au diametrul de 5 1O- oli, si sunt introduse !ntr-o carcas rigid de plastic# ,ei capacitatea disc+etelor este limitat la c"iva megaoctei (1,88 M+ , ele au avanta/ul c se introduc i se scot uor !n unitatea citireOscriere i sunt uor de pstrat# ,isc+etele reprezint o soluie bun pentru stocarea off0line a informaiilor# ,iscurile de mare capacitate, care pot stoca mai muli gigaoctei de date, constau dintr-un numr de cinci p"n la zece discuri fi0e, montate !n paralel pe un a0 comun, cu suficient spaiu !ntre ele !nc"t s permit accesul capetelor de &itir!3s&ri!r!# ,eoarece aceste discuri sunt rigide, ele sunt cunoscute sub numele de 4ard2dis&# %n cazul acestor sisteme (+ard-disc capetele de citireOscriere nu ating suprafaa discului, ceea ce-i permite acestuia viteze mari de rotaie# ,istana dintre capetele de citireOscriere i suprafaa disc+etei este foarte mic, astfel !nc"t o particul de praf se poate bloca !ntre cap i suprafaa discului deterior"ndu-le pe am"ndou# Pentru prevenirea acestui fenomen +ard-discul este !nc+is !ntr-o carcas etan# Pentru evaluarea performanei discurilor se folosesc mai multe criterii (parametrii : timpul de cutare (see, time $ timpul necesar deplasrii capetelor de citireOscriere de la o pist la alta> timpul de !nt"rziere (rotation dela"2latenc" time $ /umtate din timpul necesar pentru ca discul s efectueze o rotaie complet, respectiv timpul mediu !n care datele respective a/ung !n poziia capului de citireOscriere dup ce acesta a fost adus la pista dorit> timpul de acces (access time $ suma dintre timpul de cutare i timpul de !nt"rziere> rata de transfer (transfer rate a datelor ctre sau de la disc# ,eoarece capetele de citireOscriere nu ating suprafaa discului, ele pot avea viteze de rotaie de cca# C@@@9@@@ rotaiiOminut, !n timp ce !n cazul discurilor fle0ibile aceste viteze nu depesc 5@@ rotaiiOminut# 2ata de transfer a discurilor fi0e se msoar !n megabEtesOsecund, fa de cea a disc+etelor care se msoar !n =ilobEtesO secund# ,ac timpul de !nt"rziere se msoar, !n cazul circuitelor electronice !n nanosecunde (miliardimi de secund i c+iar mai mici, timpii de cutare, !nt"rziere i acces !n cazul discurilor se msoar !n milisecunde (miimi de secund # 11 121 ,iscuri compacte ,iscul compact (C, este compatibil cu cel utilizat !n domeniul !nregistrrilor muzicale, cu diferena c, pentru a obine rate ridicate de transfer al datelor, cititoarele de C,-uri din calculatoare, rotesc mult mai rapid discul# &ceste discuri, cu diametrul de cca# C oli, sunt confecionate dintr-un material reflectorizant, acoperit cu o pelicul protectoare transparent# %nregistrarea informaiilor pe C, se face prin creare de striaii !n ad"ncimea suprafeei reflectorizante# Informaiile sunt stocate pe o singur pist care are form de spiral# )na din cele mai rsp"ndite forme actuale de stocare a datelor pe compact-disc este reprezentat de dispozitivele ce pot fi numai citite, denumite C,-2J< ( 3ompact dis, read onl" memor" # Capacitatea de stocare a acestor C,-2J<-uri este de 4@@ M+#
1C

.unt, de asemenea, dispozitive si sisteme C, care permit si modificarea datelor stocate# *0ist de asemenea sisteme care utilizeaz dispozitive magneto-optice pentru !nregistrarea informaiilor, topind suprafaa refle0iv de pe C, cu a/utorul unei raze laser i apoi rearan/"nd-o prin intermediul unor c"mpuri magnetice !nainte ca aceasta s se rceasc# 1#8#5# 3enzi magnetice ,ispozitivele de stocare mai vec+i utilizeaz banda magnetic# Informaiile se !nregistreaz pe o pelicul magnetic depus pe o band de material plastic, care este stocat pe un sir de role# Pentru acces la date, banda magnetic este introdus !ntr-o unitate de band care poate derula banda, citi i scrie informaia sub controlul calculatorului# *0ist i uniti de band magnetic cu cartu care utilizeaz casete# ,epinz"nd de formatul utilizat, pe unele benzi magnetice pot fi stocate volume de ordinul gigabEtes (.+ #

11 1:1 %nregistrri logice i fizice ,atele !n memoria principal a unui calculator pot fi apelate la nivelul celulelor de memorie de dimensiunea unui octet# Proprietile fizice ale dispozitivelor de stocare de mas impun ca manipularea datelor stocate s se fac utiliz"nd uniti cu dimensiuni mai mari de un octet# )n bloc de date corespunztor caracteristicilor fizice ale unui dispozitiv de stocare este denumit 5%r!gistar! (i"i&* (phis"cal record # %n afara !mpririi datelor !n !nregistrri fizice determinate de caracteristicile dispozitivului de stocare, fiierele stocate posed o diviziune natural, legat de structura aplicaiei din care fac parte# ,e e0emplu, un fiier care conine informaii referitoare la anga/aii unei firme este alctuit de obicei din blocuri de informaii referitoare la fiecare anga/at# &ceste blocuri de date care apar !n mod natural sunt denumite 5%r!gistr*ri logi&! (logical records # ,imensiunile !nregistrrilor logice se potrivesc cu totul !nt"mpltor ca lungime (mrime cu dimensiunile !nregistrrilor fizice impuse (ca mrime de un dispozitiv de stocare# %n consecin este posibil s e0iste mai multe !nregistrri logice stocate ca o singur !nregistrare fizic sau o !nregistrare logic stocat pe mai multe !nregistrri fizice# %n acest spirit, pentru recuperarea datelor de pe sistemele de stocare de mas este necesar o anumit activitate de decodificare# 11;1 Codi(i&ar!a utili"at* +!%tru sto&ar!a i%(orma'iilor %n continuare vor fi studiate mai !n amnunt te+nicile utilizate pentru reprezentarea informaiilor sub forma unor iruri de bii# 1#C#1# 2eprezentarea simbolurilor 2eprezentarea datelor !ntr-un calculator se realizeaz prin proiectarea unui cod !n care diferite simboluri (litere alfabetice, semne de punctuaie etc# au asociate abloane (modele de bii unice pentru ca informaia sa poata fi stocata sub forma unor propoziii codificate pe suportul magnetic# &stfel au fost create i folosite diverse coduri pentru diferite ec+ipamente, acest lucru av"nd ca efect apariia i proliferarea problemelor de comunicaie# Pentru a remedia aceast situaie, Institutul &merican pentru .tandarde (&merican Bational .tandards Institute &B.I a adoptat codul American 4tandard 3ode form 1nformation 1nterchange (A4311 # &cest cod utilizeaz modele cu o lungime de apte bii pentru reprezentarea literelor mari i mici ale alfabetului englez, semnelor de punctuaie, cifrelor de la @ la :, precum i a anumitor
14

caractere de control (trecere r"ndul urmtor line feed, revenire la marginea din st"nga a r"ndului carriage return, tabulator ta # %n prezent codul A4311 este e0tins la un format de opt bii pe simbol, prin adugarea uni zero pe poziia celui mai semnificativ bit !n faa fiecrui ablon al vec+iului cod pe apte bii# %n ane0a 1 este prezentat codul A4311 !ntr-un format cu opt bii pe simbol# *0ist i alte coduri mai puternice capabile s reprezinte documente scrise !ntr-o varietate de limba/e# *le utilizeaz abloane (modele pe 14 bii (4C#C54 abloane diferite sau c+iar pe 5- bii (peste 19 milioane de abloane # '5nicode, cod dezvoltat de I . J (International .tandard Jrganisation #( 1#C#-# 2eprezentarea valorilor numerice <etodele de stocare a informaiilor sunt ineficiente atunci c"nd informaiile ce trebuie memorate sunt de natur numeric# Pentru !nelegere, s presupunem c vrem s stocm nr# :: sub forma unor simboluri A4311> sunt necesari 14 bii, dar observm c acesta este cel mai mare numr stocabil pe 14 bii# J abordare mult mai eficient este stocarea valorii reprezentate !n baza doi (binar # %n notaia binar (baza doi poziia fiecrei cifre este asociat cu o anumit pondere, numai c ponderea asociat fiecrei poziii este de dou ori mai mare dec"t ponderea poziiei din dreapa# <ai e0act, cifra cea mai din dreapta a unei reprezentri binare are asociat ponderea 1 (-@ , urmtoarea poziie !n st"nga cu - (-1 i aa mai departe#
2eprezentare 5 9 C

cantitatea asociat poziiei unu zece o sut

Hig# 1#C# .istemul zecimal de numeraie

2eprezentare binara cantitatea asociat poziiei 1 9 1 1 unu doi patru opt Hig# 1#4# .istemul binar de numeraie Pentru a afla valoarea unei reprezentri !n binar, vom !nmuli valoarea fiecrei cifre cu ponderea asociat poziiei sale i vom aduna rezultatele#
2eprezentare binar 1 @ @ 1 @ 1

1 0 unu @ 0 doi 1 0 patru

$ 1 $ @ $ 8

@ 0 opt $ @ @ 0 saisprezece $ @
19

1 0 treizeci i doi $ 5Hig# 1#9# ,ecodificarea reprezentrii binare 1@@1@1 Pentru a afla reprezentarea !n binar e0ist un algoritm clasic# Pasul 1# .e !mparte valoarea la doi i se memoreaz restul# Pasul 2# C"t timp c"tul obinut difer de zero, se continu !mprirea noului c"t la doi, memor"ndu-se restul# Pasul # C"nd s-a obinut un c"t egal cu zero, reprezentarea !n binar a valorii iniiale const din resturile !mpririlor afiate de la dreapta la st"nga !n ordinea !n care au fost memorate# Hig# 1#;# &lgoritm pentru aflarea reprezentrii !n binar a unui numr !ntreg
15 rest 1 4

] ] ]

4 rest @ 5 5 rest 1 1 1 rest 1 @

2eprezentarea !n binar

Hig# 1#:# 2eprezentarea !n binar a numrului treisprezece 1#C#5# 2eprezentarea altor tipuri de date &plicaiile utilizate !n informatica implica si folosirea de imagini, sunete, secvene video# Ie+nicile pentru reprezentarea acestor categorii de date nu sunt !nc global standardizate la nivel mondial# )na din metodele utilizate pentru stocarea imaginilor este considerarea imaginii ca o colecie (suma de puncte (pi0el ^ picture element # %n forma cea mai simpl, o imagine alb-negru poate fi codificat ca un lung ir de bii ce reprezint liniile de pi0eli, unde fiecare bit are valoarea 1 sau @, funcie de culoarea alb sau negru# 2eprezentrile de acest tip sunt cunoscute sub numele de +ri de bii ( it maps , deci irul de bii nu este altceva dec"t o +art a imaginii reprezentate# .istemele MpopulareM de +ri de bii includ fiiere de tip ) 1 6 6 ()ag 1mage 6ormat 6ile i . 1 6 (.raphic 1nterchange 6ormat # Hotografiile sunt prezentate ca +ri de bii prin fiiere !n format 7$8. (7oint $hotographic 89perts .roup # %n cadrul acestor reprezentri acestor fiier imaginea nu poate fi scalat la o dimensiune arbitrar# *0ist posibilitatea scalrii imaginii prin memorare ca un set de directive care precizeaz modul de desenare# &cest mod de precizare a modului de desenare furnizeaz o descriere compatibil cu orice mrime a unitilor sistemului de coordonate care ar putea fi specificat atunci c"nd se afieaz imaginea# ,e asemenea, tot metode de reprezentare a datelor sunt i M$8. (Motion $icture 89perts .roup te+nic pentru date video i audio, i % ( 6 (%rowing 1nterchange 6ormat
1;

utilizat la sisteme de proiectare asistat de calculator, unde imaginile trebuie rotite i redimensionate pe ecranul monitorului# 11<12 Sist!mul ,i%ar d! %um!ra'i! Pentru studierea te+nicilor de stocare a valorilor numerice utilizate la calculatoarele de astzi, trebuie mai !nt"i cunoscut sistemul de reprezentare binar# 1#4#1# &dunarea !n binar Pentru a aduna dou valori reprezentate !n notaia binar, se procedeaz astfel: .e adun cifrele din coloana cea mai din dreapta, se scrie cifra cea mai puin semnificativ a acestei sume sub coloan, se transport cea mai semnificativ cifr a sumei (dac e0ist !n urmtoarea coloan din st"nga i se adun apoi coloana respectiv# @@111@1@ R @@@11@11 .e adun cifrele cele mai din dreapta @ i 1 i obinem cifra 1, pe care o scriem sub coloana respectiv# @@111@1@ R@@@11@11 1 .e adun apoi 1 i 1 din coloana urmtoare, obin"nd rezultatul 1@# Dom scrie @ sub coloan i vom transfera cifra 1 deasupra coloanei urmtoare# 1 @@111@1@ R@@@11@11 1@1 .e adun cifrele 1, @ i @ din coloana urmtoare, obin"nd rezultatul 1, i vom scrie 1 sub coloan# Cifrele din coloana urmtoare 1 i 1 dau ca rezultat al adunrii 1@> se va scrie cifra @ sub coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare# 1 @@111@1@ R@@@11@11 @1@1 &dunm cifrele 1, 1 i 1 din aceast coloan i obinem 11> se va scrie cifra 1 sub coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare# 1 @@111@1@ R@@@11@11 1@1@1 .e va continua !n acelai fel, obin"nd !n final: @@111@1@ R @@@11@11 @1@1@1@1 1#4#-# 2eprezentarea fraciilor !n sistemul binar *0emplu :

1:

Pentru e0tinderea notaiei binare, pentru a fi adecvat reprezentrii valorilor fracionare, se va utiliza notaia !n virgul fi0 (radi9 point # &ceasta !nseamn c cifrele de la st"nga virgulei mobile (punctului reprezint partea !ntreag a valorii i sunt interpretate ca !n sistemul binar, iar cifrele din dreapta punctului reprezint partea fracionar a valorii i sunt interpretate !ntr-o manier similar, poziiile lor av"nd asociate ponderi fracionare# &stfel prima poziie din dreapta punctului are atribuit ponderea 1O-, urmtoarea 1O8, apoi 1O; i aa mai departe# 2ezult c regula aplicat anterior rm"ne valabil, fiecare poziie are o pondere alocat de dou ori mai mare dec"t cea a poziiei din dreapta sa# *0emplu :
Daloarea bitului 1 @ 1 1 @ 1

1 0 o optime @ 0 o ptrime 1 0 o /umtate 1 0 unu @ 0 doi 1 0 patru IJI&7 :

$ $ $ $ $ $

O;

@ O1 @ 8 CCO;
1

Hig# 1#1@# ,ecodificarea reprezentrii binare 1@1 1 1@1

Pentru a aduna dou reprezentri binare !n virgul fi0, se vor alinia unul sub altul punctele de separare !ntre partea !ntreag i cea fracionar i se va aplica acelai proces de adunare ca i cel prezentat anterior# *0emplu : 1 @ F @ 1 1 R1 @ @ F 1 1 1 1 1 F @ @ 1 11=12 Sto&ar!a %um!r!lor 5%tr!gi &desea avem nevoie s memorm at"t valori pozitive c"t i valori negative, deci este nevoie de un sistem de notare care s reprezinte ambele categorii de numere (pozitive i negative # .istemele de notaie pentru reprezentarea ambelor categorii de numere pot folosi circuite electronice realizate i utilizate pe scar larg !n cadrul ec+ipamentelor de calcul# Dom prezenta !n continuare dou astfel de sisteme de notaie: %ota'ia 5% !)&!s (e9cess notation i %ota'ia 5% &om+l!m!%t (a'* d! doi (two:s complement notation # 1#9#1# Botaia !n e0ces Dalorile din sistemul de reprezentare !n e0ces sunt codificate utiliz"nd cuvinte binare de aceeai lungime# Pentru realizarea unui sistem de notaie !n e0ces se stabilete mai !nt"i lungimea cuvintelor binare utilizate, apoi scriem una sub alta toate combinaiile posibile !n ordinea !n care ar aprea dac am numra !n binar# %n aceast !niruire observm c primul cuv"nt binar care are pe poziia biului cel mai semnificativ valoarea 1 survine apro0imativ la /umtatea listei# - .e va considera c acest model reprezint valoarea @# - Cuvintele binare care urmeaz reprezint valorile 1, -, 5,### - Cuvintele binare care-l preced sunt utilizate pentru codificarea valorilor negative -1, --, -5,###
-@

Cuv"nt binar 1111 111@ 11@1 11@@ 1@11 1@1@ 1@@1 1@@@ @111 @11@ @1@1 @1@@ @@11 @@1@ @@@1 @@@@

Daloarea reprezentat 9 4 C 8 5 1 @ -1 --5 -8 -C -4 -9 -;

Hig# 1#11# Iabel conversie pentru sistemul de notaie !n e0ces cu opt

Cuv"nt binar 111 11@ 1@1 1@@ @11 @1@ @@1 @@@

Daloarea reprezentat 5 1 @ -1 --5 -8

Hig# 1#1-# .istemul de notaie !n e0ces care utilizeaza cuvinte cu lungimea de trei bii 1#9#-# Botaia !n complement fa de doi Cel mai folosit sistem de reprezentare a numerelor !ntregi !n informatica este %ota'ia 5% &om+l!m!%t (a'* d! doi (two:s complement notation # &cest sistem utilizeaz un numr fi0 de bii pentru reprezentarea valorilor din cadrul sistemului# %n figurile 1#15#1 si 1#15#-# sunt prezentate sistemele !n complement fa de doi bazate pe cuvinte de cod cu lungimea de trei i patru# Pentru construcia unui astfel de sistem se !ncepe cu un ir de bii cu valoarea @ de

-1

lungime adecvat i apoi se numr !n binar p"n c"nd se a/unge la un ir de bii care !ncepe cu un bit @, iar toi ceilali bii sunt 1# Cuvintele obinute astfel reprezint valorile @, 1, -, 5,###

)tiliz"nd cuvinte binare de lungime trei bii : Cuv"nt Daloarea binar reprezentat @11 5 @1@ @@1 1 @@@ @ 111 -1 11@ -1@1 -5 1@@ -8 Hig# 1# 15#1# .isteme de notaie !n complement fa de doi )tiliz"nd cuvinte binare de lungime patru bii : Cuv"nt binar @111 @11@ @1@1 @1@@ @@11 @@1@ @@@1 @@@@ Daloarea reprezentat 9 4 C 8 5 1 @ Cuvant binar 1111 111@ 11@1 11@@ 1@11 1@1@ 1@@1 1@@@ Daloarea reprezentata -1 --5 -8 -C -4 -9 -;

Hig# 1#15#-# .isteme de notaie !n complement fa de doi Cuvintele care reprezint valorile negative se obin !ncep"nd cu un ir de bii cu valoarea 1 i numrul !n sens descresctor, p"n la atingerea cuv"ntului care !ncepe cu un bi 1 i are toi ceilali bii @# Cuvintele astfel obinute reprezint valorile -1, --, -5,### .e observ c bitul de semn, !n notaia !n complement fa de doi, este 1 pentru valorile negative i @ pentru valorile pozitive# Complementul unui cuv"nt binar este cuv"ntul obinut prin sc+imbarea tuturor biilor de 1 !n valoarea @, respectiv a tuturor biilor @ !n 1> cuv"ntul @11@ este complementul lui 1@@1 i invers# %n sistemul de codificare !n complement fa de doi pe 8 bii din figura 1#15#-#, cuvintele care reprezint valorile - i -- se termin am"ndou !n 1@, cuv"ntul corespunztor valorii 1 !ncepe cu @@, iar reprezentarea valorii -- !ncepe cu 11# &ceast observaie conduce la realizarea unui algoritm care s permit obinerea reprezentrii binare pentru valori de semne contrare, dar care au acelai modul#

--

Dom copia cuv"ntul original !ncep"nd de la dreapta p"n dup apariia unui bit cu valoarea 1, apoi vom face complementul biilor rmai (vom sc+imba toi biii 1 rmai !n @ i toi biii @ !n 1 pe msur ce-i copiem#

Botaia valorii 4 !n complement fa de doi cu utilizarea a patru biti

Botaia valorii -4 !n complement fa de doi cu utilizarea a patru bii

@ \ \ \ \ \ \ 1

1 \ \ \ \ \ \ @

1 \ \ \ \ \ \ 1

@ \ \c \ \ \ \ @

.e copiaz biii de la dreapta la st"nga p"n c"nd s-a copiat un bit cu valoarea 1

.e completeaza biti ramasi

Hig# 1#18# Codificarea valorii -4 !n complement fa de doi utiliz"nd 8 bii &ceste proprieti elementare ale sistemelor !n complement fa de doi conduc la obinerea unui algoritm pentru decodificarea reprezentrilor !n complement fa de doi# ,ac modelul (ablonul ce trebuie decodificat are bitul de semn @, se va citi direct valoarea ca i cum cuv"ntul ar fi o reprezentare binar (e0# @11@ reprezint valoarea binar 11@, adic 4 # ,ac ablonul care trebuie decodificat are bitul de semn 1, se va !nelege c valoarea reprezentat este negativ i trebuie gsit modulul acestei valori# <odulul cutat se va determina copiind cuv"ntul original de la dreapta la st"nga, p"n la primul bit egal cu 1 (inclusiv acesta , apoi vom complementa biii rmai i !i vom scrie !n continuare tot de la dreapta la st"nga (l"ng biii de/a copiai , iar !n final vom decodifica cuv"ntul obinut ca i c"nd ar fi o reprezentare binar normal (e0# decodificm 1@1@> bitul de semn este 1, deci valoarea numrului este negativ> convertim cuv"ntul i obinem @11@, ceea ce corespunde valorii 4, deci ablonul original reprezint valoarea -4 #

1#9#5# &dunarea numerelor reprezentate !n complement fa de doi Pentru adunarea valorilor reprezentate !n complement fa de doi se aplic acelai algoritm ca i pentru adunarea !n binar, cu e0cepia faptului c toate cuvintele binare, inclusiv rezultatul, au aceai lungime# &ltfel spus, la adunarea !n complement fa de doi, orice bit suplimentar generat la st"nga rspunsului de ctre un transport final va fi eliminat# ,e e0emplu: @ 1 @ 1 @ 1 1 1 @ @ 1 @ 1 @ 1 1 @ 1 1 1 @ @ 1 @ &ccept"nd aceast convenie, s considerm urmtoarele trei probleme de adunare:
-5

5 @ @ 1 1 R- R@ @ 1 @ @ 1 @ 1C 9 R(-C

(-5 R (--

11@1 R1 1 1 @

1 @ 1 1 -C

@ 1 1 1 R1 @ 1 1 @ @ 1 @

Hig# 1#1C#Probleme de adunare utiliz"nd notaia !n complement fa de %n fiecare caz !n parte, vom codifica valorile utiliz"nd notaia !n complement fa de doi (pe patru bii , vom efectua adunarea proced"nd aa cum s-a descris anterior i vom decodifica rezultatul !napoi la notaia zecimal# .e observ c, prin trecerea la notaia !n complement fa de doi, putem calcula rspunsul corect aplic"nd !n toate cazurile acelai algoritm de adunare# ,ac am folosi te+nicile uzuale, a treia problem ar fi de fapt un proces complet diferit de primele dou> este vorba de operaia de scdere# ,eci, !n calculatorul care utilizeaz notaia !n complement fa de doi se realizeaz numai adunare i negarea biilor# %n consecint, dac !n calculator se dorete scderea lui C (@1@1 din 9 (@111 , mai !nt"i va fi sc+imbat !n -C (1@11 i apoi se va efectua adunarea @111 R 1@11 $ @@1@, ceea ce reprezint valoarea -# %n ceea ce privete !nmulirea, ea este o adunare repetat, iar !mprirea o scdere repetat (e0# 4:- reprezint de fapt de c"te ori poate fi sczut - din 4 fr s se obin un rezultat negativ # &stfel putem efectua toate cele patru operaii aritmetice standard (adunarea, scderea, !nmulirea i !mprirea utiliz"nd un circuit pentru adunare combinat cu un circuit pentru negarea unei valori# 1#9#8# Problema depirii superioare %n oricare din sistemele de numeraie pe care le-am prezentat e0ist o limit privind mrimea pe care pot s o reprezinte valoric# 7a utilizarea notaiei !n complement fa de doi cu cuvinte de patru bii, valoarea : nu are asociat un model (ablon , deci nu putem efectua corect adunarea CR8# J problem similar apare la utilizarea de cuvinte de cinci bii>de e0# s !ncercm s reprezentm valoarea 19, apar erori# &ceste erori se numesc d!+*$iri su+!rioar! (overflow # ,epirea superioar, la utilizarea notaiei !n complement fa de doi, poate apare la adunarea a dou valori negative sau pozitive# ,epirea poate fi detectat prin verificarea bitului de semn al rspunsului# &ltfel spus, dac rezultatul adunrii a dou valori pozitiveO negative apare ca fiind negativOpozitiv, este semnalata depasirea superioara# ,eoarece calculatorul manipuleaz cuvinte mult mai lungi dec"t cele precizate mai sus (5 biiO8 bii , valorile mari pot fi prelucrate fr s apar o valoare de depire (de e0emplu, pentru calculatoarele care utilizeaz cuvinte de 5- de bii pentru stocare, !n notaia !n complement fa de doi, este posibil lucrul cu valori de p"n la -#189#8;5#489, fr apariia depirii superioare # ,ac sunt necesare valori i mai mari, se folosete metoda denumit du,la +r!&i"i! (dou le precision # &ceast metod permite ca lungimea cuvintelor utilizate s fie mrit fa de cea utilizat de obicei de ctre calculator# *0ist i alte soluii, cum ar fi sc+imbarea unitii de msur cu pstrarea preciziei impuse#

-8

11>12 Sto&ar!a %um!r!lor (ra&'io%ar! %n acest caz trebuie memorat i poziia virgulei zecimale nu numai modelele (abloanele de @ i 1# <etoda uzual pentru a face acest lucru se numete %ota'ia 5% #irgul* mo,il* (floating point notation # 1#;#1# Botaia !n virgul mobil Dom e0plica notaia !n virgul mobil printr-un e0emplu care utilizeaz numai un octet pentru efectuarea stocrii# Cel mai semnificativ bit din cadrul octetului este bitul de semn# ,ac bitul de semn este @, valoarea stocat este pozitiv> iar dac este 1, valoarea stocat este negativ# %mprim cei apte bii rmai !n dou grupuriOc"mpuri: &6m+ul !)+o%!%tului (e9ponent field i &6m+ul ma%tis!i (mantissa fied # Considerm trei bii, care urmeaz dup bitul de semn, ca fiind c"mpul e0ponentului, iar cei patru bii rmai ca fiind c"mpul mantisei : bitul de semn e0ponent mantisa Hig# 1#14# *lemente ale notaiei !n virgul mobil .e poate e0plica semnificaia acestor c"mpuri consider"nd urmtorul e0emplu# Jctetul conine irul de bii @11@1@11# ,eci, bitul de semn $ @, e0ponentul $ 11@, mantisa $ 1@11# Pentru a decodifica octetul, e0tragem mai !nt"i mantisa i plasm !n st"nga ei o virgul zecimal, obin"nd F1@11# *0tragem apoi coninutul c"mpului e0ponentului (11@ i-l interpretm ca pe un !ntreg stocat utiliz"nd metode !n e0ces pe trei bii, !n cazul nostru reprezint valoarea pozitiv -# &cest fapt ne precizeaz c trebuie s mutm virgula la dreapta cu doi bii (un e0ponent negativ !nseamn c virgula trebuie deplasat la st"nga # %n cazul nostru obinem : 1@ F 11 ceea ce !nseamn -5O8# Jbservm c bitul de semn din e0emplul considerat este @, deci valoarea reprezentat este pozitiv# Dom trage concluzia c @11@1@11 reprezint valoarea -5O8# Pentru a stoca o valoare utiliz"nd notaia !n virgul mobil, vom proceda !n sens invers dec"t !n prezentarea de mai sus# ,e e0emplu, pentru a codifica valoarea 11O;, o vom e0prima mai !nt"i in notaia binar 11@@1 vom copia apoi cuv"ntul binar !n c"mpul rezervat mantisei de la st"nga la dreapta, !ncep"nd cu primul bit diferit de zero din reprezentarea binar# Jctetul arat astfel : 1 9 9 1 &cum trebuie completat c"mpul e0ponentului# Be imaginm coninutul c"mpului mantisei av"nd o virgul zecimal la st"nga i vom determina numrul de bii i direcia !n care trebuie s fie deplasat virgula pentru a se obine numrul binar iniial# %n e0emplul nostru, observm c virgula din 11@@1 trebuie deplasat cu un bit la dreapta pentru a obine 1#@@1# ,in aceast cauz, e0ponentul trebuie s aib valoarea pozitiv 1> vom plasa combinaia 1@1 (care este reprezentarea valorii pozitive 1, !n e0ces cu patru !n c"mpul e0ponentului: 1 @ 1 1 @ @ 1
-C

C"mp \

e0ponent %n final vom !nscrie @ !n bitul de semn, deoarece valoarea stocat este pozitiv> la sf"rit octetul arat astfel : @ 1 @ 1 1 @ @ 1 semn 1#;#-# *rori de rotun/ire . studiem !ncercarea stocrii valorii -CO; utiliz"nd sistemul !n virgul mobil pe un octet (prezentat anterior # .criem mai !nt"i valoarea -CO; !n binar : 1@#1@1 7a copierea acestui rezultat !n c"mpul mantisei, vom descoperi c nu avem suficient spaiu i, ca urmare, ultimul 1 (cel care orespunde ultimului 1O; se va pierde# -CO; E 1 9 1 1 9 1 E E E E 1 9 1 9 bit bit pierdut semn e0ponent mantisa Hig# 1#19# Codificarea valorii -CO; ,ac ignorm aceast problem i continum completarea c"mpului e0ponentului i a bitului de semn, obinem cuv"ntul: 9 bit de semn 1 1 9 1 9 1 9

e0ponentul - pentru notaia !n e0ces pentru e0primare pe 8 bii

&cest cuv"nt !ns reprezint valoarea -1O-. Ceea ce s-a !nt"mplat poart numele de !roar! d! rotu%.ir! ;round 0 off error<* cauzat !n acest caz de lungimea prea mic a c"mpului de primire a mantisei# .oluia pentru rezolvarea acestei probleme este creterea dimensiunii c"mpului mantisei, ceea ce se !nt"mpl !n cazul calculatoarelor reale#,e obicei, pentru stocarea valorilor !n virgul mobil se utilizeaz cel puin 5- bii> dac nici !n acest mod nu se rezolv problema, se poate aplica conceptul de dubl precizie# 11?12 Erori d! &omu%i&a'i! 7a transferarea informaiilor !ntre diverse componente ale calculatorului sau !n cazul stocrii datelor, e0ist posibilitatea ca irul de bii primit !napoi s nu fie identic cu cel original# Pentru rezolvarea unor asemenea probleme, au fost dezvoltate diferite te+nici de codificare care permit detectarea i corectarea erorilor# %n prezent, datorit faptului c aceste te+nici de codificare sunt implementate pe scar larg !n componentele inteme ale sistemelor de

-4

calcul, ele sunt invizibile pentru cei care utilizeaz calculatoarele, dar pe ele se bazeaz fiabilitatea ec+ipamentelor actuale# 1#:#1# 3ii de paritate J metod simpl pentru detectarea erorilor se bazeaz pe urmatoarea regula : dac fiecare cuv"nt binar manipulat are un numr impar de bii de 1, apariia unui cuv"nt cu un numr par de bii de 1 semnaleaz o eroare# Pentru a folosi aceast regul, avem nevoie de un sistem !n care fiecare cuv"nt binar s conin un numr impar de bii 1, ceea ce se obine uor prin adugarea unui bit suplimentar, ,itul d! +aritat! =parit" it # 3itul de paritate se plaseaz pe poziia bitului cel mai semnificativ, deci codul de opt bii devine un cod de nou bii# 3itul de paritate va lua valoare @ sau 1, astfel !nc"t cuv"ntul rezultat s aibe un numr impar de 1# 3it de paritate 1 Codul & . C I I pentru litera A conine un numr par de bii 1 @ 1 @ @ @ @ @ 1

Cuv"ntul complet are un numr impar de bii# 3it de paritate @ @ Codul & . C I I pentru litera 1 conine un numr impar de bii 1 1 @ @ 1 @ @ 1

Cuv"ntul complet are un numr impar de bii# Hig# 1#1;# <odificarea codurilor &.CII pentru caracterele A si 1, astfel !nc"t s aibe paritatea impar ,up aceast modificare ( precizat in figura de mai sus pentru caracterele A i 1 , ambele cuvinte vor avea nou bii i conin un numr impar de bii 1# ,up aceast modificare a sistemului de codificare, un cuv"nt cu un numr par de bii 1 semnaleaz faptul c s-a produs o eroare i deci cuv"ntul respectiv este incorect# .istemul de paritate descris poart numele de +aritat! im+ar* =odd parit"<* deoarece fiecare cuv"nt conine un numr impar de bii 1# J alt te+nic utilizeaz +aritat!a +ar* =even parit"<. %n aceast te+nic, fiecare cuv"nt trebuie s conin un numr par de bii 1, iar prezena unei erori este semnalat de apariia unui cuv"nt cu un numr impar de bii 1# _irurile lungi de bii sunt !nsoite adesea de un grup de bii de paritate dispui !ntr-un o&t!t d! &o%trol =chec, "te<. Printre variantele principiului de verificare cu octet de control, se numr sc+emele de detecie a erorilor numite s!m%! d! &o%trol =chec,sums< i &o%trol d! &oduri &i&li&! (c"clic redundanc" chec, C2C # 1#:#-# Coduri corectoare de erori 3itul de paritate permite detectarea unei erori singulare, dar nu furnizeaz informaia necesar pentru corectarea erorii# Pot fi, !ns, concepute &oduri &or!&toar! d! !rori (error corecting codes care nu numai c detecteaz erorile, dar le i corecteaz#

-9

Intuitiv, se poate crede c nu poate fi corectat informaia dintr-un mesa/, dec"t dac se cunoate informaia coninut de mesa/#Contrarul acestei afirmatii se va demonstra in continuare# Pentru a !nelege modul de funcionare a codului corector de erori, vom defini distana ?emming dintre dou numere binare# %istan#a >emming ntre dou numere inare este numrul de i#i prin care difer cele dou cuvinte.

.imbol & 3 C , * H 6 ?

C o d @ @ @ @ @ @ @ @ 1 1 1 1 @ 1 @ @ 1 1 @ 1 1 1 @ @ 1 @ @ 1 1 @ 1 @ 1 @ @ 1 1 1 @ 1 @ 1 1 1 1 @ 1 @

Hig# 1#1:# *0emplu de cod corector de erori *0emplu: !n figura de mai sus, distana ?emming dintre simbolurile & i 3 !n codul prezentat este patru, dintre 3 i C este trei# Caracteristica important a codului prezentat este c oricare dou cuvinte de cod sunt separate de o distan ?emming de cel puin trei biti# &ltfel spus, trebuie s modificm cel puin patru bii !n cod pentru a apare un alt cuv"nt din lista propus de coduri# . presupunem c recepionm @1@1@@# ,ac comparm acest cuv"nt binar cu lista de coduri propus !n fig# 1#1:, obinem distanele din figura 1#-@ Dom putea trage concluzia c a fost transmis caracterul ,, acesta fiind cel mai apropiat de codul recepionat# Cu c"t distana ?emming dintre dou coduri utilizate este mai mare, cu at"t de pot detecta i corecta mai multe erori# Caracter & 3 C , * H 6 ,istana dintre cuv"ntul recepionat i caracterele codului propus 8 5 1 5 C -;

Hig# 1#-@# ,ecodificarea cuv"ntului @1@1@@ utiliz"nd codul din fig# 1#1:

21

MANIPULAREA DATELOR

2111 U%itat!a &!%tral* d! +r!lu&rar! Circuitele care realizeaz diferite operaii asupra datelor nu sunt conectate direct la celulele memoriei principale# &ceste circuite sunt grupate !n u%itat!a &!%tral* d! +r!lu&rar! (central processing unit 3$5 # U%itat!a &!%tral* d! +r!lu&rar! (CPU se compune din: unitatea aritmetico-logic (aritmetic2logic unit conine circuitele care realizeaz manipularea datelor > unitatea de comand (control unit conine circuitele utilizate pentru coordonarea activitii calculatorului# registri (registrele %n figura de mai /os este prezentat organizarea unui calculator 'simplu( construit !n /urul unei magistrale# )nitatea Central de Prelucrare ()CPOCP) P Control Processing )nit , YcreierulT calculatorului, are rolul de a e0ecuta programele pstrate !n memoria principal prin e0tragerea instruciunilor componente ale unui program, e0aminarea lor i e0ecuia lor secvenial (una dup alta # Componentele sunt conectate printr-o magistral = us<, format dintr-o mulime de ci paralele prin care sunt transmise adrese, date i semnale de control# <agistralele se pot afla at"t !n e0teriorul )CP, conect"nd-o cu memoria i dispozitivele de intrareOieire, c"t i !n interiorul )CP#

U%itat!a d! &o%trol U%itat!a aritm!ti&* $i logi&* R!gistri M!moria +ri%&i+al* 1 1 1 1 1 1 Hig# -#1 - Jrganizarea unui calculator simplu D i s & Im+rimata

Dis+o"iti#! d! I3E

magistrala

-:

)CP este alctuit din mai multe componente : )nitatea de control care rspunde de e0tragerea instruciunilor din memoria principal i de determinarea tipului 'lor( fiecruia#

)nitatea aritmetic i logic e0ecut operaii necesare pentru !ndeplinirea instruciunilor (.I logic, .&) logic, Q # )CP conine de asemenea i o memorie special foarte rapid, folosit pentru depozitarea rezultatelor temporare, precum i a unor informaii de control# &ceast memorie este format dintr-un numr de registre, fiecare cu o anumit dimensiune i o anumit funciune# Principalele registre sunt: &o%torul d! +rogram ($3 ? $rogram 3omputer P el indic urmtoarea instruciune care va fi e0tras pentru e0ecuie> r!gistrul d! i%stru&'iu%i (1nstruction Register ? 1R , !n care se pstreaz instruciunea !n e0ecuie# Interfaa C P ) O <emorie Iransferarea cuvintelor binare !ntre unitatea central a unui calculator i memoria principal se realizeaz prin conectarea acestora printr-un grup de fire denumite magistral* U%itat!a &!%tral* d! +r!lu&rar! M!moria +ri%&i+al* Magistral*

)nitatea aritmeticologic
2egistri

)nitatea de comand

Hig# -#-# &r+itectura unitate central de prelucrareOmemorie principal Prin intermediul magistralei, unitatea central poate s e0trag (s citeasc Os plaseze (s scrie date dinO!n memoria principal, furniz"nd adresa celulei de memorie dorite, !mpreun cu un semnal de citire# &naliz"nd acest mecanism, observm c presupune at"t implicarea unitii de comand c"t i a unitii aritmetico-logice# Orga%i"ar!a CPU2ului Fo% N!uma%% /ti+i&*0 &ceast parte se numete calea de date (data path i include p"n la 5- de registre, )nitatea aritmetic i logic ()&7 i mai multe magistrale de legtur# 2egistrele trimit datele !n cele dou registre de intrare ale )&7, notate cu & i 3, care le pstreaz !n timp ce )&7 face calculele#
A G B

A B A B U%itat!a aritm!ti&* $i logi&* A G B

R!gistr!

R!gistr! d! i%trar! UAL

5@

R!gistru d! i!$ir! UAL

Hig# -#5# - Calea de date a unei maini Don Beumann (adunarea ,up ce )&7 e0ecut cu datele de intrare, adunri, scderi i alte operaii simple, transmite rezultatul !n registrul de ieire# <a/oritatea instruciunilor e0ecutate de )&P sunt de tip: registru-memorie, registru-registru# Instruciunile registru-memorie permit cuvintelor din memorie s fie !ncrcate !n registre, de unde sunt folosite ca date de intrare pentru )&7 !n instruciunile urmtoare# Instruciunile registru-registru e0trag doi operanzi din registre, !i aduc !n registrele de intrare )&7, e0ecut o operaie oarecare asupra lor (adunare, .I logic, Q i depun rezultatul !napoi !ntr-unul din registre# &cest ultim proces se numete ciclul cii de date (%ata path c"cle i reprezint YinimaT celor mai multe )CP-uri# Cu c"t acest ciclu este mai rapid, cu at"t maina merge mai repede# 2121 E)!&u'ia i%stru&'iu%ilor )CP e0ecut fiecare instruciune printr-o serie de pai mici, dup cum urmeaz : transformarea instruciunii urmtoare din memorie !n registrul de instruciuni> sc+imbarea contorului de program, pentru a indica instruciunea urmtoare> determinarea tipului instruciunii proaspt e0trase> dac instruciunea are nevoie de un cuv"nt din 'spaiul( de memorie, determinarea locului unde se gsete acesta> e# e0tragerea cuv"ntului !ntr-unul din registrele )CP, dac este cazul> f# e0ecutarea instruciunii> g# reluarea pasului a pentru a !ncepe e0ecuia instruciunii urmtoare# &ceast secven 'de pai( se mai numete ciclul !)trag!r!Cd!&odi(i&ar!C!)!&u'i! (fetch? decode?e9ecute # %n fig# -#8 este prezentat !n detaliu procesul adunrii a dou valori stocate !n memorie# Instruciuni !n cod main Instruciunile prezentate !n fig# -#8 reprezint instruciuni e0ecutabile de ctre unitatea central de prelucrare i poart denumirea instruciunii 5% &od ma$i%* (machine instructions # C"nd ne referim la instruciunile cunoscute de un calculator, observm c ele pot fi clasificate !n trei categorii (grupe : instruc#iuni de transfer de date, instruc#iuni aritmetico0 logice, instruc#iuni de control# Pasul 11 .e citete din memorie una din valorile care trebuie adunate i se plaseaz !ntr-un registru# Pasul 21 .e citete din memorie cealalt valoare care trebuie adunat i se plaseaz !ntr-un alt registru# Pasul 1 .e activeaz circuitul de adunare, av"nd ca intrri
51

a# b# c# d#

registrii utilizai !n paii - i -# Pasul :1 .e stoc+eaz rezultatul !n memorie# Pasul ;1 .top# Hig# -#8# &dunarea unor valori stocate !n memorie

Instruciuni de transfer de date Instruciuni care realizeaz deplasarea datelor dintr-un loc !n altul, dar fr dispariia lor din poziia iniial# Paii 1, - i 8 din fig# -#8 intr !n aceast categorie# Iermenii tra%s(!r sau mutar! sunt mai puin adecvai> mai e0aci ar fi &o+i!r! sau &lo%ar!# Cererea de !ncrcare a unui registru de uz general cu coninutul unei celule de memorie este desemnat de o instruciune 7J&,, iar transferul coninutului unui registru !ntr-o celul de memorie se face prin intermediul unei instruciuni .IJ2*# %n fig# -#8 paii 1 i - reprezint instruciuni 7J&,, iar pasul 8 este o instruciune .IJ2*# J parte important a instruciunilor de transfer se refer la operaii (comenzi !ntre dispozitive !n afara CP) i memoria intern# &ceste instruciuni se ocup de operaiile de intrareOieire (input2 output 0 12' din calculator i uneori plasate !ntr-un grup distinct de instruciuni# Instruciuni aritmetice i logice Instruciunile care indic uniti de comand s solicite unitii aritmetico-logice efectuarea unei anumite operaii# Pasul 5 din fig# -#8 face parte din aceast categorie de instruciuni# Jperaiile logice posibile de efectuat sunt: &B,, J2 i KJ2# Jperaii care realizeaz deplasarea la dreapta sau la st"nga a coninutului registrilor: .?IHI, 2JI&I*# Dor fi dataliate in subcapitolul -#9 Instruciuni de control Instruciuni care nu manipuleaz date, ci diri/eaz modul de e0ecuie al programelor# Pasul C din fig# -#8 face parte din aceast categorie ca un caz elementar# &ceast familie de instruciuni conine i instruciunile de salt (A)<P, 32&BC? care realizeaz aciune ca unitatea de comand s e0ecute alt instruciune dec"t cea care urmeaz# *0ist dou variante de instruciuni de salt: salt %!&o%di'io%at i salt &o%di'io%at# Ca e0emplu, pentru saltul &o%di'io%at prezentm secvena urmtoare: Pasul 11 .e !ncarc (7J&, un registru cu o valoare din memorie# Pasul 21 .e !ncarc (7J&, alt registru cu alt valoare din memorie# Pasul 1 ,ac a doua valoare este zero salt (A)<P la pasul 4# Pasul :1 .e !mparte coninutul primului registru la coninutul celui de-al doilea registru i se depune rezultatul !n al treilea registru# Pasul ;1 .e stoc+eaz (.IJ2* coninutul celui de-al doilea registru !n memorie# Pasul <1 .top# Hig# -#C# %mprirea a dou valori stocate !n memorie

5-

.altul condiionat se utilizeaz c"nd se dorete !ndeplinirea unei anumite condiii# Primele calculatoare erau foarte puin fle0ibile, deoarece programul e0ecutat de fiecare dispozitiv era cablat !n unitatea de comand, ca o parte a sistemului# )na din soluiile utilizate !n primele calculatoare electronice pentru a dob"ndi mai mult fle0ibilitate a constituit-o proiectarea unitilor de control, astfel !nc"t diversele blocuri s poat fi reconectate dup nevoie# &cest lucru se poate realiza utiliz"nd o plac de cone0iuni realizate pe principiul plcilor de comutare (utilizate !n centralele telefonice # Instruciunile ca iruri de bii )n pas !nainte s-a fcut odat cu !nelegerea faptului c, !n mod similar datelor, programele pot fi codificate i stocate !n memoria principal a calculatorului# Programul unui calculator poate fi sc+imbat prin modificarea coninutului memoriei, !n loc s se reconecteze blocurile unitii de comand a calculatorului# Conceptul de program stocat !n memoria calculatorului a devenit !n prezent situaiastandard de lucru# Pentru a-l putea aplica, calculatorul e proiectat astfel !nc"t s recunoasc anumite modele de bii ca reprezent"nd diferite instruciuni# &ceast colecie de instruciuni, !mpreun cu sistemul de codificare, poart numele de lim,a.2ma$i%* (machine language i definete modul de comunicare al algoritmului pe care calculatorul trebuie s-l e0ecute# J instruciune-main, din punctul de vedere al codificrii, const, de obicei, din dou pri: &6m+ul &odului d! o+!ra'i! (operation code 0 op.code i &6m+ul o+!ra%dului (operand code # _irul de bii care apare !n c"mpul Mop-codeM-ului specific operaia elementar (.IJ2*, .?IHI, KJ2, A)<P a crei e0ecuie e solicitat de instruciune# <odelul de bii pentru codul operandului ofer detalii asupra operaiei respective (*0#: pentru operaia de tip .IJ2*, informaia din c"mpul operandului precizeaz registrul care conine datele ce trebuie stocate precum i precizarea celulei de memorie !n care se vor stoca ele # )n limba/ tipic main %n continuare vom preciza cum ar trebui codificate instruciunile unui calculator obinuit# Pentru aceasta propunem un calculator prezentat sc+ematic mai /os# U%itat!a &!%tral* d! +r!lu&rar! M!moria +ri%&i+al* )nitatea aritmeticologic \\ \ )nitatea de comand \ \2egistri @\ \ 1\ \ -\ H 1111 &dres @@ : Magistral* @1 : @- : @5 : # HH : Hig# -#4# &r+itectura calculatorului model Calculatorul are 14 registri de uz general, numerotai de la @ la H !n +e0azecimal, iar memoria sa conine -C4 celule# Hiecare celul de memorie este desemnat individual (identificat printr-un numr !ntreg !ntre @ i -CC# Dom considera c at"t registrii c"t i celulele de memorie au mrimea de opt bii# ### Celul de memorie

\
;\

55

Coduri de operaie Hiecare instruciune este codificat pe un numr de 14 bii, reprezentai cu a/utorul a patru cifre +e0azecimale (vezi figura urmatoare #

Patru &i(r! 4!)a"!&imal! /doi o&t!'i0 ``````````````````````````` \ \ \ \ \ \ \ \ \ \ `````````` ````````````````` C"mpul operanzilor (furnizeaz detalii despre operaie C"mpul codului de operaii (specific operaia care trebuie efectuat Hig# -#9# Hormatul unei instruciuni main pentru limba/ul restr"ns Codul de operaie al fiecrei instruciuni este reprezentat de primii patru bii sau de prima cifr +e0azecimal# %n ane0a 1#- la acest capitol (Lim,a.ul ma$i%* este prezentat lista complet a instruciunilor (un subset de doisprezece instruciuni # &stfel, orice cod de instruciune care !ncepe cu cifra +e0azecimal 5 (@@11 se refer la o instruciune de stocare (.IJ2* i aa mai departe# Calculatorul dispune de dou instruciuni de adunare &,,: una pentru adunarea reprezentrilor !n complement fa de doi i una pentru adunarea reprezentrilor !n virgul mobil# Iratarea este diferit datorit faptului c adunarea cuvintelor binare care reprezint valori codificate cu notaia !n complement fa de doi necesit e0ecutarea unor aciuni diferite fa de cele de la adunarea valorilor reprezentate !n virgul mobil# Jperanzi Jperandul const din trei cifre +e0azecimale (1- bii i !n fiecare caz clarific instruciune general furnizat de c"mpul codului de operaie (e0cepie face instruciunea ?&7I # *0# ,ac prima cifr +e0azecimal a unei instruciuni este 1 (opcodul pentru !ncrcarea datelor din memorie , urmtoarea cifr +e0azecimal a instruciunii va preciza !n care registru trebuie !ncrcat valoarea, iar ultimile dou cifre +e0azecimale vor indica din care celul de memorie este preluat valoarea#

58

Instruciunea 1589 (+e0azecimal este decodificat astfel : 7J&, !n registrul , coninutul celulei de memorie de la adresa 89# Instruciunea 9@CC (+e0azecimal este decodificat astfel: .e e0ecut J2 cu coninutul registrului C i al registrului ; i se pune rezultatul !n registrul 9# %n cazul instruciunii A)<P (cod +e0azecimal 3 , prima cifr +e0azecimal indic registrul care trebuie comparat cu registrul 9# ,ac acest registru are acelai coninut ca i registrul 9, se sare la instruciunea de la adresa indicat de ultimele dou cifre +e0azecimale din c"mpul operandului# &ltfel se continu e0ecuia normal a programului# %n acest mod se e0ecut un salt condiionat# ,ac prima cifr +e0azecimal din c"mpul operandului este 9, instruciunea cere ca registrul 9 s fie comparat cu el !nsui, saltul va fi !ntotdeauna efectuat# %n consecin orice instruciune al crei cod !ncepe cu cifra +e0azecimal 3@ va fi interpretat ca un salt necondiionat# *0emplu de program Dom prezenta !n continuare un program codificat cu instruciunile precizate !n &ne0a 1#-# pentru fig# -#8 din acest capitol# Pasul 1 1;<C Pasul 2 Pasul Pasul : Pasul ; 1<<D ;9;< 9<E C999

Hig# -#; Program codificat cu instructiuni din &ne0a 1#21 12 E)!&u'ia +rogram!lor )n program este MurmritM de calculator prin copierea instruc-iunilor din memorie, !n unitatea de comand, pe msur ce are nevoie de ele# Hiecare instruciune a/uns !n unitatea de comand este decodificat i e0ecutat# Jrdinea de e0tragere a instruciunilor din memorie corespunde ordinii !n care sunt stocate, cu e0cepia c"nd o instruciune de salt (A)<P specific altfel# Pentru !nelegerea e0ecutrii unui program trebuie studiat amnunit unitatea de comand din interiorul CP)# &ceasta ()C conine doi registri cu destinaie special: &o%torul +rogramului (program counter i r!gistrul d! i%stru&'iu%i (instruction register , conform fig# -#8# 2egistrul contorului programului conine adresa urmtoarei instruciuni care trebuie e0ecutat, permi"nd calculatorului s urmreasc locul !n care se afl !n program# 2egistrul de instruciuni este utilizat pentru stocarea instruciunilor !n curs de e0ecuie# )nitatea de comand !i realizeaz sarcinile repet"nd continuu un algoritm, denumit &i&lul ma$i%ii (machinec"cle , care const !n 5 pai: !)trag!r! (fetch , d!&odi(i&ar! i !)!&u'i! (vezi fig# -#: # (1 E)trag! urmtoarea instruciune din de memorie (conform contorului programului i apoi incrementeaza (D!&odi(i&* irul de bii din registrul instructiuni ((
((1 5C

controlul programului#
(5

(5 *fectueaz operaia cerut de instruciunea stocat !n registrul de instruciuni Hig# -#:# Ciclul main %n timpul pasului de e0tragere, unitatea de comand solicit memoriei principale s-i furnizeze urmtoarea instruciune care va fi e0ecutat# )nitatea tie unde se afl urmtoarea instruciune !n memorie, deoarece adresa acesteia se afl !n registrul contorului programului# )nitatea de comand plaseaz instruciunea recepionat din memorie !n registrul su de instruciuni i incrementeaz apoi contorul programului astfel !nc"t acesta s conin adresa urmtoarei instruciuni# &v"nd astfel instruciunea !n registrul de instruciuni, unitatea de comand !ncepe faza de decodificare din ciclul mainii# %n acest moment, ea analizeaz c"mpurile codului de operaie i operanzilor pentru determinarea aciunilor ce trebuie efectuate# ,up decodificarea instruciunii, unitatea de comand intr !n faza de e0ecuie# ,e e0emplu, dac instruciunea se refer la !ncrcarea datelor din memorie, unitatea de comand realizeaz (efectueaz operaia de !ncrcare> dac instruciunea se refer la o operaie aritmetico-logic, unitatea de comand activeaz unitatea aritmetico-logic, av"nd ca intrri registrii corespunztori# ,up e0ecuia oricrei instruciuni, unitatea de comand !ncepe un nou ciclu al mainii cu faza de e0tragere# ,eoarece contorul programului a fost incrementat la sf"ritul fazei precedente de e0tragere, el furnizeaz din nou unitii de comand adresa corect a instruciunii# *0emplu de e0ecuie a unui program . studiem ciclul mainii utilizat pentru programul codificat in &ne0a 1#<ai !nt"i trebuie s stocm programul !n memorie# Dom presupune c programul este stocat la adrese succesive de memorie !ncep"nd cu adresa &@ !n +e0azecimal# %n fig# -#1@ este prezentat coninutul zonei de memorie# &dresa &@ &1 &&5 &8 &C &4 &9 &; &: Coninut 1C 4C 14 4, C@ C4 5@ 4* C@ @@

Hig# -#1@# .tocarea !n memorie a programului de MadunareM, !ncep"nd de la adresa A 0 &v"nd programul astfel memorat, putem provoca e0ecuia lui plas"nd adresa primei instruciuni (&@ !n registrul contorului programului i pornind calculatorul# )nitatea de comand !ncepe faza de e0tragere !ncrc"nd instruciunea de la adresa &@ (1C4C , plas"nd-o !n registrul su de instruciuni#
54

Instruciunile utilizate de calculatorul propus !n e0erciiu au lungimea de l4 bii (- octei # ,in acest motiv, instruciunea care trebuie e0tras ocup celulele de memorie de la adresele &@ i &1# .e !ncarc astfel coninutul ambelor celule de memorie i se plaseaz datele !n registrul de instruciuni# &poi unitatea de comand crete cu - valoarea din contorul programului, !nc"t registrul va conine acum adresa urmtoarei instruciuni# 7a sf"ritul fazei de e0tragere din primul ciclu al mainii, registrul contorului programului i registrul de instruciuni conin urmtoarele: contorul programului : & registrul de instruciuni : 1C4C# )nitatea de comand, analiz"nd instruciunea din registrul (sau de instruciuni, trebuie s !ncarce !n registrul C coninutul celulei de memorie de la adresa 4C# &ceast activitate de !ncrcare este efectuat !n timpul fazei de e0ecuie, dup care unitatea de comand revine la faza de e0tragere din urmtorul ciclu al mainii# %n timpul acestei faze de e0tragere, unitatea de comand obine instruciunea 144, din cele dou celule succesive de memorie de la adresa &-, plaseaz aceast instruciune !n registrul su de instruciuni i incrementeaz apoi contorul programului la valoarea &8# Dalorile din registrul contor al programului i din registrul de instruciuni devin urmtoarele: contorul programului : &8 registrul de instruciuni : 144,# )nitatea de comand decodific instruciunea 144, i afl c trebuie s !ncarce !n registrul 4 coninutul celulei de memorie de la adresa 4,# %n faza de e0ecuie !n registrul 4 este !ncrcat valoarea cerut# ,eoarece contorul programului conine acum valoarea &8, unitatea de comand e0trage urmtoarea instruciune care !ncepe la aceast adres# %n registrul de instruciuni este plasat codul C@C4, iar contorul programului este incrementat la valoarea &4# )nitatea de comand decodific acum coninutul registrului de instruciuni i intr !n faza de e0ecuie, realiz"nd adunarea !n complement fa de doi, av"nd ca intrri registrii C i 4# %n faza de e0ecuie, unitatea aritmetico-logic efectueaz operaia de adunare cerut, las rezultatul !n registrul @ (dup care cere unitatea de comand i raporteaz unitii de comand terminarea operaiei# ,up aceast unitate de comand !ncepe alt faz de e0tracie dintr-un ciclu al mainii# *0trage, cu a/utorul contorului de programe, urmtoarea instruciune (5@4* din cele - celule de memorie succesive, !ncep"nd de la adresa &4 i incrementeaz contorul programului la &;# Instruciunea este decodificat i e0ecutat !n timpul urmtoarelor faze# 2ezultatul adunrii este plasat !n celula de memorie de la adresa 4*# *ste e0tras urmtoarea instruciune care !ncepe de la adresa de memorie &; i contorul programului este incrementat la valoarea &&# Coninutul registrului de instruciuni (C@@@ este decodificat, el fiind instruciunea de oprire# %n consecin, programul se termin i calculatorul se oprete !n timpul urmtoarei faze de e0ecuie# J asemenea list de instruciuni poate e0ecuta i omul# ,iferena esenial dintre oameni i calculatoare, !n ceea ce privete e0ecuia unor asemenea liste, este dat de acuratee i viteza de e0ecuie# Programe i date <ai multe programe pot fi stocate simultan !n memoria principal a unui calculator, at"t timp c"t ocup zone de memorie diferite, iar prin setarea adecvat a contorului programului se poate determina care program se va e0ecuta la pornirea calculatorului# ,eoarece datele sunt stocate de asemenea !n memorie i sunt codificate tot cu cifre binare (@ i 1 , calculatorul nu poate face distincia !ntre date i programe#
59

*0istena unui aspect comun pentru programe i date permite unui program s manipuleze alte programe (sau c+iar pe el !nsui ca pe nite date#

21:12 Alt! i%stru&'iu%i Pentru a avea o perspectiv mai larg, s studiem alte alternative la ar+itectura de calculator prezentat# &r+itecturi CI.C i 2I.C Proiectarea unui limba/-main implic luarea multor decizii, una dintre ele fiind s construim: o masina cu structur comple0 care s poat decodifica i e0ecuta o larg varietate de instruciuni> o main mai simpl care s dispun de un set limitat de instruciuni# Prima structur se numete &al&ulator &u s!t &om+l!) d! i%stru&'iu%i (comple9 instruction set computer 0 3143 , iar a doua opiune conduce la realizarea unui &al&ulator &u s!t r!str6%s d! i%stru&'iu%i (reduced instruction set computer 0 R143 # Cu c"t structura procesorului este mai comple0 cu at"t mai simpl este programarea, !n timp ce !n cazul calculatorului mai simplu aceeai operaie ar necesita o secven de mai multe instruciuni# Pe de alt parte, structurile comple0e sunt mai greu i mai scump de realizat, utilizarea lor fiind mai costisitoare# %n prezent pe pia e0ist at"t procesoare CI.C c"t i 2I.C# Procesul Pentium (Intel Corporation reprezint un e0emplu de ar+itectur CI.C> seriile de procesoare PoSer PC (dezvoltate de &pple Computer I3< i <otorola urmeaz ar+itectura 2I.C# RISC #s1 CISC %n anii L9@, proiectanii de calculatoare au !ncercat acoperirea Yspaiului semanticT dintre posibilitile calculatoarelor i necesitile limba/elor de programare de nivel !nalt# Cu greu s-ar fi g"ndit atunci cineva s proiecteze maini mai simple# %n 1:;@ s-a !nceput proiectarea cip-urilor# D7.I pentru )CP fr interpretator, apr"nd termenul de 2I.C pentru cip-ul de unitate central# &ceste noi procesoare erau mult mai diferite dec"t procesoarele de p"n atunci, !n sensul c aceste noi )CP-uri nu trebuiau s pstreze compatibilitatea cu produsele e0istente# %n aceast situaie, proiectanii erau liberi s aleag noi seturi de instruciuni care ma0imizau performanele globale ale mainii# Conta mai puin c"t dura o instruciune, dar conta numrul de instruciuni care puteau fi lansate !n e0ecuie !ntr-o secund# Caracteristica pregnant a acestor procesoare a fost numrul relativ mic de instruciuni disponibile (cca# C@ comparativ cu numrul mult mai mare de instruciuni ale altor procesoare de calculatoare ale firmelor I3<, ,3C (cca# -C@-5@@ # &cronimul folosit pentru procesoarele calculatoarelor cu set redus de instruciuni este 2I.C (Calculator cu .et 2edus de Instruciuni P Reduced 1nstruction 4et 3omputer # .-ar putea crede c datorit unor avanta/e oferite de te+nologia 2I.C, mainile 2I.C ar fi trebuit s detroneze mainile CI.C, dar nu s-a !nt"mplat aa# Care au fost motivele care au generat aceast situaie: compatibilitatea cu modelele anterioare> dezvoltarea unor componente softSare dedicate gamei de procesoare Intel> procesoarele Intel au !ncorporat instruciuni 2I.C (un nucleu 2I.C !ntr-o ar+itectur CI.C# C+iar dac aceast abordare +ibrid nu este la fel de rapid ca i cea

5;

2I.C YpuraT, le permite obinerea unei performane globale competitive i rularea vec+iului softSare nemodificat# 21;1 Pri%&i+ii d! +roi!&tar! +!%tru &al&ulatoar!l! a&tual! (principiile proiectrii 2I.C P R143 design principles : 1 Ioate instruciunile sunt e0ecutate direct de ctre +ardSare Instruciunile uzuale nu sunt interpretate prin microinstruciuni# *liminarea unui nivel de interpretare conduce la creterea ma/oritii instruciunilor# pentru seturile de instruciuni CI.C, instruciunile mai complicate pot fi YsparteT !n pri separate, aciune care !ncetinete maina, dar pentru instruciuni care apar mai rar# - <a0imizeaz rata de lansare !n e0ecuie a instruciunilor %n calculatoarele moderne, lansarea !n e0ecuie a c"t mai multe instruciuni pe secund este problema principal# Procesorul <IP. (Millions of 1nstructions per 4econd realizeaz paralelismul e0ecuiei instruciunilor, ceea ce conduce la !mbuntirea performanelor# 5 Instruciunile trebuie s fie uor de decodificat ,ecodificarea instruciunilor individuale, pentru a determina resursele de care au nevoie, este un factor critic care limiteaz rata de lansare a instruciunilor# Cu c"t se folosesc mai puine formate diferite pentru instruciuni, acestea sunt mai eficiente# de asemenea, numrul mic de c"mpuri cu dimensiune prestabilit este o alt component care poate eficientiza e0ecuia instruciunii# 8 Bumai instruciunile 7J&, i .IJ2* trebuie s acceseze memoria )nul din modurile simple de a descompune operaiile !n pai separai este impunerea condiiei ca operanzii ma/oritii instruciunilor s fie transferai !nOdin registre# ,eoarece accesul la memorie poate dura mult, cel mai bine ar fi s se suprapun e0ecuia acestor instruciuni cu a altora, dac ele nu fac altceva dec"t s mute operanzi !ntre registre i memorie# C Hurnizeaz registre suficiente ,atorit accesului la memorie relativ lent, sunt necesare multe registre (aO$ 5- # Irebuie evitat s se intre !n criz de registre i s fim obligai s le salvm !n memorie# 21<1Pr!lu&rar! simulta%* *0ist o limit !n ceea ce privete dezvoltarea calculatoarelor foarte rapide, semnalele electrice se propag prin circuite cu ma0imum viteza luminii# C+iar i viitoarele Mcalculatoare opticeM sunt afectate de aceast limitare# ,eoarece lumina (unda electromagnetic parcurge o distan de apro0imativ 5@ de cm# !ntr-o nanosecund (o miliardime de secund , rezult c sporirea vitezei de e0ecuie (lucru a unui calculator devine !n ultim instan o problem de miniaturizare# %ntr-un efort de rezolvare a acestei probleme, cercetarea i-a !ndreptat atenia asupra conceptului de &a+a&itat! d! tra%s(!r (throughput # Capacitatea de transfer se refer la cantitatea total de operaii pe care le poate efectua calculatorul !ntr-un anumit timp# %mbuntirea capacitii de transfer a unui calculator (fr creterea vitezei de e0ecuie este tangibil prin te+nica de +r!lu&rar! simulta%* (pipelining # &ceast metod se refer la posibilitatea ca !n orice moment, !n conduct ( pipe s se afle mai multe instruciuni M!n lucruM# J instruciune este e0ecutat, alta este decodificat i inca o alta este e0tras din memorie#
5:

,atorit MprelucrriiM !n acelai timp a 5 instruciuni, capacitatea de transfer a calculatorului crete de 5 ori# Calculatoare -multiprocesor &lte soluii pentru creterea capacitii de transfer face parte din categoria +r!lu&r*rii +aral!l! (parallel processing , !n care se utilizeaz mai multe procesoare pentru e0ecutarea operaiei curente# &rgumentul !n favoarea acestei abordri !l reprezint creierul uman# .usintorii prelucrrii paralele se pronun !n favoarea calculatoarelor-multiprocesor, care conin, !n opinia lor, configuraii cu un factor de utilizare mult mai ridicat# 21=12 I%stru&'iu%i aritm!ti&! $i logi&! 6rupul o+!ra'iil! aritm!ti&! $i logi&! conine instruciuni care solicit operaii aritmetice, logice i de deplasare# Jperaii logice Jperaiile logice AN% (_I , 'R (.&) , ('R (.&) ec+ivalent se pot e0tinde la operaii care combin dou iruri de bii pentru a produce o ieire de forma unui ir de bii, aplic"nd operaia elementar bit cu bit# *0emplu : &B, 1@@11@1@ 11@@1@@1 11@11@11 1@@11@1@ 11@@1@@1 1@@@1@@@ 1@@11@1@ KJ2 1 1 @ @ 1 @ @ 1 @1@1@@11

J2

Jperaia &B, este utilizat la mas&ar! (masscing # *0emplu : &B, @@@@1111 1@1@1@1@ operand mas&* (mas,

%n acest caz operandul denumit mas&* (mas, determin care parte a celuilalt operand va afecta rezultatul# ,eci operaia &B, permite copierea unei pri a unui ir de bii, plas"ndu-se @ !n partea neduplicat# Jperaia J2 poate fi utilizat i ea pentru a copia o parte a unui ir de bii, plas"ndu-se !ns pe poziiile neduplicate# )na din utilizrile principale ale operaiei KJ2 o reprezint compunerea complementului unui ir de bii, astfel: 11111111 1@1@1@1@ @1@1@1@1

KJ2

Jperaii de rotire i deplasare la nivel de bit

8@

Jperaiile de rotire i deplasare furnizeaz posibilitatea de deplasare a biilor dintr-un registru i sunt folosite la rezolvarea proble- melor de aliniere# &ceste operaii sunt clasificate dup direcia de micare (st"ngaOdreapta , in"ndu-se cont i dac procesul este circular# ,ac se face deplasarea ctre un capt al irului de bii, bitul de la captul spre care se face deplasarea dispare, iar la cellalt capt al irului apare un spaiu liber# Jperaiunile de deplasare se difereniaz tocmai prin ceea ce se !nt"mpl cu acest bit suplimentar !n urma deplasrii# )na din te+nicile de deplasare este s se plaseze bitul suplimentar !n spaiul liber de la cellalt capt# 2ezultatul este o deplasare circular, denumit rota'i!# &lt te+nic de deplasare elimin bitul de la captul irului spre care se face deplasarea i completeaz cu @ spaiul liber aprut la cellalt capt, adic realizeaz o d!+lasar! logi&* (logical shift # .e !nt"lnesc adesea deplasri la dreapta care completeaz !ntotdeauna spaiul liber, cu valoarea bitului de semn> acestea se numesc d!+las*ri aritm!ti&! (arithmetic shift # Jperaii aritmetice (precizri suplimentare &ceste operaii pot fi adesea efectuate utiliz"nd doar operaia de adunare, alturi de negarea logic# %n cazul adunrii: - dac valorile care trebuie adunate sunt stocate utiliz"ndu-se notaia !n complement fa de doi, operaia de adunare trebuie realizat ca o operaie de adunare !n binar > - dac operanzii sunt stocai utiliz"ndu-se notaia !n virgul mobil pentru adunare, trebuie mai !nt"i efectuat e0tragerea mantiselor operanzilor, deplasarea acestora la st"nga sau la dreapta !n funcie de valoarea c"mpurilor e0ponenilor, verificarea biilor de semn, adunarea propriuzis i apoi convertirea rezultatului !n virgul mobil# %n cazul celor - operaii de adunare, din punctul de vedere al calculatorului !ntre ele nu e0ist nici o similitudine# 21>1 Comu%i&a'ia 5%tr! u%itat!a &!%tral* $i &o%trol!r! Comunicaia !ntre unitatea central de prelucrare i un controler este controlat la fel ca i comunicaia dintre CP) i memoria principal# Haptic, controlerul este reprezentat de un bloc de celule din memoria principal# &tunci c"nd CP) scrie un ir de bii !ntr-o celul de memorie din cadrul blocului de memorie (e0# instruciunea .IJ2* , ablonul e transferat de fapt controlerului i nu memoriei# .imilar, atunci c"nd CP) !ncearc s citeasc date dintr-una din celulele de memorie (instruciune 7J&, , ea primete un ir de bii de la controler# &cest sistem de comunicaie, denumit ma+ar! 5% m!mori! a o+!ra'iilor d! i%trar!3i!$ir! (memor" mapped 12' este reprezentat de fig# -#11# Magistral* M!mori! +ri%&i+al* Co%trol!r
Dis+o"iti# +!ri(!ri&

C P U

Hig# -#11# 2eprezentarea principal a maprii !n memorie a operaiilor de I O J 3locul de adrese asociate unui controler este denumit +ort, el reprezint MpoartaM prin care informaiile intr sau ies din calculator#

81

%ntre controler i dispozitivul periferic pe care-l controleaz are loc o comunicare !n ambele sensuri# ,ac n-ar e0ista o cale de comunicaie !n ambele sensuri !ntre calculator i imprimant (de e0emplu , imprimanta ar rm"ne foarte repede !n urm#

Controlere Comunicaia dintre unitatea central de prelucrare a unui calculator i un dispozitiv periferic este controlat de un dispozitiv intermediar, denumit &o%trol!r (controller # Hiecare controler gestioneaz comunicaia cu un anumit tip de dispozitiv periferic# )n &o%trol!r corespunde fizic unei plci cu circuite electrice# Co%trol!r-ul convertete mesa/ele i datele la forme compatibile cu caracteristicile interne ale calculatorului respectiv la cele ale dispozitivelor periferice ataate controlerului# Controlerele sunt ataate la aceeai magistral care conecteaz unitatea central la memoria principal (vezi fig# -#1- #

Dis+o"iti# +!ri(!ri& Co%trol!r C P U


Magistral*

M!moria +ri%&i+al* Co%trol! Dis+o"iti# +!ri(!ri&

Hig# -#1-# Conectarea controlerelor la magistrala unui calculator Hiecare controler monitorizeaz semnalele transmise de unitatea central de prelucrare i rspundere atunci c"nd !i este adresat un semnal# &bilitatea (facilitatea unui controler de a accede la memoria principal a calculatorului poart numele de a&&!s dir!&t la m!mori! (direct memor" access 0 % M A # )nitatea central poate trimite controlerului cereri codificate prin care s-i cear s citeasc un anumit sector de pe disc i s plaseze aceste date !ntr-o anumit zon de memorie precizat# &poi CP) poate continua e0ecuia altor operaii !n timp ce controlerul efectueaz cererea solicitat# ,up terminarea sarcinii atribuite, controlerul transmite prin magistrala calculatorului un anumit semnal ctre CP) (astfel de semnale iau forma de !ntreruperi i vor fi studiate !n cap# .istemul de operare # )n bloc de memorie utilizat pentru transferul datelor spre i dinspre dispozitivele periferice poart numele de "o%*2tam+o% ( uffer # &taarea controlerelor !n magistrala unui calculator mrete semnificativ comple0itatea operaiilor de control al comunicaiei de-a lungul acestei ci principale de comunicaie# C+iar !n cazul unei proiectri foarte bune, magistrala principal poate deveni un punct critic, cunoscut sub numele de g6tuir!a #o% N!uma%% (von Neumann ottlenec, , se datoreaz concurenei pentru accesul la magistral !ntre unitatea central de prelucrare i controlere# 21?1 Comu%i&a'ia s!rial* $i +aral!l*

8-

Comunicaia dintre diferite pri ale unui sistem de calcul se efectueaz !ntr-una dintre cele dou forme elementare paralel sau perial# *ste vorba de modul de transfer al irurilor de bii# %n cazul &omu%i&a'i!i +aral!l! (parallel communication , toi biii dintr-un ir sunt transferai simultan, fiecare pe o linie separat# %n acest mod se realizeaz transferul rapid al datelor, dar este necesar o linie de comunicaie cu un numr mare de cabluri electrice# Comu%i&a'ia s!rial* (serial communication se bazeaz pe transmiterea irului bit cu bit# &ceast metod este mai lent, dar linia de comunicaie este mai simpl# )n e0emplu obinuit !l reprezint liniile telefonice, informaiile digitale fiind convertite !n semnale audio cu a/utorul unui dispozitiv numit mod!m (modulator-d!mulator # ,atorit limitrilor impuse de caracteristicile sistemului telefonic e0istent, o astfel de comunicaie nu se poate realiza prin te+nicile de comunicaie paralel# Diteza comunicaiei seriale se msoar !n bii pe secund (bps , iar domeniul de variaie se situeaz !ntre c"teva sute de bii pe secund i milioane de bii pe secund# J alt unitate uzitat este rata ,a%d ( and rate > ea se refer la viteza cu care se sc+imb starea liniei pe care are loc comunicaia# J alt metod de cretere a eficienei transferurilor de date (inclusiv stocarea datelor este &om+r!sia d! dat! (data compression , adic reducerea numrului de bii necesar pentru reprezentarea informaiilor# %n cazul reprezentrii unor iruri de caractere se poate recurge la un cod ?uffman (cod dependent de frecven # %n cadrul acestui cod, lungimea unui ir de bii care reprezint un caracter s fie invers proporional cu frecvena de utilizare a caracterului# %n acest fel se obine o reprezentare mai scurt a te0tului dec"t dac am utiliza un cod de lungime uniform (codul &.CII # *forturile de standardizare a te+nicilor de compresie a datelor au dus la includerea acestora !n multe din modemurile e0istente !n prezent pe pia# &tunci c"nd - modemuri care utilizeaz sc+eme de compresie compatibile comunic !ntre ele, modemul emitor comprim datele !nainte de a efectua transmisia, iar modemul receptor decomprim datele dup recepionarea lor# Holosind asemenea soluii, modemurile pot obine rate de transfer ec+ivalente cu C49@@ bps, c+iar dac de fapt sunt transmii numai 188@@ bii pe secund, la o rat band de 1-@@#

85

A%!)* 2111 Lim,a.ul2ma$i%* Hiecare instruciuneOmain are o lungime de doi octei# Primii patru bii alctuiesc c"mpul codului de operaie, iar urmtorii doisprezece bii formeaz c"mpul operandului# %n tabelul urmtor sunt prezentate instruciunileOmain, !n notaie +e0azecimal, !nsoite de o scurt descriere# 7iterele 2, . i I sunt utilizate !n locul cifrelor +e0azecimale pentru a reprezenta identificatorul de registri# 7iterele K i b sunt utilizate !n locul cifrelor +e0azecimale !n diferite c"mpuri care nu reprezint registrii# Cod o+!ra'i! 1 O+!ra%d 2Kb D ! s & r i ! r ! %ncarc (7J&, registrul 2 cu valoarea gsit !n celula de memorie a crei adres este K b# *0# 1 8 & 5 va avea ca rezultat plasarea coninutului celulei de memorie cu adresa & 5 !n registrul 8# %ncarc (7J&, registrul 2 cu valoarea reprezentat de irul de bii K b# *0# - @ & 5 va avea ca rezultat !nscrierea valorii & 5 !n registrul @# .toc+eaz (.IJ2* valoarea registrului 2 !n celula de memorie a crei adres este K b# *0# 5 C 3 1 va avea ca rezultat plasarea coninutului registrului C !n celula de memorie cu adresa 3 1# <ut (<JD* coninutul registrului 2 !n registrul .# *0# 8 @ & 8 va avea ca rezultat copierea coninutului registrului & !n registrul 8# &dun (&,, irurile de bii din registrii . i I, ca i cum ar fi reprezentri !n complement fa de doi, i depune rezultatul !n registrul 2# *0# C 9 - 4 are ca rezultat adunarea valorilor din registrii - i 4 i plasarea rezultatului !n registrul 9# &dun (&,, irurile de bii din registrii . i I ca i cum ar fi
88

2Kb

2Kb

J2.

C 4

2.I 2.I

reprezentai !n virgul mobil i depune rezultatul !n registrul 2# *0# 4 5 8 * are ca rezultat adunarea valorilor din registrii 8 i * ca valori reprezentate !n virgul mobil i plasarea rezultatului !n registrul 5#

8C

Cod o+!ra'i!

O+!ra%d

D ! s & r i ! r ! *0ecut un sau logic (J2 !ntre irurile de bii din registrii . i I i depune rezultatul !n registrul 2# *0# 9

2.I C 3 8 are ca rezultat e0ecutarea unui sau logic !ntre coninutul registrilor 3 i 8 i plasarea rezultatului !n registrul C# *0ecut un i logic (&B, !ntre irurile de bii din registrii . i I i depune rezultatul !n registrul 2# *0# ; @ 8 C are ca rezultat e0ecutarea unui i logic !ntre coninuturile registrilor 8 i C i plasarea rezultatului !n registrul @# *0ecut un sau e0clusiv (KJ2 !ntre irurile de bii din registrii . i I i depune rezultatul !n registrul 2# *0# : C H 5 are ca rezultat e0ecutarea unui sau e0clusiv !ntre coninutul registrilor H i 5 i plasarea rezultatului !n registrul C# 2otete (2JI&I* irul de bii din registrul 2 cu un bit la dreapta de K ori# 7a fiecare rotaie, bitul cel mai puin semnificativ este mutat pe poziia bitului cel mai semnificativ# *0# & 8 @ 5 are ca rezultat mutarea circular la dreapta a coninutului registrului 8 de 5 ori# .alt (A)<P la instruciunea plasat !n celula de memorie cu adresa K b dac coninutul registrului 2 este egal cu coninutul registrului @# &ltfel se continu e0ecuia normal a secvenei de instruciuni# *0# 3 8 5 C se compar mai !nt"i coninutul registrului 8 cu coninutul registrului @# ,ac cei doi registri sunt identici, secvena de e0ecuie va fi modificat astfel !nc"t urmtoarea instruciune care se va e0ecuta s fie cea aflat la adresa de memorie 5 C# &ltfel, e0ecuia progra-mului va continua !n mod normal# Jprirea (?&7I e0ecuiei# *0# C @ @ @ are ca rezultat oprirea e0ecuiei programului#

2.I

2.I

&

2JK

2Kb

@@@

84

1 111

REIELE DE CALCULATOARE

Com+o%!%t!l! 4ardJar! 7a !nceput, o reea tipic era compus din calculatoare izolate care nu puteau face dec"t transferul fiierelor pe linii telefonice, utiliz"nd programe integrate !n sistemele de operare sub form de softSare utilitar# &stzi, o mare parte dintre funciile de administrare a reelei sunt !nc implementate sub form de software utilitar, cu toate c sistemele de operare moderne !ncep s !nglobeze multe din aceste caracteristici# 3lasificarea re#elelor Jrice reea de calculatoare se !ncadreaz !ntr-una din urmtoarele categorii: r!'!l! lo&al! d! &al&ulatoar! (local area networ,s @AN > r!'!l! d! ari! larg* (wide area networ,s AAN # J r!'!a lo&al* const de obicei dintr-un grup de calculatoare plasate !ntr-o singur cldire sau !ntr-un comple0 de cldiri# J r!'!a AAN cuprinde calculatoare care se pot afla !n diverse coluri ale unui ora sau ale lumii# ,iferena principal dintre reelele locale i cele de arie larg ine de te+nologiile utilizate pentru stabilirea cilor de comunicaie# &lt criteriu de clasificare a reelelor de calculatoare este alctuirea reelei din hardware i software, produs de un furnizor unic sau implementarea ei ca un conglomerat de produse de la diferii producatori# 2eele de primul tip sunt denumite uneori r!'!l! 5%&4is! (sau reele brevetate , iar cele din al doilea tip sunt cunoscute sub numele d! r!'!l! d!s&4is!# R!'!l!l! 5%&4is! sunt o prezen mult mai obinuit !n cadrul reelelor locale, o reea utilizat de ctre o organizaie# R!'!l!l! d!s&4is! sunt reele de arie larg, incluz"nd organizaii dotate cu ec+ipamente diferite# 2eeaua I%t!r%!t este un sistem desc+is# Comunicaia prin I%t!r%!t este realizat prin intermediul unui ansamblu desc+is de standarde, cunoscut sub numele de suit de protocoale )3$21$# &lt criteriu de clasificare se bazeaz pe topologie, adic pe modul cum sunt conectate calculatoarele# Hig# 5#1# reprezint c"teva dintre topologiile uzuale: i%!l (ring conectarea circular a calculatoarelor > magistral* ( us conectarea calculatoarelor printr-o linie de comunicaie comun> st!a !n care o main servete drept conector (hu , la care sunt cuplate toate celelalte calculatoare, i to+ologi! %!r!gulat* !n care calculatoarele sunt conectate !ntr-un mod aparent aleator# 2eeaua I%t!r%!t , este o reea de reele care s-a dezvoltat de-a lungul timpului# %nceputurile sale se leag de un program de cercetare iniiat !n 1:95 de ctre ,efence &dvanced 2esearc+ Pro/ects &gencE (,&2P& # %n prezent, I%t!r%!t reprezint o combinaie de reele [&B i 7&B, conin"nd o magistral alctuit din ci de comunicaie de mare vitez !ntre diverse zone ale .)&# Pentru conectarea la aceast magistral a altor reele, grupate pe arii mai reduse, se utilizeaz calculatoare special proiectate, denumite rout!r! (routers # 7a r"ndul lor, aceste reele sunt conectate prin intermediul altor routere cu alte reele# &stfel s-a dezvoltat o reea ce conine milioane de calculatoare, fiecare dintre ele purt"nd numele de ga"d* (host , rsp"ndite !n !ntreaga lume# &dresarea !n I%t!r%!t ,in punct de vedere conceptual, I%t!r%!t-ul poate fi considerat o colecie de grupuri de reele, cunoscute sub numele de dom!%ii , fiecare din aceste domenii const"nd din acele reele care sunt utilizate de ctre o singur organizaie# Hiecare domeniu este un sistem autonom, care poate fi configurat aa cum dorete autoritatea local, uneori c+iar ca un ansamblu global de reele [&B#

89

&dresa unui calculator (gazd din I%t!r%!t const dintr-un ir de bii (lungimea 5- bii ce conine dou pri : o parte care precizeaz domeniul !n care este inclus calculatorul-gazd i o parte care identific adresa gazdei !n cadrul domeniului# Cal&ulator Cal&ulator Cal&ulator Cal&ulator Cal&ulator (a Iopologie de tip inel

Cal&ulator

Cal&ulator

Cal&ulator

Cal&ulator

Cal&ulator

(b Iopologie de tip magistral

Cal&ulator Cal&ulator Cal&ulator Cal&ulator Cal&ulator Cal&ulator

(c Iopologie de tip stea

Cal&ulator Cal&ulator Cal&ulator Cal&ulator Cal&ulator

(d Iopologie neregulat Hig# 5#1# Iopologii de reele de calculatoare

8;

,efinirea domeniului, id!%ti(i&atorul d! r!'!a (networ, identifier , este atribuit de InterBIC (Internet BetSor= Information Center la crearea domeniului i este !nregistrat# Partea de adres care definete un calculator-gazd individual din cadrul unui domeniu, adr!sa ga"d!i (host address , este atribuit de ctre autoritatea local# ,eoarece se lucreaz mai greu cu adrese sub forma unui ir de bii, InterBIC a alocat suplimentar fiecrui domeniu o adres simbolic unic, %um!l! dom!%iului (domain name # (*0#: numele editurii P &ddison [esleE 7ongman Inc# este awl.com, iar un calculatorgazd din cadrul acestui domeniu ar putea fi identificat sub numele rem rand.awl.com1 0 %n scopul transmiterii de mesa/e !ntre utilizatorii individuali ai reelei I%t!r%!t (sistem cunoscut sub numele de e0mail , fiecare autoritate local poate atribui o adres de e0mail fiecrui utilizator autorizat din cadrul domeniului su# &ceast adres const dintr-un ir de caractere ce identific utilizatorul, urmat de caracterul c i apoi de numele de domeniu alocat calculatorului care are sarcina de gestionare a activitilor de pot electronic# (*0#: &dresa de e0mail a unui utilizator individual care lucreaz la editura &ddison [esleE 7ongman Inc# ar putea arta astfel: wscottBrem rand.awl1com1 # &utoritatea local a fiecrui domeniu este rspunztoare de pstrarea unui director care s conin adresele simbolice i adresele numerice I%t!r%!t ale acelor calculatoare-gazd care trebuie s fie accesibile din e0teriorul domeniului# &cest director este implementat pe un calculator dedicat, denumit s!r#!r d! %um! (name server , care rspunde cererilor referitoare la informaii despre adrese# )n individ obine de obicei acces la I%t!r%!t, devenind membru al unei organizaii care controleaz un domeniu# Hirmele specializate ofer acces la I%t!r%!t persoanelor private pe baze comerciale# &ceste firme care dispun de propriul domeniu !n I%t!r%!t, furnizeaz pe calculatoarele lor programe care permit clienilor s se conecteze utiliz"nd liniile telefonice# Aord Aide Ae =w w w< %n afara utilizrii ca mi/loc de comunicare e0mail, reeaua I%t!r%!t a devenit un mediu de transmitere a informaiilor prin intermediul documentelor de tip 4i+!rt!)t (h"perte9t # ,ocumentele 4i+!rt!)t conin cuvinte, e0presii sau imagini specifice care sunt legate la alte documente# Cititorul unui document 4i+!rt!)t poate accede dup dorin la aceste documente corespondente printr-un simplu YclicT de YmouseT asupra elementelor de legtur sau utiliz"nd tastele sgei# Prin realizarea legturilor !ntre documente se creaz o Y+5%"* (we T !ntreesut de informaii aflate pe diverse calculatoare# &ceast Yp"nzT, care s-a dezvoltat pe I%t!r%!t, este distribuit pe !ntregul glob i este cunoscut sub numele de Aord Aid! A!d /JJJ0# Pac+etele de programe care-i asist pe cititorii documentelor +iperte0t !n parcurgerea acestora sunt de tip &li!%t i de tip s!r#!r# Programul &li!%t este acela care furnizeaz interfaa cu utilizatorul care-i permite cititorului s navig+eze ( rowse prin [eb (adesea programul-client se numele rowser ( rowser we # Programul s!r#!r este rezident pe un calculator care conine documente de accesat, iar la cererea clienilor furnizeaz documentele stocate# &ltfel spus, un utilizator capt acces la documente Y+iperte0tT prin intermediul unui ,roJs!r rezident pe propriul calculator, care solicit serviciile serverelor Y+iperte0tT distribuite !n I%t!r%!t# BroJs!r!-le pot lucra cu YdocumenteT ce conin sunete, imagini i clipuri-video, aceste documente poart numele de do&um!%t! 4i+!rm!dia (h"permedia # Pentru crearea documentelor Y+iperte0tT este necesar identificarea fiecrui document printr-o adres unic (adresa 5R@ ? uniform resource locator prin care un ,roJs!r se poate conecta la serverul potrivit i apoi s solicite documentul dorit# %n figura 5#1@ este descris o adres )27 tipic#

8:

+ttp : OO rembrand # aSl# com O aut+ors O .cott O Iulius Caesar # +tml nume document Calea de directoare care precizeaz localizarea documentului !n cadrul sistemului de fiiere de pe calculatorul-gazda Bumele simbolic al calculatorului-gazd care conine documentul Protocolul necesar pentru accesul la document# %n acest caz este vorba de protocolul de transfer +iperte0t (h"perte9t transfer protocol http Hig# 8#1#5# &dres )27 tipic Probleme de securitate Prin conectarea unui calculator !ntr-o reea, acesta devine accesibil mai multor utilizatori poteniali# %n aceast situaie apar probleme din categoriile: acces neautorizat la informaii i acte de vandalism# )na din soluiile pentru rezolvarea problemei accesului neautorizat o reprezint utilizarea parolelor, fie pentru accesul la calculatorul propriu-zis, fie pentru controlul accesului la date# ,in pcate, parolele nu rm"n !ntotdeauna secrete# .istemele pe operare pot fi proiectate astfel !nc"t s raporteze orice avalan de parole incorecte sau s comunice fiecrui utilizator, la !nceputul fiecrei noi sesiuni de lucru, data i ora la care a fost folosit ultima dat contul respectiv# J alt metod mai sofisticat, de aprare !mpotriva celor care !ncearc s g+iceasc parolele este aceea de a crea iluzia succesului !n introducerea parolelor false i de a furniza intrusului informaii false, !nregistr"ndu-se YorigineaT acestuia# J metod mai complicat pentru protecia datelor !mpotriva accesului neautorizat o reprezint criptarea lor# Problema vandalismului este ilustrat de apariia unor afeciuni cum ar fi viruii calculatoarelor 'sau de reea(# %n general un #irus este un segment de program care se ataeaz 'ilicit( altor programe din calculator# &stfel de c"te ori se e0ecut un program-gazd se e0ecut i virusul# &tunci c"nd este e0ecutat virusul poate realiza diverse activiti duntoare, uor de remarcat, sau poate ataa copiile sale la alte programe# 7a transferarea unui program infectat cu virus la alt calculator, virusul va infecta i noul calculator imediat ce programul transferat este e0ecutat# Iermenul de YviermeT se refer de obicei la un program autonom care se transfer pe sine !nsui !n reeaua de calculatoare, rm"ne rezident !n reea i trimite copii ale sale !n reea# Problemele de etic i de legislaie asociate acestor subiecte vor genera dezbateri aprinse !n viitor# :121 Proto&oal! d! r!'!a /&om+o%!%t! so(tJar!0 &nsamblul de reguli care guverneaz comunicaia !ntre diferite componente ale unui calculator poart numele de +roto&ol# %n cadrul unei reele de calculatoare, protocoalele definesc detaliile fiecrei activiti, ca modurile !n care: sunt adresate mesa/ele>
C@

se deleag de la un calculator la altul dreptul de a transmite mesa/e> sunt tratate operaiile de !mpac+etare a mesa/elor pentru transmitere i de despac+etare a acestora la recepie# ,repturi de control al transmisiei )na din soluiile pentru coordonarea dreptului de transmitere a mesa/elor este protocolul i%!l &u .!to% (to,en ring pentru reelele cu topologia !n inel# %n cadrul acestui protocol fiecare calculator transmite mesa/ele numai spre YdreaptaT i le recepioneaz numai din partea Yst"ngT fig 8#-#1# Cal&ulator Cal&ulator Cal&ulator Cal&ulator Cal&ulator

Hig 8#-#1# Comunicaia !n cazul unei topologii !n inel )n mesa/ din partea unui calculator ctre alt calculator trebuie transmis !n reea !n sensul invers acelor de ceasornic, p"n c"nd a/unge la destinaie# %n acel moment, calculatorul-destinatar !i pstreaz o copie a mesa/ului i transmite mai departe !n inel alt copie# C"nd aceast copie a/unge la calculatorul care a transmis mesa/ul, acesta YaflT c mesa/ul a a/uns la destinaie i-l elimin din inel# Huncionarea sistemului depinde de colaborarea dintre calculatoare# Pentru rezolvarea acestei probleme de-a lungul inelului este transmis un ir unic de bii, denumit .!to% (to=en # Posesia acestui /eton d unui calculator dreptul de a-i transmite propriile mesa/e# %n mod normal fiecare calculator transmite /etonul de la st"nga la dreapta, similar transmiterii mesa/elor# ,ac calculatorul care recepioneaz /etonul are mesa/e de transmis !n inel, el va reine /etonul i va transmite un mesa/# ,up ce acest mesa/ !i completeaz ciclul !n /urul inelului, calculatorul transmite /etonul urmtorului calculator din inel# )n alt protocol pentru controlul dreptului de transmitere este !nt"lnit la *t+ernet, o versiune foarte rsp"ndit a topologiei de reea de tip magistral# %n reeaua *t+ernet, dreptul de transmisie a mesa/elor este controlat de un protocol numit C.<&OC, (Carrier .ense <ultiple &ccess Sit+ Collision ,etection ( acces multiplu cu detectarea purttoarei i a coliziunilor # &cest protocol impune ca fiecare mesa/ emis de oricare calculator din reea s fie transmis tuturor calculatoarelor de pe magistral ( fig# 8#-#-# Cal&ulator Cal&ulator Cal&ulator

Cal&ulator

Cal&ulator

Hig# 8#-#-# Comunicaia !n cadrul unei reele cu topologia de tip magistral

C1

Hiecare calculator monitorizeaz toate mesa/ele, dar le pstreaz numai pe cele care-i sunt adresate# Pentru a transmite un mesa/, un calculator ateapt p"n c"nd magistrala este liber, moment !n care !ncepe transmisia, continu"nd s asculte magistrala# ,ac alt calculator !ncepe, de asemenea, s transmit, ambele calculatoare vor detecta coliziunea i, dup un scurt interval de pauz cu durata aleatoare, vor !ncerca din nou s transmit# ,ezvoltarea unui softSare de reea structurat pe niveluri )na din principalele sarcini ale unui softSare de reea este s furnizeze instrumente abstracte pentru transferul mesa/elor !n cadrul reelei# &semenea unelte formeaz infrastructura pe care se bazeaz modelul clientOserver# .oftSare-ul de control al comunicaiilor dintr-o reea este structurat pe mai multe niveluri denumite straturi (laEers , fiind alctuit dintr-un ansamblu de rutine softSare# ,iviziunea muncii !ntr-o ierar+ie de straturi are dou consecine importante, care reprezint obiectele comune !n realizarea oricrei ar+itecturi ierar+izate: Jperaia general poate fi !mprit !n suboperaii administrabile separat, fiecare dintre ele av"nd scopuri specifice# - &r+itectura ierar+izat duce la stabilirea de frontiere bine definite !ntre suboperaii, !ntre ele put"nd fi implementate interfee standard# ,ac se conformeaz acestor interfee standard, diferitele soluii pentru realizarea aceleiai suboperaii pot fi sc+imbate !ntre ele fr ca restul sistemului s fie afectat# &r+itectura softSare a reelei Internet# Cele patru niveluri ale softSare-ului Internet sunt prezentate !n fig# 8#-#5# 1

Ni#!lul a+li&ati!i Ni#!lul tra%s+ortului Ni#!lul r!'!l!i

Ni#!lul a+li&a'i!i Ni#!lul tra%s+ortului Ni#!lul r!'!l!i N i#!lul l!g*turii

Jriginea (e0pediia Ni#!lul


l!g*turii

*0peditia mesa/ului

,estinaia mesa/ului

Hig# 8#-#5# Bivelurile softSare Internet Coloana din st"nga reprezint nivelurile software utilizate de calculatorul de la originea (e0pediia mesa/ului, iar coloana din dreapta nivelurile utilizate de calculatorul de la destinaia mesa/ului# Ca preliminarii pentru transmisie, un mesa/ poate fi !mprit !n compartimente mici, fiecare component de mesa/ este Y!mpac+etatT repetat de ctre nivelurile software, pe msur ce se deplaseaz !n /os !n coloana din st"nga# %mpac+etarea const din adugarea de bii suplimentari
C-

!nainte i dup fiecare unitate de mesa/# J astfel de component Y!mpac+etatT poart numele de +a&4!t# &stfel pac+etele care sunt recepionate la destinaie sunt de fapt pac+ete coninute (inclus !n alte pac+ete# &ceste pac+ete sunt despac+etate, nivel cu nivel, pe msur ce componente de mesa/ se propag !n sus !n coloana din dreapta (fig# 8#-#5 > !n final componentele sunt reasamblate i livrate modulului software adecvat de la calculatorul-destinaie# Bivelul plasat cel mai sus !n ierar+ia software I%t!r%!t este nivelul aplicaiei, care include software ce trateaz activitile specifice unei anumite aplicaii# Bivelul transportului preia mesa/ul care trebuie transmis de la nivelul aplicaiei, !nsoit de adresa de destinaie# ,up recepionarea mesa/ului i a adresei de destinaie, nivelul transportului !mparte mesa/ul !n segmente cu dimensiunea compatibil cu propriile sale specificaii, adaug acestor segmente numere de secven care s permit refacerea mesa/ului, le ataeaz adresa de destinaie i trimite pac+etele rezultate ctre nivelul reelei# Bivelul reelei este responsabil de propagarea corect prin I%t!r%!t p"n la destinaie a pac+etelor recepionate de la nivelul transportului# Bivelul reelei realizeaz propagarea prin ataarea unei adrese intermediare de destinaie astfel: dac destinaia final a pac+etului este !n cadrul reelei curente, adresa adugat va fi identic cu adresa destinaiei finale> altfel, adresa adugat va fi adresa router-ului din cadrul reelei curente# Pac+etele e0tinse sunt predate nivelului legturii# 2esponsabilitatea nivelului de legtur este s se ocupe de detaliile de comunicaie proprii reelei particulare !n care sunt plasate calculatoarele# %n cazul reelei cu protocol i%!l &u .!to%, pentru efectuarea transmisiei nivelul legturii trebuie s atepte s obin posesia /etonului# ,eoarece fiecare reea local posed sistemul su propriu de adresare, care este independent de sistemul de adresare utilizat de I%t!r%!t, nivelul legturii mai trebuie s converteasc !n sistemul de adresare local adresele I%t!r%!t ataate pac+etelor i s le adauge la pac+et, sub forma unui strat suplimentar de !mpac+etare# Bumai nivelurile pentru legtur i pentru reea sunt implicate !n transmiterea mai departe a pac+etelor destinate altor calculatoare# Bivelul transportului i aplicaiei sunt scutite de acest efort, oper"nd numai asupra pac+etelor adresate calculatorului pe care sunt rezidente (vezi fig# 8#-#8 # %n concluzie, comunicaia prin I%t!r%!t implic interaciunea dintre diferite niveluri software rezidente pe multe dintre calculatoarele din cadrul sistemului# %n acest conte0t, faptul c timpul de rspuns din I%t!r%!t este de domeniul milisecundelor este remarcabil#

C5

A+li&a'i! A+li&a'i! Tra%s+ort R!'!a R!'!a L!g*tura R!'!a L!g*tura Hig# 8#-#8# Propagarea unei componente de date prin Internet, dou calculatoare intermediare Protocolul I C P O I P Crearea de reele desc+ise a generat necesitatea unor standarde publice la care s se poat alinia furnizorii de ec+ipamente i programe, astfel !nc"t produsele lor s funcioneze corect !mpreun# )nul din standardele rezultate este modelul de referin ' 4 1 ('pen 4"stem 1nterconnection , produs de 1nternational 4tandard 'rganization (1 4 ' # &cest standard se bazeaz pe o ierar+ie pe 9 niveluri, spre deosebire de ar+itectura cu 8 niveluri utilizat !n I%t!r%!t# &cest standard se bucur de autoritate, ca model fiind adesea citat, dar nu a fost implementat !nc# *0ista aceasta situatie deoarece inca inainte de definirea protocolului, suita de protocoale ICPOIP era de/a realizata si implementata ca un sistem de protocoale potrivit pentru Internet# .uita de protocoale ICPOIP definete ierar+ia pe 8 niveluri utilizat !n I%t!r%!t# )ransport 3ontrol $rotocol =)3$< i 1nternet $rotocol =1$< sunt numele a dou din protocoalele ansamblului de protocoale# .uita de protocoale ICP pune la dispoziie dou ci de implementare a nivelului pentru transport, cea de a doua numindu-se 5ser %atagram $rotocol =5%$<# Bivelul pentru transport )3$ stabilete o cone0iune !nainte de a transmite datele# Bivelurile de transport )3$ de la origine i destinaie coopereaz !ntre ele utiliz"nd !ncuviinri i retransmisii ale segmentelor de mesa/, de aceea +roto&olul TCP este considerat mai sigur dec"t protocolul ),P# 1$ reprezint protocolul I%t!r%!t pentru nivelul reelei, de fiecare dat c"nd un nivel pentru reea 1$ pregtete un pac+et pentru a-l livra nivelului legturii, el asociaz acelui pac+et o valoare denumit &o%tor d! salt sau durat* d! #ia'*# L!g*tura Tra%s+ort R!'!a L!g*tura pe o cale care conine

C8

BAZELE PROKRAMARII / SOFTAARE0 :1 SISTEMELE DE OPERARE :1112 E#olu'ia sist!m!lor d! o+!rar! .isteme cu un singur procesor Pentru primele sisteme de operare s-a acionat asupra simplificrii !ncrcrii programelor i reducerea perioadei de tranziie dintre lucrri# & fost stabilit un singur operator care efectua toate operaiile cu calculatorul# Jperatorul !ncrca toate materialele pe suportul de stocare de mas al calculatorului, unde sistemul de operare avea acces la ele pentru a le e0ecuta# &cesta a fost !nceputul +r!lu&r*rii +! loturi ( atch procession - e0ecutarea lucrrilor prin plasarea lor !ntr-un grup unic i apoi reluarea lor fr o alt interaciune cu utilizatorul# %n vederea e0ecuiei, lucrrile stocate !n memoria de mas erau plasate !ntr-o &oad* d! lu&r*ri (!o Cueue (vezi fig# -#1#1 # Lu&r*ri +rogramat! Dom!%iul utili"atorului R!"ultat!

Dom!%iul &al&ulatorului

Coad* d! lu&r*ri
loturi

E)!&u'ia lu&r*rii

Hig# 8#1# P r e l u c r a r e p e

Coada reprezint o structur de stocare !n care obiectele (lucr-rile sunt organizate dup principiul primul intrat, primul ieit (HI HJ P Hirst Input Hirst Jutput # )n dezavanta/ al prelucrrii utiliz"nd administrator de sistem este acela c, dup ce lucrarea a fost transmis !n coada de lucrri, utilizatorul nu mai poate interveni asupra programului# Pentru a rspunde la aceste cerine au fost dezvoltate noi sisteme de operare care permit +r!lu&rar!a i%t!ra&ti#* (interactive processing (vezi fig# -#1#-# # Program!- dat!- dir!&ti#! d! !)!&u'i! $i r!"ultat! Dom!%iul utili"atorului

E)!&u'ia Dom!%iul &al&ulatorului +rogramului

Hig8#-# Prelucrarea interactiva

CC

&ceste sisteme permit e0ecutarea unui program care poart un dialog cu utilizatorul prin intermediul terminalelor de control la distan sau al staiilor de lucru# .istemele interactive au dat natere conceptului de +r!lu&rar! 5% tim+ r!al (real time processing # ,ac sistemele interactive ar fi putut s se adreseze unui singur utilizator la un moment dat, prelucrarea !n timp real n-ar fi pus nici o problem# ,atorit preului ridicat al calculatoarelor este necesar ca fiecare main s deserveasc mai muli utilizatori# J soluie la aceast problem este proiectarea si realizarea sistemului de operare !n aa fel !nc"t s parcurg pe r"nd diferitele activiti ce trebuie e0ecutate printr-un proces numit parta/area timpului# <ai e0act, +arta.ar!a tim+ului (time sharing se refer la te+nica de !mprire a timpului !n intervale, denumite (!lii d! tim+ (time slices , cu restricia e0ecutrii unei activiti numai !ntr-o felie timp la un moment dat# 7a sf"ritul fiecrei felii de timp, activitatea curent este trecut !n repaus i o alt activitate primea dreptul de e0ecuie !n urmtoarea felie de timp# Prin baleierea rapid a activitatilor !n acest mod se crea iluzia e0ecutrii simultane a mai multor procese# %n prezent parta/area timpului este utilizat at"t !n sistemele cu un singur procesor, c"t i !n sistemele multiprocesor, dar !n cazul primelor este denumit de obicei multitas=ing (iluzia c mai multe activiti sunt desfurate simultan # .isteme multiprocesor Bevoia de a parta/a informaiile i resursele !ntre diferite calculatoare a condus la ideea conectrii calculatoarelor pentru sc+imbul de informaii# & aprut conceptul de structur de mai multe calculatoare mici, conectate !ntr-o r!'!a (net wor, , prin care utilizatorii parta/eaz resursele# So(tJar!-ul pentru controlul unei reele de calculatoare poate fi privit ca un sistem de operare !n reea# :121 Ar4it!&tura u%ui sist!m d! o+!rar! Pentru a !nelege un sistem de operare tipic, propunem o clasificare a categoriilor de componente# .oftSare &plicaie .istem )tilitar .istem de operare Bucleu

Interfa Hig# 8#5# Clasificarea software-ului

*0ist dou categorii de software distincte : so(tJar! d! a+li&a'ii (application software i so(tJar! d! sist!m (s"stem software # So(tJar!2ul d! a+li&a'ii conine programele care efectueaz anumite activiti particulare specifice beneficiarului (end user-ului # .pre deosebire de softSare-ul de aplicaii, so(tJar!2ul d! sist!m efectueaz acele activiti care sunt comune sistemelor de calcul !n general# Clasa softSare-ului de sistem se !mparte !n dou categorii: sistemul de operare propriuzis i module softSare numite softSare utilitar# %ntr-un anumit sens, softSare-ul utilitar const !n

C4

uniti de softSare care e0tind caracteristicile sistemului de operare (abilitatea de formatare a unui disc sau de copiere a unui fiier # )nii utilizatori de calculatoare includ !n clasa de softSare utilitar orice softSare livrat odat cu sistemul de operare# Interfaa Partea dintr-un sistem de operare care definete modul de interaciune dintre sistemul de operare i utilizatorii si poart numele de i%t!r(a'* (shell # .arcina interfeei este aceea de a permite comunicarea cu utilizatorul (sau utilizatorii calculatorului# Interfeele moderne realizeaz acest lucru folosind o i%t!r(!'a gra(i&a &u utili"atorul (graphical user interface 0 . 5 1 , !n care obiectele manipulate (fiiere i programe sunt reprezentate grafic pe ecran prin +i&togram! (incons # &stfel de sisteme permit utilizatorului s e0ecute comenzi prin selectarea i deplasarea pictogramelor pe ecran cu un dispozitiv denumit MmouseM# Dec+ile interfee comunicau cu utilizatorul numai prin mesa/e de tip te0t (utiliz"nd tastatura i ecranul # Interfaa realizeaz legtura !ntre un utilizator i MinimaM sistemului de operare (vezi fig# 8#8 # )tilizator 1 )tilizator / Sist!m d! o+!rar! )tilizator i )tilizator 5 )tilizator -

Hig# 8#8# Interfaa dintre utilizatori i sistemul de operare Bucleul Partea din interiorul unui sistem de operare este adesea denumit %u&l!u (,ernel # Bucleul conine acele componente softSare care efectueaz operaiile primare necesare pentru funcionarea calculatorului# )na din aceste componente este admi%istratorul d! (i$i!r! (file manager , av"nd sarcina s coordoneze utilizarea facilitilor oferite de memoria mas a calculatorului# Pentru simplificarea utilizrii calculatorului, sistemele de administrare a fiierului permit gruparea lor !n uniti denumite dir!&toar! (director" sau dosar! (folder # &stfel este posibil ca utilizatorul s-i organizeze fiierele conform scopului propus, permi"nd ca directoarele s conin alte directoare, denumite su,dir!&toar!, realiz"ndu-se astfel o organizare ierar+izat a informaiilor# .ecvena de directoare care indic drumul p"n la un anumit subdirector sau fiier se numete &al! (path # Jrice acces la un fiier se obine prin intermediul administratorului de fiiere, care solicit desc+iderea fiierului# ,ac administratorul de fiiere accept cererea de acces, el furnizeaz informaiile necesare pentru gsirea i manipularea fiierului# Informaiile sunt stocate !ntr-o zon din memoria principal care poart numele de d!s&ri+tor d! (i$i!r (file descriptor # J alt component a nucleului const dintr-o colecie de M dri#!r!M de dispozitiv (device drivers - module softSare care comunic cu controlerele (sau uneori direct cu dispozitivele periferice pentru efectuarea operaiilor de ctre periferice#

C9

Hiecare MdriverM de dispozitiv este proiectat !n mod individual pentru un anumit tip de controler sau dispozitiv (imprimant, disc, monitor### i traduce cererile formulate !n termeni generali !ntr-o secven de instruciuni specifice controler-ului sau dispozitivului ataat acelui driver# &lt component a nucleului sistemului de operare este admi%istratorul d! m!mori! (memor" manager , !nsrcinat cu activitatea de coordonare a utilizrii memoriei principale a calculatorului# &ceast component este foarte utilizat !n mediile multiutilizator sau multitas=ing# .arcina administratorului de memorie se complic atunci c"nd cantitatea total de memorie solicitat depete dimensiunea memoriei disponibile# %n acest caz, administratorul de memorie poate crea iluzia unui spaiu suplimentar de memorie rotind programele i datele !ntre memoria principal i disc# &ceast memorie iluzorie este denumit m!mori! #irtual* (virtual memor" # Pornirea calculatorului 7ansarea !n e0ecuie a sistemului de operare se realizeaz prin intermediul unei proceduri cunoscute sub numele de 5%&*r&ar!a sist!mului d! o+!rar! ( oot straping > 5%&*r&ar! ( ooting # dona de memorie !n care se ateapt s se gseasc programul pentru e0ecuie se numete m!mori! +!rma%!%t* (read0onl" memor" R ' M # Cea mai mare parte din memoria intern a unui calculator de uz general este memoria volatil, coninutul memoriei pierz"ndu-se la oprirea calculatorului# %n scopul !ncrcrii sistemului de operare al unui calculator de uz general, memoria 2J< conine un program de mici dimensiuni, denumit bootstrap# 7a pornirea calculatorului acest program se e0ecut automat i !n multe cazuri obiectul transferului (de pe suportul de stocare de mas !n memoria principal a calculatorului - vezi fig# -#1#C este c+iar sistemul de operare# ,up plasarea !n memorie a sistemului de operare, programul ootstrap instruiete DC s sar la zona de memorie care-l conine# ,in acest moment sistemul de operare devine activ i preia controlul calculatorului#

M!moria +ri%&i+al* 2J< <emorie volatil Program Dis& .istem de operare

incarcare

(Pasul 1 Calculatorul e0ecut programul de !ncrcare aflat !n memorie# .istemul de operare se afl pe dispozitivul de stocare de mas#

Hig# 8#C#a# Procesul de !ncrcare a sistemului de operare


C;

M!moria +ri%&i+al* 2J< Program incarcare 5%&*r&ar! .istem de operare Dis& .istem de operare

<emorie volatil

(Pasul 2 Programul de !ncrcare realizeaz transferul sistemului de operare !n memoria principal i !i cedeaz apoi controlul# Hig# 8#C#b# Procesul de !ncrcare a sistemului de operare :1 12 Coordo%ar!a a&ti#it*'ilor d!s(*$urat! d! &al&ulator %n continuare se va prezenta modul !n care sistemul de operare coordoneaz e0ecuia software-ului de aplicaie i utilitar, c"t i pe cea a propriilor sale module# Conceptul de proces )nul din cele mai importante concepte, !n cadrul sistemelor de operare, este deosebirea dintre un program i aciunea de e0ecuie a acestuia# Programul reprezint un set static de directive, iar e0ecuia lui este o activitate dinamic, ale crei proprieti se modific !n timp# &ceast activitate poart numele de +ro&!s# Procesul este caracterizat de starea procesului# .tarea procesului reprezint un instantaneu al functionarii calculatorului la un moment dat# )n singur program poate fi asociat !n acelai timp mai multor procese# (*0#: ,oi utilizatori pot edita simultan documente diferite, !ntr-un sistem multiutilizator cu parta/area timpului, sistemul de operare utiliz"nd o singur copie a programului de editare # .arcina sistemului de operare este s coordoneze mai multe procese care concureaz pentru utilizarea feliilor de timp# Coordonarea implic alocarea resurselor necesare fiecrui proces (dispozitive periferice, spaiu !n memoria principal, acces la date i acces la unitatea central de prelucrare , !mpiedicarea interferenei proceselor independente i asigurarea sc+imbului de informaii intre procese care trebuie s realizeze acest lucru# Pentru aceast tip de comunicaie se folosete numele de &omu%i&a'i! 5%tr! +ro&!s! (interprocess communication # &dministrarea proceselor Jperaiile asociate coordonrii proceselor sunt efectuate de ctre s!&#!%'iator (scheduler i !)!&utor (dispatcher , din nucleul sistemului de operare# S!&#!%'iatorul memoreaz o !nregistrare a proceselor prezente !n sistemul de calcul, introduce noi procese i le elimin pe cele care s-au terminat# Pentru a putea urmri toate procesele, secveniatorul le !nregistreaz intr-un bloc de informaii denumit ta,!l d! +ro&!s! (process ta le , !n memoria principal# %n acest tabel sunt memorate informaii, ca: zona de memorie alocat procesului, prioritatea procesului, dac procesul este !n ateptare etc# E)!&utorul este componenta nucleului care asigur e0ecuia proceselor active, programate de secveniator#
C:

%ntr-un sistem cu parta/area timpului, e0ecuia programelor se realizeaz prin !mpartirea timpului !n intervale scurte, fiecare purt"nd numele de (!li! d! tim+ (time slice i av"nd o durat de cca C@ de milisecunde# Procedura de trecere de la un proces la altul poart numele de &omutar! 5%tr! +ro&!s! (process switch # !ntrerupere !ntrerupere !ntrerupere !ntrerupere intrerupere

Pro&!s B
comutare !ntre procese (CP CP

Pro&!s B
CP CP

Pro&!s A
&0a timpului Hig# 8#4# Parta/area timpului !ntre procesele & i 3

Pro&!s A

7a primirea unui semnal de !ntrerupere, unitatea central de prelucrare completeaz ciclul curent de e0tragere-decodificare- e0ecuie salveaz poziia din procesul curent i !ncepe e0ecuia unui +rogram d! tratar! a 5%tr!ru+!rilor (interrupt handler , care este stocat la o locaie predeterminat din memoria principal# Programul de tratare a !ntreruperilor este o component a e0ecutorului# *fectul semnalului de !ntrerupere este de suspendare a procesului curent i de transfer a controlului ctre e0ecutor# %n acest punct e0ecutorul permite secveniatorului s actualizeze tabelul de procese, apoi e0ecutorul selecteaz procesul care are cea mai mare prioritate dintre procesele gata de continuare din tabel i permite procesului selectat s-i !nceap YfeliaT de timp# &bilitatea de oprire i de repornire ulterioar a unui proces este de importan vital pentru succesul unui sistem cu parta/area timpului# Calculatoarele proiectate pentru sisteme de operare cu parta/area timpului includ aciunea de salvare a valorii contorului de program, precum i coninutul regitrilor i al celulelor de memorie asociate, ca parte a reaciei unitii centrale de prelucrare la semnalul de !ntrerupere# *le dispun de obicei de instruciuni de limba/ main pentru re!ncrcarea unei stri salvate anterior# <odelul &li!%t3s!r#!r <odulele sistemului de operare (!ntr-un sistem cu parta/area timpului concureaz !ntre ele sub controlul e0ecutorului pentru YfeliileT (cuantele de timp# Pentru a dob"ndi accesul la un fiier aflat pe un dispozitiv de stocare de mas, orice proces trebuie s obin mai !nt"i informaiile necesare de la administratorul de fiiere# Pentru simplificarea comunicaiei !ntre procese, componentele unui sistem de operare sunt adesea proiectate !n conformitate cu modelul &li!%t3s!r#!r:

4@

Cerere Client .ervicii .erver

Hig# 8#9# <odelul client O server

Client

.erver Client

Client

.erver Client

Client

.erver

Client

.erver

Hig# 8#;# .tructuri de comunicaie !ntre clieni i servere, care opereaz pe un calculator sau sunt distribuite pe mai multe calculatoare &cest model definete cele dou roluri fundamentale pe care le pot /uca diferitele componente: &li!%t (emite cereri ctre uniti, respectiv s!r#!r (satisface cererile emise de clieni # &plicarea modelului &li!%t3s!r#!r !n proiectarea software-ului conduce la uniformizarea tipurilor de comunicaii care au loc !n sistem# ,ac componentele unui sistem de operare sunt proiectate ca servere i clieni, comunicaia !ntre componentele din cadrul aceluiai calculator sau !ntre componente ale unor calculatoare aflate la mare distan unele de altele, vezi fig# -#1#;#, are aceeasi forma# &t"t timp c"t o reea de calculatoare permite trimiterea de cereri i rspunsuri !ntre calculatoare, mai muli clieni i mai multe servere se pot distribui !n orice configuraie convenabil, pentru reeaua respectiv# :1:12 K!stio%ar!a +ro&!s!lor &o%&ur!%t! Componentele nucleului unui sistem de operare se ocup, !n principal, cu alocarea resurselor calculatorului ctre procesele ce se desfoar !n sistem# &tribuim, !n acest caz, termenului r!surs! at"t dispozitivele periferice ale calculatorului, c"t i funciile de care dispune calculatorul# (*0#: &dministratorul de fiiere aloc at"t accesul la fiierele e0istente, c"t i spaiul pe disc pentru crearea de noi fiiere # ,eoarece un calculator Ynu g"ndeteT independent, ci doar e0ecut instruciuni, pentru ca sistemul de operare s funcioneze fiabil, s-au dezvoltat algoritmi care s acopere orice problem identificat ca posibil#

41

.emafoare . lum !n discuie un sistem de operare cu parta/area timpului i la care este conectat o singur imprimant# ,ac un proces este !n situaia de a-i tipri rezultatele, el trebuie s solicite sistemului de operare accesul la programul driver al imprimantei# %n acest moment, sistemul de operare trebuie Ys decidT dac satisface aceast cerere, verific"nd dac imprimanta nu este cumva utilizat de alt proces# ,ac imprimanta este liber, sistemul de operare trebuie s acorde permisiunea utilizrii ei i s permit procesului s continue# ,ac dou procese ar cpta simultan acces la imprimant, rezultatul n-ar prezenta nici o utilitate pentru nici unul dintre ele# .oluia ar reprezenta-o utilizarea unui indicator (flag P un bit !n memoria ale crui stri sunt: 1 (s!tat i @ ($t!rs # Indicatorul $t!rs arat c imprimanta este liber, iar s!tat indic faptul c imprimanta este de/a alocat# ,ei aceast soluie pare bun la prima vedere, e0ist totui o problem# Jperaia de testare i eventual de setare a indicatorului necesit mai muli pai-main# Bu este e0clus ca operaia s fie !ntrerupt dup detectarea unui indicator nul, dar !nainte ca indicatorul s fie setat, ceea ce face posibil apariia situaiei urmtoare: Presupunem c imprimanta este disponibil i un proces cere utilizarea sa# Indicatorul care corespunde imprimantei este verificat i gsit ca fiind ters, ceea ce indic c imprimanta este disponibil# ,ar !n acel moment procesul este !ntrerupt i alt proces !i !ncepe felia de timp, i acest nou proces solicit utilizarea imprimantei# Indicatorul imprimantei este verificat din nou i gsit tot ters, deoarece procesul precedent a fost !ntrerupt !nainte de a-l putea seta# %n consecin, sistemul de operare permite celui de al doilea proces s !nceap utilizarea imprimantei# .e a/unge deci la o situaie !n care dou procese YutilizeazT simultan aceeai imprimant# Problema este c operaia de testare i (eventual de setare a indicatorului trebuie s fie terminat fr a fi !ntrerupt prin utilizarea instruciunilor de invalidare i validare a !ntreruperilor, disponibile !n limba/ele-main# J alt metod o reprezint utilizarea i%stru&'iu%ii d! t!star! $i s!tar! (test0and0set , care este disponibil !n multe limba/e-main# )nitii centrale de prelucrare i se cere s citeasc valoarea unui indicator, s o memoreze i apoi s seteze indicatorul, toate acestea printr-o singur instruciune-main# &vanta/ul acestei metode este c, de vreme ce unitatea central termin !ntotdeauna de e0ecutat o instruciune !nainte de a sesiza o !ntrerupere, operaia de testare i setare a indicatorului, implementat cu o singur instruciune, nu poate fi !ntrerupt# )n indicator implementat corect, ca mai sus, poart numele de s!ma(or (semaphore # Prin similitudine o secven de instruciuni care trebuie e0ecutat fr !ntreruperi corespunde unei poriuni de cale ferat pe care poate trece, la un moment dat, un singur tren# J asemenea secven de instruciuni poart numele de "o%* &riti&* (critical region # %nainte de a intra !ntr-o zon critic, un proces trebuie s gseasc nul semaforul asociat ei i s-l seteze, apoi trebuie s tearg semaforul dup ieirea din zona critic# Interblocarea J alt problem care poate aprea !n timpul alocrii resurselor este i%t!r,lo&ar!a (deadloc, situaia !n care desfurarea a dou sau mai multe procese este blocat, deoarece fiecare dintre ele ateapt acces la resursele alocate celuilalt# )n alt e0emplu apare !n situaia !n care procesele creeaz noi procese pentru efectuarea unor operaii mai simple# ,ac secveniatorul nu are destul spaiu !n tabelul de procese i fiecare proces din sistem trebuie s creeze un proces suplimentar !nainte de a-i termina treaba, atunci nici un proces nu va putea continua#
4-

7a o analiz mai atent, constatm c poate s apar o interblocare numai dac sunt satisfcute simultan urmtoarele trei condiii: 1 *0ist o competiie pentru resurse care nu pot fi parta/ate# - 2esursele sunt solicitate !n mod parial, ceea ce !nseamn c, dispun"nd de anumite resurse, un proces va reveni ulterior solicit"nd mai multe# 5 J dat ce o resurs a fost alocat, nu se poate fora eliberarea sa# Concluzia care rezult este c eliminarea interblocrii se poate face prin eliminarea uneia dintre cele trei condiii de mai sus# &a cum am vzut, pentru ca un calculator s poat !ndeplini o anumit sarcin, trebuie si furnizm un algoritm care s-i spun e0act ce are de fcut# %n acest sens, !n continuare vom prezenta c"teva concepte fundamentale, ca: dezvoltarea i reprezentarea algoritmilor controlul iteractivitii i recursivitii algoritmilor# ,e asemenea vor fi descrii !n continuare c"iva algoritmi foarte cunoscui de cutare i sortare#

45

;1 Firusii PC2urilor /PC2uri ,ol%a#!0 PC-urile se pot infecta cu #iru$i d! &al&ulator, programe foarte periculoase P !n sensul provocrii defectrii calculatorului P, care pot fi transmise i altor calculatoare# Diruii calculatoarelor pot !ncetini viteza de e0ecuie a programelor !n cadrul PC-ului atacat# ,e asemenea, e0ist c"iva virui mai periculoi: ei pot strica sau terge fiiere# PC-ul poate fi prote/at de virui folosind programe antivirus actualizate c"t mai des# C#1# Ce este un virus G Diruii calculatoarelor sunt programe software pe care PC-ul le poate rula ca pe oricare alt program# PC-ul ruleaz programul-virus deoarece acesta a fost copiat !ntr-un fiier sau pe disc, de unde va fi rulat, fr s ne dm seama, atunci c"nd devine activ# %ndat ce un virus este activ, el se reproduce prin autocopiere !n alte locuri, fiind posibil rsp"ndirea sa i la alte PC-uri# &ceast capacitate de multiplicare este caracteristic programelor-virus i prin ea acestea se deosebesc de celelalte programe# ,e cele mai multe ori, dac e0ist un virus activ !n PC-ul propriu el infecteaz alte fiiere sau discuri, nu se va ti nimic de aceasta actiune a lui p"n la un moment critic c"nd acest virus !i lanseaz YataculT# Hiind un produs softSare, programul-virus nu poate aciona !n nici un fel p"n !n momentul rulrii sale (p"n c"nd nu este lansat !n e0ecuie # Pentru a fi eficient, un virus trebuie s infecteze componente ale PC-ului propriu care au o probabilitate ridicat de a fi rulate# C"teva dintre componentele PC-ului mai propice pentru infectare sunt: S!&'iu%!a d! +or%ir! a 4ard2dis&ului1 &ceast seciune este o zona speciala la care accesul nu este direct# *a conine c"teva programe care sunt rulate de fiecare dat c"nd se desc+ide computerul# ,ac un virus a/unge !n aceast zon, el va fi rulat, evident, la fiecare desc+idere a PC-ului, deci va fi activ tot timpul cat functioneaza calculatorul# Fi$i!r!l! /do&um!%t!l!0 r!ali"at! su, Microsoft Word# Diruii care YinfecteazT documente Aord sunt virui obinuii# Aord fiind unul din cele mai populare programe de procesare de te0t se transmit deseori documente (fiiere Aord !n loc de copii tiprite, astfel aceste fiiere devin mi/loace e0celente de transport pentru virui# C#-# Poveti despre virui Pentru a face o demonstraie cu un produs antivirus, un agent de v"nzri s-a deplasat la un potenial beneficiar cu laptop-ul su infectat cu c"iva virui# 3ateriile laptop-ului fiind pe terminate, agentul de v"nzri i-a cerut voie clientului s alimenteze laptop-ul de la priza din camer# %n ciuda asigurrilor date de agent, clientul s-a temut c viruii vor fi transmii prin cablul conectat la priz ctre reeaua firmei# &cesta este un e0emplu de idee preconceput (sau legend care circul despre viruii computerelor# .imilare cu aceasta mai e0ist i alte YlegendeT despre viruii calculatoarelor#

L!g!%da 1 L #iru$ii i%(lu!%'!a"* (u%&'io%ar!a &or!&t* a &om+o%!%t!lor !l!&tro%i&! al! &al&ulatorului1

48

Programele-virus pot face componentele computerului s se comporte ca i cum ar fi defecte, dar ele nu pot strica fizic aceste componente hardware# %ndeprt"nd viruii de pe +arddiscul computerului se obine !ntotdeauna Y!nsntoirea completT a PC-ului# L!g!%da 2 L #iru$ii #or distrug! i%(orma'iil! di% (i$i!r!l! d! +! 4ard2dis&1 )nele programe-virus produc distrugerea sau deteriorarea unor fiiere, dar nici un virus nu va activa imediat dup infectarea unui PC# )n virus rm"ne YinvizibilT (nu acioneaz o perioad de timp, ca s se poat rsp"ndi !n c"t mai multe poziii pe +ard-disc# ,ac este detectat virusul, !n aceast perioad (a rsp"ndirii este posibil ca funcionarea PC-ului s nu fie afectat serios# %ntotdeauna este posibil recuperarea fiierelor pierdute (distruse de virui dac e0ist o copie de rezerv cu toate fiierele realizate# L!g!%da L PC2ul %u !st! d!(!&t /di% +u%&t d! #!d!r! al &om+o%!%t!lor hardware0+ro,a,il !st! #irusat1 .tatistic ma/oritatea defeciunilor PC-urilor sunt datorate componentelor electronice sau software-ului (programelor de firm sau proprii, i nu programelor-virus# ,e obicei defectarea programelor proprii sau de firm este cea mai frecvent cauz a nefuncionrii PCului# &ceast situaie este datorat greelilor fcute de proiectanii respectivelor programe> ele se numesc Y ug-uriT i sunt mult mai rsp"ndite dec"t viruii# L!g!%da : L #iru$ii +ot &*l*tori +ri% r!'!a1 Diruii fiind nite programe, pot fi transferate de la un computer la altul, la fel cum se transfer programele obinuite i fiierele de date pe disc+ete, pe C,-2J<-uri, prin reeaua local sau prin Internet# L!g!%da ; L Tr!,ui! i%stalat! +! PC doar +rogram! sigilat!- o,ti%ut! &u li&!%ta1 <uli din cei mai cunoscui virui de computer se rsp"ndesc deoarece au fost distribuii pe disc+ete de serie# C#5# Creatorii de virui ,e prin anii eC@, cercettorii din domeniul informaticii au coc+etat cu ideea crerii unor componente ale vieii artificiale prin intermediul programelor de calculator, programele-virus de astzi fiind o prelungire a produsului g"ndirii lor din acele vremuri# C#8# Programe de !ntreinere G Prin anii e9@, cercettorii dintr-un laborator informatic din Palo &lto (California au creat un +rogram2#i!rm! care cltorea printr-o reea de calculatoare# Intenia era de a transporta programe de !ntreinere ctre computerele prin care trecea# Programul a scpat de sub control i a Ydistrus reeauaT, ceea ce a condus la sistarea e0perimentului# C#C# %nceputuri Primul virus de PC, numit +rain (creier , a fost descoperit !n 1:;9 la )niversitatea din statul ,elaSare (.#)#&# # &cest virus a fost neobinuit prin faptul c !n codul su se aflau adresa i numrul de telefon ale autorilor si# C"nd acetia au fost c+estionai, autorii, doi pac+istanezi din 7a+ore, au declarat c au creat virusul !n anul 1:;4 pentru a pedepsi pe cei care fceau copii ilegale ale programelor realizate !n firma lor# *fectul virusului era sc+imbarea titlului unei disc+ete !ntr-o semntur de autentificare P +rain# Diruii care au urmat dup +rain nu au mai fost at"t de bl"nzi#

4C

C#4#

Dirusul .I,& P un cal troian %n decembrie 1:;:, ,r# Popp a trimis cca -@#@@@ de copii ale unei disc+ete, denumit Y,isc+et informativ despre .I,&T, ctre utilizatorii de PC din *uropa# Ie0tul respectiv se referea la evaluarea riscului de a contracta .I,&# <etoda de rsp"ndire a fost aceea de a cere primilor destinatari de a transmite copii ale fiierului# Hiierul coninea i un program-virus care, la a :@-a redesc+idere (pornire a PC, realiza amestecarea coninutului +ard-discului i invita s transmit, cel ce a pit-o, 1;: de )., la o adres din statul Panama pentru a obine un program de rearan/are a informaiilor# Dirusul .I,& nu se automultiplica, deci nu era un virus !n adevratul sens al cuv"ntului, ci doar un Ycal troianT# *l poate UcapturaT parole sau nume utilizator permitand unui +ac=er sa preia controlul asupra PC-ului# &ceast aciune este !ncercarea cea mai ambiioas de a folosi programe periculoase ca metod de escrocare# &cest eveniment a fost determinant pentru apariia unei legi europene !n domeniu, cum ar fi Y7egea britanic a !ntrebuinrii greite a computeruluiT P aprut !n 1::@# C#9# 3ugPuri Diruii de fiier se numesc #iru$i +ara"i'i, deoarece se rsp"ndesc folosind alte fiiere# C"nd un virus de fiier este activ !ntr-un calculator, el adaug un cod suplimentar (amprenta de virus altor fiiere care sunt accesate, modific"ndu-le# %n acest fel amprenta de virus este rulat la fiecare accesare a fiierelor# Pentru a se manifesta, viruii P fiind programe software P trebuie s fie rulai pe calculator# Diruii de fiiere infecteaz numai fiiere de date (de te0t, de imagine sau bazele de date # &ceste fiiere de date sunt afiate sau actualizate, dar nu sunt rulate, nefiind e0ecutabile# ,in acest motiv nu ofer posibilitatea de activare a virusului care le-a infectat# C#;# <acrovirui periculoi *0cepia de la regula c toate fiierele de date nu poart virui este c unele pot s conin programe macro# ,eoarece programele macro sunt foarte puternice, ele pot deveni periculoase !n m"inile celor cu intenii rele# Primul macrovirus a fost scris folosind macrolimba/ul pentru <icrosoft [ord pentru a demonstra conceptul de macrovirus> s-a numit Co%&!+t# Co%&!+t nu face altceva dec"t s afieze o inofensiv csu de mesa/e, dar nu toi macroviruii sunt at"t de bl"nzi# )n macrovirus de [ord se rsp"ndete prin adugarea de programe macro lui Normal.dot P modelul documentului care determin opiunile iniiale de pornire ale produsuluiprogram [ord# ,up aceast infectare a fiierului Normal.dot, virusul va fi activ de c"te ori se ruleaz [ord i orice document nou creat va fi virusat# 7a desc+iderea acestor documente pe alt PC ele vor transmite virusul ctre produsul-program [ord care ruleaza pe acel calculator# C#:# Iipuri de virusi P"n prin anii e:@ e0istau cca -C-5@ de virui cunoscui# 7a inceputul anului -@@1 numrul viruilor depea 8@#@@@# %n ciuda numrului mare de virui aprui p"n !n prezent, doar puini sunt o ameninare real# Pentru a fi eficient , adic pentru a avea o arie larg de rsp"ndire , un program-virus trebuie s fie activ !n cea mai mare parte a timpului de funcionare a computer-ului infectat i trebuie s afecteze elemente care tind s fie transmise ctre alte computere# Dirusul de boot Dirusul care altereza starea initiala a programului de boot-are# &cest tip de virus ataca fie sectorul de incarcare principal (<aster 3oot 2ecord , fie sectorul de incarcare ,J. de pe disc# Ioti virusii din aceasta categorie modifica intr-un fel anume continutul sectorului de boot#
44

<odificarile nu sunt foarte mari, unii dintre cei mai noi si performanti de astfel de virusi sunt capabili sa modifice doar zece bEtes din sectorul de boot# Dirusul de fisier &cest tip de virus infecteaza aplicatiile# )lterior, fisierele e0ecutabile din aceste aplicatii imprastie virusul infectand alte fisiere asociate sau alte aplicatii in timpul desc+iderii sau rularii acestora# Dirusul <acro Dirusii din aceasta categorie folosesc un limba/ simplificat de programere si in acest sens infecteaza aplicatiile [ord si *0cel, reprezentand cca# 9CZ din totalul virusilor e0istenti# )n fisier (document astfel infectat este detectabil la incarcarea sa sau la activarea unei comenzi frecvent folosita, precum UsaveT# Dirusul multipartitie &cest tip de virus se ataseaza in egala masura, la fisiere e0ecutabile, dar se va plasa si in zona de boot-are a sistemului de operare# &cest virus devine activ daca un fisier infectat este e0ecutat sau daca PC-ul este pornit folosind un disc infectat# Dirusul polimorfic *ste vorba de un virus criptat automodificabil# )n virus polimorfic isi adauga aleator date inutile la codul propriu pentru a preveni e0istenta unor secvente constante de date si O sau foloseste metode de criptare O decriptare# 2ezultatul este un virus care poate avea o infatisare diferita in fiecare fisier infectat, mult mai dificil detectabil# Dirus detasabil <odul de a actiona a acestui tip de virus este de a se dezlipi de fisierul infectat in momentul desc+iderii sau e0ecutiei acestuia i se reataseaza atunci cand programul este inc+is sau se temina# &ceasta te+nica de ascundere (stealt+ este foarte eficienta impotriva multor programe de scanare# C#1@# Prevenire i tratament .ingurul mod de a !mpiedica aciunea de infectare a informaiilor din fisierele de pe PC de ctre un virus este detectarea i eliminarea acestuia !nainte de activare# <etoda de a afla dac un fiier este virusat sau nu, !nainte de declanarea aciunii distructive, este utilizarea unui program de detectare a viruilor# C#11# ,escoperirea amprentei virusului ,etectoarele de virui sunt numite programe- scannere# Programul-scanner cerceteaz fiierele !n cutarea unui element de identificare, adic amprenta virusului respectiv# Programul-scanner tie s caute, deoarece deine informaii despre amprenta fiecrui virus# *ste evident c un program-scanner nu poate detecta un virus dec"t dac !i cunoate amprenta# &stfel, este foarte important ca detectorul de virui s fie actualizat sistematic> actualizarea se poate realiza i prin Internet# C#1-# Controlul de integritate Pentru a reui detectarea viruilor necunoscui, produsele-program antivirus utilizeaz Ycontrolul de integritateT# &ceasta este o metod care verific modificarea coninutului unui fiier, deoarece, pentru a infecta un fiier, virusul trebuie neaprat s modifice continutul acestuia# )nele tipuri de fiiere se pot sc+imba, din punct de vedere al coninutului, din motive fireti (de e0emplu fiierele care conin tabele sau cele care proceseaz te0te # ,etectoarele de YintegritateT nu pot face deosebirea !ntre modificrile normale i cele anormale#

49

C#15#

Programe antivirus *0ist mai multe categorii de programe antivirus ( +it%efender, McAfeeDs* Eirus 4can* Norton Anti Eirus* AE(* RAE # &ceste programe conin dou componente software i anume: un program pentru verificarea oricrui fiier !n orice moment, i care se numete scanner la &!r!r!> un alt program care se !ncarc permanent !n memorie i verific fiecare fiier accesat i se numete scanner d! a&&!s# &vanta/ul unui scanner d! a&&!s const !n testarea automat a oricrui fiier care este rulat# C#18# ,ezinfectarea 7a detectarea unui virus, un produs antivirus va afia un mesa/ !n care se comunic numele fiierului infecta i al virusului care l-a infectat# ,e obicei, se ofer varianta dezinfectrii fiierului afectat# C"teodat, la !ncercarea de accesare la fiierul reparat, PC-ul se bloc+eaz# ,atorit acestei situaii, !ntotdeauna sunt necesare copii de rezerv ale fiierelor i ale programelor importante# )na din cele mai simple metode de a elimina un virus const !n folosirea disc+etei Klo%'ul magi& care !nsoete programul Do&tor Solomo%# Haptic se !nc+ide PC-ul, se introduce disc+eta !n unitatea de 6lopp"0disc i apoi se va redesc+ide PC-ul# ,up c"teva zeci de secunde apare un YmenuT cu mai multe opiuni de devirusare# %n ceea ce privete documentele !n [ord, fiierele pot fi salvate !n (ormat rt( (format de te0t !mbogit # Hiierele rt( pstreaz ma/oritatea formatelor, dar nu includ nici un fel de programe-macro#

4;

<1 <1112

ALKORITMII

Co%&!+tul d! algoritm &lgoritmul este abstract i trebuie difereniat de reprezentarea sa# %n acest conte0t, al distinciei dintre algoritm i reprezentarea sa, se poate lmuri i diferena dintre dou concepte !nrudite - program i proces# Programul este reprezentarea unui algoritm (reprezentarea formal a unui algoritm proiectat !n vederea unei aplicaii informatice # Procesul este definit ca fiind activitatea de e0ecuie a programului, dar putem defini procesul ca activitatea de e0ecuie a unui algoritm# ,eci, programele, procesele i algoritmii sunt entiti !nrudite, dar distincte# n algoritm const! dintr"o mul#ime ordonat! de pa$i e%ecutabili& descri$i f!r! echi'oc& care definesc un proces finit. Hig# 4#1# ,efiniia algoritmului &naliz"nd definiia algoritmului, ne vom opri asupra cerinei ca paii care descriu algoritmul s fie ordonai, deci trebuie s aibe o ordine clar !n e0ecuia pailor# *0ist i algoritmi paraleli care conin mai multe secvene de pai, fiecare secven urm"nd s fie e0ecutat de alt procesor !n cadrul unei maini multiprocesor (deci nu este vorba numai de un fir de e0ecuie # %n continuare vom analiza cerina ca algoritmul s fie compus din pai e0ecutabili# Hie instruciunile: Pasul 1: 3onstrui#i o list cu toate numelele ntregii pozitive# Pasul 2: 4orta#i lista n ordine descresctoare# Pasul : 89trage#i primul numar ntreg din lista rezultat# &ceste instruciuni nu descriu un algoritm, deoarece pasul 1 i - sunt imposibil de e0ecutat (nu se poate construi o list cu toi !ntregii pozitivi i !ntregii pozitivi nu pot fi aezai !n ordine descresctoare# &lt cerin, descrierea fr ec+ivoc a pailor algoritmului !nseamn ca, !n timpul e0ecuiei programului, informaiile din fiecare stare a procesului trebuie s fie suficiente pentru a determina unic i complet aciunile !n fiecare pas# *0ecuia algoritmului nu necesit creativitate, ci doar capacitatea de a urma instruciunile# ,escrierea algoritmului ca un proces finit !nseamn c e0ecuia algoritmului trebuie s aibe sf"rit# Irebuie realizata o delimitatare !ntre procesele care se termin cu un rspuns- rezultat i cele care se e0ecut la infinit, fr a a/unge la vreun rezultat# Iermenul de algoritm este folosit adesea !ntr-o accepiune mai puin riguroas pentru a descrie procese care nu sunt neaprat finite# (*0# &lgoritmul de !mprire fr rest a numerelor !ntregi, !mprirea lui 1 la 5 # <121 R!+r!"!%tar!a algoritmilor Primitive 2eprezentarea unui algoritm nu se poate face !n absena unui limba/# %n cazul oamenilor acest limba/ poate fi limba/ul natural uzual sau limba/ul imaginilor# &ceste canale naturale de comunicare duc la ne!nelegeri, termenii folosii pot avea mai multe sensuri#

4:

Informatica abordeaz aceste probleme stabilind o mulime bine definit de blocuri elementare care stau la baza reprezentrii algoritmilor# &ceste blocuri elementare poart numele de primitive# ,efinirea precis a primitivelor elimin ambiguitatea i permite un grad uniform de detaliere# J mulime de reguli care guverneaz modul !n care aceste primitive pot fi combinate pentru reprezentarea ideilor mai comple0e constituie un lim,a. d! +rogramar!# Hiecare primitiv const din dou elemente: sinta0a i semantica# 4inta9a se refer la reprezentarea simbolic a primitivei, !n timp ce semantica se refer la conceptul reprezentat (semnificaia primitivei respective # Pentru a reprezenta algoritmi destinai calculatorului utiliz"nd un ansamblu de primitive, se poate porni de la instruciunile pe care calculatorul tie s le e0ecute# ,etalierea algoritmilor la acest nivel este incomod, !n mod normal se utilizeaz primitive de nivel mai !nalt, construite pe baza primitivelor de nivel sczut oferite de limba/ul-main# 2ezult astfel un limba/ de programare formal, !n care algoritmi pot fi e0primai !ntr-o form conceptual mai !nalt dec"t !n limba/ul-main# Pseudocodul Dom prezenta !n continuare un sistem de notare mai intuitiv, cunoscut sub numele de +s!udo&od# J metod de obinere a pseudocodului este de a rela0a pur i simplu regulile limba/ului formal !n care va fi e0primat varianta final a algoritmului# Ceea ce ne propunem este s discutm despre dezvoltarea i prezentarea algoritmilor fr s ne oprim asupra unui limba/ de programare# Be propunem s reprezentm anumite structuri care pot deveni primitive# Printre structurile mai des !nt"lnite remarcm: 1 .electarea !ntre dou activiti !n funcie de !ndeplinirea unei condiii# Hiecare dintre aceste instruciuni poate fi rescris astfel !nc"t s respecte structura: if (condiie then (activitate else (activitate unde am folosit cuvintele-c+eie if (dac , then (atunci elese (astfel pentru a introduce substructurile din cadrul structurii principale i paranteze pentru delimitarea granielor dintre aceste substructuri# &dopt"nd pentru +s!udo&od aceast structur sintactic, am obinut o metod uniform de e0primare a unei structuri semantice des !nt"lnite# %n cazurile !n care activitatea alternativ (else lipsete, vom utiliza sinta0a mai scurt: if (condiie then (activitate # - J alt structur algoritmic '!nt"lnit( este e0ecutarea repetat a unei instruciuni sau a unei secvene de instruciuni at"ta timp c"t o anumit condiie este adevrat# <odelul pseudocodului este: while (condiie do (activitate # J astfel de instruciune !nseamn verificarea condiiei, e0ecutarea activitii i revenirea la verificarea condiiei# C"nd condiia nu mai este !ndeplinit, se trece la e0ecutarea instruciunii care urmeaz# )neori ne referim la anumite valori prin intermediul unor nume sugestive# Pentru astfel de asocieri se utilizeaz: assign (nume the value (e0presie unde nume este un nume descriptiv, iar e0presie indic valoarea care este asociat numelui respectiv# 7izibilitatea programului poate fi !mbuntit prin identare (adic scriere poziionat pe condiii logice #

9@

*0emplu: if (articolul este impozabil then 'if (pre a limit then (pltete 9 else (pltete " ( else (pltete z # Dom folosi pseudocodul pentru a descrie activiti care s fie utilizate ca instrumente abstracte !n alte aplicaii, aceste uniti de program le vom numi !n continuare +ro&!dur* i vom folosi cuv"ntul procedure pentru atribuirea fiecrui modul de pseudocod un nume# procedure nume# &ceast instruciune introductiv va fi urmat de instruciunile care descriu aciunea modulului respectiv# %n figura 4#- este prezentat pseudocodul unei proceduri numit Salut*ri, care tiprete de trei ori mesa/ul Y>elloT: procedure .alutri assign 3ount the value F while 3ounct 0 do (tiprete mesa/ul Y>elloT i assign 3ount the value 3ount G # Hig# 4#-# Procedura .alutri e0primat !n pseudocod &tunci c"nd este nevoie de efectuarea procedurii altundeva !n cadrul secvenei pseudocodului, procedura va fi apelat prin nume# Procedurile trebuie s fie c"t mai generale posibil# &stfel o procedur care sorteaz orice list de nume, trebuie s fie scris !n aa fel !nc"t lista respectiv s nu fie specific procedurii, ci s fie desemnat !n reprezentarea acesteia sub un nume generic# Dom adopta convenia de a scrie aceste nume generice !ntre paranteze pe acelai r"nd cu numele procedurii# (*0# procedure 4ort =@ist<# &tunci c"nd avem nevoie de serviciile procedurii 4ort, va fi identificat lista are se substituie listei @ist# (*0# : se aplic procedura 4ort asupra listei cu membrii organizaiei> se aplic procedura 4ort asupra listei cu elevii clasei# Bu trebuie pierdut din vedere faptul c scopul !n care folosim pseudocodul este s creionm algoritmi, nu s scriem un program# <1 12 D!"#oltar!a algoritmilor ,ezvoltarea unui program const din dou activiti: dezvoltarea algoritmului> reprezentarea algoritmului ca program# P"n acum ne-a preocupat problema reprezentrii algoritmilor, dar stabilirea algoritmului constituie, !n general, cea mai incitant etap a dezvoltrii software-ului# Ieoria rezolvrii problemelor Capacitatea de a rezolva diferite probleme rm"ne mai degrab un talent artistic care trebuie dezvoltat# *tapele pentru rezolvarea problemelor, definite !n linii mari de matematicianul PolEa (1:8C , rm"n valabile i astzi ca principii de baz: Fa"a 11 Fa"a 21 Fa"a 1 Fa"a :1 %nelegerea problemei# Conceperea unui plan de rezolvare a problemei# Punerea !n practic a planului respectiv# *valuarea soluiei din punctul de vedere al corectitudinii i ca potenial instrument
91

pentru rezolvarea altor probleme# %n conte0tul dezvoltrii programelor, aceste etape devin: Fa"a 11 Fa"a 21 Fa"a 1 Fa"a :1 %nelegerea problemei# Conceperea unei metode de rezolvarea problemei prin procedur algoritmic# Hormularea algoritmului i reprezentarea lui ca program# *valuarea programului din punctul de vedere al corectitudinii si ca potenial instrument pentru rezolvarea altor probleme#

Importanta primului pas Dom identifica pe scurt c"teva metode de rezolvare a problemelor# Ioate aceste metode au ceva !n comun i anume: important este primul pas# &cest prim pas se poate realiza prin mai multe metode: 1 )na dintre aceste metode ar fi s procedm invers, anume: dac se dorete a se gsi o metod de a obine o anumit ieire pe baza unei intrri date, se pornete de la valoarea de ieire, !ncerc"nd s se a/ung la valoarea de intrare# - J alt metod este aceea de a se cuta o problem !nrudit cu cea care trebuie rezolvat mai simplu sau care are de/a o soluie# .e va !ncerca aplicarea soluiei problemei !nrudite i asupra problemei iniiale# &ceast metod este foarte util !n conte0tul dezvoltrii programelor pentru care dificultatea const !n gsirea algoritmului general care s permit rezolvarea tuturor cazurilor# 5 &lt metod este aceea a rafinrii pas cu pas# &ceast te+nic pornete de la !mprirea problemei !n mai multe subprobleme# <etoda permite abordarea problemei generale !n mai multe etape, !n ideea c fiecare !n parte este mai uor de rezolvat dec"t problema !n ansamblul ei# %n continuare subproblemele vor fi la r"ndul lor descompuse !n mai multe etape, p"n c"nd se a/unge la o serie de subprobleme uor de rezolvat# 2afinarea pas cu pas este o metodologie descendent (top0down , care merge de la general ctre particular# *0ist, de asemenea, i metodologia ascendent ( ottom0up care pornete de la cazurile particulare ctre cazul general# .oluiile obinute prin metoda rafinrii pas cu pas au !n mod natural o structur modular, motiv pentru care aceast metod este apreciat# )n algoritm cu o structur modular poate fi uor adoptat la o reprezentare modular, ceea ce simplific mult gestionarea activitii de dezvoltare a programului propriu-zis# ,e asemenea, modulele rezultate din aplicarea metodei de rafinare pas cu pas sunt pe deplin compatibile cu ideea de lucru !n ec+ip, modul cel mai rsp"ndit de dezvoltare a unui produs software# ,ezvoltarea multor proiecte software pentru prelucrarea datelor presupune o dezvoltare a unei componente organizatorice# Problema nu presupune descoperirea unui algoritm uluitor, ci organizarea coerent a sarcinilor care trebuie duse la !ndeplinire# %n concluzie, dezvoltarea algoritmilor rm"ne mai degrab un talent care se dezvolt !n timp, dec"t o tiin foarte e0act cu metodologii bine stabilite#

9-

<1:12 Stru&turi it!rati#! %n cadrul stru&turilor it!rati#! unele instruciuni se repet ciclic# Dom prezenta !n continuare c"iva algoritmi YcelebriT: cutarea secvenial si binar# &lgoritmul de cutare secvenial .copul acestui algoritm este determinarea unei valori dac e0ist sau nu !n cadrul unei liste# Presupunem c lista a fost sortat pe baza unei reguli oarecare, funcie de entitile componente (o list de nume respect ordinea alfabetic, o list de numere respect ordinea cresctoareOdescresctoare # Pentru e0emplificare, propunem urmtorul algoritm: cutm !ntr-o list at"ta timp c"t mai sunt nume i numele-int este mai mic dec"t numele curent# %n pseudocod, acest proces se reprezint astfel: se selecteaz primul articol din list ca articol de test while (valoare-int a articol-test i mai sunt articole de luat !n considerare do ( selecteaz urmtorul articol din list ca articol de test # 7a ieirea din aceast structur, articolul de test va fi mai mare sau egal cu numele-int, fie va fi ultimul nume din list# %n oricare din aceste cazuri putem determina dac procesul s-a !nc+eiat cu succes prin compararea valorii articolului de test cu valoarea-int# Pentru aceasta se adaug la valoarea rutinei !n pseudocod (de/a scris urmtoarea instruciune: if (valoare-int $ valoare articol-test then (declar cutarea un succes else (declar cutarea un eec # &m fcut ipoteza (presupunerea c lista conine cel puin un articol# Iotui vom plasa rutina pe ramura else a instruciunii: if (lista este goal then (declar cutarea un eec else (### # %n acest mod vom obine procedura din fig# 4#5# procedure 4earch =list target value< if (lista este goal then (declar cutarea un eec else '(selecteaz primul articol din list ca articol de test while=target value H articolul de test i mai sunt articole de luat !n considerare do (selecteaz urmtorul articol din list ca articol de test if =target value $ articolul de test then (declar selectarea un succes else (declar cutarea un eec (
Hig# 4#5# &lgoritm de cutare secvenial reprezentat !n pseudocod (seCuential search algoritm<#

95

&cest algoritm este folosit pentru listele de mici dimensiuni sau c"nd utilizarea lui este dictat de alte considerente# Controlul ciclurilor )tilizarea repetat a unei instruciuni sau a unei secvene de instruciuni este unul din conceptele algoritmice cele mai importante# J metod de implementare a acestui concept este structura iterativ denumit &i&lu3,u&l* (loop # %n cadrul buclei o serie de instruciuni, numit &or+ul ,u&l!i, este e0ecutat !n mod repetat sub supraveg+erea unui proces de control# *0# while (condiie do (corpul ciclului # Instruciunea while de mai sus reprezint o structur ciclic deoarece e0ecuia ei conduce la parcurgerea ciclic a secvenei: testeaz condiia> e0ecut corpul ciclului> testeaz condiia> e0ecut corpul ciclului, ### , testeaz condiia, p"n c"nd condiia este !ndeplinit# . analizm mai !ndeaproape i instruciunea de control# Controlul unui ciclu (bucle const !n trei activiti: iniializare, testare, modificare, aa cum se prezint i !n fig# -#-#8#: i%i'iali"ar! $ stabilete o stare iniial care poate fi modificat !n vederea atingerii condiiei de !nc+eiere t!star! $ compar condiia curent cu condiia de !nc+eiere i, !n caz de egalitate, !nc+eie procesul de repetare modi(i&ar! $ sc+imb starea astfel !nc"t aceasta s avanseze ctre condiia de inc+eiere Hig 4#8# Componentele controlului repetitiv *0ist dou structuri de tip bucl foarte rsp"ndite i anume: while (condiie do (activitate care se reprezint prin sc+ema logic (flowchart din fig# -#-#C#

Conditie de test &devrat


&ctivitate

Hals

&ctivitate

Hals

Conditie de test &devrat

Hig# 4#C# .tructura ciclului de tip while

Hig# 4#4# .tructura ciclului de tip repeat

98

%n cazul structurii while testarea condiiei de !nc+eiere se face !naintea e0ecutrii corpului ciclului# & doua structur tip bucl, reprezentat !n fig 4#4#, solicit s se e0ecute mai !nt"i corpul ciclului i dup aceea s se testeze condiia de !nc+eiere# Pentru reprezentarea sc+emei din fig# 4#4# !n pseudocod se utilizeaz urmtoarea formulare : repeat (activitate until (condiie # Ca e0emplu suplimentar de utilizare a structurilor iteractive vom prezenta algoritmul de sortare prin inserare# &lgoritmul de sortare prin inserare sorteaz o list e0trg"nd !n mod repetat c"te un articol i inser"ndu-l !n poziia corespunztoare ordinii dorite#

procedure Sort (lista if (lista conine dou sau mai multe articole then '(umbrete poriunea din lista de la al doilea p"n la ultimul articol> repeat (elimin umbra din primul articol al poriunii umbrite din list i identific acest articol drept pivot> mut pivotul !ntr-o locaie temporar ls"nd !n list un spaiu gol > while (e0ist un nume deasupra spaiului i acest nume este mai mare dec"t pivotul do (mut numele de deasupra spaiului !n spaiul gol, ls"nd un spaiu deasupra numelui respectiv> mut pivotul !n spaiul gol din list until (orice umbr din list a fost eliminat # Hig# 4#9# .ortarea prin inserare <1;1 Stru&turi r!&ursi#! .tructurile recursive reprezint o alternativ de realizare a proceselor repetitive fr a utiliza cicluri# Pentru a !nelege aceast te+nic vom discuta algoritmul d! &*utar! ,i%ar* ( inar" search # &lgoritmul de cutare binar Dom relua problema cutrii unui articol !ntr-o list sortat abord"nd metoda pe care o folosim c"nd cutm un cuv"nt !n dicionar# 7a cutarea !ntr-un dicionar !ncepem prin a desc+ide dicionarul la o pagin din zona !n care credem c se afl articolul cutat# .-ar putea s gsim cuv"ntul c+iar !n pagina respectiv, dac nu, trebuie s continum cutarea# Bumai c am restr"ns (de/a zona de cutare, put"ndu-ne rezuma fie la zona dinaintea poziiei curente, fie la cea de dup poziia curent# Hig# 4#; este reprezentarea nucleului cutrii binare !n pseudocod a acestui mod de cutare aplicat asupra unei liste generice# %n aceast situaie nu avem avanta/ul de a ti cu apro0imaie !n ce zon se afl articolul cutat, aa c instruciunile din figur ne spun s !ncepem prin a desc+ide lista la articolul din Ymi/locT#
9C

%n cazul c"nd lista are un numr par de elemente, prin articol de mi/loc vom !nelege primul articol din cea de a doua /umtate a listei# ,ac articolul astfel selectat nu este cel cutat, rutina ofer dou alternative, ambele oferind o cutare efectuat cu a/utorul unei proceduri numit search# .electeaz Ymi/loculT listei list ca articol de test> e0ecut unul dintre urmtoarele blocuri de instruciuni, !n funcie de situarea valorii-int )arget2Ealue fa de articolul de test# )arget Ealue $ articol de test (declar cutarea !nc+eiat cu succes )arget Ealue f articolul de test '(aplic procedura search pentru a vedea dac )arget Ealue este !n poriunea din list de deasupra articolului de test i if (acea cutare este !ncununat de succes then (declar aceast cutare !ncununat de succes else (declar aceast cutare !nc+eiat cu eec ( )arget Ealue a articolul de test 'aplic procedura search pentru a vedea dac )arget Ealue este !n poriunea din list de sub articolul de test i if (acea cutare este !ncununat de succes then (declar aceast cutare !nc+eiat cu succes else (declar aceast cutare !nc+eiat cu eec (# Hig# 4#;# Bucleul cutrii binare .e observ c procedura permite i rezolvarea cazului cutrii !ntr-o list goal dac va fi completat, obin"ndu-se pentru cautarea binara programul !n pseudocod prezentat !n fig# -#-#:#
procedure search (lista, )arget Ealue if (lista este goal then (declar cutarea !nc+eiat cu eec else 'selecteaz Ymi/loculT listei cu articol de test> e0ecut una dintre urmtoarele blocuri de instruciuni, !n funcie de situarea valorii-int )arget Ealue fa de articolul de test )arget Ealue $ articolul de test> (declar cutarea !nc+eiat cu succes )arget Ealue f articolul de test (aplic procedura search pentru a vedea dac )arget Ealue este !n poriunea din lista de deasupra articolului de test, i if (acea cutare este !ncununat de succes then (declar aceast cutare !nc+eiat cu succes else (declar aceast cutare !nc+eiat cu eec ( )arget Ealue a articolul de test 'aplic procedura search pentru a vedea dac )arget Ealue este !n poriunea din lista de sub articolul de test i if (acea cutare este !ncununat de succes then (declar aceast cutare !nc+eiat cu succes else (declar aceast cutare !nc+eiat cu eec (#

Hig# 4#:# &lgoritmul cutrii binare reprezentat !n pseudocod

94

<1<12 E(i&i!%'* $i &or!&titudi%! ,ou dintre subiectele legate de algoritmi sunt importante i vor fi abordate !n continuare: eficien#a i corectitudinea acestora# *ficiena algoritmilor ,ei calculatoarele actuale e0ecut milioane de instruciuni pe secund, eficiena proiectrii algoritmilor rm"ne o preocupare important, deoarece adesea diferena dintre un algoritm eficient i unul ineficient constituie diferena !ntre o soluie practic i una inaplicabil# . analizm o problem practic pentru a !nelege mai bine eficiena algoritmilor# Problema const !n regsirea !nregistrrii unui student din mulimea !nregistrrilor studenilor (cca 5@#@@@ studeni din cadrul unei universiti# Pentru !nceput vom analiza modul de regsire folosind algoritmul de regsire secvenial# &cest algoritm parcurge lista de la !nceput, compar"nd fiecare articol cu numrul cutat# Becunosc"nd valoarea-int, nu putem spune c"t de departe va merge !n list aceast cutare# .tatistic ne ateptm ca media s fie pe la /umtatea listei# Prin urmare, !n medie algoritmul secvenial va investiga cca 1C#@@@ de !nregistrri pentru fiecare cutare# ,ac regsirea i verificarea unei !nregistrri dureaz o milisecund, o astfel de cutare dureaz cca 1C secunde# J zi de lucru are -;#;@@ secunde> dac s-ar lucra continuu, algoritmul de cutare secvenial va permite s se efectueze cca 1#:@@X-#@@@ de cutri pe zi# ,eci regsirea celor 5@#@@@ de studeni va dura cca# 1C zile# &cum a venit r"ndul s analizm cutarea binar# &ceast cutare !ncepe prin a compara valoarea-int cu articolul situat !n mi/locul listei# *ste posibil s nu gseasc articolul cutat, dar se reduce aria cutrii la /umtate din lista iniial# ,eci dup prima interogare, cutarea binar mai are de luat !n calcul cel mult 1C#@@@ de !nregistrri# ,up a doua interogare rm"n cel mult 9#C@@ i aa mai departe, p"n la cea de a 1C-a interogare cand se gsete articolul cutat# ,ac o interogare dureaz o milisecund, atunci regsirea unei anumite !nregistrri se va face !n ma0imum @,@1C secunde# &ceasta !nseamn c pentru a gsi !nregistrrile corespunztoare ale celor 5@#@@@ de studeni, este nevoie de cel mult 9,C minute# Cele dou rezultate arat clar o !mbuntire substanial a timpului de cutare folosind algoritmul de cutare binar# Derificarea produselor softSare Derificarea softSare-ului este o sarcin dintre cele mai impor-tante, iar cutarea unor te+nici eficiente de verificare constituie unul dintre cele mai active domenii de cercetare# )na din direciile de cercetare este !ncercarea de a demonstra corectitudinea programelor prin aplicarea te+nicilor logicii formale# ,eci, ideea de baz este reducerea verificrii la o procedur de logic formal care s nu fie afectat de concluziile care pot rezulta din aplicarea unor argumente intuitive# Pentru demonstrarea corectitudinii unui program vom porni de la presupunerea c la !nceputul e0ecuiei acestuia sunt !ndeplinite un numr de condiii, numite +r!&o%di'ii# Pasul urmtor const !n evaluarea modului !n care consecinele acestor precondiii se propag prin program# Cercettorii au analizat diverse structuri de programe pentru a vedea cum este afectat e0ecuia lor de o anumit afirmaie despre care se tie c este adevrat !nainte de e0ecuia structurii respective# ,ac, de e0emplu, se tie c afirmaia este adevrat !nainte de e0ecuia structurii if (condiie then (instruciunea 1 else (instruciunea atunci imediat !nainte de e0ecuia instruciunii 1 putem spune c at"t afirmaia respectiv, c"t i condiia de test sunt adevrate, !n timp ce dac se e0ecut instruciunea - tim c sunt adevrate afirmaia respectiv i negarea condiiei de test#

99

. lum ca e0emplu ciclul repeat din fig 4#1@#: & Iniializare Precondiii

Corpul buclei

<odificare 3 Invariant

Iest C Invariant i condiia de !nc+eiere

Hig# 4#1@# &sertiuni asociate cu o structura repeat . presupunem c !n urma precondiiilor din punctul & putem stabili c o anumit aseriune este adevrat de fiecare dat c"nd !n timpul procesului repetitiv este atins punctul 3 (o astfel de aseriune care apare !n cadrul unui ciclu este cunoscut sub numele de in'ariant al buclei # 7a !nc+eierea procesului repetitiv, e0ecuia a/unge !n punctul C, unde putem spune c at"t invariantul, c"t i condiia de ieire sunt adevrate# Invariantul este !n continuare adevrat, deoarece testul de !nc+eiere a ciclului nu modific nici o valoare de program, iar condiia de !nc+eiere este adevrat, pentru c astfel ciclul nu s-ar terminat # ,ac aceste aseriuni combinate implic obinerea rezultatului de ieire dorit, atunci pentru a demonstra c astfel ciclul nu s-ar fi terminat# ,ac aseriunile de mai sus implic obinerea rezultatului de ieire dorit, pentru a demonstra c programul este corect trebuie s artm c cele dou componente ale controlului, iniializarea i modificarea, conduc la !ndeplinirea condiiei de !nc+eiere# Ie+nicile formate de verificare a programelor nu au atins un stadiu care s faciliteze aplicarea lor asupra sistemelor generale de prelucrare a datelor# %n cele mai multe cazuri, programele sunt YverificateT prin aplicarea lor pe seturi de date de test, procedur care nu este foarte sigur# &legerea datelor de test folosite pentru verificarea programelor ar trebui tratat cu aceeai atenie ca i obinerea unui eantion reprezentativ pentru o cercetare statistic#

9;

=1 LIMBAME DE PROKRAMARE 9#1# P*2.P*CIID* I.IJ2IC* Prim!l! g!%!ra'ii 7a !nceput, programarea presupune o metod foarte laborioas, anume transpunerea algoritmilor respectivi !n limba/-main, suplimentar fa de proiectarea algoritmului# ,up localizarea i corectarea erorilor, se poate spune c programul este utilizabil# Prima sim+li(i&ar! a procesului de programare a fost s se renune la reprezentarea operaiilor i operatorilor sub form de cifre +e0azecimale, atribuindu-se memoria pentru instruciunile limba/ului-main# %n cazul operanzilor s-au stabilit reguli pentru atribuirea unor nume descriptive (identificatori pentru locaiile de mnemonice i utilizarea acestor nume !n instruciuni# Iniial programatorii foloseau aceste notaii pentru dezvoltarea programului pe +"rtie, ulterior translat"ndu-l !ntr-o form utilizabil de calculator# Procesul de translatare este un tip de activitate care poate fi realizat direct de calculator# )tilizarea mnemonicelor s-a oficializat ca limba/ de asamblare, s-a creat asam,lorul, care translateaz programele scrise !n limba/ de asamblare !ntr-o form compatibil cu calculatorul# 7imba/ele de asamblare au aprut ca un pas uria pe drumul ctre medii de programare mai eficiente# 7imba/ele de asamblare, ca lim,a.! d! g!%!ra'ia a doua, prezentau multe avanta/e fa de limba/ele-main (+rima g!%!ra'i! , dar nu constituiau un mediu de programare foarte propice# Jrice limba( de asamblare este dependent de ma$in!, deoarece instruciunile folosite se refer la caracteristicile unui anumit calculator# &lt dezavanta/ al limba/elor de asamblare este acela c programul trebuie g"ndit la un nivel foarte cobor"t (instruc#iunile urm!resc pas cu pas limba(ul"ma$in! , !n loc s se concentreze asupra unei soluii globale a problemei de rezolvat# Pe baza acestor concepte s-au dezvoltat limba/e de programare, din a tr!ia g!%!ra'i!, la care primitivele erau de nivel !nalt i independente fa de main (calculator # Principala preocupare !n dezvoltarea limba/elor de programare din generaia a treia a fost identificarea unui ansamblu de primitive de nivel !nalt, similare pseudocodului despre care am discutat, care s permit dezvoltarea produselor softSare# ,up identificarea setului de primitive la nivel !nalt, a fost scris un program, numit tra%slator, care translateaz programele e0primate !n primitive de nivel !nalt !n programe !n limba/-main# &ceste programe de translatare au a/uns s fie cunoscute sub denumirea de &om+ilatoar!# I%d!+!%d!%'a (a'* d! ma$i%* )n program scris !ntr-un limba/ din generaia a treia poate fi utilizat la orice calculator, utiliz"nd pur i simplu asupra lui compilatorul corespunztor# J component a problemei portabilitii este faptul c !n unele cazuri nu s-a a/uns la un acord cu privire la definiia corect (e0act a unui anumit limba/# Pentru a elimina probleme de acest tip, &merican Bational .tandards Institute (&B.I i International .tandars Jrganization (I . J au adoptat i publicat standarde pentru multe din limba/ele cele mai rsp"ndite# Haptul c mainile pot acum s rspund la instruciuni de nivel !nalt a permis specialitilor s vizeze medii de programare !n care oamenii s poat s comunice cu maina direct prin intermediul unor concepte abstracte specifice g"ndirii umane, fr s mai fie necesar transpunerea !ntr-o form compatibil mainii# ,e asemenea, e0ist preocupri pentru realizarea unor maini (calculatoare care s participe nu numai la e0ecuia algoritmilor, ci i la dezvoltarea algoritmilor# 2ezultatul acestor

9:

preocupri a condus la apariia unei game de limba/e de programare !n continu diversificare, care cu greutate pot fi clasificate !n generaii# Ca regul general, termenul de lim,a.! d! +rogramar! di% g!%!ra'ia a +atra se refer la pac+etele softSare care permit utilizatorilor fr o pregtire de specialitate s poat adapta produsele propriilor lor necesiti# %n aceast categorie se !ncadreaz sistemele de calcul tabelar, sistemele de baze de date, pac+ete pentru grafic, procesoare de te0t, aceste pac+ete sunt adesea grupate !ntr-un singur sistem integrat# Iermenul de lim,a.! di% g!%!ra'ia a &i%&!a este folosit adesea cu referire la programarea declarativ i !n special pentru ceea ce se numete programarea logic# Paradigm! d! +rogramar! ,ezvoltarea istoric a limba/elor de programare se poate reprezenta printr-o diagram cu mai multe piste, !n care cile de dezvoltare (conform diferitelor paradigme sunt reprezentate separat (fig# 9#1 # &par astfel patru piste care ilustreaz patru paradigme diferite: (u%&'io%al*- ori!%tat* s+r! o,i!&t!- im+!rati#*- d!&larati#* , limba/ele asociate fiecruia fiind !nfiate !ntr-un mod care s arate evoluia lor !n timp, ceea ce nu !nseamn c aceste limba/e au evoluat neaprat unele din altele# 7I.P .I<)7& W7 CRR .maltal= 3&.IC &76J7 &P7 6P.. C Pascal Prolog .c+eme &da :C ````` Aava &da Fu%&'io%al! Ori!%tat! s+r! o,i!&t! Im+!rati#! /+ro&!dural!0

7imba/e main

HJ2I2&B CJ3J7

D!&larati#!

Hig# 9#1# *voluia paradigmelor de programare Paradigma im+!rati#* /+ro&!dural*0 reprezint modul clasic ce abordare a procesului de programare# Pe aceast paradigm se bazeaz ciclul parcurs de unitatea central: citirea instruciunii P decodificare P e0ecuie# Prin aceast paradigm se definete procesul de programare ca o secven de comenzi care, urmate, conduc la rezultatul dorit# Paradigma d!&larati#* propune dezvoltarea i implementarea unui algoritm general de rezolvare a problemelor# Pentru rezolvarea unei probleme nu va trebui dec"t ca ea s fie formulat !ntr-o manier compatibil cu algoritmul i s i se aplice algoritmul respectiv# Principalul obstacol !n calea dezvoltrii unui limba/ de programare bazat pe paradigma declarativ este descoperirea algoritmului (general de rezolvare a problemelor# Paradigma (u%&'io%al* prezint procesul de dezvoltare a programelor ca o construcie de Ycutii negreT, fiecare accept"nd intrri i furniz"nd ieiri# <atematicieni desemneaz aceste YcutiiT drept funcii, de unde denumirea de paradigm funcional# Primitivele unui limba/ de programare funcional constau din funcii elementare de baz cu care programatorul construiete funciile comple0e necesare rezolvrii problemei respective#

;@

Paradigma de programare funcional !ncura/eaz abordarea modular a programelor, deci programele sunt bine organizate !n mod natural# Cu aceast metod se dezvolt de obicei pac+ete de softSare comple0e# Paradigma ori!%tat* s+r! o,i!&t!- aceast metod conduce la un proces de programare cunoscut sub numele de +rogramar! ori!%tat* s+r! o,i!&t! (JJP P o !ect oriented $rogramming # %n aceast abordare datele sunt considerate a fi obiecte )acti'e*& spre deosebire de rolul )pasi'* care le este atribuit !n paradigma imperativ# %n abordarea orientat pe obiecte lista e considerat a fi un obiect care se compune din lista propriu"zis!, la care se adaug un ansamblu de rutine pentru gestionarea ei# Programul care lucreaz cu lista nu are ne'oie de algoritmi pentru efectuarea acestor opera#ii , ci folose$te rutinele oferite de obiect# 7imba/ele de programare orientate spre obiecte sunt Disual 3asic (<icrosoft Corporation , ,elp+i (3orland International , Aava ( G # 9#-# CJBC*PI*7* P2J62&<g2II C7&.IC* %n principiu, instruciunile !ntr-un limba/ de programare se !mpart !n: instruciuni declarative, instruciuni imperative i comentarii# I%stru&'iu%il! d!&larati#! definesc terminologia specific utilizat !n cadrul programului (e0# numele folosite pentru diferite date # I%stru&'iu%il! im+!rati#! sunt cele care descriu paii algoritmului respectiv# Com!%tariil! !mbuntesc !nelegerea algoritmului# Jrice modul de program !ncepe cu o parte declarativ (descrierea terminologiei , urmat de o parte procedural (instruciuni imperative pentru indicarea aciunilor # Comentarii sunt plasate !n program ori de c"te ori se consider necesar acest lucru# Faria,il!- &o%sta%t! $i lit!rali Identificatori de tip nume descriptive a unor locaii de memorie sunt cunoscui sub numele de #aria,il!# Prin modificarea valorii stocate !n locaia respectiv !n timpul e0ecuiei programului se sc+imb valoarea asociat identificatorului# )neori programul folosete valori predefinite care nu se modific# &ceast valoare se poate include ca un literal# )nele limba/e de programare permit atribuirea de nume descriptive i unor valori particulare care nu pot fi modificate# &ceste nume se numesc &o%sta%t!# *0#: Pentru scrierea unui program referitor la un aeroport este necesar altitudinea acestuia# %ntr-o linie de program ce utilizeaz literali aceasta se scrie astfel: assign 8ffective Alt the 'alue =Altimeter ? FI2< unde: 8ffective Alt* Altimeter sunt variabile, 5:- este o valoare literal# %ntr-o linie de program ce utilizeaz constante acelai lucru se scrie astfel: assign 8ffective Alt the 'alue =Altimeter ?Airpor Alt< const Aieport Alt $ 5:(instruciunea declarativ &o%st asociaz constanta &irpor&lt cu valoarea 5:-, iar numele &irpot &lt poate fi folosit oriunde !n program !n locul valorii 5:- #

Cat!gorii d! dat! Instruciunile declarative identific i tipul datelor# Ti+ul dat!lor determin modul !n care este interpretat irul respectiv de bii, c"t i operaiile care pot fi efectuate cu data

;1

respectiv# Cele mai utilizate tipuri de date sunt: 5%tr!g (integer , r!al (real , &ara&t!r (character i ,ool!a%# Ti+ul i%t!g!r se refer la date numerice !ntregi, reprezentate !n complement fa de doi# .e pot efectua cu aceste numere operaii aritmetice clasice i comparaiile# Ti+ul r!al se refer la numere reale, stocate !n general !n virgul mobil# &ctivitile care trebuie e0ecutate pentru adunarea a dou numere reale sunt diferite de cele pentru adunarea doi !ntregi# Ti+ul &4ara&t!r se refer la date care constau din simboluri, codificate de obicei !n &.CII# &supra acestui tip de date se pot efectua: comparaii asupra poziionrii alfabetice a unui simbol fa de altul> testarea apariiei unui ir de simboluri !n cadrul altui ir, concatenarea unui ir de simboluri la sf"ritul altuia pentru a forma un ir de mai lung# Ti+ul ,ool!a% se refer la acele date cu valori doar de adevrat sau fals, ce apar ca urmare a efecturii unor comparaii# Jperaiile compatibile cu acest tip de date sunt verificrile dac o valoare este adevrat sau fals# %n figura 9#- sunt prezentate e0emple de astfel de instruciuni declarative !n Pascal, C, CRR, Aava i HJ2I2&B# %n aceste e0emple variabilele 7engt+ i [idt+ sunt declarate de tip real, iar Price, Ia0, Iotal de tip !ntreg# ,eclaraii de variabile !n Pascal: Dar 7engt+, [idt+: real> Price, Ia0, Iotal : integer# ,eclaraii de variabile !n C, CRR i Aava: float 7engt+, [idt+> int Price, Ia0, Iotal# ,eclaraii de variabile !n HJ2I2&B: 2*&7 7engt+, [idt+> IBI*6*2 Price, Ia0, Iotal# Hig# 9#-# ,eclaraii de variabile !n Pascal, C, CRR, Aava, HJ2I2&B

Stru&turi d! dat! )n concept asociat instruciunilor declarative este acela de structur de date care se refer la forma conceptual a datelor# ,atele pe l"ng tip, de/a e0plicat !n capitolul anterior, au i o lungime (mrime # )n ir de caractere este un caz particular al unei structuri generice de date care poart numele de vector omogen (homogeneous arra" # Pentru a declara un astfel de vector, ma/oritatea limba/elor de programare utilizeaz o instruciune declarativ !n care se precizeaz mrimea pentru fiecare dimensiune a vectorului# %n fig# 9#5 se prezint instruciuni declarative !n C i Pascal care declar Num! ca vector unidimensional de tip caracter i lungime opt, iar S&or!s ca vector bidimensional de tip !ntreg, cu dou linii i nou coloane#

;-

Dectori declarai !n Pascal Dar NameJ pac,et arra" '1###;( of charK 4coresJ arra" '1###-, 1###:( of integer# Dectori declarai a C char Name ';(> int 4cores '-( # ':(# Stru&tura &o%&!+tual* a #!&torilor Bame: .cores: Hig# 9#5# ,eclararea unor vectori omogeni !n Pascal i C *0ist i vectori neomogeni, din punct de vedere al tipului de date incluse, numii vectori +eterogeni (heterogenous arra" # %n fig# 9#8 se prezint modul de declarare a unui asemenea vector# ,up declararea vectorului se poate face referire la el !n !ntregime, prin nume, iar la fiecare component a sa prin poziia acesteia# %n cazul vectorilor omogeni componentele sunt identificabile prin indici care specific linia, coloana etc#

Dectori declarai !n Pascal Dar 8mplo"eJ record NameJ pac,ed arra" '1###;( of char> Age J integerK 4,ill RatingJ real end

Dectori declarai !n C .truct (char Name ';(> int Age K float 4till RatingK 8mplo"e# Jrganizarea conceptual a vectorului 8mplo"er

Name

Age 4,illRating

Hig# 9#8# ,eclararea unor vectori +eterogeni !n Pascal i C


;5

I%stru&'iu%i d! atri,uir! Instruciunea de atribuire solicit ca unei variabile s i se atribuie o valoare# J astfel de instruciune are urmtoarea sinta0: variabila urmat de un simbol care reprezint operaia de atribuire i d e o e0presie care indic valoarea ce se atribuie# %n limba/ele C, CRR instruciunea Total B Pri&! G Ta) cere ca variabilei Iotal s-i fie atribuit valoarea sumei dintre Price i Ia0# %n paradigmele imperativ i cea orientat pe obiecte instrucinstruciunea de atribuire este foarte utilizat, deoarece datele sunt manipulate !n principal prin intermediul su# I%stru&'iu%i d! &o%trol Instruciunile de control sunt instruciuni imperative care modific ordinea de e0ecuie a programului# &ceste instruciuni au st"rnit cele mai multe controverse, iar Yprincipalul vinovatT este cea mai simpl dintre ele, Ygo toT# &ceast instruciune furnizeaz o metod de a continua programul din alt punct, care a fost identificat printr-o etic+et (nume, numr # Includerea unei astfel de instruciuni !ntr-un limba/ de nivel !nalt conduce la scrierea unor secvene foarte !nc"lcite# Pentru evitarea unor asemenea situaii, limba/ele moderne de programare dispun de instruciuni de control mai elaborate (e0# if ? then ? else care permit ramificarea programului prin intermediul unei singure structuri sintactice# %n figura 9#C sunt prezentate c"teva din cele mai utilizate structuri de ramificare i instruciuni de control, precum i modul lor de reprezentare !n diverse limba/e# Pas&al if + then 4G else 42 Ad!#*r BN Fals Ada if + then 4G else 42 end if C- CGG- Ma#a if + 4G else 42

.1

.-

Fals

BN Ad!#*r
.1

Pas&al while + do +1,

C- CGG- Ma#a while + +1,

Ada while + loop 4G end loopK

;8

Hig# 9#C# a# .tructuri de control i reprezentarea lor !n Pascal, C, CRR, Aava i &da

Car! !st! #aloar!a lui N N

Pas&al case N of C1 - +1, C/ - +/, C0 - +0, end, Ada

C- CGG- Ma#a 4witch =N< . case C1 - +1, case C/ - +/, case C0 - +0,
<K

B $ C1
.1 .-

B $ C-

B $ C5
.5

when 3G 4GK when 32 42K when 3F 4F K end case

case 1 is

Hig# 9#C# b# .tructuri de control i reprezentarea lor !n Pascal, C, CRR, Aava i &da J alt structur larg folosit este cea numit for# *a este similar cu structura while utilizat !n pseudocod, dar iniializarea, modificarea i !nc+eierea ciclului sunt !ncorporate !ntr-o singur instruciune#

&tribuie lui 3ount valoarea 1

Hals

3ount f 8G

&devr Corpul buclei Pascal for 3ount J H 1 to 5 do egin od" end. &tribuie lui 3ount valoarea 3ount L 1 C, CRR, Aava for =3ount H 1> 3ount f 8> RR 3ount< = od"<

;C

Hig# 9#4# .tructura for i reprezentarea ei !n Pascal, C, CRR i Aava Com!%tarii *0periena arat c oric"t de bine ar fi proiectat un limba/ de programare i oric"t de bine ar fi folosit, informaiile suplimentare sunt utile !ntotdeauna pentru orice doritor care !ncearc s !neleag un program de oarecare comple0itate# %n acest scop limba/ele de programare furnizeaz o sinta0 pentru inserarea !n program a unor instruciuni e0plicative numite &om!%tarii# ,ocumentarea constituit din aceste comentarii se numete do&um!%ta'i! i%t!r%* ,ocumentaia intern este ignorat de ctre translator# pentru a include comentariile !n program, limba/ele de programare furnizeaz dou metode de delimitare a acestora de restul programului# Hie se include comentariul !ntre nite marca/e speciale, fie se marc+eaz doar !nceputul comentariului, acesta urm"nd s ocupe tot r"ndul sau c+iar mai multe r"nduri (!n acest caz se adaug i la !nceputul r"ndurilor suplimentare semnul specific comentariului# *ste recomandabil ca toate comentariile care se refer la un anumit modul de program s fie grupate !ntr-un singur loc#

9#5# <J,)7* ,* P2J62&< 7imba/ele bazate pe paradigma funcional !mpart !n mod natural programele !n funcii, iar limba/ele bazate pe paradigma orientat spre obiecte au ca rezultat module de program care reprezint obiectele# Be vom concentra asupra te+nicilor prin care se poate obine o reprezentare modular a unui algoritm# Pro&!duri Pro&!dura este un modul de program scris indepndent de programul principal, dar legat de acesta printr-un proces de transferOrevenire conform fig#9#9# <odel apelant Procedur Iransfer

2evenire

Hig# 9#9# Iransferul controlului la apelarea unui subprogram C"nd este nevoie de serviciile procedurii, controlul se transmite acesteia (instruciunea A)<P, limba/ul-main , iar dup e0ecuie controlul revine modulului principal#
;4

Ca regul general, variabilele declarate !n interiorul procedurii sunt variabile locale (se utilizeaz numai !n interiorul procedurii # .unt totui cazuri !n care unele date trebuie utilizate !n comun de mai multe module# Dariabilele utilizate !ntr-o asemenea situaie se numesc #aria,il! glo,al!# Param!trii Holosirea !n comun a unor informaii prin utilizarea unor variabile globale nu este recomandat, deoarece acest mod de lucru masc+eaz activitile modulelor de program care parta/eaz datele respective# .e recomand identificarea datelor parta/ate de mai multe module de program, ceea ce se poate face prin includerea e0plicit a listei acestora !n instruciunea prin care se solicit e0ecuia procedurii# &stfel i antetul procedurii trebuie s conin o list a variabilelor crora li se atrib9uie valori la apelarea procedurii# *lementele care compun aceste dou liste se numesc +aram!tri# 7a apelarea procedurii, lista de parametri din modulul apelant este asociat, element cu element, listei de parametri din antetul procedurii# Dalorile parametrilor din modulul apelant sunt transferate efectiv parametrilor corespondeni din procedur# ,up aceea, procedura este e0ecutat, iar valorile (eventual modificate sunt transferate !napoi ctre modulul apelant# %n alte situaii transferul poate avea loc !ntr-un singur sens, fie ctre procedur, fie ctre modulul apelant# )n avanta/ ma/or al acestui sistem de substituire este acela c aceeai procedur poate fi apelat de mai multe ori, cu diferite seturi de date# Fu%&'ii Iermenul de (u%&'i! se refer la un modul de program asemntor unei proceduri, cu deosebirea c o valoare se transfer !napoi ctre programul principal nu prin intermediul listei de parametri, ci ca Yvaloare a funcieiT# &ltfel spus, valoarea respectiv este asociat numelui funciei, aa cum se asociaz o valoare unei variabile# %n cazul funciei, valoarea se obine prin e0ecutarea instruciunilor din cadrul funcie# I%stru&'iu%i d! i%trar!3i!$ir! Procedurile i funciile sunt metode foarte bune de a e0tinde caracteristicile unui limba/ de programare# ,ac limba/ul nu furnizeaz o anumit operaie ca primitiv, se poate scrie o procedur sau o funcie care s efectueze acea operaie, iar apoi se va apela la modulul respectiv ori de c"te ori este nevoie# %n ma/oritatea limba/elor, operaiile de intrareOieire sunt implementate !n acest mod, cu diferena c procedurile i funciile apelate sunt de fapt rutine ale sistemului de operare# Pentru a citi o valoare de la tastatur i a o atribui variabilei Falu!, !n Pascal se scrie: readln =Ealue<, iar pentru a afia valoarea respectiv pe ecran: writeln =Ealue<# 7imba/ul CRR, fiind un limba/ orientat pe obiecte, furnizeaz dou obiecte prefabricate, cin i cout, care reprezint dispozitivul standard de intrare i, respectiv, dispozitivul standard de ieire# &ceeai aciune de mai sus !n limba/ul CRR se va scrie astfel: cin MMEalue> 'citirea valorii de la tastatur( cout NN Ealue> 'afiarea variabilei Ealue pe ecran(#

;9

9#8# I<P7*<*BI&2*& 7I<3&A*7J2 %n continuare vom analiza procesul de convertire a unui program scris !ntr-un limba/ de nivel !nalt !ntr-o form e0ecutabil de main# Pro&!sul d! tra%slatar! Procesul de convertire a unui program dintr-un limba/ !n altul se numete tra%slatar!# Programul !n forma iniial este +rogramul surs*, iar versiunea translatat este programul obiect# Procesul de translatare const din trei activiti: analiza le0ical, analiza sintactic (parsing i generarea codului# &nalizor le0ical &naliz le0ical Program surs Hig# 9#;# Procesul de translatare A%ali"a l!)i&al* este procesul prin care se identific irurile de simboluri din programul surs are reprezint entitile distincte# Pe msur ce analizorul le0ical identific grupuri de simboluri care constituie entiti distincte, le clasific !n funcie de ceea ce reprezint P o valoare numeric, un cuv"nt, un operator aritmetic, ### i genereaz un model de bii cunoscut sub numele de simbol (to,en , care arat clasa entitii respective# A%ali"a si%ta&ti&* este un proces de identificare a structurii gramaticale a programului i de recunoatere a rolului fiecrei componente# <a/oritatea limba/elor de programarea sunt limba/e cu format liber, ceea ce !nseamn c locul instruciunilor !n program nu are important# Pentru ca un calculator s poat analiza sintactic un program scris !ntr-un limba/ cu format liber trebuie ca analizorul s-l identifice indiferent de spaiile utilizate !n programul surs# %n acest scop ma/oritatea limba/elor folosesc semnele de punctuaie, cum ar fi punct i virgul, pentru a marca sf"ritul unei instruciuni, precum i de &u#i%t!2&4!i! (cuvinte rezervate - cum ar fi if* then sau else pentru a marca !nceputul unor propoziii distincte# Procesul de analiz sintactic se bazeaz pe un set de reguli care definesc sinta0a limba/ului de programare, reprezentare prin diagramele de sinta0# %n fig# 5#: se prezint diagrama de sinta0 a instruciunii if ? then 0 else# if *0presie boolean Hig# 9#:# ,iagrama de sinta0 a instruciunii if ? then ? else din pseudocod Procesul de analiz sintactic const, !n esen, din construirea arborelui de analiz sintactic a programului surs# ,in acest motiv, regulile de sinta0 care descriu structura
;;

&nalizor sintactic &naliz sintactic

6enerator de cod 6enerarea codului Program obiect

then

Instruciune

else

Instruciune

gramatical a unui program nu trebuie s permit obinerea a doi arbori diferii pentru acelai ir analizat# Pentru e0emplificare, regula din fig# 9#: conine o eroare care permite ca, pentru instruciunea : if +G if +2 then 4G else 42 s se obin doi arbori de analiz diferii, prezentai !n fig# 9#1@#
Instructiune

if

*0presie boolean (31

then

Instruciune

else

Instruciune (.-

if

*0presie boolean (3-

then

Instruciune (.1

Instruciune

if

*0presie then Instruciune boolean (31 if *0presie then Instruciune else boolean (3(.1 Instruciune (.-

Hig# 9#1@# &rbori de analiz sintactica diferii pentru instruciunea ( if +G then if +2 then 4G else 42 ,efiniiile de sinta0 ale limba/elor formale de programare sunt proiectate astfel !nc"t s evite asemenea ambiguiti, folosind parantezele# Pentru a distinge cele dou interpretri posibile vom scrie: if +G then =if +2 then 4G< else 42 if +G then =if +2 then 4G else 42<
;:

Informaiile e0trase din instruciunile declarative sunt !nregistrate !ntr-o tabel numit ta,!la d! sim,oluri, care conine date referitoare la variabilele care au fost declarate i la tipurile i structurile de date asociate# J alt activitate din cadrul translatrii unui program este g!%!rar!a &odului, reprezent"nd procesul de construire a instruciunilor !n limba/ul-main care simuleaz instruciunile recunoscute de analizorul sintactic# )na din sarcinile importante ale generatorului de cod este optimizarea codului# &naliza le0ical, sintactic i generarea codului nu se realizeaz strict !n aceast ordine, ci se !mpletesc: analizorul le0ical identific primul simbol i !l transfer analizorului sintactic care ar trebui s urmeze i !i cere urmtorul simbol# %n momentul !n care sunt recunoscute instruciuni sau propoziii complete, analizorul sintactic apeleaz generatorul de cod, care produce instruciunile main necesare# Editar!a d! l!g*turi $i 5%&*r&ar!a Programul obiect care rezult !n urma procesului de translatare, dei e0primat !n limba/ main, este arareori !ntr-o form e0ecutabil# <a/oritatea mediilor de programare permit dezvoltarea i translatarea individual a modulelor de program, la momente diferite, ceea ce permite construcia modular a produselor softSare# C+iar dac programul este dezvoltat i translatat sub forma unui singur modul, !n cele mai multe cazuri programul obiect tot nu este pregtit pentru e0ecuie, deoarece conine cereri de servicii softSare care sunt oferite direct de sistemul de operare sau pot fi obinute prin intermediul acestuia# )n program obiect este un program main cruia !i lipsesc unele legturi care trebuie Y!nnodateT pentru a-l transforma !ntr-un program e0ecutabil# %nnodarea acestor legturi este efectuat de un program numit editor de legturi ( lin,er # .arcina acestui lin,er este de a lega !ntre ele programele-obiect, rutinele sistemului de operare i alte utilitare softSare !ntr-un program e0ecutabil (modul !ncrcabil , memorat ca fiier !n sistemul de stocare de mas al calculatorului# Pentru e0ecutarea unui program astfel translatat, el trebuie plasat !n memorie de ctre programul de !ncrcare (leader , parte a secveniatorului# Pe scurt, pregtirea unui program scris !ntr-un limba/ de nivel !nalt const dintr-o secven de trei pai: translatare, editare de legturi i !ncrcare, aa cum se vede !n fig#9#11# ,up translatare i editare de legturi, programul poate fi !ncrcat i e0ecutat !n mod repetat, fr a mai reveni la versiunea-surs# ,ac sunt necesare modificri !n program, acestea se fac !n programe-surs, dup care sursa modificat este translatat i se face editarea de legturi, obin"ndu-se un nou model !ncrcabil# Program surs Iranslatare Program obiect *ditare <odul de de !ncrcare legturi %ncrcare Program e0ecutabil

Hig# 9#11# Procesul complet de pregtire a programului

Pa&4!t! +!%tru d!"#oltar!a +rodus!lor software Iendina curent este aceea de a grupa translatorul i celelalte elemente softSare utilizate !n procesul de dezvoltare a unui produs softSare !ntr-un pac+et care funcioneaz ca un sistem integral# &vanta/ele utilizrii unui astfel de sistem integrat sunt reprezentate de posibilitatea ca

:@

programatorul s poat trece cu uurin de la editor la instrumente de depanare modific"nd i test"nd imediat programul#

9#C# P2J62&<&2*& ,*C7&2&IIDg 7ogica formal furnizeaz un algoritm general de rezolvare a problemelor, !n /urul cruia se poate construi un sistem de programare declarativ# D!du&'ia logi&* . presupunem c urmtoarea afirmaie este adevrat: Wermit fie este bolnav, fie se afl pe scen# %n aceste condiii, dac ni se spune despre Wermit c nu este pe scen, tragem concluzia c este bolnav# &cesta este un e0emplu de aplicare a principiului deductiv numit r!"olu'i!# Ca s !nelegem mai bine acest principiu, s !ncepem prin a reprezenta propoziiile logice prin litere, iar negarea negaiile lor prin simbolul YT !nsoit de o liter# %n form general principiul rezoluiei precizeaz faptul c dac propoziiile: P J2 h i 2 J2 h sunt adevrate, atunci i propoziia: P J2 2 este adevrat# &ltfel spus, cele dou propoziii iniiale se rezolv prin a treia, numit r!"ol#!%t# .e observ c rezoluia poate fi aplicat doar perec+ilor de propoziii cu (orma &lau"al* (propoziii legate prin operatorul boolean J2 # %n fig# 9#1- vom reprezenta grafic rezoluia a dou propoziii# P J2 h 2 J2 h P J2 2 Hig# 9#1-# 2ezolvarea propoziiilor (P J2 h i (2 J2 -h prin (P J2 h

.e spune c o serie de propoziii este inconsistent dac este imposibil ca toate propoziiile s fie adevrate !n acelai timp# %n fig# 9#15 se demonstreaz faptul c setul de propoziii P J2 h> 2 J2 h> 2> P este inconsistent# P J2 h 2 J2 h P J2 2 2 P

:1

P Propoziie nul Hig# 9#15# 2ezolvarea propoziiilor (P J2 h i (2 J2 h , 2 i P Procesul prin care, pentru a face posibil aplicarea principiului rezoluiei variabilelor, li se atribuie valori se numete u%i(i&ar!# &cest proces, de unificare, permite ca !ntr-un sistem deductiv propoziiile generale s fie aplicate !n cazuri particulare# Lim,a.ul PROLOK Lim,a.ul Prolog /$R'gramming in @'.ic este un limba/ de programare declarativ al crui algoritm de rezolvare a programelor are la baz rezoluia repetat# )n program Prolog const dintr-o serie de propoziii iniiale, pe care algoritmul !i bazeaz toate deduciile# Componentele din care sunt construite aceste propoziii se numesc predicate# )n astfel de predicat se compune dintr-un identificator, urmat de o parantez cu lista argumentelor predicatului# &rgumentele predicatului !ncep !ntotdeauna cu liter mic# 7imba/ul Prolog face distincia !ntre constante (liter mic i variabile (ma/uscule # Instruciunile !ntr-un limba/ Prolog sunt fie afirmaii, fie reguli> ele se termin cu punct# J afirmaie const dintr-un singur predicat# Bu trebuie s v !nc+ipuii c sistemul Prolog !nelege semnificaia predicatelor din program> el le manipuleaz !ntr-o manier absolut simbolic, aplic"nd regulile de inferen ale rezoluiei# Programatorului !i revine responsabilitatea de a descrie toate caracteristicile i predicatele sub forma unor afirmaii i reguli# <a/oritatea implementrilor de Prolog sunt proiectate pentru utilizare interactiv# &tunci c"nd sistemul Prolog primete o !ntrebare, el !i aplic principiul rezoluiei !ncerc"nd s confirme faptul c o afirmaie corespunztoare !ntrebrii este o consecin a afirmaiilor iniiale# &stfel, pe baza seriei de instruciuni care descriu viteza relativ, pot fi confirmate toate !ntrebrile urmtoare: faster (broasca, melc faster (iepure, broasc faster (iepure, melc # Primele dou sunt afirmaii care apar !n setul iniial de instruciuni, iar cea de a treia poate fi dedus de ctre sistem# ,ac furnizm sistemului !ntrebri care au argumente variabile, nu constante, vom obine e0emple mult mai interesante# ,e e0emplu, pornind de la !ntrebarea: faster (S, melc vom obine ca rspuns faster (broasca, melc # Putem cere sistemului Prolog s gseasc animale care sunt mai lente dec"t iepurele pun"ndu-i !ntrebarea: faster (iepure, S # &stfel, utiliz"nd un singur program Prolog, vom putea s confirmm faptul c un animal este mai rapid dec"t altul, s gsim toate animalele care sunt mai rapide dec"t un animal dat sau s gsim toate relaiile dintre animale !n ceea ce privete viteza#
:-

&ceast fle0ibilitate este unul dintre aspectele care a trezit interesul specialitilor pentru limba/ul Prolog#

BAZELE PROKRAMARII / ORKANIZAREA DATELOR0 ?1 .I2)CI)2I ,* HI_I*2* ?111 Fi$i!r!l! s!&#!%'ial! Boiuni de baz Jrganizarea secvenial este, desigur, una conceptual# Huncie de caracteristicile fizice ale dispozitivului periferic utilizat se poate stoca fiierul respectiv !n alt format i s fie prezentat utilizatorului ca un fiier secvenial# Boiunea de organizare secvenial P aici a !nregistrrilor !ntr-un fiier P este legat de dispozitivul periferic i de suportul fizic utilizat (e0# banda magnetic este, prin natura sa, secvenial # ,esigur, fiiere secveniale se pot stoca i pe suportul disc magnetic dispers"nd !nregistrrile !n diferite locaii disponibile (care nu sunt una dup alta ca adresare # .istemele de operare pstreaz evidena locaiilor (sectoarelor ocupate de !nregistrri i fiiere i a ordinii !n care trebuie citite# .f"ritul fiecrui fiier secvenial este indicat de un marca/ de sf"rit de fiier P *,H ( end of file # Jrganizarea secvenial a fiierului

%nreg# nr#1 %nreg# nr#-

###

%nreg# nr# i

* J H

Hig# ;#1# Hiier secvenial )tilizatorul unui fiier secvenial poate s vad !nregistrrile numai !n ordine secvenial# .ingurul mod de a gsi o !nregistrare este acela de a !ncepe cutarea de la !nceputul fiierului i de a le gsi i e0trage !n ordinea !n care se afl !n fiier# .tructura secvenial a unui fiier este convenabil pentru generarea unor rapoarte (e0# statele de salarii , dar aceeai structur secvenial este total nefavorabil la actualizarea !nregistrrilor# (,e e0emplu, pentru actualizarea orelor lucrate de un anga/at se citete cartela sa de ponta/ i apoi se caut !n tot fiierul !nregistrarea anga/atului respectiv pentru actualizare, iar pentru urmtorul anga/at trebuie reluat procesul de la !nceput# Procesul poate fi simplificat dac ordinea cartelelor de ponta/ corespunde cu ordinea !nregistrrilor din fiierul anga/ailor # ,in aceste motive fiierele secveniale sunt de regul stocate !n ordine alfabetic sau numeric, !n funcie de coninutul unui c"mp, numit &6m+2&4!i! (,e" field # &v"nd !n vedere avanta/ele oferite de o ordine bine stabilit !n prelucrarea fiierelor secveniale, sortarea ocup un loc important# Pentru actualizarea unui fiier secvenial, noile informaii (!n cazul nostru colecia de cartele de ponta/ sunt !nregistrate sub forma unui fiier secvenial independent, cunoscut sub numele de (i$i!r tra%"a&'io%al# &cest fiier tranzacional este sortat !n ordinea !n care este sortat fiierul care trebuie actualizat i !nregistrrile fiierului iniial sunt actualizate !n ordinea lor de apariie#
:5

&specte legate de programare %n ceea ce privete manipularea fiierelor secveniale din punct de vedere al programatorului, tendina !n cadrul limba/elor de nivel !nalt este ca operaiile cu fiiere s se realizeze prin proceduri care sunt fie definite ca parte a limba/ului formal, fie furnizate de e0tensii ale acestuia, sub form de biblioteci# %n ambele situaii, parametrii procedurilor indic fiierul-int i zona de memorie principal !n care se scrie sau din care se citesc !nregistrrile manipulate# ,e e0emplu, !n Pascal se pot folosi instruciuni de forma: read (7ista potal, %nregistrare potal i Srite (7ist potal, %nregistrare potal pentru a citi, respectiv a scrie (salva informaii dintr-unO!ntr-un fiier secvenial identificat ca List* +o$tal*# &lturi de identificatorul de fiier, !n lista de parametri apare i numele O%r!gistrar! +o$tal*, utilizat !n cadrul programului pentru identificarea blocului de date care se transfer# Jbservai c aceste instruciuni nu conin nici o informaie e0plicit cu privire la poziia pe care o au !n fiier !nregistrrile manipulate# Hiierul fiind secvenial, !nregistrarea citit este cea care urmeaz poziiei curente !n cadrul fiierului, iar !nregistrarea care se scrie !n fiier este plasat imediat dup poziia curent# Pe l"ng subrutine care permit manipularea !nregistrrilor dintr-un fiier secvenial, ma/oritatea limba/elor de nivel !nalt furnizeaza i instrumente pentru detectarea marca/ului de sf"rit de fiier# ?121 Fi$i!r! d! t!)t ,ac !nregistrarea logic dintr-un fiier secvenial se rastrange la un singur octet, se consider c avem un (i$i!r d! t!)t (te9t file # ,enumirea fiierului reflect faptul c aceste fiiere sunt utilizate de obicei pentru stocarea unor documente care conin te0t# &ltfel spus, un fiier de te0t poate fi considerat compus din secvene de r"nduri separate prin marca/e de sf"rit de r"nd# <anipularea fiierelor de te0t ,in motive legate de stocare, fiierele de te0t sunt !mprite !n secvene de octei care formeaz !nregistrri fizice a cror dimensiune e compatibil cu sistemul de stocare utilizat# <anipularea acestor !nregistrri fizice este realizat !n mod transparent de program# %n realitate, la solicitarea prelurii din fiier a primului octetOprimul r"nd de te0t, programul citete una sau mai multe !nregistrri fizice i le memoreaz !ntr-un uffer (zon de tampon din memoria principal# Pe msur ce programul transfer coninutul buffer-ului ctre utilizator, !n uffer sunt aduse noi !nregistrri i aa mai departe, p"n la atingerea sf"ritului de fiier# 7a scriere !n fiier, programul colecteaz octeii !ntr-un buffer, p"n c"nd se acumuleaz acolo o !nregistrare fizic !ntreag P sau s-a a/uns la captul fiierului i apoi se trece la transferarea efectiv a !nregistrrii fizice pe dispozitivul de stocare# &specte legate de programare <anevrarea fiierelor de te0t se face cu a/utorul procedurilor predefinite, incluse !n definiia formal a limba/ului sau !n biblioteci oferite ca e0tensii ale acestuia# Considerm SPm,ol o variabil de tip caracter implicat !n instruciunea: read (Dec+iul manuscris, .Embol # Instruciunea de mai sus citete un octet din fiierul de te0t identificat ca F!&4iul ma%us&ris i atribuie acea valoare variabilei .Embol# .imilar, instruciunea:
:8

write (Boul manuscris, .Embol plaseaz octetul atribuit variabilei SPm,ol la poziia curent !n fiierul Noul ma%us&ris# ?1 1 Fi$i!r! i%d!)at! Ideea de inde0are este preluat din modul de lucru cu o carte, unde se utilizeaz un inde0 care permite localizarea unui subiect mult mai repede dec"t prin parcurgerea secvenial a crii# Boiuni de baz Inde0ul fiierului const dintr-o list a valorilor care apar !n c"mpurile-c+eie ale fiierului, la care se adaug poziia !nregistrrii respective !n cadrul dispozitivului de stocare masiv a informaiilor# &cest mod de organizare presupune s cunoatem valoarea c"mpului-c+eie corespunztor !nregistrrii cutate# Jrganizarea inde0ului Pentru a cuta ceva !n !nregistrarea identificat prin inde0 este necesar ca inde0ul s fie transferat !n memoria principal i !n acest sens dimensiunea lui trebuie s se !ncadreze !n limite rezonabile# J metod de rezolvare a problemei indecilor de mari dimensiuni este utilizarea unui inde0 al inde0ului iniial# &stfel inde0ul general va lua o form stratificat sau arborescent# &specte legate de programare Hoarte puine dintre limba/ele actuale de programare de nivel !nalt conin comenzi specifice pentru manipularea fiierelor prin intermediul unui inde0# .istemele de gestiunea bazelor de date furnizeaz instrumente care scutesc programatorul de sarcina de a-i !ntreine propriile sisteme de fiiere inde0ate# Iotui e0ist i la nivelul limba/elor de programare Ycrmizile elementareT pentru construirea unui fiier inde0at# ,e e0emplu: %ntr-un program scris !n limba/ul C se poate utiliza funcia (s!t+os pentru a stabili poziia curent !n cadrul unui fiier# &stfel, instruciunea: fsetpos (Personal, i Poziie solicit ca poziia curent !n cadrul fiierului P!rso%al s fie stabilit la locaia identificat prin valoarea variabilei Po"i'i!# ,ac imediat dup aceast instruciune se scrie: fscanf (Personal, YZsT, Bume vom obine numele situat la respectiva poziie din fiier# ?1:1 Fi$i!r! dis+!rsat! /hashed files0 .istemul de stocare reprezentat prin fiiere dispersate permite doar accesul direct, fr a utiliza un mod de inde0are# Ideea de baz este calcularea poziiei fiecrei !nregistrri !n memorie prin aplicarea unui algoritm (algoritmul de dispersie asupra valorii c"mpului-c+eie# &ltfel spus, fiind dat c"mpul-c+eie cutat, se poate determina rapid poziia !nregistrrii respective, fr a utiliza o tabel special (cazul fiierelor inde0ate # *0emplu de te+nic de dispersie .e !mparte zona de memorie de mas alocat pentru fiierul respectiv !n mai multe seciuni, pe care le vom numi &o%tai%!r!# . presupunem c zona de stocare se !mparte !n -@ de containere# ,e asemenea, presupunem c !nregistrrile din fiier vor fi cutate dup numrul de identificare i vom stabili acest c"mp drept c"mp-c+eie#
:C

Jbiectivul nostru urmtor este s convertim orice valoare a c"mpului-c+eie !ntr-o valoare numeric# &cest lucru este oarecum simplu, deoarece vom putea scrie forma binar a fiecrei valori din c"mpul-c+eie# &poi utiliz"nd aceast interpretare numeric, se va !mpri aceast valoare binar a c"mpului-c+eie la numrul de containere, obin"ndu-se c"tul i restul# &ceste resturi vor fi !ntotdeauna un numr !ntre @ i 1:# )tiliz"nd acest sistem se poate converti orice valoare din c"mpul c+eie !ntr-un !ntreg care identific unul dintre containerele din memoria de mas, unde vom stoca !nregistrarea respectiv# 2ezolvarea situaiilor de depire superioar )n fiier dispersat trebuie implementat !n ideea c se va a/unge la depirea capacitii containerelor# %n acest sens trebuie gsit o metod de soluionare a situaiei# <etoda tipic de rezolvare a problemei este rezervarea unei zone suplimentare de memorie de mas, unde s fie !nmagazinate !nregistrrile care depesc capacitatea containerelor# &ceast zon suplimentar a memoriei de mas se numete zona de depire# %n concluzie, dac numrul depirilor este foarte mare, eficiena acestui tip de fiier scade considerabil# ,in acest motiv, proiectarea unui fiier dispersat presupune o atent alegere a algoritmului de dispersie, a numrului i a dimensiunilor containerelor , precum i a mrimii i structurii zonei de depire# &specte legate de programare 7imba/ele procedurale de nivel !nalt folosite !n prezent nu ofer o implementare direct a fiierelor dispersate# &cest fapt se datoreaz at"t apariiei unor sisteme de gestiunea bazelor de date performante, c"t i dependenei de aplicaie a detaliilor de proiectare (algoritmul de dispersie, numrul i dimensiunea containerelor # %n limba/ul C va fi nevoie doar s se memoreze poziiile de stocare ale containerelor i s se utilizeze funcia (s!t+os pentru localizarea containerului indicat de funcia de dispersie# Ie+nicile de dispersie sunt folosite cu mare succes si !n distribuia datelor !n zone ale memoriei interne principale# ?1;1 Rolul sist!mului d! o+!rar! <ediul de lucru, !n cazul limba/elor de nivel !nalt, ofer rutine predefinite pentru manipularea fiierelor componente, care nu intr !n sarcina programatorului# Pentru utilizarea operaiilor de regsire i inserare a !nregistrrilor, rutinele comunic cu sistemul de operare, deci acestuia !i revine sarcina manipulrii fiierelor# .istemul de operare trebuie s cunoasc structura fiierului, c"mpul-c+eie i dac fiierul trebuie salvat# Huncie de tipul fiierului se pot prelua: poziia curent !n cadrul fiierului, !nregistrarea fizic care se afl !n buffer-ul din memoria principal# Pentru gestionarea acestor informaii, sistemul de operare folosete c"te o tabel P numit d!s&ri+tor d! (i$i!r sau ,lo& d! &o%trol P pentru fiecare fiier utilizat# ,ac un program lucreaz cu trei fiiere, sistemul de operare va trebui s construiasc trei descriptori de fiier care s permit gestionarea acestora# %n limba/ele de nivel !nalt, construirea descriptorului de fiier se iniializeaz printr-o rutin numit O+!%# %n HJ2I2&B, instruciunea tipic are urmtoarea form: JP*B ()BII $ 1@, HI7* $ j)est 6ilek, .I&I). $ J7,, &CC*.. $ .*h)*BII&7 i solicit sistemului de operare s construiasc un descriptor de fiier pentru fiierul cu numele T!st Fil!# Parametrii precizai specific c:
:4

1@ >

fiierul va fi indicat ulterior !n program ca unitatea logic numrul 1@ ()BII $

numele fiierului este T!st Fil! (6ile H O)est 6ileD > sistemul de operare ar trebui s gseasc de/a fiierul !n memoria de mas (.I&I). $ J7, > structura fiierului este secvenial (&CC*.. $ .*h)*BII&7 # ,in e0emplul furnizat se observ c un fiier poate fi desemnat ulterior !n program prin alt nume dec"t numele lui propriu-zis# &ceast distincie care se face !ntre numele e0tern al fiierului i identificatorul utilizat !n program reflect diferena !ntre regulile sintactice ale sistemului de operare i cele ale limba/ului de programare# &ceast distincie !ntre identificatorii e0terni i interni de fiier permite, de altfel, un grad mai mare de fle0ibilitate !n sensul c o procedur proiectat s manipuleze fiierul prin intermediul identificatorului intern poate fi utilizat ca rutin generic pentru prelucrarea a diferite fiiere# ,up prelucrarea fiierului, multe limba/e de programare cer s fie apelat o rutin numit Clos!# &ceast rutin informeaz sistemul de operare c spaiul de memorie rezervat pentru descriptorul de fiier poate fi folosit !n alte scopuri# Pentru anumite fiiere (e0# fiierele t0t , rutina Clos! are i rolul de a comunica sistemului de operare necesitatea transferrii ultimei !nregistrri fizice pe dispozitivul de stocare#

:9

1@#

.I2)CI)2I

,* 3&d* ,* ,&I*

1@#1# Consideraii generale %n general, !nelegem prin ,a"* d! dat! orice ansamblu de date, dar termenul semnific de obicei un ansamblu de date stocate pe un dispozitiv magnetic de stocare de mas, av"nd diferite forme de prezentare (organizare , !n funcie de necesiti i disponibil ca surs de date pentru o gam larg de aplicaii# ,in alt punct de vedere, o ,a"* d! dat! este rezultatul combinrii mai multor serii de date (proiectate i culese iniial pentru aplicaii diferite !ntr-un singur ansamblu unificat# &ceast abordare integrat a conceptului de baz de date !i are originea !n evoluia istoric a sistemelor automate de stocare i !ntreinere a datelor# ,e e0emplu, nevoia calculrii salariilor a condus la apariia unor fiiere secveniale, iar necesitatea regsirii interactive a datelor a avut ca rezultat realizarea unor fiiere cu acces direct# ,ei fiecare din aceste sisteme de fiiere a reprezentat o !mbuntire fa de procedurile manuale, datorit lipsei de comunicare !ntre ele, totui permiteau numai o utilizare limitat i neeficient a resurselor# %n aceste condiii, bazele de date au reprezentat soluia adecvat a organizrii informaiilor stocate i gestionate de instituii i organizaii# ,ac se implementeaz o baz central de date referitoare la datele solicitate de mai multe compartimente, administrarea acesteia se poate e0ecuta dintr-o unic poziie cunoscut sub numele de admi%istrator al ,a"!i d! dat! (,3& P data ase administrator # &dministratorul tie at"t ce date sunt disponibile !n cadrul organizaiei, c"t i care sunt datele necesare diferitelor compartimente, put"nd lua +otr"ri referitoare la organizarea i accesul la date# *0ist i dezavanta/e care apar la organizarea datelor sub forma unor baze de date# )na din problemele delicate este &o%trolul a&&!sului la datele importante# Controlul asupra accesului la informaiile din baza de date este la fel de important ca i &a+a&itat!a lor d! +arta.ar!1 &cordarea de drepturi distincte de acces la sistemele de baze de date se face in"nd seama de sc+ema de descriere a !ntregii structuri a bazei de date# %n ultima vreme, dimensiunile i aria de cuprindere a bazelor de date a cunoscut o cretere rapid, ceea ce a condus la apariia unor grupri foarte mari de date# &ceste grupri de date pot fi fr efort organizate, asamblate i interogate de la distan# &cest mod de manipulare genereaz propagarea cu uurin a informaiilor greite i apariia incidentelor legate de utilizarea neautorizat sau vicierea intenionat a informaiilor cum ar fi falsificarea creditelor, cazierelor /udiciare sau accesul neautorizat la informaii personale# 1@#-# Implementarea stratificat a bazelor de date Cel care utilizeaz o baz de date este numit utili"ator (user , iar uneori utili"ator (i%al (end0user # &cest utilizator final poate fi !n egal msur un funcionar al unei companii aviatice care efectueaz rezervri de locuri sau un director e0ecutiv al unei mari societi constructoare de automobile# %n ambele cazuri, probabil c utilizatorul nu este specialist !n calculatoare i nici nu trebuie s cunoasc !n detaliu te+nologia i te+nicile utilizate !n domeniu# )tilizatorul trebuie s se poat concentra asupra problemei pe care o are de rezolvat, iar sistemul de gestionare a bazei
:;

de date trebuie s !i prezinte informaiile necesare !ntr-o form specific aplicaiei respective, i nu !ntr-un limba/ te+nic greu de !neles# Pentru a rspunde la aceste cerine bazele de date sunt construite pe mai multe niveluri de abstractizare (fig# 1@#1 # Imaginea datelor oferit utilizatorului final este produs de un software de aplicaie, a crui comunicare cu utilizatorul se desfoar !n mod interactiv i !n termeni specifici programului# Proiectarea acestui software de aplicaie imprim personalitate sistemului de uz general# ,e e0emplu, comunicarea cu utilizatorul se poate face printr-un sistem de !ntrebri i rspunsuri sau prin formulare care trebuie completate# Stru&tura Sist!m d! So(tJar! Utili"ato ,a"!i d! g!stiu%!a d! r dat! ,a"!i d! dat! a+li&a'i! (i%al ,ate prezentate !n ,ate prezentate !n ,ate prezentate !n forma efectiv de termeni specifici termeni specifici de organizare modelului conceptual al aplicaiei bazei de date Hig# 1@#1#- .tratificarea conceptual a bazelor de date Indiferent de interfaa adoptat, aplicaia trebuie s comunice cu utilizatorul pentru a obine de la acesta informaiile necesare (inclusiv cerineleOsolicitrile , pe care ulterior s le prezinte !ntr-un format c"t mai YprietenosT (friendl" user interface # ,e manipularea datelor, !n cadrul bazei de date, se ocup un pac+et de programe numit sist!m d! g!stiu%!a ,a"!i d! dat! C SKBD (data ase management s"stem ? %+M4 # Primul avanta/ al utilizrii acestor sisteme de gestiunea bazei de date P .63, este sim+li(i&ar!a a&ti#it*'ii +rogramatorului a+li&a'i!i !n ceea ce privete manipularea efectiv a datelor solicitate de aplicaie# &ceast manipulare s-ar complica i mai mult din punct de vedere al rezolvrii problemei !n conte0tul unei baze de date distribuite (o baz de date !mprit pe mai multe calculatoare legate !n reea # &lt avanta/ al separrii aplicaiei de sistemul de gestiune a bazei de date este c o astfel de organizare permite &o%trolul a&&!sului la ,a"a d! dat!# )n alt avanta/ important al utilizrii a dou pac+ete de programe, unul pentru interfaa cu utilizatorul, cellalt pentru manipularea efectiv a datelor este obinerea i%d!+!%d!%'!i dat!lor# &ltfel spus, este posibil sc+imbarea organizrii bazei de date fr a fi necesar modificarea aplicaiilor# _i un ultim avanta/ al separrii !ntre aplicaii i .63, este acela c permite ca a+li&a'ia s fie s&ris* utili"6%du2s! u% mod!l sim+li(i&at &o%&!+tual , al bazei de date, fr a lua !n considerare structura efectiv a acesteia# &plicaiile sunt scrise !n limba/e de uz general, dispun"nd de instrumente necesare e0primrii algoritmilor, dar nu i pentru operaii care s permit manipularea facil a bazei de date# 2utinele furnizate de .63, e0tind facilitile limba/ului utilizat, permi"nd folosirea imaginii conceptuale a modelului bazei de date# )n astfel de limba/ de uz general care se adaug capacitilor .63,-ului se numete lim,a. d! ga"d*# Cutarea unor model mai performante de baze de date este !n plin desfurare, scopul fiind acela de a se gsi un model care s permit conceptualizarea unor sisteme comple0e, s conduc la moduri c"t mai concise de solicitare a informaiilor i s poat fi implementat eficient prin furnizarea de ctre .63, a unor instrumente abstracte utilizabile !n aplicaii#

::

1@#5# <odelul relaional Popularitatea de care se bucur modelul relaional este motivat de simplitatea sa structural, modelul prezint datele ca fiind stocate !n nite ta,!l! %umit! r!la'ii# <odelul relaional permite reprezentarea informaiilor referitoare la salariaii unei firme printr-o relaie ca cea din tabelul urmtor: Mar&a Salariatului 1- K :C 58 & 9@ 5@ b -8 Num!l! Ion C# Ion 6+# Dasilescu <arcela Patac+e Adr!sa _os# _tefan cel <are, C4 3d# Carol I, C@ .tr# ,ionisie 7upu, -Cod %um!ri& 188@C188@@-1C-@:-@5@1-8 -4@1@--111-;

Hig# 1@#-#- 2elaia care conine informaii despre anga/aii unei firme J linie din cadrul relaiei (tabelului poart numele de tu+lu# Coloanele relaiei se numesc atri,ut!#

Proi!&tar!a r!la'io%al* Proiectarea unei baze de date utiliz"nd modelul relaional se concentreaz pe proiectarea relaiilor din componena sa# . presupunem c pe l"ng informaiile coninute !n relaia din fig# 1@#-, dorim s includem i alte informaii legate de un istoric al poziiilor deinute de un salariat !n cadrul firmei cu urmtoarele atribute: denumirea postului (secretar, ef birou, ef compartiment , codul de identificare a postului (unic pentru fiecare post , codul referitor la pregtirea profesional necesar fiecrui post, compartimentul !n cadrul cruia a fost deinut postul i perioada de ocupare a postului (dataO!nceput i dataOsf"rit activitate> !n cazul unui post deinut !n prezent se va nota acest atribut cu un asterisc # )n mod de rezolvare a noi probleme este e0tinderea relaiei din fig# 1@#-, prin adugarea de noi coloane care s cuprind noile atribute conform fig# 1@#5# 7a o e0aminare mai atent aceast relaie ridic o serie de probleme# )na dintre ele este ineficiena relaiei: nu mai conine c"te un tuplu pentru fiecare salariat, fiind posibil ca un salariat s fi fost avansat !n decursul timpului#

,escriind legturile dintre atribute, ca mai sus, informaiile iniiale se vor repeta, fie: marca, numele, adresa, codul numeric, fie: departamentul, codul pregtire profesional# J alt problem apare la tergerea unor informaii !nregistrate o singur dat !n baza de date, cum ar fi codul funciei pentru poziia a treia din tabel (.; P director compartiment # &ceast situaie a aprut deoarece am combinat !n aceeai relaie informaii care se refer la lucruri diferite# <odul de rezolvare a problemei este reproiectarea bazei de date folosind at"tea relaii c"te subiecte am ales# %n cazul nostru este vorba de trei subiecte P identificare salariat, locul su de munc i perioada anga/rii salariatului pentru fiecare loc de munc#

1@@

2elaia id!%ti(i&ar!a salariatului : Mar&a Salariatului 1- K :C 58 & 9@ 5@ b -8 Num!l! Ion C# Ion 6+# Dasilescu <arcela Patac+e Adr!sa _os# _tefan cel <are, C4 3d# Carol I, C@ .tr# ,ionisie 7upu, -Cod %um!ri& 188@C188@@-1C-@:-@5@1-8 -4@1@--111-;

2elaia id!%ti(i&ar!a lo&ului d! mu%&* : Cod (u%&'i! A -C K A -C b A -C d .; # # # D!%umir! (u%&'i! .ecretar .ecretar .ecretar ,irector departament # # # Cod +r!g*tir! +ro(!sio%al* +!%tru (u%&'i! .CC .CC .C4 ,5 # # # D!%umir! &om+artim!%t Personal Contabilitate Hinanciar &provizionare # # #

2elaia +!rioada a%ga.*rii salariatului +! (i!&ar! lo& d! mu%&* : Mar&a salariatului 1- K 1C 58 & 9@ 1- K 1C 5@ b -8 5@ b -8 # # # Codul (u%&'i!i &4 .; 39 A -C K A -C b # # # Dat* d!,ut 1C#1#:5 1#5#:1 1#1@#:C 1#1#:1 1#11#:5 # # # Dat* s(6r$it 5@#:#:C l l 5@#1@#:5 1C#:#:4 # # #

Hig# 1@#5#- 3az de date care conine trei relaii )tiliz"nd aceast baz de date informaiile suplimentare sunt disponibile implicit prin combinarea informaiilor coninute !n aceste relaii# C"te odat !mprirea atributelor !n relaii foarte simple duce la pierderea de informaii# Pornind de la proprietile relaiilor s-au putut construi ierar+ii de clase de relaii numite +rima (orm* %ormal*- a doua (orm* %ormal*- a tr!ia (orm* %ormal*- 111, fiecare din aceste forme normale (clase de relaii fiind mai puin predispuse apariiei unor anomalii de funcionare dec"t cele din clasa precedent# O+!ra'ii r!la'io%al! &nalizam in continuare operaiile efectuate asupra relaiilor# .electarea unui tu+lu cu anumite caracteristici dintr-o relaie Pentru a regsi informaiile referitoare la un anga/at se va selecta din relaia id!%ti(i&ar!a salariatului tuplul cu atributul de identificare dorit, iar pentru a obine lista
1@1

posturilor dintr-un compartiment se vor selecta tuplurile din relaia id!%ti(i&ar!a lo&ului d! mu%&* care pentru atributul compartiment au valoarea codului departamentului precizat# 2ealizarea seleciei tuplului i plasarea sa !ntr-o nou relaie se poate e0prima sintactic astfel: B*[ .*7*CI from .&7&2I&I where <arca $ Y58&9@T (din (unde

&stfel se creeaz o nou relaie numit B*[ care conine tuplurile din relaia salariat, al cror atribut <arca este egal cu 58&9@ (vezi fig# 1@#8# # 2elaia id!%ti(i&ar! salariat : Mar&a Salariatului 1- K :C 58 & 9@ 5@ b -8 B*[ Num!l! Ion C# Ion 6+# Dasilescu <arcela Patac+e Adr!sa _os# _tefan cel <are, C4 3d# Carol I, C@ .tr# ,ionisie 7upu, -Cod %um!ri& 188@C188@@-1C-@:-@5@1-8 -4@1@--111-;

.*7*CI from .&7&2I&I where <arca $ Y58&9@T 2elaia NEA

Mar&a Salariatului 58 & 9@

Num!l! 6+# Dasilescu

Adr!sa 3d# Carol I, C@

Cod %um!ri& 1C-@:-@5@1-8

Hig# 1@#8#- Jperaia .*7*CI Jperaia P2JA*CI e0trage anumite coloane# ,ac dorim s aflm titulaturile posturilor dintr-un compartiment, dup ce am efectuat o operaie .*7*CI pentru a e0trage din relaia 7JC)2I de <)BCg tuplurile care conin departamentul-int plas"ndu-le !ntr-o relaie B*[, lista pe care o cutm este cea a valorilor din coloana %enumire compartiment a acestei noi relaii# Pentru a e0trage aceast nou coloan i a plasa rezultatul !ntr-o nou relaie, utilizm operaia P2JA*CI, care se va e0prima sintactic astfel: <&I7 P2JA*CI Bume, &dres from .&7&2I&I i va realiza obinerea unei liste cu numele i adresele tuturor salariailor firmei# 7ista se va gsi !n noua relaie <&I7 care are dou coloane (vezi fig# 1@#C # 2elaia id!%ti(i&ar! salariat Mar&a Salariatului 1- K :C 58 & 9@ 5@ b -8 B*[ Num!l! Ion C# Ion 6+# Dasilescu <arcela Patac+e Adr!sa _os# _tefan cel <are, C4 3d# Carol I, C@ .tr# ,ionisie 7upu, -Cod %um*r 188@C188@@-1C-@:-@5@1-8 -4@1@--111-;

.*7*CI from .&7&2I&I where <arca $ Y58&9@T 2elaia NEA


1@-

Num!l! Ion C# Ion 6+# Dasilescu <arcela Patac+e

Adr!sa _os# _tefan cel <are, C4 3d# Carol I, C@ .tr# ,ionisie 7upu, --

Hig# 1@#C# - Jperaia P2JA*CI 2elaia AJIB aplicat asupra a dou relaii are ca rezultat obinerea unei noi relaii ale crei atribute sunt atributele relaiilor iniiale (vezi# fig# 1@#9 # <odul !n care sunt concatenate tuplurile este determinat de condiia specificat pentru operaia AJIB#

AJIB & and 3

where & # [ $ 3 # K

%n acest e0emplu un tuplu din relaia & va fi concatenat cu unul din relaia 3 dac i numai dac atributele [ i K ale celor dou tupluri sunt egale# 2elaia & 2elaia 3

r t p

8 4

Q g C d 8 m t 8

Z p e m f

AJIB & and 3

where & # [ $ 3 # K

2elaia C

r m t 8 8 a t Hig# 5#-#4#8 Jperaia 8 AJIB t


Hig# 1@#4# - Jperaia AJIBI

m e f

.e va e0emplifica mai /os operaia AJIB asupra bazei de date din fig1@#5 pentru a obine o list a codurilor de identificare ale tuturor anga/ailor, !mpreun cu departamentul !n care lucreaz fiecare# Instruciunea necesar este :

1@5

P7&C* 1

A JIB &B6&A&2* .&7&2I&I &B, 7JC ,* <)BCg unde &B6&A&2* .&7&2I&I # Cod funcie $ 7JC ,* <)BCg #

Cod funcie, rezultatul este prezentat !n fig# 1@#9# Pentru a rezolva problema s! s!l!&t!a"* mai !nt"i acele tupluri din relaia &B6&A&2* .&7&2I&I ,ata sf"rit, unde ,ata sf"rit $ Yl T, iar dup aceea s! +roi!&t!a"* atributele: &B6&A&2* .&7&2I&I <arca salariatului i 7JC ,* <)BCg ,enumire departament# %n concluzie, obinerea informaiilor se realizeaz prin e0ecutarea instruciunilor : P7&C* 1 7'1N &B6&A&2* .&7&2I&I AN% 7JC ,* <)BCg unde &B6&A&2* .&7&2I&I # Cod funcie $ 7JC ,* <)BCg #Cod funcie P7&C* 7I.I .*7*CI from P7&C* 1 unde &B6&A&2* .&7&2I&I ,ata sf"rit $ Yl T P2JA*CI &B6&A&2* .&7&2I&I, <arca salariat 7JC ,* <)BCg ,enumire departament from P7&C* -# 2elaia 7JC ,* <)BCg Cod +r!g*tir! D!%umir! +ro(!sio%a &om+artim! l* %t (u%&'i! .CC Personal .C C .C4 ,5 Contabilitate Hinanciar &provizionar e

2elaia &B6&A&2* .&7&2I&I Mar&a salaria t 11C 58 9@ 11C 5@ -8 K & K b

Codul (u%&'i! i &4 .; 39 A -C K

Dat* d!,ut 1C#1#:5 1#5#:1 1#1@#:C 1#1#:1

Dat* s(6r$it 5@#:#:C l l 5@#1@#:5

Codul (u%&'i!i A -C K A -C b A -C d .;

D!%umir! (u%&'i! .ecretar .ecretar .ecretar ,irector departame nt

P7&C* 1 AJIB &B6&A&2* .&7&2I&I &B, 7JC ,* <)BCg unde &B6&A&2* .&7&2I&I # Cod funcie $ 7JC ,* <)BCg # Cod funcie 2elaia P7&C* 1

1@8

Mar&a salaria 2 tului 1- K 1C 58 & 9@ 11C K

Codul (u%&'i!i &4 .; 39

Dat* d!,ut 1C#1#: 5 1#5#:1 1#1@#: C

Dat* s(6r$it 5@#:#:C l l

Codul (u%&'i!i &4 .; 39

D!%umir! (u%&'i! _ef birou ,irector departame nt _ef serviciu

Cod +r!2 D!%umir! g*tir! +ro2 &om+arti2 (!sio%al* m!%t +t1(u%&'i! .3C &provizionar e ,5 &provizionar e ..8 &provizionar e

Hig# 1@#9#- *0emplu de aplicare a operaiei AJIB .istemul de gestiune a bazei de date are rolul de a accepta comenzi e0primate !n termenii modelului relaional i de a le transforma !n aciuni ce in cont de structura efectiv de stocare# )n sistem de gestiune a bazei de date care utilizeaz un model relaional va include rutine pentru efectuarea operaiilor .*7*CI, P2JA*CI i AJIB, rutine care vor fi apelate din aplicaie printr-o structur sintactic compatibil cu limba/ul-gazd# %n realitate sistemele de gestiune a bazelor de date conin operaii care pot fi combinaii ale unor pai elementari !ntr-o form prietenoas pentru utilizatori# )n astfel de limba/ este limba/ul . h 7 (4tructured &uer" @anguage # . h 7 7imba/ul .h7 este destinat interogrii bazelor de date# &cest limba/ permite ca printr-o singur instruciune .h7 se poate e0prima o interogare care presupune o secven de operaii .*7*CI, P2JA*CI i AJIB# ,e e0emplu interogarea din ultimul e0emplu (fig# 1@#9 poate fi e0primat !n .h7 printro instruciune: select <arca salariat, ,enumire departament from &B6&A&2* .&7&2I&I, 7JC ,* <)BCg unde &B6&A&2* .&7&2I&I # Cod funcie $ CJ, 7JC ,* <)BCg # Cod funcie i &B6&A&2* .&7&2I&I # ,at sf"rit $ Yl T# Iat c"teva e0emple !n .h7# Instruciunea: select Bume, &dres from I,*BIIHIC&2*& .&7&2I&I)7)I genereaz o list care conine numele i adresele tuturor anga/ailor din relaia I,*BIIHIC&2*& .&7&2I&I)7)I# (&ceast operaie este identic cu operaia P2JA*CI # Instruciunea : select I,*BIIHIC&2*& .&7&2I&I)7)I Bume, &B6&A&2*& .&7&2I&I)7)I # ,at debut from I,*BIIHIC&2*& .&7&2I&I)7)I, &B6&A&2*& .&7&2I&I)7)I where I,*BIIHIC&2*& .&7&2I&I)7)I # Cod funcie $ &B6&A&2*& .&7&2I&I)7)I # Cod funcie furnizeaz o list a tuturor anga/ailor cu informaii privind data anga/rii# Pe l"ng interogri, limba/ul .h7 permite i definirea structurii unei relaii, crearea de noi relaii, ca i modificarea coninutului unor relaii e0istente#
1@C

1@#8# 3aze date orientate spre 'pe( obiecte )na dintre cele mai noi direcii de cercetare !n domeniul bazelor de date o constituie aplicarea paradigmei orientate spre obiecte# ,irecia este !ncura/at de urmtoarele motive: a independena datelor se poate obine prin !ncapsulare> b clasele i motenirea par concepute dedicat pentru descrierea sc+emei generale a bazei de date i a sc+emelor pariale> c baze de date constituite din Yobiecte inteligenteT care pot rspunde direct la !ntrebrile ce li se pun, fr s utilizeze un program supervizor de interogare> d abordarea orientat pe obiecte elimin anumite restricii inerente altor metode de organizare a bazelor de date# 1@#C# <eninerea integritii bazelor de date .istemele de gestiune a bazelor de date (.63, de Yuz personalT sunt !n general ieftine i relativ simplu de manipulat# Instalarea lor nu-l implic de utilizator !n detalii te+nice legate de implementare# Dolumul acestor baze de date este de mrime mic sau medie, iar pierderea sau alterarea informaiilor coninute constituie o neplcere i nu un dezastru# %n general problemele aprute nu afecteaz de obicei dec"t c"iva oameni, iar pierderile de ordin financiar sunt desul de mici# ,esigur altfel stau lucrurile cu .63,-urile de mari dimensiuni (ca volum de informaii !nmagazinat i manipulat utilizate !n scop comercial# %n astfel de sisteme unul din principalele roluri ale sistemului de gestiune este de a veg+ea la meninerea integritii bazei de date, evit"nd operaiile efectuate parial sau acre, acion"nd !ntr-un mod neprevzut, care conduc la apariia de informaii eronate# Proto&olul Commit23ollbac4 Iransferarea unei sume de bani dintr-un cont !n altul presupune retragerea sumei din contul-surs i adugarea ei la contul-destinaie# %n faza intermediar !ntre dou etape de actualizare a bazei de date, informaiile din baza de date pot fi contradictorii# &stfel !n scurta perioad dintre retragerea (scoaterea banilor dintr-un cont i depunerea lor !n cellalt cont, suma respectiv dispare din evidene# %n cazul bazelor de date de mari dimensiuni !n care sunt !n curs de e0ecuie foarte multe tranzacii, probabilitatea ca la un moment ales aleator s fie !n curs o tranzacie este foarte mare# %n cazul unei defeciuni, .63, nu las baza de date !n stare de contradicie intern# &cest deziderat este dus la !ndeplinire prin meninerea unui .ur%al !n care se !nregistreaz toate activitile efectuate asupra unei tranzacii# Punctul !n care s-au !nregistrat toate etapele tranzaciei se numete +u%&t d! a%ga.ar! (commit point # %n acest fel .63,-ul dispune de toate informaiile necesare pentru reconstruirea pe cont propriu a tranzaciei dac acest lucru este necesar# %n cazul defectrii unui dispozitiv, .63,-ul utilizeaz informaiile din /urnal pentru a reconstitui tranzaciile !nc+eiate de la efectuarea ultimei salvri# ,ac apare o problem !nainte ca o tranzacie s ating punctul de anga/are, .63,-ul se va gsi !n situaia de a fi e0ecutat parial o tranzacie pe care nu o poate finaliza# %n aceast situaie /urnalul poate fi utilizat pentru a%ular!a (derulare !napoi P roll ac, activitilor de/a efectuate de tranzacia respectiv# )neori derularea !napoi a unei tranzacii poate afecta elementele bazei de date care au fost utilizate !ntre timp la alte tranzacii# *ste posibil ca tranzacia anulat s fi actualizat un cont bancar, iar alt tranzacie efectuat !ntre timp s fi utilizat noua valoare# &ceast situaie necesit anularea i a altor tranzacii, ceea ce va avea influen i asupra altora #a#m#d# Henomenul se numete a%ular! 5% &as&ad* (cascading roll ac, #
1@4

Blo&ar!a ,ac studiem problema unei tranzacii care se e0ecut !n timp ce baze de date se modific ca urmare a altei tranzacii uneori observm apariia unor interaciuni dorite !ntre tranzacii care pot conduce la rezultate eronate# &tunci c"nd o tranzacie efectueaz un transfer de fonduri dintr-un cont !n altul, !n timp ce alte tranzacii calculeaz valoarea total a depozitelor, poate apare problema cunoscut sub numele de 5%sumar! i%&or!&t* (incorrect summar" pro lem # Pentru !nlturarea unei astfel de situaii, .63,-ul poate obliga tranzaciile s se e0ecute integral, una dup alta (serial , noile tranzacii plas"ndu-se !ntr-o coad de ateptare p"n la finalizarea celor precedente# <a/oritatea sistemelor mari de gestiune a bazelor de date utilizeaz un modul de coordonare a parta/rii timpului de calcul !ntre tranzacii# Pentru evitarea unor anomalii din categoria precizat, modulele de coordonare recurg la un +roto&ol d! ,lo&ar! (loc,ing protocol , !n care elementele bazei de date care sunt utilizate !n mod curent !ntr-o tranzacie sunt marcate ca fiind blocate# .e utilizeaz dou tipuri de blocare P ,lo&ar!a +arta.a,il* i ,lo&ar!a !)&lusi#*, corespunz"nd celor dou tipuri de acces P parta/abil i e0clusiv# ,ac o tranzacie nu modific datele, atunci are nevoie de acces parta/abil (permite altor tranzacii s citeasc datele respective # ,ac tranzacia are ca obiectiv modificarea datelor, atunci are nevoie de acces e0clusiv (nu permite accesul altor tranzacii la articolul respectiv# Pentru tratarea cazurilor !n care accesul solicitat de o tranzacie la un articol de date este refuzat, se pot utiliza mai muli algoritmi# )nul dintre acetia foreaz tranzacia respectiv s atepte p"n c"nd cererea poate fi aprobat, dar acest lucru poate conduce la apariia interblocrii# Pentru evitarea interblocrii .63,-urile acord prioritate primei tranzacii# &cest protocol este cunoscut sub numele de +roto&ol d! a$t!+tar! (wound wait protocol i asigur efectuarea tuturor tranzaciilor#

1@9

1@;