Sunteți pe pagina 1din 59

Introducere n Calculatoare

1 Descrierea algoritmelor...............................................................................................3 1.1 Tipuri de date.......................................................................................................3 1.2 Structuri de control fundamentale pentru descrierea algoritmelor.......................5 1.3 Funcii...................................................................................................................8 1.4 Fiiere tip text.......................................................................................................9 1.5 Prelucrarea irurilor de caractere........................................................................10 2 Reprezentarea informaiilor n calculator..................................................................12 2.1 Reprezentarea numerelor ntregi n sistemul binar.............................................12 2.1.1 Reprezentarea numerelor naturale...............................................................12 2.1.2 Conversia zecimal-binar............................................................................12 2.1.3 Conversia ntre bazele 2, 8 i 16..................................................................14 2.1.4 Reprezentarea numerelor binare cu semn....................................................15 2.2 Deplasarea numerelor binare cu semn ...............................................................18 2.3 Extinderea formatului numerelor cu semn.........................................................19 2.4 Reprezentarea numerelor reale...........................................................................20 2.4.1 Reprezentarea numerelor reale n virgul mobil.......................................20 2.4.2 Efectuarea operaiilor cu numere n virgul mobil....................................21 2.5 Reprezentarea caracterelor.................................................................................23 2.6 Limbaje de asamblare .......................................................................................24 2.6.1 Formatul instruciunilor calculatorului........................................................26 3 Sisteme de operare.....................................................................................................29 3.1 Sisteme de operare tipice....................................................................................29 3.2 Nivelul fizic........................................................................................................30 3.3 Conceptele sistemelor de operare.......................................................................35 3.3.1 Procese.........................................................................................................35 3.3.2 Memoria......................................................................................................36 3.3.3 Fiiere..........................................................................................................37 3.3.4 Funcii sistem .............................................................................................38 3.4 Sistemul de operare Windows............................................................................39 3.4.1 Sistemul de fiiere Windows i MS-DOS...................................................40 3.4.2 Fiiere de comenzi.......................................................................................42 4 Comunicaia ntre calculatoare .................................................................................47 4.1 Conectarea calculatoarelor n reea ...................................................................47 4.2 Protocolul Internet (IP).......................................................................................51 4.3 Sistemul de nume de domenii (DNS, Domain Name System)...........................52 4.4 Protocoalele nivelului de transport.....................................................................53 4.5 Protocolul FTP...................................................................................................56 5 Bibliografie................................................................................................................59

1 Descrierea algoritmelor
1.1 Tipuri de date
La rezolvarea unei probleme avem un set de date ce trebuie prelucrate i un algoritm ce prelucreaz datele. Primul pas n rezolvarea problemei este alegerea reprezentrii datelor. De exemplu, pentru calculul valorii n ! vom utiliza numere ntregi, pentru a calcula curenii ntr-un circuit electric vom utiliza numere reale, pentru a realiza un editor de texte vom utiliza caractere. In consecin, n aplicaii diferite vom avea tipuri diferite de date. Fiecare constant, variabil sau expresie are un anumit tip. Tipul reprezint mulimea de valori pe care le poate lua o constant i operaiile care se pot face cu aceste valori. Tipurile primitive sau fundamentale de date sunt : ntreg, real, boolean i caracter. Operaiile de baz pentru orice tip primitiv sunt : atribuirea ; operatorul de atribuire este notat cu semnul =, compararea ; operatorii de comparare sunt <, <=, >, >=, = = i !=. Rezultatul unei operaii de comparare este adevrat sau fals. Operatorul pentru testarea egalitii este = = spre a fi deosebit de operatorul de atribuire, =. De exemplu, expresiile de mai jos au semnificaiile : a=5 atribuire a==5 comparare Pe baza tipurilor primitive se definesc tipuri de date complexe sau structurate. Tipurile primitive de date tipul ntreg reprezint mulimea numerelor ntregi, iar operaiile ce se fac cu numere ntregi sunt cele patru operaii din matematic, adunarea (+), scderea (-), nmulirea (*) i mprirea (/). Imprirea a dou numere ntregi are ca rezultat un numr ntreg (ctul), dat de operatorul /, i un rest care este de asemenea un numr ntreg. Restul mpririi a dou numere ntregi este dat de operatorul %; precedena (prioritatea) operatorilor este cea cunoscut n matematic, operatorii *, / i % au cea mai mare preceden, urmai de operatorii + i -; operatorii cu aceeai preceden se evalueaz de la stnga la dreapta. Pentru gruparea corect a termenilor se pot folosi paranteze rotunde, tipul real reprezint mulimea numerelor reale mpreun cu operaiile de adunare (+), scdere (-), nmulire (*) i mprire (/); precedena (prioritatea) operatorilor este cea cunoscut n matematic, operatorii * i / au cea mai mare preceden, urmai de operatorii + i -; operatorii cu aceeai preceden se evalueaz de la stnga la dreapta. Pentru gruparea corect a termenilor se pot folosi paranteze rotunde, Tabelul 1 prezint exemple de expresii aritmetice. Expresie 7/2 7.0 / 2.0 7%2 2/5*4 2.0 / 5.0 * 4.0 8/4/2 Valoare 3 3.5 1 0 1.6 1 3

8 / (4 / 2)

Tabelul 1. Exemple de expresii aritmetice.

tipul boolean are dou valori, adevrat (true) i fals (false). Operatorii booleeni sunt I (and), notat , SAU (or), notat i NU (not), notat . Operatorii booleeni se definesc cu ajutorul tabelelor de adevr de mai jos: x fals fals adevrat adevrat y fals adevrat fals adevarat x fals adevrat x y fals fals fals adevrat x adevrat fals x y fals adevrat adevrat adevrat

Tabelul 2 . Definirea operatorilor booleeni

Menionm c expresiile booleene conin variabile booleene i expresii relaionale. Expresiile relaionale sunt formate din dou expresii aritmetice ntre care exist un operator relaional. Valoarea lor este adevrat sau fals. Precedena operatorilor tipului boolean, n ordine descresctoare, este , , . In expresiile booleene se pot folosi paranteze rotunde pentru gruparea corect a termenilor. Exemple de expresii relaionale sunt prezentate n Tabelul 3. Variabilele a, b, c sunt aritmetice. Expresie relaional a+ b < 2.7 x <= a b + 17 b*b 4 * a * c >= 0
Tabelul 3. Expresii relaionale.

Exemple de expresii booleene sunt prezentate n Tabelul 4. Variabilele a, b, c sunt aritmetice. Expresie boolean a<3 a>5 b+c==7
Tabelul 4. Expresii booleene.

tipul caracter are ca valori mulimea caracterelor definite de un anumit cod. Constantele tip caracter sunt scrise ntre apostrofuri, ca de exemplu x, A, +, etc. Exerciii. S se evalueze expresiile aritmetice: 7/5*3+4*7%3 (6 + 35) / (1 (- (3 + 2)) * 2) * 4 Tipuri de date structurate Tipurile de date complexe sau structurate sunt tablourile (vectori, matrice, etc.) i fiierele text. Tipurile structurate se definesc pe baza tipurilor primitive.

Tablourile sunt formate din elemente de acelai tip (vector de numere ntregi, matrice de numere reale. etc.). Elementele unui tablou se adreseaz utiliznd indici care sunt de regul numere naturale. Fiierele text vor fi prezentate ulterior.

1.2 Structuri de control fundamentale pentru descrierea algoritmelor


Programele reprezint formulri ale unor algoritme ce prelucreaz structuri de date. Un algoritm este format dintr-un ir de aciuni pentru rezolvarea unei probleme. Orice algoritm se poate descompune ntr-un numr finit de structuri de control fundamentale. Tipurile de structuri de control fundamentale sunt : secvena, selecia i repetiia. Secvena In cazul cel mai simplu un algoritm se poate descompune ntr-un numr finit de aciuni executate secvenial, care se reprezint n felul urmtor s1 ; s2 ; ... sn ; Instruciunile ce apar ntr-o secvent sunt instruciunile de atribuire i cele ce efectueaz operaii intrare / ieire, citiri sau scrieri de date. Selecia Pentru execuia unei aciuni n funcie de ndeplinirea unei condiii exist urmtoarele instruciuni : instruciunea if are forma if(expresie) s1; else s2; In aceast form expresie este o expresie boolean ce are valoare adevrat sau fals. Modul de execuie a instruciunii if este urmtorul: 1. se evalueaz expresia, 2. dac expresia are valoarea adevrat se execut aciunea s1, n caz contrar se execut aciunea s2. Instruciunea if are i forma simpl if(expresie) s; In aceast form, aciunea s se execut cnd condiie are valoarea adevrat. instruciunea switch cu forma switch(expresie) i = 1; s1; i = 2: s2; i = n; sn; In aceast instruciune, expresie este o expresie intreag. Modul de execuie al operatorului este urmtorul: 1. se evalueaz expresia, 2. dac rezultatul evalurii este 1, se execut aciunea s1, dac rezultatul evalurii este 2, se execut aciunea s2, .. dac rezultatul evalurii este n, se execut aciunea sn.

Dac rezultatul evalurii expresiei este diferit de 1, 2, , n se trece la execuia instruciunii urmtoare. Repetiia Pentru a descrie calculele repetate, cnd numrul de aciuni nu este cunoscut, exist instruciunile while i do-while. instruciunea while are forma while(expresie) ; expresie este o expresie boolean care are valoarea fals sau adevrat, iar s este un grup de aciuni care se execut att timp ct expresia are valoarea adevrat. Modul de execuie a instruciunii while este urmtorul: 1. se evalueaz expresia, 2. dac expresia are valoarea adevrat se execut aciunea s i se merge la pasul 1, 3. dac expresia are valoarea fals se prsete instruciunea while. instruciunea do-while are forma do s; while(expresie) unde expresie este o expresie boolean care are valoarea fals sau adevrat, iar s este un grup de aciuni care se execut att timp ct expresia are valoarea adevrat. Modul de execuie al operatorului do-while este urmtorul: 1. se execut aciunea s, 2. se evalueaz expresia, 3. dac expresia are valoarea adevrat se trece pasul 1, 4. dac expresia are valoarea fals se prsete instruciunea do-while. Menionm c, n cazul instruciunii do-while, aciunea s se execut cel puin o dat, n timp ce n cazul instruciunii while este posibil ca aciunea s s nu se execute niciodat. Cnd numrul de execuii al unei aciuni este cunoscut anticipat se utilizeaz instruciunea repetitiv for. Instruciunea are o variabil de control ce se modific la fiecare pas cu o valoare r de la o valoare iniial vi la o valoare final vf. instruciunea for are forma general for(i = vi; i <= vf; i = i + r) s; unde s este un grup de aciuni. Instruciunea for este echivalent cu urmtoarea secven de instruciuni i = vi; while(i <= vf) s; i = i + r; Valoarea variabilei i se modific dup fiecare iteraie cu pasul r. Modul de execuie al operatorului for este urmtorul: 1. se execut instruciunea i = vi, 2. se evalueaz expresia i <= vf, 3. dac expresia are valoarea adevrat se execut instruciunea s, se execut instruciunea i = i + r i se merge la pasul 2, 4. dac expresia are valoarea fals se prsete instruciunea for. Menionm c, toate structurile se caracterizeaz prin faptul c au o intrare i o ieire, adic fiecare structur poate fi considerate o singur aciune.

Exist o legtur strns ntre structurile de date i structurile de control. De exemplu, tablourile, (vectori, matrice), se prelucreaz cu instruciunea for, deoarece au un numr cunoscut de elemente. Fiierele secveniale au un numr de elemente necunoscut n avans, ele se prelucreaz de regul cu instruciunea while. Pentru descrierea algoritmelor vom presupune c exist funciile predefinite: read(x) care citete o valoare de la tastatur i o atribuie variabilei x, write(x) care scrie valoarea variabilei x pe ecran. Exemplu. Calculul valorilor funciei 1 + e x pentru x [0,2] cu pasul x = 0.2 for ( x = 0; x <= 2; x = x + 0.2) z = 1 + e x ; write( z ); Exemplu. S se calculeze valoarea lui n ! pentru n citit de la tastatur. Pentru a calcula valoarea cerut vom execut repetat relaia s = s * i pentru i lund valorile 1, 2, ..., n. 1. read(n); 2. s = 1; 3. for(i = 1; i <= n; i = i + 1) s = s * i; 4. write(s); Algoritmul se poate realiza cu instruciunea while n felul urmtor 1. read(n); 2. s = 1; 3. i = 1; 4. while(i <=n) s = s * i; i = i + 1; 5. write(s); Exemplu. Fie dou variabile reale, x i y, ale cror valori se citesc de la tastatur, i o variabil tip caracter z. Valoarea variabilei z se citete de la tastur i poate fi +, -, * sau /. Se cere s se calculeze expresia x + y x y e( x, y ) = x* y x/ y daca daca daca daca z ='+' z ='' z ='*' z =' /'

Programul pseudocod este urmtorul : 1. 2. 3. read(x) ; read(y) ; read(z) ; if(z = = +) e = x +y ; else if(z = = -) e = x y; else if(z = = *) e = x * y; else e = x / y;

4. write(e); Acest program corespunde unui calculator simplu.

1.3 Funcii
Limbajele de programare au funcii predefinite corespunznd funciilor matematice uzuale : sin, cos, tan, asin, acos, atan, ln, log, exp, etc. In plus, limbajele de programare permit definirea de funcii. O funcie are un nume i parametri de tipuri specificate. Pentru a preciza ideile vom considera c funcia calculeaz o valoare ce are un tip specificat. Parametrii funciei conin date ce vor fi prelucrate de funcie i vor fi numii parametri de intrare. Parametrii unei funcii pot fi variabile scalare sau tablouri. Funcia poate avea propriile variabile, numite variabile locale. Variabilele locale nu exist n afara funciei. Valoarea calculat de funcie se transmite n afara funciei cu instruciunea return, care are i rolul de a termina execuia funciei. Definirea unei funcii are forma general: nume_funcie(lista de parametri) s; return valoare_calculat; In definiia funciei s este un grup de instruciuni numite n continuare corpul funciei, ce efectueaz calculele necesare. Instruciunea return care transmite n exterior valoarea calculat de funcie i termin execuia funciei este ultima instruciune din funcie. Vom spune c instruciunea return asociaz numelui funciei valoarea calculat. Funcia este utilizat ca termen ntr-o expresie aritmetic. Exemplu. S definim o funcie ce calculeaz suma componentelor unui vector x cu n componente reale. Variabilele x i n vor fi parametrii de intrare ai funciei, iar valoarea calculat va fi asociat numelui funciei cu instruciunea return. Definiia funciei este urmtoarea suma(x, n) 1. s = 0 ; 2. for(i = 1; i <= n ; i = i + 1) s = s + xi ; 3. return s ; Parametrii din definiia funciei, x i n se numesc parametri formali. Funcia este apelat ntr-o instruciune de atribuire de forma variabila = nume_funcie(lista de parametri actuali) Vom utiliza funcia pentru a calcula suma componentelor unui vector z cu trei componente ce se vor citi de la tastatur. Parametrii cu care apelm funcia, z i 3, se numesc parametrii actuali. Programul este urmtorul : 1. read(z) ; 2. a = suma(z, 3) ; 3. write(a) ; Exemplu. S definim o funcie pentru calculul factorialului. Definiia lui n! este n! = 1*2 *3* *n Funcia se va numi fact i va avea ca parametru de intrare variabila n. Expresia funciei va fi fact(n) 1. s = 1;

2. for(i=1;i<=n;i=i+1) s=s*i; 3. return s; k Vom utiliza funcia de mai sus pentru calculul combinrilor C n pentru valori ale lui n i k citite de la tastatur. Expresia combinrilor este n! k Cn = k!( n k )! Programul corespunztor este urmtorul : 1. read (k, n) ; 2. c = fact(n) / fact(k) / fact(n k); 3. write( c ); Menionm c funcia fact() este utilizat de mai multe ori ntr-un program. In multe cazuri este nevoie ca o funcie s calculeze mai multe valori, sau ca rezultatul funciei s fie un tablou, de exemplu vector sau matrice. Din acest motiv funciile pot avea i parametri de ieire, ce conin rezultate ale calculelor. Exemplu. S definim o funcie care calculeaz suma a doi vectori, x i y, cu n componente fiecare. Fie z vectorul sum. Componentele lui z se calculeaz cu relaia zi = xi + yi i = 1, ..., n Funcia va avea ca parametri de intrare vectorii x i y i dimensiunea lor n, iar ca parametru de ieire vectorul z. Definiia funciei este cea de mai jos sumvec(x, y, z, n) 1. for(i = 1 ; i <= n ; i = i + 1) zi = xi + yi 2. return ; Menionm c valorile calculate sunt asociate unui parametru, vectorul z. Nu avem nici o valoare calculat asociat numelui funciei i n consecina instruciunea return are forma simpl return; Funcia este utilizat ntr-o instruciune ce conine numele funciei i parametrii, ca n exemplul de mai jos. Vom utiliza funcia pentru a calcula suma a doi vectori A i B cu 3 componente fiecare. Vectorul sum va fi numit C. Valorile componentelor vectorilor A i B se vor citi de la tastatur. Programul este urmtorul : 1. read(A, B) ; 2. sumvec(A, B, C, 3); 3. write(C) ;

1.4 Fiiere tip text


Fiierele tip text sunt formate din iruri de caractere grupate n linii. O linie conine 0 sau mai multe caractere plus un caracter sfrit de linie. Orice fiier memorat pe disc are o etichet ce conine numele fiierului, adresa de nceput i numrul de caractere din fiier. In program fiecare fiier are asociat un obiect ce conine : numele fiierului, adresa de nceput a fiierului pe disc, numrul de caractere din fiier, numrul urmtorului caracter de citit sau de scris pe disc. Iniial numrul urmtorului caracter de citit sau de scris este zero,

un indicator de sfrit de fiier (end of file sau eof). Prelucrarea unui fiier se face dup urmtoarele regului : un fiier ce va fi prelucrat se deschide n citire. un fiier ce va fi creat se deschide n scriere. dup prelucrare fiierul trebuie nchis. La deschiderea n citire a unui fiier se verific dac fiierul exist pe disc i n obiectul asociat fiierului se nregistreaz adresa de nceput i numrul de caractere din fiier. Numrul urmtorului caracter de citi este pus la zero. In acest mod sistemul de operare poate detecta dac s-a ajuns la sfritul fiierului n timpul citirii pentru a poziiona indicatorul de sfrit de fiier la valoarea adevrat. La deschiderea n scriere a unui fiier (creare) se creaz pe disc eticheta fiierului n care se nscrie numele fiierului i adresa de nceput. Numrul urmtorului caracter de scris este pus la zero La nchiderea fiierului dup creare, n eticheta fiierului pe disc se scrie numrul de caractere din fiier. Limbajele de programare au urmtoarele funcii predefinite de prelucrare a fiierelor tip text: fd = open(f, mod) deschide fiierul cu numele f. Parametrul mod d modul de deschidere al fiierului, r n citire i w n creare. Funcia open creaz obiectul fd asociat fiierului cu informaiile de mai sus, close (fd) nchide fiierul cu numele f, read(fd, x) citete un caracter din fiierul f n variabila de tip caracter x, write(fd, x) scrie un caracter n fiierul f din variabila de tip caracter x, eof(fd) care are valoarea adevrat dup citirea ultimului caracter al fiierului. Funciile close(), , eof() au ca parametru obiectul fd asociat fiierului cu informaiile de mai sus, creat de funcia open(). Schema principial de citire a unui fiier tip text este urmtoarea 1. fd = open(f, r); 2. read(fd, x); 3. while(eof(fd) != true) prelucreaz x; read(fd, x); 4. close(fd); Pentru citirea unui fiier se utilizeaz de regul instruciunea while.

1.5 Prelucrarea irurilor de caractere


Un ir de caractere este un vector de caractere. Fiecare caracter este un element al vectorului i este reprezentat ntr-un anumit cod, ASCII, Unicode, vezi capitolul urmtor. Caracterele unui anumit cod sunt ordonate dup numrul ce reprezint caracterul. Limbajele de programare au funcii predefinite pentru prelucrarea irurilor de caractere i a caracterelor. Cteva dintre acestea sunt urmtoarele. Fie X un ir de caractere. Funcia predefinit size(X) are ca valoare lungimea irului de caractere X. Operatorii de comparare a dou iruri sunt : <, <=, >, >=, = = i !=

10

Compararea a dou iruri de caractere, X i Y, se face astfel. Se compar primul caracter din irul X, notat X1 cu primul caracter din irul Y, notat Y 1 . Dac X1 este mai mare ca Y1 , atunci irul X este mai mare ca Y. Dac X 1 este mai mic dect Y1, atunci X este mai mic dect Y. Dac cele dou caractere sunt egale, se compar urmtoarele caractere din iruri, pn se gsesc dou caractere diferite, sau pn se ajunge la sfritul unui ir. Dac toare caracterele sunt egale, irurile sunt egale, dac au aceeai lungime, n caz contrar irul mai lung este mai mare. Caracterele se scriu ntre apostrofuri, a, 1, *. Sirurile de caractere se scriu ntre ghilimelele, de exemplu, asn, s=a9+, etc. Sirul asn este vectorul de caractere cu trei componente, de mai jos. a s n In codul ASCII avem urmtoarea ordonare a caracterelor 1 < 2 < < 9 < A < B < Z < a < b < < z. Exemple de comparare a irurilor de caractere. X abc xyz abx Y abc xyzv abc Rezultat X=Y X<Y X>Y

Sirul xyz este mai mic dect xyzv deoarece primele trei caractere coincid i al doilea ir este mai scurt. Sirul abx este mai mare dect abc deoarece codul corespunztor caracterului c este mai mic dect cel al caracterului x. Fie c un caracter. Funciile predefinite pentru prelucrarea caracterelor sunt: isdigit(c), are valoare adevrat cnd c este o cifr, 0, 1, , 9, isalpha(c ), are valoare adevrat cnd c este o liter, a, z, A, Z, isspace(c ), valoare adevrat cnd c este spaiu, Return sau Tab. Limbajele de programare definesc i urmtorii operatori: operatorul + de concatenare a irurilor, operatorul de atribuire, =. Putem scrie, de exemplu, instruciuni de forma X = adb; Y = 12cd; Z = X + Y; Exemplu. Fie un ir de caractere X ce se citete de la tastatur. Se cere s se numere cifrele din irul X. Programul este urmtorul 1. 2. 3. 4. read(X); n = size(X); c = 0; for(i = 1; i <= n; i = i + 1) if( isdigit(Xi)) c = c + 1; 5. write(c );

11

2 Reprezentarea informaiilor n calculator


2.1 Reprezentarea numerelor ntregi n sistemul binar
2.1.1 Reprezentarea numerelor naturale
Un numr natural se reprezint ca o colecie de cifre ntr-o anumit baz. In sistemul poziional, poziia unei cifre determin ponderea cifrei n mrimea numrului. Fie numrul N = (d n 1 d n 2 ...d 0 ) r unde: r > 1 este baza, numr natural, n este numrul de cifre, iar d i este cifra de pe poziia i. Mrimea numrului natural corespunztor este
N = d n 1 r n 1 + d n 2 r n 2 + + d 0 r 0 = di r i i =0
n 1

(1)

Cifrele bazei r sunt { 0, 1, 2, ..., r-1 } adic 0 d i < r . Numerele naturale reprezentate cu n cifre ntr-o baz r oarecare au valori cuprinse n intervalul [0 ... rn-1]. In sistemul zecimal (baza 10) cifrele bazei sunt {0, 1, 2, , 9} In sistemul binar, (baza 2), cifrele bazei sunt {0, 1} In sistemul octal, (baza 8), cifrele bazei sunt {0, 1, 2, , 7} In sistemul hexazecimal (baza 16), cifrele bazei sunt {0, 1, 2, , 9, A, B, C, D, E, F} unde: A=10, B=11, C=12, D=13, E=14 i F=15. Cifrele sistemului binar, 0 i 1, se numesc bii. In calculatoare numerele ntregi sunt reprezentate n baza 2. Conversia unui numr din bazele 2, 8 sau 16 n baza 10 se face aplicnd formula (1). Exemplu. Fie numrul binar N = (101011)2. Aplicm formula (1) i obinem N = 1*25+0*24+1*23+0*22+1*21+1*20 = (43)10 Exemplu. Fie numrul octal N = (26)8. Dup formula (1) avem N = 2*81+6*80 = (22)10 Numrarea binar Fie un numrtor binar cu k bii. Numrul N ce se poate reprezenta este cuprins n intervalul [0 ... 2k-1]. In consecin, un numrtor binar evolueaz dup regula N modulo 2k, adic dup valoarea 2k-1 urmeaz valoarea 0. De exemplu, un numrtor binar cu 2 bii evolueaz astfel 00, 01, 10, 11, 00, 01,

2.1.2 Conversia zecimal-binar


Fie un numr natural reprezentat n sistemul binar N = bi 2 i = bn 1 2 n 1 + ... + b1 21 + b0
i =0 n 1

In partea dreapt avem un polinom de puteri ale lui 2. Coeficientul bi este 0 sau 1. Din expresia de mai sus a numrului se observ c cifrele b0 , b1 , etc., se pot obine ca

12

resturile impririlor repetate ale numrului N cu 2. Vom nota cu q0 , q1 , ..., cturile mpririlor repetate la 2 i cu r0 , r1 , ..., resturile mpririlor repetare la 2 ale numrului N. Vom nota N = q0 i vom scrie numrul N ca q 0 = q1 2 + r0 unde q1 este ctul mpririi lui q0 la 2, iar r0 este restul mpririi lui q 0 la 2. Comparnd cu expresia lui N de mai sus deducem: r0 = b0 q1 = bn 1 2 n 2 + ... + b1 adic b0 , ultima cifr a numrului N convertit n binar, este chiar primul rest r0 . Vom scrie ctul q1 ca q1 = q 2 2 + r1 de unde deducem: r1 = b1 q 2 = bn 1 2 n 3 + ... + b2 Dup n astfel de operaii vom avea: q n 1 = q n 2 + rn 1 unde: rn 1 = bn 1 qn = 0 Algoritmul se oprete atunci cnd q n = 0 . Dup cum se observ, resturile obinute reprezint chiar cifrele numrului binar, primul rest este cifra cea mai puin semnificativ a numrului binar. Exemplu. S convertim numrul 14 din baza 10 n baza 2. Prin mpriri repetate la 2 obinem cturile i resturile din tabelul de mai jos. 14 = q1 2 + r0 = 7 * 2 + 0 7 = q 2 2 + r1 = 3 * 2 + 1 3 = q3 2 + r2 = 1 * 2 + 1 b0 = r0 = 0 i q1 = 7 b1 = r1 = 1 i q 2 = 3 b2 = r2 = 1 i q3 = 1 b3 = r3 = 1 i q 4 = 0

1 = q 4 2 + r3 = 0 * 2 + 1 Reprezentarea numrului 14 n binar este: (14) 10 = ( r3 r2 r1r0 ) = (1110) 2 Algoritmul de conversie a unui numr natural N din baza 10 n baza 2 este urmtorul: 1. q 0 = N 2. i = 0 3. while qi 0 { qi +1 = qi / 2 ri = qi %2 i = i +1 }

13

In algoritmul de mai sus operatorul % calculeaz restul mpririi a dou numere ntregi. Resturile obinute sunt cifrele numrului binar, primul rest fiind cifra cea mai puin semnificativ. Conversia din baza 10 n baza 8 sau 16 se face prin mpriri repetate cu 8 i respectiv 16. In acest fel obinem reprezentarea n bazele 2, 8 i 16 a primelor 16 numere naturale din Tabelul 5. Baza 10 Baza 2 Baza 8 Baza 16 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F
Tabelul 5. Reprezentarea primelor 16 numere naturale n bazele 10, 2, 6, 16.

2.1.3 Conversia ntre bazele 2, 8 i 16


Avnd un numr n baza 2, pentru reprezentarea sa n baza 16 se grupeaz cte 4 cifre binare care se convertesc ntr-o cifr hexazecimal. Exemple. (12) 10 = (1100) 2 = ( C ) 16 (10011110) 2 = ( 9 E ) 16 = ( 9 *16 + 14) 10 = (158) 10 Avnd un numr n baza 2, pentru reprezentarea n baza 8 se grupeaz cte 3 cifre binare care se convertesc ntr-o cifr octal. Exemplu. ( 28) 10 = (11100) 2 = ( 34) 8 Pentru verificare ( 34) 8 = 3 * 81 + 4 10 = ( 28) 10 Conversia unui numr din baza 16 n baza 2 se face reprezentnd fiecare cifr hexazecimal prin 4 cifre binare. Exemplu. (A4)16=(1010 0100)2 Conversia unui numr din baza 8 n baza 2 se face convertind fiecare cifr octal n 3 cifre binare. Exemplu. (63)8 = (110 011)2 Pentru conversii de numere ntre bazele 2, 8, 10 i 16 i operaii cu numere n aceste baze se poate folosi aplicaia Calculator a sistemului de operare Windows.

14

Exerciii. S se completeze tabelul de mai jos Baza 10 42 Baza 2 0010 1010 0101 1111 29 1011 0100 125 A6 143 Unitatea de baza a informaiei n calculator este un octet sau byte, ce cuprinde 8 cifre binare (bii). Numerele ntregi se reprezint n calculator pe 1, 2, 4 sau 8 octeti (8, 16, 32 sau 64 de bii). Reprezentarea n baza 16 este important deoarece un octet poate fi reprezentat prin dou cifre hexazecimale. Este util s cunoatem primele 10 puteri ale lui 2. Ele sunt date n Tabelul 6. 20 21 22 23 24 25 26 27 28 29 210 1 2 4 8 16 32 64 128 256 512 1024 Baza 8 52 66 Baza 16 2A 7E

Tabelul 6. Puterile lui 2.

Puterile lui 2 din Tabelul 7 au denumiri speciale. 210 = 1 024 220 = 1 048 576 230 = 1 073 741 824 1 Kilo 1 Mega 1 Giga

Tabelul 7. Puteri ale lui 2 cu denumiri speciale.

2.1.4 Reprezentarea numerelor binare cu semn


In cazul numerelor binare cu semn, bitul cel mai semnificativ este bitul de semn. El este 0 pentru numere pozitive i 1 pentru numere negative.

Exist trei reprezentri ale numerelor binare cu semn.

15

Reprezentarea n mrime i semn Un numr pozitiv X se reprezint n mrime i semn ca:


X = 0 * 2 n 1 + ai 2 i i =0
n 2 i =0

n 2

Un numr negativ -X se reprezint n mrime i semn ca: X = 1 * 2 n 1 + a i 2 i Difer doar bitul de semn. Biii numrului sunt aceiai, pentru numr pozitiv sau negativ, ei reprezint valoarea absolut a numrului |X|. Exemple. Vom considera numere ntregi reprezentate pe 8 bii, un bit de semn i 7 bii ai numrului: Baza 10 13 -13 25 -7 127 -127 Baza 2 0000 1101 1000 1101 0001 1001 1000 0111 0111 1111 1111 1111 Baza 16 0D 8D 19 87 7F FF

Gama numerelor ntregi reprezentabile pe un octet n mrime i semn este [-127, 127]. Reprezentarea n mrime i semn este rar folosit n calculatoare. Reprezentarea n complement fa de 1 Fie N un numr natural reprezentat n baza r i fie a i cifrele numrului. Complementul unei cifre a numrului n baza r 1 este
a i = r 1 a i
_

Reamintim c cifrele bazei r sunt {0, 1, ..., r 1} Numrul N este reprezentat n complement fa de r 1 complementnd fiecare cifr a numrului fa de r 1. De exemplu, un numr binar se complementeaz fa de 1 complementnd fiecare cifr binar fa de 1, un numr hexazecimal se complementeaz fa de 15 complementnd fiecare cifr hexazecimal faa de 15, etc. Un numr pozitiv X se reprezint n complement fa de 1 ca:
X = 0 * 2 n 1 + ai 2 i i =0
n 2 i =0

n 2

Un numrul negativ -X se reprezint n complement fa de 1 ca: X = 1* 2


n 1

+ ai 2 i

unde: ai = 1 ai este complementul fa de 1 al cifrei a i . Pentru a reprezenta un numr negativ n complement fa de 1 complementm toate cifrele numrului pozitiv fa de 1. Complementarea fa de 1 a unei cifre binare nseamn modificarea cifrei 1 n 0 i a cifrei 0 n 1. Reprezentarea unui numr negativ n complement fat de 1 se face modificnd toate cifrele numrului pozitiv din 1 n 0 i din 0 n 1, inclusiv bitul de semn. Exemple de numere reprezentate n complement fa de 1 pe un octet.

16

Baza 10 15 -15 -19 19 127 -127

Baza 2 0000 1111 1111 0000 1000 1100 0001 0011 0111 1111 1000 0000

Baza 16 0F F0 8C 13 7F 80

Exemplu. Numrul -15 se reprezint n complement fa de 1 ca 255 15 = 240 = (F0)16. Numrul -127 se reprezint n complement fa de 1 ca 255 127 = 128 = (80)16. Fie N un numr natural reprezentat n baza r cu n cifre. Complementul fa de r 1 al numrului N este Considerm formula ce reprezint un numr pozitiv n complement fa de r - 1
X = 0 * 2 n 1 + ai 2 i i =0
n2 i=0

(n

1 N
n 2

Avem relaia 2 n = 2 n 1 + 2 n 2 + + 2 0 + 1 = 2 n 1 + 2 i + 1 In consecin, numrul reprezentat n complement fa de 1 este 2 n 1 X = 2 n 1 + 2 i + 1 1 0 * 2 n 1 2 i = 2 n 1 + (1 ai )


i =0 i =0 i =0 n2 n 2 n2

Obinem formula de mai sus n care fiecare cifr a numrului X este complementat. Reprezentarea n complement fa de 1 nu se folosete n calculatoare. Reprezentarea numerelor binare n complement fa de 2 Fie un numr natural N reprezentat n baza r cu n cifre. Complementul fa de r al numrului N este In consecin, complementul fa de 2 al unui numr natural binar cu n cifre este iar complementul fat de 16 al unui numr natural hexazecimal cu n cifre este Un numr pozitiv X se reprezint n complement fa de 2 ca:
X = 0 * 2 n1 + ai 2 i i =0
n 2

rn N

2n N

16 n N

Un numr negativ -X se reprezint n complement fa de 2 ca: X = 1 * 2 n 1 + ai 2 i + 1


i =0 n 2

unde: a i = 1 ai . Complementul faa de doi al unui numr binar se obine n felul urmtor : toate cifrele nule de la dreapta numrului rmn nemodificate, prima cifr nenul de la dreapta se complementeaz fa de doi, restul cufrelor numrului se complementeaz faa de 1. Aceeai regul se aplic i numerelor reprezentate n baza 16:

17

toare cifrele nule de la dreapta numrului rmn nemodificate, prima cifr nenul de la dreapta se complementeaz fa de 16, restul cufrelor numrului se complementeaz faa de 15. Exemple de numere reprezentate n complement fa de 2 pe un octet. Baza 10 13 -13 7 -7 10 -10 127 -127 48 -48 -128 Baza 2 0000 1101 1111 0011 0000 0111 1111 1001 0000 1010 1111 0110 0111 1111 1000 0001 0011 0000 1101 0000 1000 0000 Baza 16 0D F3 07 F9 0A F6 7F 81 30 D0 80

Exemplu. Numrul -13 se reprezint n complement fa de doi ca 256 13 = 243 = (F3)16. Numrul -127 se reprezin n complement fa de doi ca 256 127 = 129 = (81)16. Menionm c n calculatoare numerele ntregi se reprezint n general n complement fa de 2. Considerm formula ce reprezint un numr pozitiv n complement fa de 2
X = 0 * 2 n 1 + ai 2 i i =0
n2 i=0

n 2

Avem relaia: 2 n = 2 n 1 + 2 n 2 + + 2 0 + 1 = 2 n 1 + 2 i + 1 In consecin, numrul reprezentat n complement fa de 2 este: 2 n X = 2 n + 2 i + 1 0 * 2 n 1 ai 2 i = 2 n 1 + (1 ai ) + 1


i=0 i=0 i=0 n2 n2 n2

deci obinem formula de mai sus.

2.2 Deplasarea numerelor binare cu semn


Inmulirea unui numr binar cu semn cu 21 sau 2 1 este echivalent cu deplasarea numrului binar la stnga sau la dreapta cu o cifr. La deplasarea numrului binar, bitul de semn rmne neschimbat. Cazul numerelor pozitive. Se deplaseaz toate cifrele numrului, iar cifrele adaugate sunt zerouri. Regula este evident din formula de reprezentare a numerelor pozitive. Fie numrul pozitiv
X = 0 * 2 n1 + ai 2 i i =0
n 2

i numrul nmulit cu doi

18

Y = 2 * X = 0 * 2 n 1 +

bi 2 i i =0

n 2

de unde se deduce:

bi +1 = ai b0 = 0 Am presupus c prin nmulirea cu 2 a numrului X nu apare depsire. In acelai fel se arat c regula este valabil pentru mprirea cu 2. Exemple. Deplasarea numrului 28 cu o cifr binar la dreapta i la stnga. Baza 10 28 14 56 19 9 38 Baza 2 0001 1100 0000 1110 0011 1000 0001 0011 0000 1001 0010 0110 Baza 16 1C 0E 38 13 9 26

De ce 19 deplasat la dreapta cu o cifr are rezultatul 9? Numere negative reprezentate n complement fa de 2 Regula de nmulire a acestor numere cu 21 sau 2 1 este urmtoarea: la deplasarea la stnga cifrele adugate sunt zerouri, la deplasarea la dreapta cifrele adugate sunt unuri, reamintim c bitul de semn rmne neschimbat. Regula deplasrii numerelor ntregi reprezenate n complement fa de 2 se poate enuna astfel : la deplasarea la stnga cifrele adugate sunt zerouri, la deplasarea la dreapta se propag bitul de semn Exemplu. Deplasarea numrului -28 cu o cifr binar la dreapta i la stnga. Baza 10 -28 -14 -56 Baza 2 1110 0100 1111 0010 1100 1000 Baza 16 E4 F2 C8

2.3 Extinderea formatului numerelor cu semn


Numerele ntregi se pot reprezenta n diverse formate pe 1, 2, 4 i 8 octei. La trecerea de la un format la altul trebuie ca numerele s-i pstreze semnul, numerele pozitive rmn pozitive, cele negative rmn negative. La extinderea formatului numerele trebuie s-i pstreze valoarea. Extinderea formatului se face prin copierea bitului de semn n poziiile suplimentare de la stnga. Exemple de numere reprezentate pe un octet i extinse pe doi octei. Baza 10 25 -25 Baza 16 (un octet) 19 E7 Baza 16 (doi octei) 00 19 FF E7

19

Exemple de numere reprezentate pe doi octei i extinse pe patru octei. Baza 16 (doi octei) A025 7348 Baza 16 (patru octei) FFFF A025 0000 7348

Dup cum se observ, poziiile suplimentare de la stnga conin cifrele hexazecimale 0 pentru numere pozitive i F pentru numere negative. Numerele ntregi se reprezint n calculator pe 1, 2, 4 sau 8 octeti (8, 16, 32 sau 64 de bii). Gamele numerelor ntregi reprezentabile pe 1, 2, 4, 8 octei sunt cele de mai jos. Reprezentarea 1 octet 2 octei 4 octei 8 octei Gama numerelor (-27, 27) (-215, 215) (-231, 231) (-263, 263)

2.4 Reprezentarea numerelor reale


2.4.1 Reprezentarea numerelor reale n virgul mobil
Numerele reale se reprezint n calculator n virgul mobil. Numrul real R este pus sub forma R = f * be unde: f este un numr subunitar (mantisa), b este baza iar e este exponent. Pentru exemplificare vom considera baza zece. Exemple de reprezentare a numerelor reale. 32.45 = 0.3245 * 10 2 0.3245 -0.35
0.035 = 0.35 * 10 1 Mantisa f are totdeauna un numr finit de cifre i n plus f <1

2 -1

In continuare, pentru exemplificare vom considera c mantisa are 8 cifre. Deoarece mantisa are un numr finit de cifre, n unele cazuri se pierd cifrele mai puin semnificative din numr. Exemplu. Numrul 1 = 0.(3) = 0.3333333333... 3 se reprezint ca: 0.33333333 *10 0 Pentru mrirea preciziei calculelor se caut ca prima cifr din mantis s fie diferit de zero (vezi exemplul de mai sus). Numerele n aceast form se numesc normalizate.

20

2.4.2 Efectuarea operaiilor cu numere n virgul mobil


Pentru adunare numerele se aduc la acelai exponent (numrul mai mic la exponentul celui mai mare) i apoi se adun mantisele. Aducerea numrului mai mic la exponentul celui mai mare poate duce la pierderea cifrelor cel mai puin semnificative din mantisa numrului mai mic. Exemplu. S efectum adunarea : 12.48 + 0.35 Primul numr este reprezentat ca 0.1248 0.1248 *10 2 iar al doilea 0.35 * 10 0 Pentru adunare se aduc numerele la acelai exponent 0.1248 2 0.0035 2 i se adun mantisele. Rezultatul este cel de mai jos. 0.1283 2 0.35 0 2

Vom prezenta un exemplu n care se pierd cifrele cele mai puin semnificative din rezultat. S adunm numerele: 1237.55 + 0.000425 Numerele sunt reprezentate astfel: 0.123755 * 10 4 0.425 * 10 3 0.123755 4

0.425 -3 La adunare mantisa celui de-al doilea numr este deplasat la dreapta cu 7 cifre. Considernd lungimea mantisei de 8 cifre, se pierd doua cifre semnificative din al doilea numr la aducerea la acelai exponent. Numerele sunt acum : 0.123755 0.00000004 Rezultatul adunrii este: 0.12375504 4 4 4

Observm c s-au pierdut dou cifre din rezultat, cele mai puin semnificative. Operaia de scdere se face aducnd numerele la acelai exponent i scznd mantisele. La nmulire se adun exponenii i se nmulesc mantisele. La mprire se scad exponenii i se mpart mantisele. Dup efectuarea unei operaii aritmetice se caut ca 21

prima cifra din mantis s fie diferit de zero, pentru o precizie maxim a rezultatului (normalizare). Pentru creterea preciziei operaiilor, n unitatea de calcul mantisa mai are nc o cifr. Operaiile se fac deci cu o mantis mai lung, dup care se rein opt cifre din rezultat. Exemplu. Fie de efectuat operaia de scdere: 103.45678 23.456789 Numerele se reprezint astfel: 0.10345678 3 0.23456789 2 Dac mantisa are doar opt cifre semnificative, cnd deplasm la dreapta cu o cifr, mantisa celui de-al doilea numr, pierdem o cifr semnificativ. 0.02345678 3 Rezultatul scderii celor dou numere este: 0.08 3

i dup normalizare obtinem rezultatul 80. Presupunem acum c n unitatea de calcul se lucreaz cu o mantis cu nou cifre semnificative. In acest caz cele dou numere sunt 0.10345678 0 0.02345678 9 Dup scderea celor dou numere obinem: 0.07999999 1 iar dup normalizare obinem rezultatul : 0.79999991 2 Mentionm c exponentul poate fi pozitiv sau negativ. Pentru a nu avea dou semne, unul pentru numr i altul pentru exponent, se adaug un numr constant la exponent astfel ca s fie totdeauna pozitiv. De exemplu, dac gama exponentului este [-63, 63] se adaug valoarea 63 astfel nct gama exponentului va fi [0, 126]. Exponentul cu numrul pozitiv adunat se numete caracteristic. In calculatoarele personale numerele reale se reprezint n virgul mobil n felul urmtor R = semn * 1.mantisa * 2 exponent In reprezentarea n virgul mobil scurt (simpla precizie) numrul se reprezinta pe 32 bii. Domeniul exponentului este [-127, 127]. La exponent se adaug totdeauna valoarea 127 astfel nct exponentul are domeniul [0,254]. Bitul de semn are valoarea 3 3 3

22

0 pentru numere pozitive i 1 pentru cele negative. Bitul de semn ocup bitul 31, exponentul ocup biii 23-30 iar mantisa biii 0-22. Gama numerelor reale ce se pot reprezenta n acest format este (10 37 ,10 37 ) iar mantisa corespunde la opt cifre zecimale. Exemple. Fie numrul R = 1.0 = 1.0 * 2 0 . Bitul de semn este zero iar exponentul 0+127. In consecin, primii nou biti din numr sunt 001111111 Numrul R va fi reprezentat n hexazecimal ca 3F800000. Fir numrul R = 0.5 = 1.0 * 2 1 . Bitul de semn este zero iar exponentul este -1+127=126. Primii nou bii din numr sunt 001111110 Numrul se reprezint n hexazecimal ca 3F000000. Menionm c dac exponentul este 255 iar mantisa este 0, numrul este Dac exponentul este 255 i mantisa este diferit de zero numrul este NaN (not a number). Valoarea NaN apare atunci cnd efectum urmtoarele operaii : 0* 0/0 / sau cnd un operand este NaN. In reprezentarea n virgul mobil lung (dubl precizie) numrul se reprezint pe 64 bii. Domeniul exponentului este [-1023, 1023]. La exponent se adaug cantitatea 1023, deci exponentul are domeniul [0, 2046]. Bitul de semn este bitul 63, exponentul ocup biii 52-62 iar mantisa ocup biii 0-51. Gama numerelor reale ce se pot reprezenta n dubl precizie este (10 307 ,10 307 )

2.5 Reprezentarea caracterelor


Unul dintre sistemele de reprezentare a caracterelor este codul ASCII n care fiecare caracter este reprezentat pe un octet. De exemplu caracterul A are codul hexazecimal 41, caracterul a are codul hexazecimal 61, cifra 0 are codul hexazecimal 30, etc. Codurile ASCII ale caracterelor sunt prezentate n tabela de mai jos. y\x 0 1 2 3 4 5 6 7 8 9 10 11 0 Nul Soh Stx Etx Eot Enq Ack Bel Bs Ht Lf Vt 1 Del dc1 dc2 dc3 dc4 Nak Syn Elb Can Em Sub Esc 2 ! # $ % & ( ) * + 3 0 1 2 3 4 5 6 7 8 9 : : 4 A B C D E F G H I J K 5 P Q R S T U V W X Y Z [ 6 a b c d e f g h i j k 7 p q r s t u v w x y z {

23

12 13 14 15

Ff Cr So Si

Fs Gs Rs Us

, . /

< = > ?

L M N O

\ ] ^ _

l m n o

| } ~ del

Tabelul 8. Codul ASCII.

Codul zecimal unui caracter este 16*x+y. De exemplu caracterul A are codul zecimal 65 sau, echivalent, codul hexazecimal 41. Un alt sistem de reprezentare a caracterelor este UNICODE. In varianta UNICODE16 fiecare character este reprezentat pe 2 sau 4 octei.In varianta UNICODE-32 fiecare caracter se reprezint pe 4 octei, iar n varianta UNICODE-8 un caracter se reprezint pe 1, 2, 3 sau 4 octei.

2.6 Limbaje de asamblare


In cele ce urmeaz vom considera un calculator simplu, similar unui microcontroler. Unitatea de baz de reprezentare a informaiei este un byte sau octet format din opt bii. Vom considera numere ntregi reprezentate n sistem binar pe 4 octei n complement fa de 2. Calculatorul are instruciuni pentru urmtoarele operaii : adunare i scdere cu numere ntregi, comparare a dou numere ntregi, operaii de ramificare a execuiei n diferite puncte din program. Calculatorul considerat are un registru de 4 octei registrul A (acumulator) Registrul A este utilizat la efectuarea operaiilor aritmetice. El conine totdeauna un operand i rezultatul. Orice calculator are nite indicatori de condiie poziionai la compararea a dou numere, un numr memorat ntr-un registru iar cellalt n memorie. Indicatorii de condiie sunt reprezentai de doi bii, unul numit Z care este poziionat la 1 dac numerele comparate sunt egale, cellalt numit S care este poziionat la 1 dac numrul din registru este mai mic dect cel din memorie. Z S operand1 = operand 2 1 0 operand1 < operand 2 0 1 operand1 > operand 2 0 0 Operand1 se afl n registru i operand2 se afl n memorie. Indicatorii de condiie ai calculatorului formeaz cuvntul de stare al programului (Program Status Word, PSW). Calculatorul are un registru ce conine adresa urmtoarei instruciuni de executat, numit numrtorul de program (Program Counter). Memoria calculatorului este un ir de octei, adresa primului octet fiind zero. Formatul instruciunilor calculatorului este urmtorul : OP adresa unde OP este codul instruciunii de executat iar adresa este cea a unui operand din memorie. Instruciunile calculatorului sunt: instruciuni de ncrcare: LDA adresa ncarc n registrul A valoarea de la adresa instruciunii.

24

instruciuni de memorare: STA adresa memoreaz coninutul registrului A la adresa specificat. instruciuni de calcul cu numere ntregi : ADD adresa SUB adresa aceste instruciuni adun i scad dou numere, primul fiind n acumulator, al doilea la adresa instruciunii. instruciuni de comparare: CPA adresa Aceast instruciune compar numrul dintr-un registru A cu cel de la adresa i poziioneaz indicatorii de condiie. instruciuni de salt: JMP adresa Aceast instruciune duce la execuia instruciunii de la adresa. Instruciunile urmtoare testeaz indicatorii de condiie i n funcie de valoarea acestora se trece la adresa din instruciune. JL JE JG adresa JGE JLE JNE operand1 < operand 2 operand1 = operand 2 operand1 > operand 2 salt dac operand1 operand 2 operand1 operand 2 opearnd1 operand 2

In final mai exist instruciunea STOP Ea produce oprirea programului. Un limbaj de asamblare utilizeaz etichete i directive. O etichet este un ir de litere i cifre ce ncepe cu o liter. Directivele limbajului de asamblare sunt: directiva END cu forma END start unde : start este o eticheta ce specific punctul de ncepere a execuiei programului. directiva DATA cu forma: [eticheta] DATA M1, M2, Mn Ea genereaz numerele M1, M2, , Mn pe 4 octei. Eticheta acestei directive este opional. Exemplu. Vom scrie un program care adun dou numere ntregi, 50 i 23. In limbaj pseudocod programul este X = 50 ; Y = 23 ; Z=X+Y; Programul n limbaj de asamblare este urmtorul : X Y DATA DATA 50 23

25

Z START

DATA LDA ADD STA STOP END

0 X Y Z START

In acest program generm la nceput cele dou numere de adunat cu dou directive DATA i rezervm o zon pentru rezultat cu o alt directiv DATA. Urmeaz apoi secvena de instruciuni ce adun cele dou numere i memoreaz rezultatul.

2.6.1 Formatul instruciunilor calculatorului


In calculatorul pe care l exemplificm orice instruciune se compune din codul operaiei i adresa operandului. Fiecare instruciune este tradus de programul asamblor pe 4 octei. Primul octet conine codul operaiei, iar urmtorii trei octei conin adresa. OP adresa

OP este codul operaiei. Asamblorul utilizeaz o variabil numit contor de locaii. Iniial valoarea contorului de locaii este zero. Contorul de locaii este incrementat de asamblor dup fiecare instruciune generat cu valoarea patru iar dup fiecare directiv DATA cu numrul de octei generai, n cazul numerelor tot cu valoarea patru. Codurile instruciunilor sunt cele din Tabelul 9. Cod LDA STA ADD SUB CPA JMP Instruciune 1 2 3 4 5 6 Cod JE JNE JG JGE JL JLE STOP Instruciune 7 8 9 10 11 12 13

Tabelul 9. Codurile instruciunilor calculatorului.

La generarea programului asamblorul creaz o tabel cu etichetele din program i adresele lor (valorile contorului de locaii). X 0 Y 4 Z 8 START 12

Tabelul 10. Tabela cu adresele etichetelor.

Adresa etichetei START n tabel este 12 n zecimal (C n hexazecimal). Textul generat de asamblor n cazul programului anterior este urmtorul: Contorul de locaii 0 00 4 00 8 00 Memoria 00 00 32 00 00 17 00 00 00 Programul n limbaj de asamblare X DATA 50 Y DATA 23 Z DATA 0 26

C 10 14 18

01 03 02 0D

00 00 00 00

00 00 00 00

00 04 08 00

START

LDA ADD STA STOP

X Y Z

In prima coloan avem valoarea contorului de locaii n hexazecimal, care este adresa la care se afl generat instruciunea n memorie. In prima linie avem numrul 50 reprezentat pe 4 octei. Valoarea lui n hexazecimal este 32. In linia a doua avem valoarea hexazecimal a numrului 23. In linia treia este generat valoarea 0 pe patru octei. In linia a patra avem generat instruciunea: START LDA X Eticheta X are valoarea 0 (vezi contorul de locaii). Codul instruciunii, OP, este 1. In linia a cincea avem instruciunea: ADD Y Eticheta Y are valoarea 4, codul instruciunii OP este 3. Exemplu. Fie dou numere ntregi, a = 17 i b = 13. Se cere s se calculeze valoarea c = max(a, b) Problema poate fi rezolvat cu programul pseudocod de mai jos: a = 17; b = 13; c = a; if(a <= b) c = b; Programul n limbaj de asamblare este urmtorul a b c start DATA DATA DATA LDA STA CPA JLE LDA STA STOP 17 13 0 a c b adr1 b c

adr1

Tabela cu adresele n zecimal ale etichetelor este urmtoarea: a 0 b 4 c 8 start 12 adr1 36

Programul generat de asamblor este cel de mai jos. Contorul de locaii 0 4 8 C 00 00 00 01 Memoria 00 00 00 00 00 00 00 00 11 D 00 00 a b c start Programul DATA 17 DATA 13 DATA 0 LDA a 27

10 14 18 1C 20 24

02 05 0C 01 02 0D

00 00 00 00 00 00

00 00 00 00 00 00

08 04 24 04 08 00

STA CPA JLE LDA STA adr1 STOP

c b adr1 b c

Valorile contorului de locaii sunt n hexazecimal. Un alt program pseudocod pentru rezolvarea problemei este cel de mai jos. a = 17; b = 13; if(a <= b) c = b; else c = a; S se scrie programul n limbaj de asamblare corespunztor.

28

3 Sisteme de operare
Un calculator const dintr-un mare numr de componente : procesoare, memorie, uniti de disc, imprimante, tastatur, interfee de reea i alte dispozitive de intrare/ieire. Scrierea unui program care s utilizeze direct aceste componente i s le gestioneze este complicat. Din aceast cauz calculatoarele au un sistem de operare care este un sistem de programe ce gestioneaz toate aceste dispozitive. Structura unui calculator este urmtoarea: Nivelul fizic Sistem de operare Compilatoare, editoare, interpretere de comenzi Programe de aplicaii Nivelul fizic execut setul de instruciuni ale calculatorului. Ele sunt operaii aritmetice, comparri de numere, operaii de ramificare, operaii cu iruri de caractere, comanda dispozitivelor periferice, etc. Sistemul de operare const din programe care reprezint un set de instruciuni mai uor de utilizat dect cele din nivelul hardware. Funciile principale sunt: gestiunea sistemului de fiiere. Sistemul de operare are o funcie de citire sau scrierea unui numr de octei dintr-un fiier. Un program care ar citi un fiier pe disc fr s utilizeze sistemul de operare ar trebui s comande deplasarea capului pe disc, apoi citirea de octei de pe disc, etc. alocarea resurselor. Sistemul de operare controleaz alocarea resurselor procesoarelor, memoria i a dispozitivelor intrare/ieire ntre diverse programe care doresc s le utilizeze. De exemplu, cnd mai multe aplicaii ruleaz simultan pe acelai calculator sistemul de operare aloc timp de unitate central fiecrei aplicaii. Deasupra sistemului de operare se gsesc alte programe : compilatoare, interpretoare de comenzi, editoare, etc. Nivelul final este reprezentat de programele de aplicaii. Exemplu. Considerm dou programe rulnd pe acelai calculator ce vor s tipareasc simultan date la imprimant. Dac nu ar exista sistem de operare s-ar tipri cteva linii ale primei aplicaii, cteva linii ale aplicaiei a doua, etc. Sistemul de operare memoreaz toate datele unei aplicaii ce trebuie tiprite pe disc. Dup ce toate datele unei aplicaii au fost memorate, sistemul de operare le tiprete la imprimant.

3.1 Sisteme de operare tipice


Sisteme de operare pentru calculatoare personale. Asigur interfaa pentru un singur utilizator. Servere. Deservesc mai muli utilizatori (clieni) simultan dintr-o reea i permit acestora s utilizeze resurse hardware sau software (servicii de tiprire, Web, etc). De exemplu un server de Web memoreaz pagini de Web i gestioneaz cererile clienilor de a descrca aceste pagini. Sisteme de operare de timp real. Se utilizeaza n industrie. Calculatorul trebuie s culeag date despre procesul de producie pentru a comanda procesele de producie dintr-o fabric. La aceste sisteme timpul este parametrul cel mai important.

29

3.2 Nivelul fizic


Un calculator personal tipic are urmtorul model fizic:

Figura 1 Arhitectura unui calculator personal.

Unitatea central Unitatea central de prelucrare (CPU, central processing unit) execut setul de instruciuni al calculatorului. CPU ncarc pe rnd cte o instruciune, o decodific i o execut. CPU conine: registru acumulator, numrtorul de program (program counter) ce conine adresa urmtoarei instruciuni de executat, cuvntul de stare a programului (Program Status Word, PSW) ce conine printre altele indicatorii de condiie poziionai de instruciunile de comparare, CPU are dou moduri de lucru : supervizor (kernel); n acest mod de lucru CPU poate executa orice instruciune, utilizator ; n acest mod CPU poate executa doar un subset din instruciunile calculatorului. De regul, sunt excluse de la execuie instruciunile pentru operaiile I/E cu periferice. Programele de aplicaii apeleaz funcii ale sistemului de operare pentru operaiile I/E. Cuvntul de stare a programului (PSW) conine un bit ce specific modul de lucru al CPU. Discuri O unitate de discuri conine mai multe discuri cu capete de scriere/citire, cte unul pentru fiecare suprafa. Informaia este scris pe fiecare suprafaa pe cercuri concentrice (piste). Toate pistele de acelai diametru formeaz un cilindru. Fiecare pist conine mai multe sectoare.

30

Figura 2. Unitate de disc dur.

Magistrale Magistrale calculatorului conecteaz unitatea central cu memoria i dispozitivele periferice. Schema acestor magistrale este artat n Figura 3. O magistral conine linii de adres, de date i de control.

Figura 3. Magistralele unui calculator.

Dispozitive intrare / ieire Dispozitivele intrare / ieire (I/E) sunt gestionate de sistemul de operare. Un dispozitiv I/E se compune din dou pri : un controler i dispozitivul respectiv. Controlerul primete comenzi de la sistemul de operare i le execut. Deoarece fiecare tip de controler este diferit (exist controlere de disc, de tastatur, de monitor, etc.) este nevoie de programe diferite care s gestioneze fiecare controler. Programul ce gestioneaz un controler se numete (device) driver. Productorul unui anumit periferic furnizeaz un driver pentru perifericul fabricat pentru fiecare sistem de operare. La instalarea unui periferic se instaleaz n sistemul de operare i driverul respectiv. Driverul lucreaz n mod supervizor (kernel). Fiecare controler are registre de control, de stare i de date utilizate pentru comunicarea cu sistemul de operare. Sistemul de operare comand controlerul s execute o operaie scriind aceste registre i afl starea controlerului citind aceste registre. 1. Registrele de control conin informaii despre operaia I/E ce trebuie realizat. De exemplu, un controler de disc, poate avea un registru de control ce conine numrul sectorului de unde se citesc sau unde se scriu date, un registru cu numrul de octei de citit sau scris i un registru cu codul operaiei de efectuat, scriere sau citire. 2. Registrele de date. Sistemul de operare poate scrie date n aceste registre ce vor fi transferate apoi de controler pe dispozitiv. In aceste registre se citesc date de pe dispozitiv de ctre controler care vor fi transferate apoi de sistemul de operare n

31

memorie. De exemplu, controlerul de disc are un registru de date cu urmtoarele funciuni : controlerul citete datele de pe disc n acest registru iar sistemul de operare le scrie apoi n memorie, sistemul de operare scrie date n acest registru pe care apoi controlerul le transfer pe disc. 3. Registrele de stare conin informaii despre starea controlerului, modul de terminare al operaiei I/E, erorile aprute n timpul efecturii operaiei I/E. Porturi Un port este o adres logic utilizat la comunicarea ntre sistemul de operare i dispozitivele periferice. Registrele de control al unui dispozitiv I/E sunt atribuite unui port I/E. Fiecare port are o zon de memorie asociat. Toate porturile sunt grupate ntr-o zon de memorie separat, ca n Figura 4.

Figura 4. Porturile i memoria.

Unitatea central are instruciuni pentru citirea sau scrierea porturilor (din sau n registrele de control ale perifericelor asociate porturilor) de forma: IN REG, PORT registru port OUT PORT, REG port registru Efectuarea unei operaii I/E Exist dou metode de efectuarea a unei operaii I/E. In prima metod transferul datelor se efectuaz prin intermediul unitii centrale: n cazul unei operaii de citire, datele citite n registrul de date al perifericului sunt transferate de unitatea central n memorie, cte un octet, n cazul unei operaii de scriere unitatea central transfer datele din memorie n registrul de date al perifericului, cte un octet, dup care acestea sunt scrise pe dispozitivul I/E. Secvena de operaii n cazul acestei metode este urmtoarea: 1. aplicaia ce dorete o operaie I/E apeleaz o funcie a sistemului de operare, 2. sistemul de operare pune aplicaia n ateptare i apeleaz driverul corespunztor, 3. driverul scrie n registrul controlerului informaiile necesare. Dup ce execuia driverului s-a terminat, controlerul ncepe operaia I/E, 4. la terminarea operaiei I/E controlerul trimite un semnal de ntrerupere controlerului de intreruperi, 5. controlerul de ntreruperi trimite unitii centrale un semnal de ntrerupere i numrul perifericului ce a terminat operaia I/E, 6. sistemul de operare repune n execuie aplicaia ce a fost pus n ateptare. In Figura 5 se arat transferul controlului ntre programul ce a cerut efectuarea unei operaii I/E i sistemul de operare. 32

Figura 5. Execuia unui program ce efectueaz o operaie I/E.

Secvena acestor operaii este prezentat n Figura 6.

Figura 6. Secvena operaiilor la efectuarea unei operaii I/E.

Transferul DMA Transferul DMA este a doua metod de efectuare a operaiilor I/E. Exist un controler DMA care transfer datele ntre registrele de date ale dispozitivelor I/E fr intervenia unitii centrale. Controlerul DMA are un registru cu adresa de memorie unde se citesc octei / de unde se scriu octei, un registru cu numrul de octei de citit / scris i un registru de control. Operaia I/E se execut astfel: 1. unitatea central programeaz controlerul DMA scriind datele necesare n registrele lui (adresa de memorie, numrul de octei de treansferat, etc.), 2. unitatea central programeaz controlerul dispozitivului periferic pentru operaia necesar (de exemplu la controlerul de disc se inscrie sectorul de unde se citesc sau unde se scriu octei, numrul de octei de citit sau scris, etc.) ; controlerul ncepe operaia I/E, 3. la terminarea operaiei de citire n registrul de date, controlerul de disc trimite un semnal de ntrerupere ctre controlerul DMA, 4. controlerul DMA iniiaz transferul datelor din registrul de date al controlerului de disc n memorie : controlerul DMA trimite pe magistrala de adrese adresa primului octet de scris i trimite un semnal controlerului de disc s pun pe magistrala de date primul octet care este apoi scris n memorie,

33

controlerul DMA incrementeaz adresa de memorie i trimite un semnal controlerului de disc s pun pe magistrala de date urmtorul octet care este apoi scris n memorie. Se repet acest pas pn cnd toi octeii sunt scrii n memorie. Controlerul DMA poate reine magistrala de date la fel ca i unitatea central. Cnd controlerul DMA sau unitatea central ncearc s rein magistrala, un arbitru de magistral repartizeaz magistrala. Secvena operaiilor la transferul DMA este artat n Figura 7.

Figura 7. Secvena operaiilor la transferal DMA.

Sistemul de ntreruperi Cnd un dispozitiv I/E a terminat operaia de scriere sau citire, el trimite un semnal de ntrerupere ctre controlerul de ntreruperi. Intreruperea este trimis pe linia atribuit controlerului dispozitivului I/E. Intreruperile au atribuite nite nivel (prioriti). Nivelul 0 este cel mai prioritar. Secvena de operaii la apariia unei ntreruperi este urmtoarea : 1. controlerul de ntreruperi preia ntreruperea i dac nu sunt active ntreruperi mai prioritare o prelucreaz imediat. In caz contrar ntreruperea este pus n ateptare pn cnd unitatea central se elibereaz de ntreruperile n curs, 2. controlerul de ntreruperi trimite un semnal de ntrerupere ctre unitatea central i numrul dispozitivului I/E ce a trimis ntreruperea, 3. unitatea central trimite un semnal controlerului c a preluat ntreruperea i poate s preia urmtoarea ntrerupere, 4. unitatea central execut programul corespunztor ntreruperii (se salveaz registrele unitii centrale ale programului n curs de execuie, se refac registrele unitii centrale ale programului ce va fi lansat execuie). Secvena de ntreruperi este artat n Figura 8.

Figura 8. Secvena operaiilor la apariia unei ntreruperi.

34

Resursele calculatorului Resursele calculatorului sunt : adresele de memorie, ntreruperile (IRQ), controlerele DMA, adresele porturilor I/E (registrele de control, de stare i de date).

3.3 Conceptele sistemelor de operare


Sistemele de operare au cteva concepte de baz : Procese, Memoria, Sistemul de intrare/ieire.

3.3.1 Procese
Un proces este un program n execuie. Fiecare proces are asociat un spaiu de adrese care este o list de locaii de memorie n care procesul poate citi sau scrie. Spaiul de adrese conine programul i date programului. Fiecare proces are nite registre asociate, inclusiv numrtorul programului, cuvntul de stare al programului i orice informaii necesare pentru a rula procesul, de exemplu starea fiierelor prelucrate de un anumit proces. In general n calculator exist la un moment dat mai multe procese. Sistemul de operare are un planificator de procese care poate decide la un moment dat s opreasc temporar un proces i s porneasc altul, deoarece un proces a consumat partea sa de timp de unitate central. Cnd un proces este suspendat temporar el trebuie repornit mai trziu din aceeai stare din care a fost oprit. Deci toat informaia despre proces trebuie salvat pe timpul suspendrii. De exemplu, procesul are mai multe fiiere deschise. Fiecare fiier are un indicator care d poziia curent a fiierului (numrul urmtorului octet de scris sau de citit). Toi aceti indicatori de fiiere trebuie salvai pentru ca urmtoarea operaie de citire sau scriere s fie corect. Toate informaiile despre un proces sunt salvate ntr-un descriptor al procesului. Sistemul de operare conine o tabel a numit tabela proceselor (process table) care este o list cu toate procesele existente. Sistemul de operare gestionez crearea i terminarea proceselor. Exemplu. Comenzile de la tastatur sunt citite de un proces numit interpretor de comenzi (shell). Cnd un utilizator a tastat o comand cernd ca un program s fie compilat, interpretorul de comenzi creaz un proces care ruleaz compilatorul respectiv. Un proces este o abstractizare a unui program care ruleaz. Orice program executat de un calculator este un proces. Strile unui proces sunt urmtoarele:

35

Figura 9 Strile unui process.

Tranziia 1 apare cnd procesul efectueaz o operaie intrare/ieire. Aceasta se face n felul urmtor. Atunci cnd un program cere o operaie de citire/scriere a unui numr de octei, driverul trimite comanda dispozitivului de intrare/ieire. Sistemul de operare blocheaz programul ce a cerut operaia de intrare/ieire. La terminarea operaiei intrare/ieire dispozitivul genereaz o ntrerupere. Unitatea central preia ntreruperea i d controlul programului ce a cerut operaia intrare/ieire. Tranziiile 2 i 3 sunt cauzate de planificatorul sistemului. Tranziia 2 apare cnd planificatorul decide c procesul a rulat destul timp i trebuie s lase alt proces s ruleze. Tranziia 3 apare cnd alte procese au rulat destul timp n unitatea central i repune un proces pregtit n execuie. Tranziia 4 apare cnd procesul ateapt un eveniment extern i acesta apare (de exemplu, un program care a cerut o operaie intrare/ieire ateapt un semnal de ntrerupere care semnific terminarea operaiei).

3.3.2 Memoria
In general mai multe programe ruleaz simultan n memorie. De exemplu, dac un program ateapt citirea unor date de pe disc, alt program este executat. Program Program Program Sistem de operare Un program poate fi incrcat n memorie pentru execuie la orice adres. Acest lucru se realizeaz n felul urmtor. Programul este compilat, adic instruciunile scrise ntrun limbaj de nivel nalt sunt traduse n instruciuni din setul de instruciuni al calculatorului, dup cum s-a artat n capitolul anterior. De exemplu, instruciunea: a=b+c este tradus ca: LDA b ADD c STA a In cazul funciilor limbajului (de exemplu sin, cos, etc.) compilatorul genereaz doar o secven de apel a funciei. Programul ce realizeaz funcia este compilat i se afl ntr-o bibliotec de subprograme. El este ataat programului de un program numit editor de legturi (link editor). Compilatorul nu cunoate adresa la care va fi ncrcat programul n memorie pentru execuie. In consecin, se presupune c programul este 36

ncrcat n memorie la adresa zero. Pentru a rezolva problema calculatorul are un registru de baz care este niializat cu adresa la care este ncrcat programul n memorie la execuie. La execuie, la toate adresele instruciunilor se adaug automat coninutul registrului de baz. Pentru exemplul anterior s presupunem c adresele variabilelor a, b, c sunt 0, 4 i respectiv 8. Presupunnd c programul nostru este ncrcat n memorie pentru execuie la adresa (10000)16 , adresele operanzilor 0, 4 i 8 nu sunt corecte. Registrul de baz este iniializat cu valoarea (10000)16 i adresele operanzilor devin cele corecte, (10000)16 , (10004)16 , (10008)16 pentru a, b, respective c. In consecin, programul poate fi ncrcat oriunde n memorie.

3.3.3 Fiiere
Calculatoarele au dispozitive periferice pentru intrri i ieiri de date. Sistemul de operare are un subsistem de intrare/ieire care gestioneaz aceste dispozitive. Anumite funcii ale subsistemului de intrare/ieire se aplic tuturor dispozitivelor, altele sunt specifice unor anumite dispozitive. O funcie a sistemului de operare este aceea de a prezenta programatorului un model de fiier independent de particularitile dispozitivelor de intrare/ieire. Orice fiier are o etichet ce conine printre altele numele fiierului, adresa de nceput a fiierului i lungimea fiierului. Pentru ca un fiier s poat fi citit sau scris el trebuie deschis. La deschiderea n citire sistemul de operare verific dac acest fiier exist. La deschiderea unui fiier n scriere (creare), sistemul de operare creaz o etichet cu numele fiierului i adresa de nceput a fiierului. Dup deschidere sistemul de operare furnizeaz programului utilizator un obiect numit descriptor, utilizat de comenzile de citire sau scriere de date. Dup citire sau scriere fiierul trebuie nchis. La nchiderea unui fiier nou creat pe disc, n eticheta fiierului se nscrie lungimea fiierului. Sistemul de operare are conceptul de director pentru gruparea fiierelor. Exist funcii sistem pentru a crea sau terge un director i funcii sistem pentru a crea sau a terge un fiier ntr-un director. Componentele unui director pot fi fiiere sau alte directoare. Acest model este ierarhic i este organizat ca un arbore.

Figura 10. Organizarea directoarelor.

Un fiier n ierarhie este specificat prin calea absolut de la directorul rdcin. Ea const din lista directoarelor traversate de la directorul rdcin la directorul ce conine fiierul cu componentele separate de \. Calea absolut ncepe cu \. Exemplu. 37

\Root\dirb este o cale absolut pentru c ncepe cu \ (ncepe cu directorul rdcin). In orice moment orice proces are un director curent de lucru. Calea de la directorul curent la un subdirector al su se numete calea relativ. Calea relativ nu ncepe cu \. Exemplu. Pentru directorul dirc din Figura 10 avem: calea absolut este \Root\dirb\dirc calea relativ la directorul dirb este dirc (fr \)

3.3.4 Funcii sistem


Interfaa dintre sistemul de operare i programele utilizator este definit de un set de funcii pe care le asigur sistemul de operare. Apelul unei funcii sistem se face n felul urmtor. Dac un program necesit o funcie al sistemului de operare (de exemplu s citeasc date dintr-un fiier), el apeleaz o funcie sistem care transfer controlul sistemului de operare. Sistemul de operare execut funcia i ntoarce controlul programului utilizator la instruciunea ce urmeaz apelului funciei sistem. Exemplu. O funcie sistem este read care citete un numr de octei dintr-un fiier. Ea este apelat astfel: count = read(fd, buffer, octets) unde: fd descriptorul de fiier furnizat de sistemul de operare la deschiderea fiierului buffer adresa unei zone de memorie n care se pun octeii citii octets numrul de octei de citit Funcia returneaz numrul de octei efectiv citii. De exemplu, la detectarea sfritului de fiier putem avea: count < noctets De regul, la apariia unei erori funcia ntoarce valoarea count = -1. Sistemele de operare au urmtoarele funcii sistem: Funcii pentru gestiunea fiierelor Funcie Deschiderea unui fiier Inchiderea unui fiier Citirea unui fiier Scrierea unui fiier Poziionarea unui fiier Test sfritul unui fiier Forma general fd = open(filename, mod) s = close(fd) n = read(fd, buffer, octets) n= write(fd, buffer, octets) position = seek(fd, offset) b=eof(fd)

In funciile de mai sus fd - descriptorul fiierului, mod - modul de deschidere (scriere, citire), buffer - adresa unei zone de memorie, octets - numrul de octei de citit sau de scris, offset - poziia relativ la nceputul fiierului a urmtoarei operaii de citire sau scriere. Funcia eof(fd) are valoarea adevrat dac s-a ajuns la sfritul fiierului. Funcii pentru gestiunea directoarelor

38

Funcie Crearea unui director Stergerea unui director Schimbarea unui director

Forma general s = mkdir(dirname) s = rmdir(dirname) s = chdir(dirname)

In funciile de mai sus dirname este numele directorului.

3.4 Sistemul de operare Windows


Windows este un sistem de operare dirijat de evenimente (event driven). Un program Windows const din funcii ce trateaz evenimentele ce apar. La execuia unui program sistemul de operare creaz o coad de evenimente n care se pun evenimentele n ordinea lor de apariie. Sistemul de operare apeleaz funciile ce trateaz diversele evenimente n ordinea n care apar n coad. In orice program Windows exist o fereastr principal, ca n Figura 11, ce conine o bar de titlu, o bar de meniu, bare de derulare i o bara de stare. Fereastra principal poate conine butoane, casete de dialog, ferestre de editare, etc. Evenimentele ce apar sunt generate de regul de tastatur i mouse. Ferestrele primesc intrri de la utilizator de la mouse sau de la tastatur i afiaz ieiri grafice. In general orice fereastr are urmtoarele dou meniuri: Meniul File cu opiunile New, Open, Save i SaveAs. Opiunea New creaz o fereastr de editare vid. Opiunea Open creaz o fereastr de editare i ncarc un fiier existent pe disc. Opiunea Save nlocuiete un fiier deja existent pe disc cu un fiier ce conine textul din fereastra de editare, n timp ce opiunea SaveAs creaz din textul ferestrei de editare un nou fiier. Meniul Edit cu opiunile Cut, Copy i Paste. Opiunile meniului Edit utilizeaz o zon de memorie numit clipboard. Opiunea Cut mut textul selectat din fereastra de editare n clipboard. Opiunea Copy copiaz textul selectat din fereastra de editare n clipboard. Opiunea Paste copiaz textul din clipboard n fereastra de editare. Menionm c clipboardul poate fi utilizat pentru schimbul de date ntre aplicaii. Un text copiat n clipboard ntr-o aplicaie, poate fi copiat din clipboard ntr-o alt aplicaie.

39

Figura 11. Fereastra unei aplicaii Windows.

Vom exemplifica modul de funcionare a unei aplicaii sub Windows la ncrcarea unui fiier. Evenimentele i operaiile efectuate de aplicaie sunt urmtoarele: 1. utilizatorul execut un clic pe meniul File, 2. se trimite ferestrei mesajul meniu selectat, 3. funcia corespunztoare afiaz opiunile meniului File, 4. utilizatorul execut un clic pe opiunea Open, 5. se trimite ferestrei mesajul opiune selectat din meniu, 6. funcia corespunztoare afiaz caseta de dialog Open, 7. utilizatorul introduce numele fiierului i apas butonul OK, 8. se trimite casetei de dialog mesajul buton OK selectat, 9. funcia corespunztoare ncrc fiierul i nchide caseta de dialog.

3.4.1 Sistemul de fiiere Windows i MS-DOS


In sistemul de fiiere Windows i MS-DOS unitile de disc fizice sunt asociate cu uniti de disc logice. Unitile logice sunt referite printr-o liter urmate de caracterul :. De exemplu, unitatea de disc flexibil este referit ca a:, unitile logice asociate discului dur sunt referite ca c:, d:, etc. Directoarele sunt memorate la fel ca i fiierele. Eticheta unui fiier sau director are urmtoarea form: Nume fiier Extensie Atribute Timp Data Numrul primului bloc din fiier Dimensiune

40

In sistemul de operare MS-DOS numele unui fiier const din cel mult 8 caractere iar extensia din maxim 3 caractere. In sistemul de operare Windows se pot utiliza nume de fiiere mai lungi de 8+3 caractere. Pentru aceasta orice fiier sau director are dou nume: unul de 8+3 caractere pentru compatibilitate MS-DOS i unul lung. Dac numele fiierului este lung, Windows creaz un nume tip MS-DOS prin eliminarea spaiilor i a altor caractere nepermise n DOS i genereaz un nume format din primele 6 caractere urmat de ~1 sau ~2 etc. Comenzile MS-DOS pentru gestionarea directoarelor sunt cele din Tabelul 11. Comanda Crearea unui director Stergerea unui director Modificarea directorului curent Copierea unui fiier Redenumirea unui fiier Stergerea unui fiier Compararea a dou fiiere Mutarea unui fiier Listarea unui fiier Forma general mkdir nume md nume rmdir nume rd nume chdir nume cd nume copy dest sursa rename nume ren nume del nume fc nume1 nume2 move sursa dest type name

Tabelul 11. Comenzi pentru gestiunea directoarelor.

Comenzile MS-DOS pentru afiarea timpului i datei sunt cele din Tabelul 12. Comanda Afiare timp Afiare data Forma general Time Date

Tabelul 12. Comenzi pentru afiarea timpului i datei.

Menionm c fiierele ce conin programe executabile au extensia exe. Exemple S se creeze directoarele din structura de mai jos dir1 ---- dira ---- dirb ---- dirc ---- dirx ---- diry Comenzile corespunztoare sunt urmtoarele se creaz directorul dir1 i se face dir1 director curent md dir1 cd dir1 41

se creaz directoarele dira, dirb, dirc mkdir dira md dirb md dirc se face dirc director curent chdir dirc se creaz directoarele dirx i diry md dirx mkdir diry

3.4.2 Fiiere de comenzi


Orice sistem de operare are un program ce interpreteaz i execut comenzi numit shell. El este interfaa dintre sistemul de operare i utilizator. Interpretorul are terminalul ca intrare i ieire standard, dar este posibil i execuia unor comenzi citite dintr-un fiier de comenzi. Fiierele cu comenzi au extensia bat. Comenzile ncep totdeaun pe o linie nou. Formatul unei comenzi este: mnemonic parametri

3.4.2.1 Comenzile sistemului de operare


Vom prezenta n continuare comenzile cele mai utilizate ale sistemului de operare. Comanda echo afiseaz un text pe ecran. Forma comenzii este: echo text Comanda echo poate fi utilizat pentru a comanda afiarea sau suprimarea afirii comenzilor pe ecran. Comanda echo off suprim afiarea comenzilor urmtoare pe ecran. Comanda echo on reia afiarea comenzilor urmtoare pe ecran. Comanda @echo off suprim afiarea comenzilor urmtoare pe ecran ct i a comenzii nsi. Comanda for Permite execuia repetat a unei comenzi. Forma comenzii ntr-un fiier de comenzi este: for %%var in (mulime de valori) do comand iar ntr-o linie de comand for %var in (mulime de valori) do comand Mulimea de valori conine valori separate de spaii sau virgule. Comanda se execut cu variabila var luand pe rand toate valorile mulimii. Exemplu. S listm directoarele rdcin de pe unitile de disc a: i c: for %x in (a:, c:) do dir %x Pentru a transfera controlul execuiei unui fiier de comenzi n diverse puncte utilizm etichete. O etichet are unu la opt caractere, litere sau cifre, primul character fiind o liter. O etichet este scris singur pe o linie dup caracterul: Exemplu. :label1

42

este comanda ce declar eticheta label1. Comanda goto Are forma: goto eticheta Interpretorul de comenzi trece la execuia comenzii din linia ce urmeaz dup eticheta. Comanda if Permite execuia unei comenzi dac o anumit condiie este adevrat. Forma comenzii este: if [not] condiie comanda if [not] condiie (comanda) else (comanda) In forma a doua a instruciunii argumentele comanda se scriu obligatoriu n paranteze. Condiiile ce se pot testa sunt: Existena unui fiier. In acest caz comanda are forma: if [not] exist filename comanda if [not] exixt filename (comanda) else (comanda) Exemplu. S testm dac n directorul curent exist fiierul file.txt Pentru a afia un mesaj putem utiliza una din cele dou forme ale comenzii: if exist file.txt (echo file.txt exists) else (echo file.txt missing) if not exist file.txt (echo file.txt missing) else (echo file.txt exists) Egalitatea a dou iruri. Testarea egalitii a dou iruri se face cu urmtorii operatori: EQU NEQ LSS sir1 LEQ sir 2 GTR GEQ == Forma comenzii este n acest caz: if [not] ir1 operator ir2 comanda if [not] ir1 operator ir2 (comanda) else (comanda) Exemplu. Dac un ir dintr-o mulime de iruri are o anumit valoare, vom afia aceast valoare: for %b in (a, b, c) do if %b == a echo %b

3.4.2.2 Apelarea unui fiier de comenzi cu parametri


Un fiier de comenzi poate fi apelat cu unu pn la nou parametri, specificai dup numele su. Parametrii sunt iruri de caractere. Ei pot fi referii n instruciuni ca %1, %2, , %9. Pentru a putea utiliza simplu aceti parametri exist comanda shift care deplaseaz valorile parametrilor. Astfel dup o comand shift avem: %1 primete valoarea %2 ----%8 primete valoarea %9 Pentru a apela un fiier de comenzi cu parametri, linia de comand are forma:

43

nume.bat parametru1 parametru2 Exemplu. S afim valorile tuturor parametrilor cu care apelm un fiier de comenzi. Pentru aceasta vom afia repetat parametrul %1 i vom deplasa parametrii cu comanda shift. :loop if %1 == goto stop echo %1 shift goto loop :stop echo stop Comanda rem Forma comenzii este: rem ir de caractere Comanda rem conine comentarii. Comanda call Comanda call apeleaz un fiier de comenzi. Forma ei este: call nume fiier Exemplu. Avem dou fiiere de comenzi aaa.bat i bbb.bat n acelai director i vrem s apelm fiierul aaa.bat n interiorul fiierului bbb.bat. Fiierul bbb.bat va fi urmtorul: echo apeleaza aaa.bat call aaa.bat echo s-a executat aaa.bat

3.4.2.3 Variabile sistem


Sistemul de operare are nite variabile predefinite numite variabile sistem, utilizate n scopuri speciale. Tabela urmtoare conine cteva dintre aceste variabile i semnificaia lor. Variabila PATH OS Homepath Username Systemdrive Systemroot Semnificaie Indic sistemului de operare unde s caute programele pe care s le execute dac ele nu se afl n directorul curent Conine numele sistemului de operare Conine calea directorului curent Conine numele calculatorului Conine unitatea de disc pe care se afl sistemul de operare Conine directorul n care se afl sistemul de operare
Tabelul 13. Variabile sistem.

In variabila PATH putem specifica mai multe directoare separate de caracterul ;. Variabila PATH este important, astfel nct exist instruciunea PATH pentru a da valori acestei variabile. De exemplu, comanda PATH; trege valoarea variabilei PATH, iar comanda PATH=valoare atribuie valoare variabilei PATH. Comanda set 44

In fiierele de comenzi putem defini noi variabile i putem atribui valori acestora ct i variabilelor sistem cu comanda set. Forma acestei comenzi este: set nume=valoare Pentru a utiliza valoarea unei variabile numevar vom scrie %numevar%. Exemplu. S presupunem urmtoarea structur de directoare C: ----- Documents and Settings ----- Administrator ----- Users In directorul Administrator avem fiierul de comenzi aaa.bat, iar n directorul Users avem fiierul de comenzi bbb.bat. n fiierul de comenzi bbb.bat avem comanda call aaa.bat Pentru execuia acestei comenzi eate nevoie ca variabila PATH s conin calea C:\Docume~1\Administrator Pentru aceasta n fiierul bbb.bat vom aduga la variabila PATH aceast cale. Fiierul de comenzi bbb.bat va fi urmtorul: rem salvam valoarea variabilei PATH set PATH1=%PATH% echo %PATH1% rem adaugam calea c:\ Docume~1\Administrator la variabila PATH set PATH=%PATH%;c:\ Docume~1\Administrator echo %PATH% call aaa.bat rem refacem vechea valoare a variabilei PATH set PATH=%PATH1% echo %PATH% De remarcat n acest fiier faptul c pentru a utiliza valoarea unei variabile numevar am scris %numevar%. Dac de exemplu am scrie n fiierul de mai sus echo PATH s-ar afia irul PATH i nu valoarea variabilei PATH.

3.4.2.4 Definirea unui disc logic


Este posibil s definim discuri logice. Orice liter, ce nu este utilizat pentru un disc fizic sau logic, poate fi utilizat pentru a defini un nou disc logic. Orice director sau disc fizic poate fi definit ca un disc logic. Definirea de discuri logice este util : pentru a prescurta scrierea unei ci ctre un fiier sau director, pentru a redefini o cale ctre un director sau fiier, n anumite aplicaii, copiate de pe alte calculatoare, ce au ci predefinite ctre directoare sau fiiere, ce nu corespund cu cele de pe calculatorul curent, pentru a defini o cale ce va fi schimbat ulterior. Comanda pentru a defini un disc logic care s corespund unui director sau disc fizic este subst sau substitute. Fie directorul c:\files\docs pe care vrem s-l referim ca w:. Vom scrie urmtoarea comand subst w: c:\files\docs Dup aceast comand, fiierul

45

c:\files\docs\fis.doc poate fi nlocuit cu w:\fis.doc Dac directorul c:\files\docs a fost mutat la o nou locaie, de exemplu, d:\newlocfiles\docs, vom scrie urmtoarea comand subst w: d:\newlocfiles\docs i calea spre fiier rmne nemodoficat. Definiia unui disc logic este valabil pn la tergerea ei, cu comanda subst w: /D Pentru a vedea discurile virtuale definite, utilizm comanda subst Menionm c, dac tergem un fiier utiliznd un disc logic definit cu comanda subst, fiierul este ters fizic, fr a fi mutat n directorul Recycle.bin Exemplu. Fie un director L pe discul c: c: ---- L Vrem ca directorul L s fie definit ca discul logic L:. Pentru aceasta utilizm comanda subst L: c:\L Comanda subst, fr argumente, afiaz definiia introdus.

3.4.2.5 Lansarea programelor din linia de comand


Programele pot fi lansate din linia de comand cu forma numeaplicaie parametri Implicit, sistemul de operare caut programele n directorul c:\WINDOWS\System32. Pentru a lansa aplicaii memorate n alte directoare, trebuie scris calea absolut spre directorul n care este memorat aplicaia. De exemplu, pentru a lansa aplicaia Notepad vom scrie Notepad Pentru a lansa aplicaia Notepad care s deschid un fiier existent vom scrie Notepad numefiier unde numefiier va incude i calea spre directorul fiierului.

46

4 Comunicaia ntre calculatoare


4.1 Conectarea calculatoarelor n reea
Pentru comunicare, calculatoarele sunt conectate n reele. Reele sunt conectate ntre ele formnd o reea mondial numit Internet. Aplicaiile comunic ntre ele schimbnd pachete de date. Deoarece calculatoarele conectate ntr-o reea pot fi de tipuri diferite sau pot avea sisteme de operare diferite, ele folosesc pentru comunicare acelai protocol. Protocoalele de comunicaii sunt definite pe nivele. Fiecare nivel este responsabil de o anumit parte a comunicaiei. Exist patru asemenea nivele. Aplicaie Transport (TCP) Retea (IP) Driver i interfa
Tabelul 14. Nivelele protocoalelor de comunicaie.

Aplicaia creaz datele pe care le trimite sau prelucreaz datele pe care le primete de la nivelul de transport, Nivelul de transport asigur fluxul de date ntre aplicaii. Protocolul care definete acest nivel se numete TCP, (Transmission Control Protocol). El creaz pachetele de date pe care le trimite nivelului imediat inferior i trimite ctre aplicaii pachetele primite de la nivelul inferior. Dac pe calculator exist mai multe aplicaii care schimb date, el asigur ca pachetele primite de la nivelul inferior ajung la aplicaia corespunztoare, Nivelul de reea gestioneaz deplasarea pachetelor n reea. Protocolul care definete acest nivel se numete IP, (Internet Protocol), Nivelul de interfa conine cardul de interfa cu reeaua i driverul acestui card din sistemul de operare. Acest nivel gestioneaz interfaa fizic a calculatorului cu cablul sau mediul de transmisie. Exist mai multe standarde de reele: Ethernet, token-ring, etc. Pentru a conecta un calculator la o reea se utilizeaz un card specific tipului de reea i un driver. Driverul convertete pachetele de date primite de la nivelul superior n formatul reelei i invers. Considerm dou aplicaii care schimb date pe Internet. De regul una este client i alta este server. Serverul asigur servicii pentru clieni. Serverul are metode pe care clienii le pot accesa i fiiere i pagini de Web pe care clienii le pot descrca. Vom presupune calculatoarele n aceeai reea. . Schimbul de date ntre calculatooare este reprezentat ca mai jos.

47

Figura 12 Schimbul de date ntre calculatoare conectate n reea

Adrese de internet Fiecare calculator reea trebuie s aibe o adres de internet unic. Protocolul ce definete aceast adres (numit adres IP) este IP (Internet Protocol). In standardul IPv4 o adres de internet este un numr de 32 bii. Ea se scrie ca patru numere zecimale, unul pentru fiecare octet, separate de punct. Adresa de mai jos Se scrie a.b.c.d. Adresa de Internet nu identific unic o aplicaie ce ruleaz pe calculator deoarece pot rula simultan aplicaii ce schimb date pe Internet. Pentru a identifica unic o aplicaie, aceasta are atribuit un port. Portul este un numr de 16 bii atribuit aplicaiei de ctre sistemul de operare. O aplicaie este identificat unic prin adresa IP : port Atunci cnd o aplicaie trebuie s schimbe date cu alt aplicaie din reea, ea creaz o structur de date numit socket. Socketul conine adresa IP a calculatorului i un port acordat de ctre sistemul de operare. Un socket este similar unui fiier. Putem scrie packete de date ntr-un socket, care vor fi transmise unei alte aplicaii, i putem citi dintr-un socket pachetele de date transmise de o alt aplicaie. Cnd o aplicaie trimite date, acestea sunt trimise prin fiecare nivel pn cnd sunt trimise ca un ir de bii n reea. Fiecare nivel adaug informaii datelor prin adugarea unui antet (header) la datele pe care le primete, ca mai jos. Nivel Aplicaie Transport Reea Interfa + driver
Tabelul 15. Formatul pachetelor de date n cazul diverselor protocoale.

Formatul pachetului de date

Informaiile importante coninute n headere sunt urmtoarele: Headerul nivelului de transport TCP Port surs Headerul nivelului de reea IP Port destinaie

48

Adresa IP surs Headerul Ethernet

Adresa IP destinaie

Adresa Ethernet surs Adresa Ethernet destinaie Adresa IP surs este adresa calculatorului, iar portul surs este portul atribuit aplicaiei de sistemul de operare lacrearea unui socket. Pachetele ce circul n reea sunt citite de toate cardurile de reea. Fiecare card compar adresa Ethernet destinaie a pachetului cu propria adres de Ethernet i cnd ele coincid pachetul este adresat calculatorului respectiv. Adresele de internet de 32 bii nu sunt suficiente pentru a aloca o adres fiecrui calculator. Pentru a rezolva problema se aloc fiecrei reele (sau fiecrei instituii) un numr mic de adrese de internet sau o singur adres de internet. In interiorul reelei fiecare calculator are o adres de internet unic n cadrul reelei, folosit pentru traficul intern. Exist trei intervale de adrese ce se utilizeaz intern, numite adrese private 10.0.0.0 172.16.0.0 192.168.0.0 De exemplu, adresele calculatoarelor dintr-o reea pot fi 192.168.0.1 pentru server i 192.168.0.2, 192.168.0.3, etc pentru celelalte calculatoare din reea. Adresele IP interne atribuite calculatoarelor dintr-o reea pot fi fixe ntr-o reea mic, sau atribuite dinamic de ctre un server DHCP la conectarea n reea. In reea fiecare calculator, inclusiv serverul are o adres de nternet din unul din intervalele de mai sus. In plus, doar serverul este conectat la Internet i are are o adres de Internet. In cazul calculatoarelor conectate n reea adresa de Internet a unui calculator este format din adresa reelei i adresa calculatorului respectiv n cadrul reelei. Cnd o aplicaie din reea trimite un pachet de date pe Internet, (n afara reelei), pachetul este trimis la server. Acest lucru se face punnd n antetul Ethernet ca adres de destinaie adresa Ethernet a serverului. Cnd serverul primete un pachet ce trebuie s prseasc reeaua, el nlocuiete adresa surs cu adresa reelei i portul surs cu un port alocat aplicaiei, vezi Figura 13. Portul surs iniial i adresa de Internet surs iniial sunt memorate ntr-o tabel, vezi Tabelul 16. Portul acordat de server aplicaiei este indicele din aceast tabel.

Figura 13. Modificarea adresei IP surs i a portului surs la pachetele ce prsesc reeaua.

In pachetul de date de mai sus adresa IP surs a aplicaiei a fost nlocuit cu adresa IP a reelei, iar portul surs cu portul acordat aplicaiei de server. Serverul completeaz tabelul de mai jos cu adresa IP surs i portul surs nlocuite.

49

Adresa surs Port surs

IP Adresa surs Port surs

IP

Tabelul 16 Tabelul cu adrese IP surs i porturi surs ale pachetelor ce au prsit reeaua

La primirea unui pachet din exterior, portul destinaie este indicele din tabel de unde se ia adresa de Internet i portul iniial care devin adresa de Internet destinaie i portul destinaie al aplicaiei din reea ce primete pachetul. Menionm c portul surs i cel destinaie din antetul TCP i adresa IP surs i adresa IP destinaie din antetul IP nu se schimb pe durata existenei pachetului. Pentru a nelege diferena ntre nivelele transport i reea, considerm conexiunea a dou reele diferite. Conectarea reelelor se face printr-un dispozitiv numit router care are mai multe interfee i poate transmite pachete de la o interfa la alta. La un router se pot conecta reele i alte routere.

Figura 14. Reele conectate printr-un router.

Cnd routerul primete un pachet el examineaz adresa IP destinaie a pachetului i decide pe ce interfa a sa s trimit pachetul, unui alt router sau unei reele conectate la router. Routerul modific antetul pachetului corespunztor nivelului fizic dup cum se arat mai jos. Transmisia pachetelor ntre diverse interfee ale unui router se face prin nivelul de reea (protocol IP). Exemplu. Aplicaia ce ruleaz pe calculatorul conectat n reeaua Ethernet trimite un pachet ctre aplicaia ce ruleaz pe un calculator conectat n alt reea Ethernet. Driverul Ethernet al calculatorului 1 trimite pachetul urmtor: Header Ethernet Header IP Header TCP Date

El este recepionat de driverul 2 al routerului care l trimite nivelului superior IP din router n formatul: Header IP Header TCP Date

Nivelul IP din router trimite pachetul driverului Ethernet 2 din router care l trimite driverului Ethernet 1 din cealalt reea sub forma:

50

Header Ethernet

Header IP

Header TCP

Date

La recepia unui pachet de ctre cardul de reea al unui calculator operaiile sunt urmtoarele. Pachetul este trimis nivelului IP superior sub forma: Header IP Header TCP Date

Nivelul IP trimite pachetul nivelului superior TCP Header TCP Date

Nivelul TCP trimite pachetul aplicaiei creia i este destinat. Cnd un pachet este primit de un calculator el este trimis n sus prin stiva de protocoale. Fiecare protocol elimin headerul corespunztor i trimite pachetul rmas nivelului superior. Nivelul TCP trimite pachetul socketului unei aplicaii dup portul destinaie al pachetului.

Figura 15. Demultiplexare dup port (vezi headerul TCP).

Standardul Ethernet Este cel mai utilizat standard de reele de calculatoare. Acest standard utilizeaz adrese de 48 de bii numite adrese hardware. Un pachet Ethernet numit frame are forma urmtoare: Adresa Ethernet destinatie Adresa Ethernet sursa Lungime Date

Fiecare dispozitiv fizic ce se conecteaz n reea are a adres Ethernet (hardware) unic. La primirea unui pachet de la nivelul superior (IP), driverul Ethernet adaug pachetului headerul corespunztor cu adresa sa Ethernet (surs) i adresa Ethernet destinaie. Pachetul este trimis n reea i va fi recepionat de cardul cu adresa Ethernet din cmpul destinaie.

4.2 Protocolul Internet (IP)


Headerul IP are forma urmtoare:

51

Adresa IP sursa Adresa IP destinatie

TTL

Lungime

Date

Cmpul TTL al headerului IP este pus la crearea pachetului la valoarea 255. In fiecare router el este sczut cu o unitate. Dac se ajunge la valoarea zero ntr-un router, pachetul este aruncat. Acest lucru se face pentru ca nici un pachet s nu circule ntr-o bucl infinit. Protocolul IP se ocup de rutarea pachetelor. Pentru aceasta nivelul IP utilizeaz o tabel de rutare existent n calculator. Dac destinaia pachetului este cunoscut, de exemplu un calculator din reea, pachetul este trimis direct la destinaie. In caz contrar el este trimis la routerul implicit care trimite pachetul la destinaie. Cnd se primete un pachet de la nivelul superior se caut adresa IP destinaie a pachetului n tabela de rutare. Dac adresa IP destinaie este cea a calculatorului gazd, pachetul este trimis direct unei aplicaii de pe calculatorul gazd. Dac adresa IP destinaie este aceea a unui calculator din reea, pachetul este trimis direct acelui calculator. Toate calculatoarele din reea au adresele IP n tabela de rutare. Dac adresa IP nu este gsit, pachetul este trimis la adresa IP implicit, care este adresa routerului la care este conectat reeaua. Pentru a vedea dac o adres IP este a unui calculator din reea se utilizeaz masca reelei. Fie de exemplu o reea cu adresele calculatoarelor 192.168.x.x. Masca reelei va fi 255.255.0.0. Pentru a afla dac o adres IP este din reea se face funcia i ntre adresa IP i masc, adresa ip masca. Dac rezultatul este 192.168.0.0 atunci adresa este din reea. Comanda MS-DOS pentru a configure sau a afia detaliile protocolului IP este: ipconfig Comanda afieaz urmtoarele informaii: IP address Subnet mask Default gateway unde: IP address este adresa IP a calculatorului, Subnet mask este masca utilizat pentru a obine adresa reelei, iar default gateway este adresa calculatorului care este conectat la Internet.

4.3 Sistemul de nume de domenii (DNS, Domain Name System)


Pentru a contacta un server, o aplicaie client trebuie s cunoasc adresa IP a acestuia. Din aceast cauz caz serverul nu ar putea s ruleze pe un calculator cu o alt adres IP. Pentru a evita acest lucru, au fost introduse nume simbolice pentru calculatoare, independente de adresele IP. Un server poate fi contactat prin nume, care este independent de adresa IP a calculatorului pe care ruleaz. Conversia de la numele serverului la adresa IP se face utiliznd sistemul de nume de domenii (Domain Name System, DNS).

52

Figura 16. Organizarea DNS.

DNS este o baz de date utilizat de aplicaiile TCP pentru a transforma numele simbolice ale calculatoarelor n adrese IP. DNS este organizat ierarhic. Fiecare nod are o etichet de pn la 63 de caractere. Numele oricrui nod n arbore este lista etichetelor ncepnd cu acel nod pn la nodul rdcin, separate de punct. Exist servere de nume pentru zone geografice. La apariia unui nou nume acesta npreun cu adresa IP corespunztoare sunt introduce n baza de date a serverului. O aplicaie care trebuie s afle adresa IP a unui server, cunocnd numele simbolic al acestuia, apeleaz o funcie a sistemului de operare numit resolver. Resolverul trimite un pachet UDP cu numele simbolic ctre serverul DNS local i primete de la acesta adresa IP corespunztoare.

4.4 Protocoalele nivelului de transport


Exist dou protocoale larg utilizate de transport UDP i TCP. Protocolul UDP (User Datagram Protocol) UDP este cel mai simplu protocol de transport. Fiecare operaie de scriere a unei aplicaii produce un pachet UDP (o datagram) i apoi un pachet IP trimis. Headerul UDP conine printre alte informaii portul surs i portul destinaie pe cte 16 bii. Port surs Port destinaie Lungime Date

Figura 17. Headerul UDP.

Protocolul UDP nu este sigur. Nu exist nici o garanie c pachetul trimis ajunge la destinaie. Protocolul TCP (Transport Control Protocol) Aplicaiile ce utilizeaz protocolul TCP trebuie s stabileasc o conexiune TCP ntre ele nainte ca s schimbe date. O conexiune TCP este o legtur ntre dou puncte. TCP este un protocol full-duplex. El poate transmite date simultan n ambele direcii. Transmisia asigurat de protocolul TCP este sigur. Aceasta se realizeaz n felul urmtor: 53

Datele sunt mprite n pachete pentru a fi transmise. Unitatea de informaie transmis de TCP ctre nivelul IP se numete segment. Atunci cnd protocolul TCP trimite un segment, el pornete un cronometru, ateptnd ca cellalt punct s confirme recepionarea segmentului. Dac nu se primete confirmarea ntr-un anumit interval de timp, segmental este retransmis. Atunci cnd protocolul TCP primete un segment, el trimite o confirmare. Segmentele sunt transmise ca datagrame. Ele pot sosi n orice ordine. Protocolul TCP rearanjeaz datele dac este necesar i le furnizeaz aplicaiei n ordinea corect. Datagramele pot fi duble. Protocolul TCP ignor datele duble. Protocolul TCP asigur un control al fluxului de date. Fiecare punct al unei conexiuni TCP are o zon de memorie tampon (fereastr) de o anumit dimensiune. Punctual care primete date permite punctului care trimite date s trimit doar attea date ct este zona tampon de la recepie. Headerul TCP conine urmtorele cmpuri: Port surs Numr de secven Numr de confirmare Bii de informaie Port destinaie Dimensiunea ferestrei

Figura 18. Headerul TCP.

Informaiile din acest header sunt urmtoarele: numrul de secven este numrul primului octet din segment n cadrul fiierului de date de transmis de ctre punctul ce transmite date, numrul de confirmare este numrul octetului pe care ateapt s-l primeasc punctul ce recepioneaz date, dimensiunea ferestrei este numrul de octei pe care punctul de recepie ateapt s-l primeasc, Biii de informaie utilizai sunt: - FIN ce indic dac partea ce transmite date a terminat datele de transmis, - ACK indic dac numrul de confirmare este valid, - SYN indic sincronizarea numerelor de secven pentru a iniia conexiunea. Stabilirea conexiunii Protocolul de stabilire a unei conexiuni este urmtorul: Clientul trimite un pachet serverului indicnd numrul iniial de secven al clientului. Bitul SYN = set Serverul rspunde trimind numrul iniial de secven al serverului. Biii de informaie sunt SYN = set, ACK = set, iar numrul de confirmare este numrul de secven al clientului. Clientul confirm mesajul serverului cu bitul de informaie ACK = set i numrul de confirmare egal cu numrul de confirmare al serverului.

54

Figura 19. Stabilirea unei conexiuni TCP.

Terminarea conexiunii Protocolul TCP este o conexiune full-duplex. Fiecare direcie trebuie s nchid conexiunea n mod independent. Fiecare punct al conexiunii TCP trimite un mesaj FIN celuilalt punct cnd termin transmisia, iar cnd conexiunea primete un mesaj FIN trimite napoi o confirmare a acestuia (ACK).

Figura 20. Terminarea unei conexiuni TCP.

Transmiterea unui mesaj FIN este de regul rezultatul terminrii datelor aplicaiei. In general serverele TCP sunt concurente. Atunci cnd apare o cerere de stabilire a unei conexiuni, serverul accept conexiunea i creaz un nou proces care efectueaz schimbul de date cu noul client. Transmisia de date ntre aplicaii se face crend un socket n fiecare aplicaie. Fiecare socket este caracterizat de un port i adresa IP a calculatorului pe care ruleaz aplicaia. In cazul unui client TCP se creaz un socket care are adresa IP surs a calculatorului pe care ruleaz aplicaia i un port acordat de sistemul de operare, precum i adresa IP i portul serverului (adresa IP i portul serverului sunt dinainte cunoscute i sunt indicate prin program). Serverul TCP creaz un socket cu adresa IP pe care ruleaz serverul i portul serverului. Orice server ruleaz pe un port cunoscut. Dup 55

stabilirea conexiunii, socketul server creaz un nou socket care face transferal datelor cu clientul. Socketul server ascult doar cererile de conectare ale clienilor. Protocoalele ARP i RARP Adresele IP sunt utilizate de nivelul IP al stivei de protocoale. Nivelul fizic (Ethernet sau token-ring) are adrese de 48 bii. Cnd un frame Ethernet este trimis n reea, adresa Ethernet destinaie determin ce interfa l va recepiona. Conversia ntre adresele IP i Ethernet se face cu dou protocoale ARP (Address Resolution Protocol) i RARP (Reverse ARP).

Conversia ntre adrese se face automat fr intervenia aplicaiei. Interfaa care are nevoie de adresa Ethernet corespunztoare unei adrese IP trimite tuturor calculatoarelor din reea un pachet ARP. Interfaa cu adresa IP cutat trimite interfeei ce a cerut informaia un pachet tip ARP cu adresa Ethernet corespunzroare. Protocolul RARP face conversia invers. Comanda MS-DOS arp -a afiaz toate perechile adresa IP adresa Ethernet din tabela calculatorului. Comanda MS-DOS hostname afieaz numele calculatorului.

4.5 Protocolul FTP


Protocolul FTP (File Transfer Protocol) este un protocol standard pentru transferul fiierelor (pentru copierea unui fiier de pe un sistem pe altul). Protocolul FTP utilizeaz dou conexiuni tip TCP: O conexiune de control n modul client-server. Orice server FTP ruleaz pe portul 21 i ateapt cereri de la clieni. Conexiunea este utilizat pentru comenzi de la client la server i pentru rspunsurile serverului. O conexiune de date creat de fircare dat cnd se efectueaz un transfer de fiiere ntre client i server. Tipurile de date ale fiierelor sunt ASCII n cazul fiierelor text. Fiierul este un ir de linii separate de caractere cr/lf Binary cnd fiierul de transferat este considerat un ir de bii Standardul FTP definete comenzi ce sunt implementate de sistemele de operare, prezentate n tabela de mai jos: Comanda LIST filelist PASS password QUIT RETR filename STOR filename Descriere Listeaz fiiere sau directoare Cuvntul de trecere al serverului Sfritul conexiunii Citete un fiier Scrie un fiier

56

SYST PORT n1,n2, , n6

Cere ca serverul s trimit sistemului Adresa IP a clientului n1.n2.n3.n4 Portul clientului n5*256+n6
Tabelul 17. Comenzi FTP.

tipul

Comenzile implementate pentru diferite sisteme de operare au nume diferite. In cazul sistemului de operare Windows comenzile FTP au denumirile urmtoare: Comanda FTP get filename recv put filename send mkdir dirname rmdir dirname delete filename Dir Ls Lcd Cd Lpwd Pwd Semnificaie Copierea unui fiier din server n client Copierea unui fiier din client n server Crearea unui director n server Stergerea unui director din server Stergerea unui fiier din server Listarea unui director al serverului Listarea unui director al serverului Schimbarea directorului curent n client Schimbarea directorului curent n server Listarea directorului curent n client Listarea directorului curent n server

Tabelul 18. Comenzi FTP ale sistemului de operare Windows.

Menionm c la o sesiune FTP lucrm cu dou directoare: unul n client (pe calculatorul local), altul n server (pe calculatorul serverului FTP). Pentru a schimba directorul curent n client folosim comanda lcd, iar pentru a lista directorul curent din client folosim comanda lpwd. Pentru a schimba directorul curent n server folosim comanda cd, iar pentru a lista directorul curent din server folosim comanda pwd. Pentru conectarea la un server FTP folosim comanda: >ftp adresaIP unde: adresaIP este adresa calculatorului pe care ruleaz serverul. Serverul FTP rspunde trimind comenzile: User: Password: Serverele FTP permit conectarea unui utilizator anonim, care nu trebuie s cunoasc un cuvnt de trecere. Pentru a ne conecta ca utilizator anonim vom introduce rspunsul: anonymous la comanda User. Programul PING Programul testeaz dac un calculator este accesibil. Programul PING este un client iar calculatorul testat este un server. Forma liniei de comand este: PING opiuni adresa-destinaie Opiunile programului sunt: -l buffer size este dimensiunea pachetului de transmis, 57

-a convertete adresele IP n nume, -r numr nregistreaz routerele prin care trece pachetul, -n numr numrul de pachete de transmis, adresa-destinaie este adresa IP sau numele calculatorului testat. Programul PING listeaz : Lungimea pachetului[bytes] timpul de rspuns [ms] TTL Parametrul TTL este un cmp din headerul IP al pachetului. La crearea pachetului acest camp este pus la valoarea 255. Fiecare router scade din acest cmp o unitate. Dac se ajunge la valoarea zero ntr-un router pachetul nu mai este transmis. Motivul este ca nici un pachet s nu circule ntr-o bucl infinit. Programul TRACERT Programul TRACERT listeaz toate routerele de la calculatorul gazd la un alt calculator. Forma liniei de comand este: tracert adresa-destinaie unde: adresa-destinaie este adresa IP sau numele acelui calculator. Programul trimite trei pachete la destinaie. Programul TRACERT listeaz TTL, adresele IP i numele routerelor precum i timpii dus-ntors la routere.

58

5 Bibliografie
1. 2. 3. 4. Knuth D. E., Arta Programrii Calculatoarelor, vol 1, Teora, 1999 Tanenbaum A. S., Modern Operating Systems, Prentice Hall, 2001 Stevens W. R., TCP/IP Illustrated, vol 1 Protocols, Addison Wesley, 1994 Tanenbaum A. S., Reele de Calculatoare ed. 4, Biblos, 2003

59