Sunteți pe pagina 1din 246

Cuprins

Prefaţă .................................................................................................................. 4

1. Introducere ..................................................................................................... 5

1.1. Evoluţia sistemelor de calcul .............................................................................................. 5

1.2. Clasificarea sistemelor de calcul ...................................................................................... 14

1.3. Arhitectura sistemelor de calcul ...................................................................................... 17

1.4. Arhitecturi paralele ............................................................................................................. 40

2. Sisteme de operare ....................................................................................... 44

2.1. Noţiuni introductive ............................................................................................................. 44

2.2. Modelul client - server ........................................................................................................ 50

2.3. Sistemul de operare MS-DOS .......................................................................................... 51

3. Elemente de teoria transmisiei informaţiei ............................................ 67

3.1. Entropia informaţională ....................................................................................................... 67

3.2. Sistem de transmisie a informaţiei ................................................................................. 70

3.3. Codificarea informaţiei în sistemele de calcul .............................................................. 73

3.4. Coduri numerice şi alfanumerice ...................................................................................... 76

3.5. Coduri detectoare şi corectoare de erori ...................................................................... 82

4. Bazele numerice ale calculatoarelor .......................................................... 100

4.1. Sisteme de numeraţie .......................................................................................................... 100

4.2. Conversia bazei de numeraţie ........................................................................................... 102

4.3. Reprezentarea binară a informaţiei numerice .............................................................. 110

4.4. Operaţii aritmetice în sistemul binar .............................................................................. 126

4.5. Operaţii aritmetice în virgulă fixă (VF) .......................................................................... 133

4.6. Operaţii aritmetice în virgulă mobilă (VM) .................................................................... 143

4.7. Operaţii aritmetice în codul numeric 8421 ................................................................... 144

5. Bazele logice ale calculatoarelor ................................................................ 147

5.1. Definirea algebrei logice ..................................................................................................... 147

5.2. Modalităţi de reprezentare a funcţiilor logice ............................................................. 150


5.3. Forme canonice ale funcţiilor logice ................................................................................ 152

5.4. Existenţa şi unicitatea funcţiilor logice ......................................................................... 157

5.5. Funcţiile logice de bază ...................................................................................................... 160

5.6. Simplificarea funcţiilor logice .......................................................................................... 162

5.7. Circuite logice ....................................................................................................................... 171

5.8. Blocuri funcţionale ............................................................................................................... 184

6. Reţele de calculatoare .................................................................................. 206

6.1. Introducere ............................................................................................................................ 206

6.2. Topologii ................................................................................................................................. 207

6.3. Echipamente de reţea ......................................................................................................... 211

6.4. Modele utilizate în dezvoltarea şi studiul reţelelor de calculatoare ...................... 216

6.5. Internetul şi reţelele de calculatoare ............................................................................ 234

Bibliografie .......................................................................................................... 246


PREFAŢĂ

Dezvoltarea ştiinţifică şi tehnică continuă de-a lungul anilor a permis apariţia


instrumentelor de calcul precum şi dezvoltarea deosebită a comunicării. Una dintre descoperirile
majore ale secolului al XX-lea este, fără îndoială, sistemul de calcul sau altfel spus, calculatorul.
Pentru un utilizator obişnuit folosirea sistemului de calcul zi de zi este un fapt ce poate nu
necesită cunoştinţe adânci în domeniu. Pentru un utilizator profesionist, pentru un programator,
dezvoltator de aplicaţii sau administrator de sistem sunt necesare însă cunoştinţe temeinice legate
de structura internă a unui sistem de calcul. Această carte îşi propune să descifreze „tainele”
ascunse ale unui sistem de calcul, elemente legate de arhitectura internă, componente hardware şi
facilităţi ale sistemului de operare. Înţelegând principiile arhitecturale şi funcţionale de bază ale
unui calculator, cititorul va obţine suficiente informaţii pentru a deprinde un limbaj specific şi
pentru a înţelege modul în care caracteristicile unor componente influenţează performanţele unui
sistem de calcul.
În primul capitol se face o introducere în domeniu, prezentându-se un scurt istoric al
evoluţiei sistemelor de calcul, de la primitivul abac la calculatoarele laptop şi Palm-PC de astăzi.
În capitolul al doilea se face o introducere în universul sistemului de operare al
calculatorului, prezentându-se modelul client-server şi elemente ale sistemului de operare MS-
DOS.
Capitolul trei este destinat elementelor de teoria transmisiei informaţiei. Sunt prezentate
aici noţiuni precum entropia, sistemul de transmisie a informaţiei, codificarea informaţiei într-un
sistem de calcul, coduri numerice şi alfanumerice, coduri detectoare şi corectoare de erori.
În capitolul patru sunt prezentate elemente legate de bazele numerice ale calculatoarelor,
printre care: sisteme şi baze de numeraţie, conversia între baze diferite de numeraţie,
reprezentarea binară a informaţiei în virgulă fixă (cod direct, cod invers şi cod complementar) şi în
virgulă mobilă (simplă precizie, dublă precizie şi format extins). Sunt prezentate, de asemenea,
reprezentarea numerelor în format zecimal codificat binar, şi operaţiile aritmetice în binar,
hexazecimal sau format zecimal codificat binar.

Capitolul cinci este consacrat bazelor logice ale calculatoarelor. Aici sunt prezentate
noţiuni ca: algebra logică, modalităţi de reprezentare a funcţiilor logice, formele canonice ale
funcţiilor logice, existenţa şi unicitatea funcţiilor logice, funcţii logice de bază, modalităţi de
simplificare a funcţiilor logice, circuite logice combinaţionale şi secvenţiale precum şi blocuri
funcţionale.
Având în vedere că practic toate calculatoarele de astăzi oferă posibilitatea conexiunii la o
reţea, în capitolul al şaselea sunt introduse elemente de bază legate de reţelele de calculatoare.
Sunt prezentate aici elemente ce vizează: topologii de bază de reţea, echipamente de reţea,
modelele ierarhice ISO-OSI şi TCP/IP, Internetul şi arhitectura de bază a acestuia.
Obiectivul urmărit prin scrierea acestei cărţi a fost acela de a face o introducere în lumea
arhitecturii sistemelor de calcul şi operare; lucrarea se adresează în special studenţilor ce
participă la cursul de Sisteme de calcul şi operare din cadrul Facultăţii de Cibernetică, Statistică şi
Informatică Economică din Academia de Studii Economice precum şi studenţilor participanţi la
cursuri de Arhitectura calculatoarelor.

Autorii

4
1
INTRODUCERE

1.1 Evoluţia sistemelor de calcul

1.1.1 Introducere

Din cele mai vechi timpuri oamenii au căutat să simplifice anumite


activităţi, cum este şi aceea de numărare. Astfel a luat naştere abacul
(figura 1.1), care poate fi considerat unul dintre cele mai primitive
instrumente menite să automatizeze procesul de numărare.
Mult timp după inventarea abacului, matematicieni şi alţi oameni de
ştiinţă au pus bazele ştiinţei calculatoarelor de astăzi, dintre care amintim
pe: Blaise Pascal, Gotfried Wilhelm Leibniz, Charles Babbage, George
Boole şi Claude Shannon. Unul dintre pionierii în domeniu este considerat
matematicianul francez Blaise Pascal (1623-1662), care a inventat în anul
1642 prima maşină de calcul operaţională, denumită „Maşina aritmetică”.
Această „maşină aritmetică” realiza operaţiile de adunare şi de scădere;
interesant este faptul că scăderea se realiza utilizându-se tehnici
complementare, foarte asemănătoare cu cele existente în calculatoarele din
zilele noastre. Operaţiile de înmulţire şi împărţire erau implementate prin
serii de adunări, respectiv scăderi repetate.
Matematicianul britanic Charles Babbage (1791-1871) a inventat
primul dispozitiv ce poate fi considerat un computer în sensul modern al
cuvântului. Acest prim dispozitiv modern calcula tabele de funcţii
logaritmice şi trigonometrice prin intermediul unor oameni ce se numeau

5
Sisteme de calcul şi operare

„computers”. Cea dintâi maşină concepută în 1822 de Charles Babbage se


numea „Difference Engine” (figura 1.2), fiind construită parţial, iar cea de-a
doua maşină a fost denumită „Analytical Engine” (1830), dar nu a fost
construită.
„Difference Engine” a fost construită ulterior conform desenelor
originale de către o echipă la Muzeul Ştiinţei din Londra. Această maşină de
calcul avea următoarele caracteristici:
ƒ 4000 componente
ƒ Cântărea 3 tone,
ƒ Aproximativ 3 metri lăţime şi 2 metri şi jumătate lungime.

Figura 1.1 Abacul

Acest echipament a efectuat prima secvenţă de calcule la începutul


anilor 1990, obţinându-se rezultate cu o precizie de 31 de cifre zecimale.

Figura 1.2 Difference Engine

6
Introducere

O mare parte din activitatea lui Babbage a fost dedicată realizării de


calculatoare analogice, dar tehnologia existentă la acea dată nu i-a permis
realizarea de mecanisme de mare precizie. Sistemul de calcul analogic nu
avea sistem de operare; simţind nevoia de software pentru calculatorul său,
Babbage a angajat o tânără pe nume Ada Lovelace (fiica poetului britanic
Lord Byron), nume după care a fost denumit limbajul de programare ADA.
Astfel, Ada Lovelace este cunoscută drept primul programator din lume.
O contribuţie deosebită în domeniul pionieratului calculatoarelor au
avut-o şi George Boole şi Claude Shannon. În jurul anului 1850
matematicianul englez George Boole a inventat Algebra booleană (Algebra
Boole), care a rămas relativ necunoscută şi neutilizată până în anul 1938,
când teza de masterat a lui Claude Elwood Shannon a demonstrat cum
conceptele lui Boole „TRUE” şi „FALSE” pot fi utilizate pentru a
reprezenta funcţionalitatea comutatoarelor din circuitele electronice.
În ultimii şaizeci de ani calculatoarele au evoluat continuu,
specialiştii în domeniu împărţind această perioadă în cinci etape, denumite
generaţii de calculatoare. Fiecare generaţie de calculatoare este caracterizată
de o dezvoltare tehnologică majoră ce a schimbat fundamental modul în
care calculatoarele operează, având ca rezultat echipamente mai mici, mai
puternice, mai ieftine, mai eficiente şi mai fiabile. De asemenea, fiecare
generaţie se întinde pe o perioadă de aproximativ zece ani, în prezent
aflându-ne în generaţia a cincea de calculatoare. Criteriile care au stat la
baza acestei clasificări includ:
¾ Arhitectura sistemelor;
¾ Tehnologia de construcţie a componentelor;
¾ Modalităţile de procesare a programelor;
¾ Caracteristicile sistemelor de operare;
¾ Limbajele de programare folosite.

1.1.2 Prima generaţie de calculatoare

Prima generaţie în evoluţia calculatoarelor (1938-1953) a fost


caracterizată de utilizarea tuburilor electronice iar calculatoarele erau
destinate calculelor ştiinţifice şi comerciale. În această perioadă se
încadrează calculatoarele Harvard Mark 1 şi ENIAC (figura 1.3).

7
Sisteme de calcul şi operare

Figura 1.3 Calculatorul ENIAC

Harvard Mark 1 (IBM Automatic Controlled Calculator) a fost


construit între anii 1938 şi 1944, fiind format din mai multe calculatoare ce
lucrau asupra unor părţi ale aceleiaşi probleme sub supravegherea unei
singure unităţi de control. Această maşină de calcul era construită din
comutatoare, relee şi alte dispozitive mecanice, conţinând 750.000 de
componente, având 16 metri lungime, 2 metri şi jumătate înălţime şi
cântărind 5 tone. Numerele folosite în calcule erau de 23 de cifre, o
înmulţire dintre două numere dura 4 secunde iar o împărţire dura
10 secunde.
ENIAC - Electronic Numerical Integrator And Computer a fost
realizat prin contribuţia inginerilor William Mauchly şi J. Presper Eckert de
la Universitatea din Pennsylvania între anii 1943 şi 1946. Acest calculator
avea 3 metri înălţime, ocupa un spaţiu de 30 mp şi cântarea 30 tone. În
construcţia sa erau folosite 18.000 tuburi cu vacuum, având nevoie de o
putere de 150 kW (suficient pentru a ilumina un mic oraş). Principala
problemă cu acest tip de calculator era fiabilitatea: în fiecare zi trebuiau să
fie înlocuite aproximativ 50 de tuburi cu vacuum. Prin realizarea acestui
calculator, în anul 1943 Eckert şi Mauchly au iniţiat conceptul de creare

8
Introducere

a unui program stocat în calculator pentru care era folosită o memorie


internă utilizată pentru a stoca atât instrucţiuni cât şi date.
Succesorii lui ENIAC au fost:
 EDVAC - Electronic Discrete Variable Automatic Computer
(4000 de tuburi);
 EDSAC - Electronic Delay Storage Automatic Calculator
(1949 - 3000 de tuburi);
 UNIVAC I - Universal Automatic Computer (1951 - primul
computer comercial);
 ILLIAC I (1949) - construit la Universitatea Illinois, primul
computer deţinut de o instituţie academică.

1.1.3 A doua generaţie de calculatoare

Generaţia a doua (1954 - 1963) a fost caracterizată prin folosirea


tranzistorului pentru realizarea circuitelor logice. Cercetarea în domeniul
semiconductorilor a început în anul 1945 la faimosul centru de cercetare
Bell Laboratories din SUA. Cei trei ingineri ce lucrau la acest proiect,
William Shockley, Walter Brattain şi John Bardeen au creat primul
tranzistor pe 23 decembrie 1947. După această realizare au luat o pauză
pentru sărbătorile de Crăciun înainte de a publica evenimentul; de aceea
cărţile de referinţă indică faptul că primul tranzistor a fost creat în 1948.
Calculatoarele din cea de-a doua generaţie aveau în jur de 100 de
instrucţiuni complexe, memorie de tip magnetic şi dispozitive periferice.
Prelucrarea se făcea secvenţial prin intermediul unui sistem de operare
simplu (FMS şi IBSYS pentru maşina de calcul IBM 7094), folosindu-se
atât limbajul de asamblare cât şi limbaje evoluate. Limbajul de programare
Fortan a apărut în anul 1956 iar limbajele Algol şi Cobol (Common
Business Oriented Language - limbaj orientat spre aplicaţiile de afaceri)
după anul 1960. Calculatoarele erau folosite în mare parte pentru calcule
ştiinţifice, rezolvarea sistemelor de ecuaţii liniare şi neliniare, ecuaţii
diferenţiale etc. În anul 1955 a devenit operaţional primul calculator cu
tranzistori, denumit TRADIC (Transistor Digital Computer).
Această perioadă în evoluţia calculatoarelor se caracterizează prin
distincţia creată între proiectanţi, constructori, programatori şi personalul de
întreţinere. Calculatoarele aveau nevoie de încăperi speciale, climatizate,
pentru a se asigura parametrii de funcţionare, aceste maşini de calcul fiind
întreţinute şi exploatate de către operatori calificaţi. Programele erau scrise
în limbajul Fortran sau în limbaj de asamblare şi erau imprimate pe cartele
perforate. Programatorii duceau programul scris în camera de intrare şi îl

9
Sisteme de calcul şi operare

înmânau operatorilor. După ce programul era executat, operatorul aducea


rezultatele de la imprimantă în aşa numita cameră de ieşire, pentru a fi
ridicate de către programator. În acest moment existau două variante: fie
programul era corect şi programatorul obţinea rezultatele dorite, fie trebuia
depanat programul şi reluat acest proces.
Primele calculatoare din această a doua generaţie au fost construite
pentru a fi utilizate în industria energiei atomice.

Figura 1.4 Calculatorul Altair 8800

1.1.4 A treia generaţie de calculatoare

Generaţia a treia de calculatoare (1964 - 1980) se caracterizează


prin utilizarea circuitelor integrate pe scară mică (SSI - Small Scale
Integration) şi medie (MSI - Medium Scale Integration). Cercetările în
domeniul circuitelor integrate au debutat cu succes în cadrul firmei Texas
Instruments, unde în anul 1958 inginerul Jack Kilby a reuşit să combine mai
multe componente pe o singură bucată de semiconductor, realizând astfel
primul circuit integrat. La numai trei ani după această realizare, în anul
1961, Fairchild (cercetător la Texas Instruments) şi Texas Instruments au
realizat primele circuite integrate comerciale ce conţineau funcţii logice de
bază, două porţi logice fiind implementate prin intermediul a 4 tranzistori
bipolari şi 4 rezistoare. Tot Fairchild introducea în anul 1970 pentru prima
oară memoria de 256 biţi static RAM (Random Access Memory).

10
Introducere

Această perioadă de dezvoltare a calculatoarelor poartă denumirea


de anii „big iron”, în care calculatoarele de tip mainframe ale firmei IBM
deţineau supremaţia.
În anul 1970 compania japoneză Busicom de calculatoare a cerut
firmei Intel un set de 12 circuite integrate pentru a le utiliza într-un nou
calculator. T. Hoff, proiectant la Intel, inspirat de această cerere, a creat
primul microprocesor, denumit Intel 4004. Acest procesor avea
2300 de tranzistoare şi putea executa 60.000 operaţii pe secundă. Primul
microprocesor de uz general, denumit 8080, a fost introdus de Intel în 1974,
fiind un procesor pe 8-biţi, cu 4500 tranzistori şi putând efectua
200.000 operaţii pe secundă. Alte procesoare din această vreme au fost:
Motorola 6800, MOS Technology 6502, Zilog Z80.
Treptat începe deschiderea spre era calculatoarelor personale; astfel,
în 1974 Ed Roberts lansează pe piaţă calculatorul Altair 8800 (figura 1.4) ce
avea următoarele caracteristici:
♦ Era bazat pe microprocesorul 8080.
♦ Avea preţul de 375$.
♦ Fără tastatură, ecran, capacitate de stocare.
♦ Avea 4KB memorie, programabil prin intermediul unui panou
frontal cu comutatoare.

În anul 1975 Bill Gates şi Paul Allen fondează firma Microsoft şi


implementează limbajul de programare BASIC 2.0 pe Altair 8800, care
devine primul limbaj de nivel înalt disponibil pe un calculator personal.
Alte exemple de calculatoare din această perioadă sunt:
Ö S. Wozniak şi S. Jobs produc Apple I în 1976 şi Apple II în 1977.
Caracteristici:
Ž 16k ROM, 4k de RAM, tastatură şi display color;
Ž preţ de 1300$, în 1977 afacere de 700.000 $ iar în 1978 de
7 milioane de dolari.
Ö TRS-80 (bazat pe microprocesorul Z80) de la Radio Shack în
anul 1977. Caracteristici:
Ž 4k ROM, 4k RAM, tastatură şi drive de tip casetă;
Ž preţ de 600$.

11
Sisteme de calcul şi operare

1.1.5 A patra generaţie de calculatoare

Generaţia a patra de calculatoare (1981 - prezent) se caracterizează


prin construcţia de calculatoare ce utilizează circuite integrate pe scară mare
(LSI -Large Scale Integration) şi foarte mare (VLSI - Very Large Scale
Integration). Folosirea microprocesorului şi a microprogramării a oferit
calculatoarelor posibilitatea utilizării unui set complex de instrucţiuni şi
asigură un grad sporit de flexibilitate.

Figura 1.5 Laptop

În această perioadă a fost scos pe piaţă primul calculator personal


(PC - Personal Computer) de către firma IBM în anul 1981. Toate
calculatoarele personale ce au fost construite ulterior şi au păstrat arhitectura
originală IBM au fost denumite calculatoare compatibile IBM-PC. Primul
IBM-PC avea următoarele caracteristici:
€ Microprocesor pe 16-biţi 8088;
€ Memorie ROM BASIC;
€ Floppy-disc de 360KB capacitate;
€ Sistem de operare DOS 1.0
€ Preţ de 1365 $

În continuare sunt prezentate câteva momente din evoluţia ulterioară


a calculatoarelor:
♦ În 1983 calculatorul IBM-XT are hard-disc (10MB de memorie
costau 3000$).

12
Introducere

♦ În 1985 Intel introduce microprocesorul 80386 (primul membru


pe 32-biţi din familia 80x86).
♦ În 1986 firma Compaq introduce primul sistem bazat pe 80386.
♦ În 1989 Intel introduce microprocesorul 80486, ce includea
coprocesor matematic.
♦ În 1992 apar procesoarele Intel Pentium (cu 64-biţi pentru
magistrala de memorie), AMD şi Cyrix (procesoare compatibile
- „clone”).
♦ În 1996 apare Intel Pentium Pro.
♦ În 1998 apare Intel Pentium II.
♦ În 2000 apare Intel Pentium IV la 1.5 GHz.
♦ În 2003 este depăşită graniţa de 3 Ghz de funcţionare a
procesoarelor comerciale.

Figura 1.6 PDA

În prezent, cele mai moderne calculatoare sunt cele care au şi gradul


de miniaturizare cel mai mare, aici incluzând calculatoarele portabile de
tipul laptop (figura 1.5) sau palmtop (denumit şi PDA - Personal Digital
Assistant sau PocketPC, vezi figura 1.6).

13
Sisteme de calcul şi operare

1.1.6 A cincea generaţie de calculatoare


Calculatoarele din cea de-a cincea generaţie (prezent - viitorii ani),
sunt încă în faza de dezvoltare. Ele se bazează pe utilizarea inteligenţei
artificiale, a circuitelor integrate specializate şi a procesării paralele. Există
unele aplicaţii ale celei de-a cincea generaţii de calculatoare care sunt deja
utilizate astăzi, cum ar fi recunoaşterea vorbirii. Utilizarea procesării
paralele şi a superconductorilor face viabilă inteligenţa artificială.
Procesarea moleculară şi cuantică♦ precum şi nanotehnologiile se
pare că vor schimba faţa calculatoarelor în următorii ani. Scopul principal al
celei de-a cincea generaţii de calculatoare este acela de a dezvolta
echipamente capabile să răspundă limbajului natural uman şi să fie capabile
de învăţare şi organizare proprie.

1.2 Clasificarea sistemelor de calcul


Marea varietate a calculatoarelor a impus clasificarea lor după
diferite criterii: cost, capacitate, complexitate, aplicaţii. În general, tipul
calculatorului se determină după:
Þ tipul unităţii centrale de prelucrare (UCP) sau al
microprocesorului – cele mai mari calculatoare tind să utilizeze
unităţi centrale de prelucrare constituite separat, de mare viteză,
cu componente complexe;
Þ cantitatea de memorie principală pe care microprocesorul o
poate utiliza – un calculator echipat cu o memorie principală de
mare capacitate poate memora programe mai complexe şi chiar
mai multe programe diferite în acelaşi timp;

Procesarea cuantică reprezintă un termen introdus încă din anii ’70 şi se bazează pe fizica
cuantică, folosindu-se anumite proprietăţi ale atomilor şi nucleelor ce le permite să
lucreze împreună drept biţi cuantici (denumiţi qubits) pentru a fi utilizaţi de procesor şi
memorie. Prin interacţiunea dintre ei, izolaţi de mediul exterior, qubiţii pot realiza
anumite calcule matematice mult mai rapid decât calculatoarele convenţionale.
Qubiţii nu se bazează pe natura binară tradiţională a procesării. Spre deosebire de
codificarea tradiţională a numerelor ce foloseşte doar 0 şi 1, calculatoarele cuantice
codifică informaţia ca o serie de stări mecanico-cuantice precum mişcarea de rotaţie a
electronilor sau orientarea polarizării ce pot reprezenta un 0 sau un 1, o combinaţie a
celor două sau pot reprezenta un număr ce semnifică faptul că starea unui qubit este
undeva între 0 şi 1. Este important faptul că, utilizând această idee, un calculator cuantic
monoprocesor poate executa o sumedenie de operaţii în paralel. Prelucrarea cuantică nu
este cea mai bună soluţie pentru activităţi de procesare de texte sau poştă electronică, dar
este ideală pentru aplicaţii criptografice sau de modelare şi indexare a bazelor de date de
dimensiuni foarte mari.

14
Introducere

Þ capacitatea de stocare a memoriei auxiliare – sistemele de


calcul tind să fie echipate cu dispozitive periferice de memorare
de mare capacitate;
Þ viteza perifericelor de ieşire este o altă caracteristică – cele mai
mari calculatoare sunt dotate cu dispozitive de ieşire rapide, a
căror viteză se măsoară, de exemplu, în sute de mii de linii care
pot fi tipărite pe minut;
Þ viteza de prelucrare exprimată în milioane de instrucţiuni pe
secundă (MIPS - Millions of Instructions Per Second) variază de
la 3 - 4 MIPS la cele mai mici calculatoare, până la mai mult de
200 MIPS pentru supercalculatoare;
Þ numărul utilizatorilor care pot avea acces la calculator în acelaşi
timp – calculatoarele personale admit numai un singur utilizator,
alte tipuri acceptă mai mult de doi sau trei utilizatori în acelaşi
timp, iar cele mai mari calculatoare suportă sute de utilizatori
simultan;
Þ costul sistemului poate varia foarte mult.

Având în vedere totalitatea criteriilor enumerate mai sus,


calculatoarele sunt, în general, grupate în patru categorii de bază:
microcalculatoare, minicalculatoare, calculatoare mainframe şi
supercalculatoare. Este dificil să se asocieze o definiţie fiecărei categorii,
ţinând seama de progresele tehnologice şi de rapiditatea cu care se pot
schimba parametrii de mai sus. Totuşi următoarele definiţii ar putea fi
suficiente.
Microcalculatorul, numit adesea calculator personal (PC - Personal
Computer - vezi figura 1.7), reprezintă tipul de calculator care utilizează un
microprocesor ca unitate centrală de prelucrare (UCP) şi care poate fi folosit
numai de o singură persoană la un moment dat. Există un mare număr de
variante, în ceea ce priveşte dimensiunea, de la calculatoare personale
portabile (laptop - figura 1.5) la puternice staţii de lucru (desktop
workstations) care sunt utilizate pentru calcule inginereşti şi ştiinţifice.
Staţiile de lucru utilizează sistemele de operare UNIX sau Windows
NT/2000/XP şi sunt echipate cu procesoare RISC puternice (cum ar fi
Digital Alpha, PowerPC sau MIPS) sau cu procesoare Intel Pentium (şi
compatibile). Calculatoarele personale lucrează folosind sistemul de operare
Windows sau un alt sistem de operare similar, fiind folosite pentru aplicaţii
standard. Microcalculatoarele pot fi folosite cu uşurinţă de neprogramatori
datorită numărului mare de pachete de programe de aplicaţii disponibile.

15
Sisteme de calcul şi operare

Figura 1.7 Calculator personal

În ultimii ani PC-urile au devenit un lucru comun în instituţii, şcoli,


universităţi şi locuinţe. PC-urile au schimbat modul în care se gândeşte, se
învaţă şi se lucrează. Astăzi PC-ul este un ajutor de nepreţuit pentru cei care
vor să-şi îmbunătăţească performanţele şi calitatea muncii. Piaţa explozivă a
PC-urilor a condus la creşterea numărului utilizatorilor, la accelerarea
dezvoltării domeniilor de aplicaţii, de la programele de prelucrare de texte
până la tehnologii care au permis oamenilor să lucreze acasă, să se joace, să
înveţe sau să facă cercetări avansate.
Minicalculatorul este cunoscut ca un calculator de mărime medie, ce
nu este portabil. El suportă până la 50 de utilizatori simultan şi are o
memorie principală de capacitate mare. În mod normal minicalculatorul
deserveşte o reţea de terminale simple. IBM AS/400 sau DEC Vax/750 sunt
exemple de minicalculatoare.
Calculatorul mainframe reprezintă un calculator de mari dimensiuni
şi foarte puternic care este amplasat într-un cadru care poate fi controlat. Un
astfel de calculator suportă prelucrări cerute de sute, chiar mii de utilizatori
precum şi calcule specializate. Este solicitat de companiile care vehiculează
şi prelucrează un volum mare de informaţie. Ca exemplu este modelul 390
al IBM.
Supercalculatorul posedă resurse hardware şi software deosebite. Se
utilizează în industria de apărare, în lumea cercetării ştiinţifice, în câteva
universităţi, în industria aeronautică şi spaţială. Un supercalculator poate
executa peste 1,8 miliarde de operaţii pe secundă.

16
Introducere

1.3 Arhitectura sistemelor de calcul

1.3.1 Introducere

Sistemele de calcul existente cunosc un mare număr de variante


arhitecturale. Principiul de bază al proiectării calculatoarelor clasice a fost
ordonarea secvenţială a operaţiilor elementare. Acesta se rezumă prin două
aspecte majore: execuţia unui ansamblu de funcţii de către un procesor unic
şi descrierea prelucrărilor în conformitate cu algoritmii secvenţiali (modelul
lui Von Neumann).
Modelul topologic de bază (figura 1.8) scoate în evidenţă elementele
structurale fundamentale, atât cele fizice: resurse de calcul (C), resurse de
memorare (M), ansamblul echipamentelor de intrare/ieşire (I/E), circuitele
ce asigură transmisia informaţiei între componentele precedente (T) cât şi
cele logice: sistem de operare, programe utilitare.

Figura 1.8 Modelul unui sistem de calcul

Pe baza disponibilităţilor structurale ale elementelor enumerate şi a


combinaţiilor arhitecturale dintre ele se obţine mulţimea tuturor modelelor
de sisteme de calcul.
Putem afirma că, un sistem de calcul reprezintă o colecţie de resurse
hardware (unitatea centrală de prelucrare - UCP, memoria, dispozitivele
periferice de intrare/ieşire) şi software (sistem de operare, programe
utilitare) care interacţionează între ele în vederea satisfacerii cerinţelor
utilizatorilor. Ţinând cont de acest model, componenta hardware a unui PC
va arăta ca în figura 1.9.

17
Sisteme de calcul şi operare

Calculatoarele personale moderne îşi au rădăcinile în SUA începând


cu anul 1940, deşi pe piaţă au apărut în 1981. Dintre oamenii de ştiinţă ce
şi-au adus contribuţia în acest domeniu, trebuie amintit John von Neumann
(1903-1957), matematician născut în Ungaria. El a fost primul care a
proiectat un calculator cu memorie de lucru (memoria RAM de astăzi).
Modelul unui calculator personal al lui Von Neumann include: UCP,
intrarea, ieşirea, memoria de lucru şi memoria permanentă.

Figura 1.9 Componentele hardware ale unui PC

Dintre elementele care au determinat ca PC-urile să se impună pe


piaţa sistemelor de calcul enumerăm:
• au reprezentat un început pentru standardizare, având o
arhitectură deschisă;
• fiind bine documentate au oferit posibilităţi de extindere;
• au fost ieftine, simple şi robuste.

Primele calculatoare personale, realizate de către firma IBM, aveau


la bază microprocesorul Intel 8088 iar ca sistem de operare MS-DOS de la
Microsoft. Numele original de calculator personal sau PC (Personal
Computer) provine deci de la IBM iar toate calculatoarele construite după
aceea, având aceeaşi arhitectură de bază, poartă denumirea de calculator
compatibil IBM-PC, tocmai datorită faptului că păstrează arhitectura

18
Introducere

funcţională de bază a primului calculator personal scos pe piaţă de către


firma IBM. PC-urile existente astăzi sunt la fel de puternice ca
minicalculatoarele şi calculatoarele mainframe de acum câţiva ani.

1.3.2 Procesorul

Componenta cea mai importantă a unui sistem de calcul, în


particular a unui calculator personal, este procesorul (figura 1.10) sau
unitatea centrală de prelucrare (UCP). Denumirea de unitate centrală de
prelucrare provine din următoarele consideraţii:
 procesor, deoarece prelucrează datele;
 central, deoarece este centrul de prelucrare a datelor din sistem;
 unitate, deoarece, de cele mai multe ori, este un circuit integrat
care conţine zeci sau sute de milioane de tranzistoare – un
microprocesor.

Figura 1.10 Exemple de microprocesoare

19
Sisteme de calcul şi operare

Figura 1.11 Procesorul

Microprocesorul conţine (figura 1.11):


ƒ unitatea aritmetico-logică (UAL);
ƒ unitatea de control;
ƒ un ansamblu de registre.

Unitatea aritmetico-logică execută operaţii aritmetice şi funcţii


logice. Unitatea centrală de procesare coordonează activitatea din calculator
în vederea prelucrării datelor. Pentru aceasta, ea primeşte şi transmite date
în mod continuu. Datele pentru prelucrare vin de la memorie şi diversele
dispozitive periferice din calculator (tastatură, hard-disc etc.) iar după
procesare vor fi trimise către memorie sau alte unităţi. Transmisia se face
prin intermediul magistralelor (figura 1.12).

20
Introducere

Figura 1.12 Organizarea unui sistem de calcul

Unitatea centrală de procesare primeşte instrucţiunile care vor fi


executate. Fiecare instrucţiune reprezintă o comandă pentru prelucrarea
datelor (figurile 1.13 şi 1.14). Activitatea procesorului constă din calcule şi
transportul datelor.

Figura 1.13 Modalitatea de operare a UCP

21
Sisteme de calcul şi operare

Figura 1.14 Prelucrarea datelor într-un procesor von Neumann

La ora actuală, unitatea centrală de prelucrare poate utiliza una din


tehnologiile:
¾ Tehnologia CISC (Complex Instruction Set Computer) care a
fost adoptată încă de la primele arhitecturi de calculatoare.
Procesoarele sunt capabile să interpreteze mai mult de
400 instrucţiuni şi execuţia se realizează în mai multe cicluri
maşină. Numărul de cicluri maşină necesare în execuţia unei
instrucţiuni variază de la o instrucţiune la alta.
¾ Tehnologia RISC (Reduced Instruction Set Computer) prin care
se implementează numai instrucţiunile de bază (cele mai
folosite). Fiecare instrucţiune se execută într-un singur ciclu
maşină, având consecinţe pozitive asupra performanţelor.
Această tehnologie permite construcţia unor maşini foarte
puternice, capabile să asigure prelucrarea paralelă a mai multor
aplicaţii.

22
Introducere

¾ Tehnologia VLIW (Very Long Instruction Word) prin care


procesorul utilizează instrucţiunea într-un format lung. Ideea este
de a reuni mai multe instrucţiuni în una singură. Astfel
procesorul poate pregăti mai multe instrucţiuni printr-o singură
operaţie şi va fi mult mai eficient. În mod normal procesoarele
care nu sunt de tip VLIW recepţionează o instrucţiune pe cuvânt.
Un cuvânt este o cantitate de date transmisă la procesor, iar
procesoarele VLIW recepţionează mai multe instrucţiuni în
fiecare cuvânt. Pentru reordonarea instrucţiunilor se utilizează un
compilator. În acest caz unitatea centrală de prelucrare proiectată
în tehnologie VLIW devine foarte complexă. Procesorul Itanium
pe 64 de biţi al firmei Intel a fost proiectat în tehnologie VLIW.
O altă companie care utilizează VLIW este TransMeta cu
procesorul Crusoe.

Firma Sun Microsystems a definitivat între anii 1984 şi 1987


arhitectura SPARC (Scalable Processor ARChitecture) ce se bazează pe
tehnologia RISC.
Începând din 1990, IBM a lansat pe piaţă sistemul RISC/6000, prin
staţii de lucru şi servere, având la bază arhitectura POWER (Performance
Optimization With Enhanced RISC). Acest sistem reprezintă rezultatul
muncii susţinute de IBM, în vederea obţinerii unor performanţe sporite la un
preţ de cost cât mai redus.

1.3.3 Procesoare RISC

Procesoarele RISC, apărute pentru prima oară în anii ’80, păreau la


început predestinate să domine industria computerelor în anii ’90 şi să facă
uitate vechile arhitecturi de calculatoare. Practic toţi producătorii importanţi
din industria calculatoarelor ofereau (şi oferă în continuare) sisteme gen
RISC; giganţii IBM şi Hewlett Packard şi-au dezvoltat propriile procesoare
RISC, în timp ce alţi producători, ca DEC sau Siemens, au preferat să
cumpere licenţe ale unor arhitecturi deja existente pentru a ţine pasul cu
concurenţa acerbă din domeniu.
Conceptul de arhitectură „RISC” este deseori greşit utilizat sau
definit, de aceea, pentru a fi definit şi înţeles mai bine, trebuie să facem o
întoarcere în timp şi să vedem, de asemenea, diferenţele esenţiale între cele
două noţiuni: CISC şi RISC. Era recunoscut de prin anii ’50 faptul că se
putea sacrifica din eficienţa memoriei la codificarea unui set de instrucţiuni
pentru a câştiga în performanţă. Instrucţiunile simple, de lungime fixă, erau

23
Sisteme de calcul şi operare

uşor de implementat şi se executau mai rapid. Această tehnică era folosită


pentru implementarea setului de instrucţiuni al calculatorului IBM 360 de
tip mainframe din anii ’50-’60. Acest set de instrucţiuni se baza pe o
arhitectură clasică CISC, dar mecanismul de microcod ce executa de fapt
instrucţiunile era un procesor RISC mai simplu.
Microcodul este de fapt, software-ul de nivel jos care conduce
execuţia setului de instrucţiuni, iar procesoarele RISC se numeau controlere
orizontale de microcod. Cu toate că erau cunoscute avantajele arhitecturilor
RISC, costurile ridicate ale memoriei determinau folosirea în continuare a
arhitecturilor CISC, mai eficiente din punct de vedere al capacităţii de
stocare şi care păreau că reprezintă cea mai bună soluţie în acel moment (se
utilizau instrucţiuni capabile să facă mai multe lucruri).
Primele inovaţii faţă de vechile arhitecturi de microprocesor au
apărut în cadrul firmei IBM, în cadrul unui proiect început în 1975 şi care
acum se consideră a fi pionieratul în domeniul arhitecturii RISC.
John Cocke, un inginer de la IBM, a observat că doar o mică parte
(aproximativ 10%) a mulţimii de instrucţiuni a calculatorului IBM 360 era
folosită în majoritatea timpului, iar această submulţime concentra cel mai
mare procent din timpul de execuţie (90%). Membrii echipei IBM şi-au
propus astfel să simplifice mulţimea de instrucţiuni pentru a obţine o medie
de o execuţie pe ciclu de ceas. Acest obiectiv era realizabil doar dacă
mulţimea de instrucţiuni era structurată în conductă, salvându-se în acest
mod timpul pierdut pentru aducerea şi decodarea instrucţiunilor din
memorie.
Două noi proiecte ce au pornit câţiva ani mai târziu au adus
conceptele RISC în centrul atenţiei arhitecturilor de computere. Primul
dintre acestea a fost condus de David Patterson de la Universitatea din
Berkeley şi a culminat cu definiţia procesoarelor RISC I şi RISC II la
începutul anilor ’80. Patterson a conturat, de asemenea, conceptul RISC.
Potrivit acestuia, procesoarele RISC au inaugurat o nouă mulţime de
principii arhitecturale. Din această cauză, noţiunea de RISC a fost
considerată mai degrabă o filozofie decât o reţetă arhitecturală diferită.
Punctele relevante ale filozofiei proiect menţionate de Patterson sunt:
ƒ mulţimea de instrucţiuni trebuie să fie simplă;
ƒ instrucţiunile trebuie să ruleze la cea mai mare rată posibilă;
ƒ noţiunea de „pipelining” este mai importantă decât mărimea
programului;
ƒ tehnologia compilatorului este un element critic într-un proiect
RISC: optimizarea compilatoarelor trebuie să translateze cât mai
mult posibil din complexitatea hardware-ului către faza de
compilare.

24
Introducere

Rezultatele acestor cercetări au dat naştere unei arhitecturi mai


simple, caracterizată de instrucţiuni mai puţine, multe registre, acces
simplificat pentru încărcarea şi depozitarea datelor în memoria principală şi
posibilitatea execuţiei instrucţiunilor într-o singură perioadă de ceas.
Procesorul respectiv era mai mic, cu performanţe mai mari, dar se
folosea cu 20-25% mai multă memorie şi erau necesare memorii cache
scumpe pentru a ţine „ocupat” microprocesorul RISC. Din această cauză,
costurile ridicate ale arhitecturilor RISC au împiedicat răspândirea acestora
pe piaţa consumatorilor medii şi a aplicaţiilor comerciale. Procesoarele
RISC erau însă folosite uzual în staţiile de lucru foarte puternice pentru
aplicaţii ştiinţifice, tehnice şi militare, unde se justificau preţurile mari
pentru performanţe înalte.
O dată cu evoluţia microprocesoarelor RISC, s-a descoperit că
avantajul acestora nu costă în micşorarea setului de instrucţiuni, ci în
simplitatea acestora. În zilele de astăzi majoritatea microprocesoarelor RISC
au cam acelaşi număr de instrucţiuni ca şi cele CISC. Datorită modurilor
mai simple de adresare ale instrucţiunilor RISC, având nevoie de un singur
acces la memoria principală şi putând fi executate într-un singur ciclu de
ceas, execuţia lor a putut fi foarte uşor implementată în structuri de tip
pipeline şi structuri superscalare ce permit execuţia simultană a mai multor
instrucţiuni.
Tot evidenţiind avantajele tehnologiei RISC, se pune în mod evident
întrebarea: De ce să mai folosim procesoare CISC, când cele RISC sunt în
mod clar mai performante?
Pentru a răspunde la această întrebare, să evidenţiem câteva aspecte
ale problemei. În primul rând, diferenţele dintre microprocesoarele CISC şi
cele RISC nu mai sunt aşa de mari odată cu implementările RISC făcute în
ultimii ani de către microprocesoarele compatibile Intel. Avantajul major
care apare prin folosirea procesoarelor CISC este acela al compatibilităţii
soft; astfel, cantitatea de software ce rulează în prezent pe microprocesoare
CISC este imensă şi deocamdată nu se poate renunţa la ea.
Succesul mai vechi al variantelor de Microsoft Windows (ce rulează
pe procesoare CISC) şi faptul că noile versiuni de Windows, rulează tot pe
platforme cu procesoare CISC (Intel şi compatibile cu Intel), face să se
menţină încă utilizarea cu precădere a acestor tipuri de microprocesoare.
Dacă cineva doreşte să achiziţioneze un calculator bazat pe un
microprocesor RISC, nu va putea beneficia de programele scrise pentru
calculatoarele PC, deoarece majoritatea acestui soft este special proiectat
pentru calculatoare PC.

25
Sisteme de calcul şi operare

Dacă softul pentru PC va dori să ruleze pe un procesor RISC, vor


apărea numeroase probleme, printre care:
 aplicaţiile au fost compilate pentru a lucra doar cu setul de
instrucţiuni x86;
 software-ul se aşteaptă să sesizeze un mediu de operare
Microsoft sub care să lucreze;
 multe aplicaţii şi jocuri DOS mai vechi trebuie să găsească
mediul hard al calculatorului PC, lucrând de multe ori direct cu
resursele hard ale calculatorului.

Pentru prima problemă ar putea exista soluţia recompilării aplicaţiei


astfel încât să poată opera cu setul de instrucţiuni al microprocesorului
RISC. La ora actuală, multe aplicaţii sunt disponibile în mai multe versiuni,
fiind compilate pentru platforme RISC, dar numărul acestora este totuşi
destul de redus şi există reţineri în privinţa firmelor de a elabora mai multe
versiuni (din acest punct de vedere) ale aceleiaşi aplicaţii. Reţinerile acestor
firme sunt întemeiate, deoarece piaţa este prea mică pentru ca ele să-şi
permite o asemenea dezvoltare şi, în al doilea rând, este greu de menţinut un
nivel apropiat pentru două sau mai multe versiuni de program.
În concluzie, apare o problemă cu dublu sens: nu există multe
calculatoare RISC pentru că nu există soft pentru ele şi nu există soft pentru
că nu există calculatoare RISC!
Pentru a doua problemă, se părea că firma Microsoft a rezolvat
problema o dată cu apariţia sistemului de operare NT care oferă portabilitate
pentru procesoarele MIPS şi ALPHA de tip RISC. Inexistenţa unui sistem
de operare de la Microsoft este o piedică esenţială în calea pătrunderii
procesoarelor RISC pe piaţa calculatoarelor personale.
Dacă pentru primele două probleme prezentate mai sus există soluţii
de rezolvare, pentru cea de-a treia nu există o soluţie tehnică generală, din
moment ce aplicaţiile scrise pentru un mediu hardware specific unui PC nu
vor putea rula pe procesoare RISC. În acest sens, singura soluţie viabilă este
practic rescrierea aplicaţiei pentru noua platformă, soluţie care nu se impune
din aceleaşi considerente prezentate mai înainte: numărul de staţii de lucru
ce folosesc microprocesoare RISC este încă redus.

Tipuri de procesoare RISC


Cele mai importante arhitecturi ce conţin procesoare RISC sunt:
ƒ MIPS, folosite în staţii de lucru Silicon Graphics;
ƒ SPARC, folosite în staţii de lucru Sun;
ƒ PA-RISC, folosite în staţii de lucru Hewlett-Packard;
ƒ PowerPC, folosite în calculatoare IBM PC şi Apple Macintosh;

26
Introducere

ƒ Alpha, folosite în staţii de lucru DEC (Digital Equipment


Corporation).

Competiţia pe piaţa microprocesoarelor RISC este foarte mare; în


mod continuu apar pe piaţă noi versiuni de procesoare. Toate aceste
arhitecturi evoluează însă în aceleaşi direcţii:
♦ implementare pe 64 de biţi;
♦ unităţi performante de execuţie;
♦ noi instrucţiuni pentru aplicaţii multimedia şi DSP (Digital
Signal Processing);
♦ frecvenţe de ceas intern foarte mari, superioare procesoarelor
CISC;
♦ implementări superscalare, putând să execute mai multe
instrucţiuni simultan;
♦ unităţi de operare în virgulă mobilă foarte puternice;
♦ memoria cache integrată de dimensiuni mari.

Procesoarele din seria MIPS (Silicon Graphics)


La originea acestor microprocesoare se află nişte proiecte
experimentale iniţiate la Universitatea din Stanford la începutul anilor ’80.
Traducerea termenului „MIPS” ne oferă o imagine relevantă asupra
filozofiei proiectului respectiv: MIPS provine de la Microprocessor without
Interlocking Pipeline Stages (Microprocesor fără stadii în conductă
blocate).
Obiectivul proiectanţilor MIPS a fost acela de a produce un procesor
RISC cu funcţionare în conductă şi inter-blocare pipeline controlate
software. Dacă o instrucţiune necesită două cicluri de ceas pentru a fi
executată, este de datoria compilatorului să programeze o instrucţiune de
tipul NOP (No OPeration) următoare. În acest mod singura modalitate prin
care se întrerupe funcţionarea normală în timpul execuţiei sunt aceste
instrucţiuni NOP controlate software (de compilator), în timp ce partea
hardware nu va bloca de fiecare dată execuţia pipeline. Această
caracteristică reduce cantitatea de componente hardware necesare pentru
manufacturarea procesorului.
Un produs MIPS din anul 1995 a fost MIPS T5 (redenumit apoi
R1000), cu o arhitectură superscalară pe 64 de biţi nouă, compatibilă cu
cipurile mai vechi Rxxx. Arhitectura scalară dispunea de 5 canale,
64 de registre interne şi o memorie cache internă de 32 KB, utilizându-se o
tehnologie de fabricaţie de 0,35 de microni.

27
Sisteme de calcul şi operare

Unele concepte deosebit de interesante cu privire la acest aspect au


fost studiate la Universitatea Stanford cu MIPS-X, un produs derivat al
arhitecturii MIPS ce avea o serie de caracteristici în plus. Multe dintre
acestea au fost mai târziu introduse în procesorul comercial MIPS.
Microprocesorul MIPS R2000 este un procesor pe 32 de biţi cu o memorie
cache de nivel 2, diferenţiată pentru instrucţiuni şi date. O memorie tampon
de scriere ajută la manipularea tuturor datelor stocate în memorie. Produsul
R2000 foloseşte o magistrală comună pentru memoria cache externă – o
arhitectură non Harvard (arhitectura Harvard presupune utilizarea de
magistrale diferite pentru instrucţiuni şi pentru date).
Construcţia acestui procesor înglobează o arhitectură radicală de
coprocesor. Unitatea de control a întregilor din UCP este separată de aşa
numitul „Coprocesor de control al sistemului” (System Control
Coprocessor), care este, de fapt, un controlor de memorie cache integrat
direct pe cip UCP şi unitatea de calcul în virgulă mobilă comunică prin
intermediul memoriei. Microprocesorul înglobează 32 de regiştri generali şi
16 regiştri (pe 64 de biţi) separaţi pentru calcule în virgulă mobilă.
Coprocesorul pentru calculul în virgulă mobilă conţine o unitate pentru
adunare, una pentru împărţire şi una pentru înmulţire. Nu există biţi de
testare a condiţiilor (indicatori de stare, sau flags, cum sunt denumiţi la
Intel). Programarea regiştrilor este controlată software.

Procesoarele din seria SPARC (Sun Microsystems)


Procesorul SPARC (Scalable Processor ARChitecture) se poate
„lăuda” ca fiind descendentul unei familii ilustre de microprocesoare, aceea
a procesoarelor RISC-I şi RISC-II dezvoltate la Universitatea din Berkeley
în anii 80. Această arhitectură a fost definită de firma Sun Microsystems şi
actualizată în permanenţă. Firma Texas Instruments a fost unul dintre
principalii furnizori de cipuri ca urmare a unui contract cu firma Sun, unul
dintre produsele anului 1995 fiind UltraSparc, cu o arhitectură pe 64 de biţi
şi o implementare superscalară cu 4 canale.
O caracteristică importantă a arhitecturii este adăugarea de noi
instrucţiuni pentru accelerarea graficii şi a prelucrărilor video; astfel pot fi
prelucraţi până la 8 pixeli într-o singură instrucţiune sau ciclu de ceas. Dacă,
în general, arhitectura acestui procesor este o arhitectură de tip RISC, există
două “curiozităţi” ale acesteia, care îl disting în familia procesoarelor RISC.
În primul rând, SPARC utilizează conceptul de „ferestre de registre”
(register windows) în scopul eliminării operaţiilor de încărcare şi stocare în
stivă ce apar la apelurile de proceduri. Acest lucru putea fi însă obţinut şi
prin programarea regiştrilor în momentul compilării. Echipa de la Berkeley
a utilizat însă aceste ferestre de registre deoarece nu avea la momentul

28
Introducere

respectiv expertiza (pentru crearea compilatorului) necesară pentru a


implementa alocarea interprocedurală a regiştrilor cu ajutorul software-ului
(compilatorului).
În al doilea rând, o altă curiozitate a arhitecturii SPARC o reprezintă
existenţa instrucţiunilor „etichetate” (tagged instructions). Se ştie că limbaje
de programare declarative de genul Lisp sau Prolog folosesc tipuri de date
etichetate. Arhitectura SPARC utilizează instrucţiuni ce pot manipula cu
uşurinţă o etichetă (în engleză tag) pe 2 biţi în fiecare cuvânt de memorie.
Această caracteristică putea mări viteza de execuţie a unui program Lisp cu
câteva procente.
Procesoarele UltraSPARC IV sunt procesoare ce suportă două fire
de execuţie (chip multithreading) pe procesor, bazate pe două stadii pipeline
UltraSPARC III. Alte caracteristici:
Þ 66 milioane de tranzistori pe cip;
Þ pipeline cu 14 stadii;
Þ frecvenţa de ceas între 1.05-1.2 GHz;
Þ L1 cache de 64KB pentru date şi 32 KB pentru instrucţiuni,
2KB Write, 2KB Pre-fetch;
Þ L2 cache de 16 MB;
Þ scalabilitate multiprocesor cu suport arhitectural până la 1000 de
procesoare pe un singur sistem;
Þ controller-ul de memorie este capabil să adreseze până la 16 GB
de memorie principală la o viteză de 2,4 GB/s.

Sun Microsystems Inc. este cel mai titrat producător de procesoare


ce utilizează mulţimea de instrucţiuni Sparc, dar nu este singurul producător.
Alt producător important este Fujitsu, ale cărui noi procesoare Sparc64 VI
cu nume de cod Olympus vor veni pe piaţă în 2005, la viteze de peste
2,4 GHz, manufacturaţi în tehnologie de 90 de nm (nanometri). Performanţa
estimată a acestui procesor este de 4 ori mai mare decât a generaţiei actuale
de la Fujitsu, Sparc64 V, ce rulează la 1,35 GHz.

Procesorul PA-RISC (Hewlett Packard)


Arhitectura PA-RISC (Precision Architecture) a firmei
Hewlett-Packard este destinată staţiilor de lucru performante, adoptând o
linie nouă şi modernă. Performanţele de operare în virgulă mobilă ale
acesteia sunt excelente faţă de majoritatea competitorilor. S-au inclus noi
instrucţiuni pentru funcţii de accelerare a graficii şi a procesărilor video,
similare celor de la SPARC. Numărul de formate de instrucţiuni este mai
mare decât la orice alt procesor RISC: sunt prezente nu mai puţin de
12 combinaţii diferite de opcode (coduri de operaţie) şi regiştri sau câmpuri

29
Sisteme de calcul şi operare

pentru constante într-un singur cuvânt (spre comparaţie, procesoarele


SPARC şi MIPS pot utiliza doar 4 combinaţii diferite).
Există în mod normal două moduri diferite de adresare, precum şi
încă două moduri adiţionale ce oferă suport pentru operaţiile ce au loc
înainte sau după modificarea unui registru index. Acest lucru oferă
posibilitatea utilizării în total a patru modalităţi de adresare.
Arhitectura PA (Precision Architecture) posedă coduri de operaţii
(opcode) pe 6 biţi. Acest lucru reduce numărul de instrucţiuni posibile la
mai puţin de 64 (26), deşi anumite instrucţiuni au mai multe variante,
folosind biţi speciali în cadrul formatului instrucţiunii. Numărul de regiştri
generali este de 32, completaţi cu încă 32 de regiştri cu caracter special,
utilizaţi pentru administrarea întreruperilor, a nivelurilor de protecţie, etc.
Caracteristica atipică a acestui procesor este aceea că implementarea
execuţiei în pipeline se face pe doar 3 nivele, iar funcţionarea optimă a
conductei necesită programare software.

Procesoarele PowerPC (IBM şi Motorola)


Susţinut de firme puternice, ca IBM, Apple şi Motorola, PowerPC
este concurentul principal al microprocesoarelor bazate pe arhitectura x86.
Principalul avantaj constă în posibilitatea rulării software-ului Apple, PC şi
Unix. Folosind tehnicile de recompilare binară, integrând şi un emulator
rapid pentru x86, procesorul PowerPC este capabil să utilizeze majoritatea
sistemelor de operare şi a software-ului într-un singur sistem.

Procesoarele Alpha – DEC (Digital)


Aceste procesoare se deosebesc de celelalte procesoare RISC prin
frecvenţele foarte mari ale ceasului intern, arhitectura modernă pe 64 de biţi
a acestora fiind una dintre cele mai performante de pe piaţă.

Concluzii şi viitorul procesoarelor RISC


Fără îndoială, de la apariţie şi până în prezent, microprocesoarele
RISC au avut performanţe superioare celor bazate pe arhitectura CISC. În
ultimii ani însă, prin apariţia microprocesoarelor Intel (şi a produselor clonă)
ce au preluat multe dintre conceptele tehnologiei clasice RISC, diferenţa
dintre performanţele celor două tipuri arhitecturale s-a micşorat vizibil,
ajungându-se ca cele mai noi procesoare Pentium III şi Pentium 4 să
concureze cu succes procesoarele RISC.
Se presupune că nu se va renunţa foarte uşor în viitor la vechea
arhitectură CISC (care are însă are şi va prelua în continuare dintre
beneficiile RISC), ajungându-se poate la situaţia în care vom putea cu greu
să spunem care sunt deosebirile dintre cele două tipuri arhitecturale ce erau

30
Introducere

atât de diferite în trecut. Următoarele microprocesoare x86, precum cele


bazate pe nucleele Mustang şi Sledgehammer de la AMD sau Pentium 4,
Foster şi Itanium (ultimul pe 64 de biţi) de la Intel vor reduce din ce în ce
mai mult „gaura” ce desparte cele două variante tehnologice.

1.3.4 Memoria principală

Memoria principală are funcţia de a stoca instrucţiunile programelor


şi datele asupra cărora acţionează aceste instrucţiuni. De remarcat, un
program pentru a se executa trebuie să se găsească în memoria principală.
Fazele execuţiei unui program sunt:
ƒ se selectează o instrucţiune din memoria principală;
ƒ se încarcă instrucţiunea în microprocesor, are loc decodificarea ei
pentru stabilirea operaţiei care se va executa şi identificarea
operanzilor;
ƒ se execută instrucţiunea;
ƒ se repetă aceste etape în mod secvenţial, pentru fiecare
instrucţiune a programului.

Memoria are la bază un ansamblu de registre de aceeaşi mărime (o


matrice de regiştri). Succesiunea de poziţii binare ce este recunoscută şi
adresată individual se numeşte locaţie de memorie sau cuvânt de memorie.
Lungimea unui cuvânt de memorie este, în general, un multiplu de 8 biţi
(1 byte), putând avea: 8 biţi, 16 biţi, 32 biţi, 64 biţi, în funcţie de modelul
calculatorului.
Fiecare locaţie de memorie este identificată prin adresa sa.
Procesorul selectează o anumită locaţie din memorie prin plasarea adresei
sale pe magistrala de adrese.
Numărul total al locaţiilor adresabile care pot fi accesate de procesor
reprezintă capacitatea memoriei sau spaţiul de adresare fizică.

1.3.5 Echipamentele periferice


Echipamentele periferice sunt dispozitivele cuplate sau având
posibilitatea de a fi cuplate la un calculator. După funcţia de bază, acestea se
pot clasifica în:
¬ Echipamente de intrare - având rolul de a capta şi colecta
informaţiile, în forma lor uzuală, pentru a fi prelucrate în
calculator. Din această categorie amintim: tastatura, mouse-ul,
creionul optic, tableta digitală, scanner-ul, cititorul de coduri

31
Sisteme de calcul şi operare

de bare (un scanner foarte simplu), cititorul de cartele


magnetice/perforate, captatorul de sunete (microfonul),
terminalul inteligent (terminalul pentru tranzacţii financiare) etc.
¬ Echipamentele de ieşire - au rolul de a genera informaţia
prelucrată în calculator într-o formă direct utilizabilă. Redarea în
exterior a informaţiei se poate obţine în mod vizual, prin
echipamentele periferice: ecran (de tip CRT - Cathode Ray Tube
sau LCD - Liquid Crystal Display, monitoare monocrom sau
color; CGA - Color Graphic Adapters, EGA - Enhanced Graphics
Adapters; VGA - Video Graphic Adapter; XGA, XGA/HDA;
VESA etc.), imprimantă (matricială, cu jet de cerneală, termică,
laser), trasor sau sonor.
¬ Echipamente de memorare sau echipamente de intrare/ieşire -
au rolul de a stoca o mare cantitate de informaţie, pentru un timp
nedeterminat, în vederea utilizării ulterioare. Din această grupă
de periferice fac parte unităţile de: discuri/benzi magnetice şi
discuri optice (Compact Disk-Read Only Memory, CD-ROM;
Write Once, Read Many, WORM).
¬ Echipamente de transport la distanţă au rolul de a oferi o
formă adecvată informaţiei ce se emite/recepţionează prin
suportul fizic (cablu electric, unde electro-magnetice, fibră
optică). În această categorie este inclus modemul.

1.3.6 Magistralele

Una dintre componentele esenţiale din structura unui sistem de


calcul, alături de unitatea centrală de prelucrare, este magistrala („bus” în
engleză). O magistrală sau un set de magistrale are rolul de a conecta
procesorul la memoria principală şi la echipamentele periferice. Este bine
ştiut că magistrala are o importanţă majoră în obţinerea unor performanţe
optime, ea asigurând viteza de lucru a sistemului de calcul. O magistrală
bine aleasă permite calculatorului să lucreze la parametrii procesorului.
Primele PC-uri aveau numai o magistrală (figura 1.15), care era
comună pentru unitatea centrală de prelucrare (UCP), memoria RAM
(Random Access Memory) şi componentele de I/E (Intrare/Ieşire).

32
Introducere

Figura 1.15 Magistrală unică

În anul 1987, firma Compaq a demonstrat pentru prima dată cum se


poate separa magistrala de sistem de magistrala de I/E, astfel încât acestea
să poată fi utilizate la parametri diferiţi. Această arhitectură multi-magistrală
a devenit standard industrial.

Magistralele unui sistem se pot diviza în (figura 1.16):


ƒ magistrala de sistem sau magistrala locală care conectează
unitatea centrală de prelucrare (UCP) cu memoria RAM;
ƒ magistralele de I/E care conectează UCP cu celelalte
componente.

Figura 1.16 Magistralele unui PC

Fizic, o magistrală este reprezentată printr-un ansamblu de trasee de pe


placa de circuit imprimat. Aceste trasee sunt utilizate pentru transmisia datelor,
adreselor de memorie sau a unor semnale de control. Din aceste considerente,
în literatura de specialitate se regăsesc denumirile de magistrala de date,
magistrala de adrese şi magistrala de control (figura 1.17).
Magistrala de adrese este utilizată de procesor pentru a selecta o
locaţie de memorie sau un anumit periferic.

33
Sisteme de calcul şi operare

Figura 1.17 Magistralele de date, adrese şi control

Magistrala de date este utilizată pentru transferul datelor între


procesor şi unitatea de memorie sau un dispozitiv periferic.
Magistrala de control oferă semnalele pentru sincronizarea fluxului
de date între procesor şi unitatea de memorie sau un dispozitiv periferic.

O arhitectură de magistrală reprezintă modul în care componentele


unui sistem de calcul, în particular ale unui PC, sunt interconectate.
Principalele caracteristici care trebuie luate în calcul la alegerea unei
arhitecturi de magistrală sunt:
” să asigure performanţe maxime microprocesorului;
” să fie operaţională pe întreaga durată de viaţă a sistemului;
” să permită eventuala modernizare a microprocesorului;
” să permită includerea pe sistem a celor mai noi aplicaţii:
multimedia, transfer de informaţie etc.

Magistrala locală asigură comunicarea între UCP şi memoria RAM,


eventual printr-o memorie de tip cache. Ea se află pe placa de bază şi este
proiectată în aşa fel încât să corespundă specificaţiilor microprocesorului.
Tehnologia microprocesorului determină caracteristicile magistralei de
sistem. În modelul iniţial de PC, magistrala de sistem funcţiona pe 8 biţi şi
putea transfera aproximativ 106 octeţi/secundă. Acum, pentru a putea face
faţă unui procesor Pentium, este necesară o magistrală pe 64 biţi, cu o viteză

34
Introducere

de transfer a datelor de 5*108 octeţi/secundă. În tabelele 1.1 şi 1.2 sunt


prezentate diferite microprocesoare şi magistralele lor de sistem.

Caracteristici ale magistralei de sistem


Tabelul 1.1
Lăţimea magistralei Viteza pe magistrala
UCP mai vechi
de sistem de sistem
8088 8 biţi 4.77 MHz
8086 16 biţi 8 MHz
80286-12 16 biţi 12 MHz
80386SX-16 16 biţi 16 MHz
80486SX-25 32 biţi 25 MHz
80486DX-33 32 biţi 33 MHz
80486DX2-50 32 biţi 25 MHz
80486DX-50 32 biţi 50 MHz
80486DX2-66 32 biţi 33 MHz
80486DX4-120 32 biţi 40 MHz
5X86-133 32 biţi 33 MHz
Intel P60 64 biţi 60 MHz
Intel P100 64 biţi 66 MHz
Cyrix 6X86 P133+ 64 biţi 55 MHz
AMD K5-133 64 biţi 66 MHz
Intel P150 64 biţi 60 MHz
Intel P166 64 biţi 66 MHz
Cyrix 6X86 P166+ 64 biţi 66 MHz
Pentium Pro 200 64 biţi 66 MHz
Cyrix 6X86 P200+ 64 biţi 75 MHz
Pentium II 64 biţi 66 MHz

35
Sisteme de calcul şi operare

Caracteristici ale magistralei de sistem şi ale UCP


Tabelul 1.2
Viteza pe magistrala
Microprocesor Tip chipset Viteza UCP
sistem
Intel Pentium II 82440BX82440GX 100 MHz 350, 400, 450 MHz
AMD K6-2 Via MVP3ALi 100 MHz
250, 300, 400 MHz
Aladdin V
Intel Pentium 82450NX 100 MHz 450, 500 MHz
Xeon
Intel Pentium III 82440JX 133 MHz 533, 665 MHz
AMD K7 200 MHz 600, 800 MHz

Magistralele de I/E conectează UCP la toate celelalte componente


ale sistemului şi reprezintă extensii ale magistralei locale. Principalele tipuri
de magistrale de I/E sunt: PC AT, ISA, EISA, IBM Micro Channel, VESA
Local Bus, PCI, SCSI, USB.
Primul PC produs de firma IBM (proiect demarat în 1980) folosea
un procesor Intel 8088. Arhitectura magistralei de sistem, cât şi cea de
extensie reprezentau o continuitate a magistralei locale a procesorului.
Pentru realizarea transferurilor de acces direct la memorie (DMA - Direct
Memory Access), întreruperilor şi funcţiilor de ceas/numărător, erau
prevăzute cipuri speciale. Arhitectura era simplă şi prezenta o mare
disponibilitate de extensie. Drept urmare, plăcile adaptoare proiectate pentru
primul PC pot fi utilizate pe calculatoarele actuale, dotate cu procesor
Pentium şi magistrală PCI. Sistemul suporta 1 sau 2 unităţi de dischete de
160 K şi posibilitatea de a conecta încă două unităţi de dischete externe.
Magistrala lucra pe 8 biţi.
În 1984 IBM lansează pe piaţă sistemul PC-AT, având
caracteristicile:
® procesor Intel 80286 (pe 16 biţi);
® adresarea pe 24 biţi;
® 16 MB memorie RAM;
® posibilitatea de lucru în mod protejat;
® frecvenţa ceasului de 6 MHz, cu posibilitatea de creştere la 8 MHz.

Noua magistrală pe 16 biţi, cu adresare pe 24 biţi, permitea utilizarea


vechilor adaptoare fără modificări hardware sau software, datorită păstrării
magistralei pe 8 biţi şi a conectorilor de extensie. Varianta PC-AT oferea
trei canale DMA suplimentare şi încă 7 nivele de întrerupere. În modelul

36
Introducere

original PC-AT, magistrala utiliza aceeaşi frecvenţă de ceas ca a


microprocesorului. Ulterior, în multe sisteme care au apărut pe piaţă,
magistralele de extensie lucrau la 10 sau 12 MHz. Pentru a rezolva
problemele determinate de diferenţa de viteză între procesor şi magistrală au
fost create circuite logice ce asigură o funcţionare asincronă (prin care se
acceptă ca viteza procesorului să fie independentă de cea a magistralei).
Arhitectura ISA (Industry Standard Architecture) reprezintă un
standard de „facto”, publicat de Intel, cu specificaţiile magistralei PC-AT.
Standardizarea nu a fost facilitată, deoarece IBM nu a făcut cunoscute
caracteristicile magistralei sale. Arhitectura standard a microcalculatoarelor
(figura 1.18) realizate până la sfârşitul anului 1992 cuprindea o magistrală
locală capabilă să asigure o rată a transferului de până la 132 Mocteţi/s
(MBps). Magistrala locală conecta unitatea centrală de componentele care
aveau rolul de control şi nu se substituia magistralelor existente.

Figura 1.18 Arhitectura standard a unui microcalculator

Concurenţii firmei IBM, grupul celor nouă: AST, Compaq, Epson,


HP, Olivetti, NEC, Tandy, Zenith şi Wyse, şi-au unit forţele pentru a
prezenta o arhitectură diferită: EISA (Extended Industry Standard
Architecture) ce are avantajul de a rămâne compatibilă cu arhitectura ISA pe
16 biţi. Magistrala EISA are un format pe 32 biţi, atât pentru adrese cât şi
pentru date, permite accesul la 4 GB de memorie internă, iar rata
transferului este de 33 MB/sec.

37
Sisteme de calcul şi operare

În anul 1987 IBM încearcă să recucerească controlul asupra


arhitecturii sistemelor PC, pierdut odată cu publicarea detaliilor tehnice ISA
şi lansează pe piaţă produsele sale din familia PS/2 (Personal System/2) ce
au la bază arhitectura MCA (Micro Channel Architecture).
Arhitectura MCA este complexă, deoarece exploatează puterea
microprocesoarelor pe 32 biţi (80386, 80486 Intel). Magistrala de adrese
este de asemenea pe 32 biţi. Arhitectura este optimizată prin prezenţa a
8 canale DMA şi posibilitatea de a conecta până la 16 echipamente
periferice simultan. Magistrala MCA este asincronă şi conţine un program
de identificare a plăcilor de extensie. Rata transferului de date 160 MB/sec.
Există o magistrală MCA în format pe 16 biţi pentru calculatoarele dotate cu
microprocesoare 80286 Intel şi se mai găsesc plăci video pe 24 biţi adaptate
la această arhitectură.
O dată cu crearea de către Microsoft a interfeţei grafice Windows,
este necesară o suprafaţă mai mare a ecranului precum şi o rezoluţie mai
bună. Adaptoarele VGA ataşate magistralei ISA erau depăşite. Soluţia a
constat în conectarea adaptorului video şi a memoriei asociate pe magistrala
locală a sistemului. VESA a încercat să standardizeze monitoarele PC
(diagonala ecranului, rata de împrospătare a imaginilor sau timpul de afişare
pentru o imagine) magistrala şi conectorii prin care se ataşează
echipamentele la magistrala locală a procesorului. Standardul VESA a ales
ca etalon magistrala locală a microprocesorului Intel 80486.
Magistrala VESA (Video Electronics Standard Association) acceptă
echipamente pe 32 şi 64 biţi, putând lucra la frecvenţe mai mari 33 MHz în
cazul formatului pe 32 biţi.
Magistrala PCI (Peripheral Component Interconect) a fost
dezvoltată de Intel în 1993, la concurenţă cu standardul VESA. Versiunea
1.0 acceptă 32 biţi la 33 Mhz, ceea ce permite să se atingă o rată de transfer
de 132 MB/s, ca şi în cazul magistralei VESA.
Magistrala PCI (figura 1.19) prezintă marele avantaj de a fi total
independentă de procesor şi dispune de propria memorie tampon.
Arhitectura PCI poate fi combinată cu o altă arhitectură de magistrală, cum
ar fi ISA sau EISA. PCI este autoconfigurabilă, plăcile conectate fiind
automat detectate şi utilizate în mod optim (Plug and Play). În specificaţia
2.0 PCI permite accesul pe 64 de biţi, pentru a se putea utiliza cu
microprocesorul Intel Pentium.
Magistrala SCSI (Small Computer System Interface) suportă diverse
periferice. Viteza de transfer variază de la 4 Mocteţi/s la 80 Mocteţi/s.
USB (Universal Serial Bus) este o magistrală serie apărută în 1996 şi
care a devenit succesoarea magistralelor tradiţionale. Ea permite utilizarea

38
Introducere

a 127 de periferice conectate la un singur canal. În plus, permite


recunoaşterea automată a perifericelor conectate pe canal şi determinarea
driver-ului necesar în funcţionare. Pe o astfel de magistrală, informaţiile
codificate în NRZI (Non Return to Zero Inverted) pot circula la un debit
adaptat perifericului (variază de la 1.5 la 12 Mocteţi/s pe un cablu torsadat).
USB utilizează principiile de funcţionare similare celor din reţelele locale.
În tabelul 1.3 sunt ilustrate caracteristicile diferitelor tipuri de magistrale
de I/E.

Magistrale de I/E
Tabelul 1.3
Debit
An Lăţime
Magistrala de I/E Viteza magistrală maxim
apariţie magistrală
(teoretic)
Sincronă cu UCP:
PC şi XT 1980-82 8 biţi 4-6 MBps
4.77 şi 6 MHz
ISA (AT) 1984 16 biţi Asincronă: 8 MHz 8 MBps
Magistrală simplă
MCA 1987 32 biţi Asincronă: 10 MHz 40 MBps
Magistrală inteligentă
realizată de IBM
EISA 1988 32 biţi Asincronă: 8 MHz 32 MBps
Magistrală inteligentă
pentru servere.
VL 1993 32 biţi Sincronă cu UCP: 100-160
Magistrală de mare 33, 40, 50 MHz MBps
viteză, utilizată în 486s
PCI 1993 32 biţi Asincronă: 33 MHz 132 MBps
Magistrală inteligentă de
mare viteză
USB 1997 Serială 1.2 MBps
Magistrală inteligentă,
simplă şi modernă
FireWire (IEEE1394) 1999 Serială 80 MBps
Magistrală inteligentă de
mare viteză pentru video,
memorare etc.

39
Sisteme de calcul şi operare

Figura 1.19 Arhitectura tipică PCI a unui sistem


cu microprocesor Pentium II

1.4 Arhitecturi paralele

Viitorul arhitecturilor de calculator este în strânsă concordanţă cu


noţiunea de paralelism. Acest principiu arhitectural permite tratarea în
paralel a informaţiei ce presupune execuţia evenimentelor concurente.
Aceste evenimente se pot regăsi la nivel de program, de procedură,
instrucţiune sau în interiorul unei instrucţiuni. Ca o definiţie foarte simplă,
un calculator paralel reprezintă o colecţie de procesoare interconectate între
ele pentru a permite coordonarea activităţilor acestora şi schimbul de date.
Calculatoarele paralele necesită algoritmi paraleli, adică algoritmi ce pot fi
implementaţi pe calculatoare paralele.
La nivelul cel mai înalt, tratarea paralelă permite execuţia simultană
a mai multor programe independente. Se utilizează în sistemele mari de tip
mainframe şi se tratează la nivelul sistemului de operare (multiprograme,
timp partajat, multiprelucrare).

40
Introducere

Tratarea paralelă a instrucţiunilor independente utilizează tehnica de


vectorizare. Se tratează la nivel de sistem (vectorial), de limbaj de
programare (Fortran vectorial) sau la nivel de algoritm.
Tehnica denumită pipeline permite introducerea paralelismului la
nivel de instrucţiune. În acest sens, o instrucţiune este împărţită în mai multe
etape succesive şi se execută în acelaşi timp etape diferite ale mai multor
instrucţiuni.
Arhitecturile monoprocesor au, în general, o structură de bază
comună: o memorie principală, procesorul central şi un ansamblu de
echipamente periferice. Multe calculatoare monoprocesor fac apel la tehnica
tratării paralele, dar există limitări. Paralelismul se poate realiza:
& între mai multe unităţi funcţioanale;
& între UAL paralele;
& prin multiprogramare şi timp partajat.

Input/Output UC I UP

D
Memorie

Figura 1.20 Arhitectura SISD

Condiţiile paralelismului trebuie să ţină seama de restricţiile inerente


în tratarea informaţiei (algoritmare) şi de posibilităţile oferite de
componentele fizice (multiplicarea structurilor de execuţie). Creşterea
numărului de procesoare în acelaşi calculator, modifică structura de bază a
acestuia. Problemele de acces la memorie devin foarte importante, pentru a
putea transmite datele în ritmul de tratare al procesoarelor. De asemenea,
problemele de comunicare între procesoare sunt esenţiale.
Deoarece procesul principal într-un calculator constă din execuţia
unei succesiuni de instrucţiuni asupra unui ansamblu de date, arhitecturile
paralele pot fi clasificate după fluxurile de instrucţiuni şi date (după Flynn)
astfel:
ƒ SISD - Single Instruction (Stream), Single Data (Stream);
ƒ SIMD - Single Instruction (Stream), Multiple Data (Stream);
ƒ MISD - Multiple Instruction (Stream), Single Data (Stream);
ƒ MIMD - Multiple Instruction (Stream), Multiple Data (Stream).

41
Sisteme de calcul şi operare

SISD (fluxuri unice pentru instrucţiuni şi date – figura 1.20)


reprezintă structura de bază a unei maşini secvenţiale (numită maşină
Von Neumann). Exemple: IBM 370, DEC VAX, SUN, IBM PC, Macintosh.
SIMD (flux unic de instrucţiuni, flux multiplu de date) (fig. 1.21)
conţine mai multe unităţi de prelucrare ce sunt supravegheate de o singură
unitate de control. Toate unităţile de tratare primesc acceaşi instrucţiune
(sau acelaşi program în cazul arhitecturii SPMD (Single Program, Multiple
Data) transmisă prin unitatea de control, dar operează pe ansambluri de date
distincte.
Fiecare unitate de prelucrare Pi, execută aceeaşi instrucţiune în
acelaşi moment, obţinându-se o funcţionare sincronă a procesoarelor.
Memoria poate fi împărţită în mai multe module, Mj. În această situaţie,
accesul unităţilor de prelucrare la diferitele module de memorie se face
printr-o reţea de interconexiune. Această arhitectură include şi procesoarele
vectoriale şi reţelele sistolice. Exemple: CRAY-1, DAP CM-1, WARP,
CM-2, ILLIAC IV.

Figura 1.21 Arhitectura SIMD


MIMD (fluxuri multiple de instrucţiuni, fluxuri multiple de date),
permite realizarea unui paralelism explicit. Exemple de astfel de
calculatoare sunt: transputerele, Supernode, DADO, N-cube, Ultracomputer,
Butterfly, Alliant, Sequent Balance, CRAY X-MP.
După cum memoria centrală este comună pentru mai multe procesoare
sau mai multe unităţi centrale (procesor + memorie centrală proprie) ce
comunică între ele prin mesaje, se poate spune că structura este puternic
cuplată, MIMD cu memorie partajată (figura 1.22) sau slab cuplată, MIMD
cu memorie distribuită (figura 1.23).

42
Introducere

Figura 1.22 Arhitectura MIMD cu memorie partajată

În primul model, procesoarele execută sarcinile prin partajarea


datelor din memoria comună, ce este divizată în module (Mi). În al doilea
model, procesoarele execută sarcinile schimbând mesaje. În ambele modele
fiecare procesor (Pi) posedă propria unitate de control (UCi).

Figura 1.23 Arhitectura MIMD cu memorie distribuită

În viitor se prevede o revenire a constructorilor la arhitecturi mai puţin


complexe, având la bază procesoare care integrează o mai mare putere de
calcul şi facilităţi de comunicaţie. Alternativa „distribuită” constituie
varianta cea mai potrivită din punct de vedere economic.

43
2
SISTEME DE OPERARE

2.1 Noţiuni introductive

Nici un sistem de calcul, fie că acesta este centralizat sau distribuit,


nu poate fi utilizat fără un software adecvat. Prin intermediul software-ului
se poate memora, prelucra, regăsi şi distribui informaţia.
După rolul pe care îl deţine în utilizare, software-ul se divide în două mari
categorii:
ƒ software de sistem (programele de sistem);
ƒ software de aplicaţie (programele de aplicaţie).

Software-ul de sistem asigură funcţionarea sistemului de calcul.


Acesta include:
 Sistemul de operare;
 Translatoarele;
 Interpretoarele de comenzi;
 Editoare de texte şi legături;
 Programele de comunicaţie.

Software-ul de aplicaţie rezolvă problemele utilizatorilor. Exemple


de programe de aplicaţii sunt următoarele:
& Procesoare de texte;
& Programe pentru bazele de date;
& Navigatoare web;

44
Sisteme de calcul şi operare

& Instrumente pentru dezvoltare aplicaţii;


& Produsele pentru editarea de imagini;
& Sisteme bancare şi financiar-contabile;
& Aplicaţii pentru evidenţa bibliotecilor.

În timp, între evoluţia componentei hardware şi software a existat un


paralelism. Astfel, după 1980, odată cu apariţia primelor reţele de
calculatoare, au început să se folosească sistemele de operare în reţea sau
sistemele de operare distribuite, ca o completare a sistemelor de operare
centralizate (care mai sunt cunoscute ca sisteme de operare monoprocesor).
În mod tradiţional, sistemul de operare este constituit din trei
componente: kernel (denumit şi nucleu), shell (interpretor de comenzi) şi
sistemul de fişiere.
¾ Kernel-ul include funcţiile de nivel jos care vor fi încărcate în
memorie după execuţia procesului de iniţializare a calculatorului.
Un exemplu ar fi modulul care realizează controlul fluxului de
date între memorie şi unităţile de I/E. Pentru sistemul de operare
MS-DOS, nucleul este fişierul ascuns msdos.sys (ibmdos.com).
¾ Shell-ul sau interpretorul de comenzi asigură interfaţa între
utilizator şi calculator (spre exemplu, shell-ul sistemului de
operare MS-DOS este fişierul command.com).
¾ Sistemul de fişiere - reprezintă, pe scurt, modalitatea de
organizare a fişierelor pe disc. Există o diversitate de sisteme de
fişiere, de la FAT16, FAT32 şi NTFS pentru sistemul de operare
Windows până la NFS (Network File System), RFS (Remote File
Sharing) şi AFS (Andrew File System) pentru sisteme de operare
din familia UNIX.

Sistemul de operare este componenta software cea mai importantă a


unui calculator şi este constituit dintr-un ansamblu de programe. Sistemul de
operare, după iniţializarea încărcării sale în memoria principală (RAM -
Random Access Memory) prin programul denumit bootstrap, are rolul de a
administra resursele sistemului şi oferă baza pentru realizarea programelor
de aplicaţie.
Programele de aplicaţii pot utiliza sistemul de operare prin lansarea
cererilor de serviciu unei interfeţe de programare a aplicaţiilor (API -
Application Program Interface). API reprezintă setul de funcţii ce poate fi
folosit de programatori în vederea dezvoltării propriilor aplicaţii pentru un
anumit sistem de operare (de exemplu: Windows API). În plus, utilizatorii
pot interacţiona direct cu sistemul de operare printr-o interfaţă, reprezentată
printr-un limbaj de comenzi.

45
Sisteme de operare

Sistemele de operare pot fi clasificate, la modul foarte general,


astfel:
” Sisteme GUI (Graphical User Interface) – sunt sistemele de
operare care au capacitatea de a utiliza mouse-ul prin intermediul
unei interfeţe grafice. Următoarele sisteme de operare fac parte
din această categorie: MacOS, MacOSX, UNIX, Linux, Windows
95/98/Me, Windows NT/2000/XP.
” Sisteme multi-utilizator – aceste sisteme de operare permit mai
multor utilizatori să folosească sistemul în acelaşi timp şi să
execute programele în mod simultan. În această categorie putem
include sistemele de operare din familiile UNIX, Linux şi
Windows.
” Sisteme multi-procesoare – sunt sistemele de operare care permit
utilizarea mai multor procesoare. Sistemele de operare incluse în
această categorie sunt: UNIX, Linux, Windows NT/2000/XP.
” Sisteme multitasking♦ – sunt sistemele de operare care permit ca
procesele software multiple să fie încărcate şi rulate în acelaşi
timp. Sistemele de operare incluse în această categorie sunt:
UNIX, Linux, Windows 95/98/Me/NT/2000/XP.
” Sisteme multi-threading – sunt sistemele de operare care permit
diferitelor părţi ale programelor să fie executate concurenţial.
Sistemele de operare incluse în această categorie sunt: UNIX,
Linux, Windows 95/98/Me/NT/2000/XP.

Pe calculatoarele compatibile IBM-PC sistemele de operare care pot


fi folosite sunt: MS-DOS, Windows 3.1, Windows 95/98/Me, Windows
NT/2000/XP, OS2, variante de UNIX sau Linux.
Calculatoarele Macintosh utilizează sistemul de operare denumit
MacOS (sistemul MacOSX mai nou, bazat pe nucleu UNIX). Există şi o
versiune free a sistemului de operare Linux pentru calculatoarele Macintosh.
Sistemul de operare pentru staţiile HP, staţiile Silicon Graphics şi Sun este
UNIX.

♦ Prin multitasking se înţelege capacitatea unui sistem de operare de a executa mai multe
procese (task-uri) simultan. Acest lucru se realizează prin fenomenul „time slicing” ce
presupune că fiecare proces aflat în execuţie utilizează calculatorul pentru o perioadă
determinată de timp. Comportamentul multitasking este în opoziţie cu „task switching”,
caz în care fiecare proces aflat în execuţie trebuie să se termine pentru a se începe
execuţia unui nou proces.

46
Sisteme de calcul şi operare

Exemple de sisteme de operare

Tabelul 2.1

Sistemul
Data lansării Platforma Realizat de
de operare

LINUX 1991 Diverse Linus Torvald

MAC OS 8.x Apple Apple


Macintosh

MS-DOS IBM/PC Microsoft

System 7.x Apple Apple


Macintosh
UNIX Iniţial a fost lansat în 1969. Diverse Laboratoarele Bell
Windows 2000 Februarie 2000 IBM/PC Microsoft
Windows 3.x Windows 3.0 - 1990; IBM/PC Microsoft
Windows 3.1 - 1992;
Windows 3.11 - 1994.

Windows 95 August 1995 IBM/PC Microsoft

Windows 98 25 iunie 1998 IBM/PC Microsoft

Windows CE Windows CE 1.x - 1996; PDA Microsoft


Windows CE 2.x - 1997;
Windows CE 3.0 -1999;

Windows ME Windows ME - 2000 IBM/PC Microsoft

Windows NT Windows NT 3.1 - 1993 IBM/PC Microsoft

Windows XP Windows XP - 2001 IBM/PC Microsoft

Dacă se ţine seama de modul de execuţie a programelor


utilizatorilor, sistemele de operare pot fi grupate în:
Þ sisteme de operare cu prelucrarea pe loturi (batch processing);
Þ sisteme de operare time-sharing;
Þ sisteme de operare în timp real.

47
Sisteme de operare

În cazul sistemelor de operare cu prelucrarea pe loturi (batch


processing), programele utilizatorilor sunt reunite într-un punct central de
calcul, unde sunt grupate pe loturi pentru a fi plasate într-un fir de aşteptare
pe unul din sistemele pe care se vor executa.
Pe durata execuţiei programelor, utilizatorii nu au posibilitatea să
interacţioneze cu sistemul de calcul.
Sistemele de operare time-sharing oferă posibilitatea utilizatorilor
concurenţi să-şi partajeze în timp resursele fizice şi logice ale sistemului de
calcul (procesor, memorie, imprimantă, fişiere etc.) în vederea execuţiei
sarcinilor. Timpul de răspuns se poate reduce la câteva secunde.
Sistemele de operare în timp real au capacitatea să execute
programe/aplicaţii într-un timp stabilit anterior. Prelucrarea în timp real
implică menţinerea unei comunicaţii directe între utilizator şi sistemul de
calcul. Sistemele de operare în timp real sunt proiectate pentru aplicaţii
complexe, cum ar fi conducerea automată a unor procese de producţie,
sisteme bancare, sistemele de rezervare a locurilor pentru liniile aeriene etc.
Sistemele de operare care se utilizează în mod frecvent reprezintă
combinaţii ale tipurilor enumerate anterior.
Un sistem de operare realizează următoarele servicii pentru aplicaţii:
 În cazul sistemelor de operare multitasking, când programe
multiple pot fi încărcate în acelaşi timp, sistemul de operare
stabileşte ce aplicaţii se vor executa, în ce ordine şi cât timp se
alocă fiecărei aplicaţii înainte de a se da controlul alteia;
 Administrarea memoriei centrale, care este alocată diverselor
aplicaţii;
 Administrarea intrărilor şi ieşirilor de la/spre dispozitivele
conectate (hard disc, imprimantă, scanner);
 Emiterea de mesaje către aplicaţii sau utilizatorul interactiv (sau
operatorul de sistem) despre starea operaţională şi orice eroare
care poate apare;
 Pe calculatoarele care realizează prelucrări paralele, sistemul de
operare poate decide modul în care este divizat programul, astfel
încât să fie executat pe mai multe procesoare în acelaşi timp.
În general, există două modalităţi prin care programatorii pot accesa
facilităţile unui sistem de operare: linia de comandă şi apelurile de sistem.
Spre exemplu, în cazul sistemului de operare UNIX, o funcţie a sistemului
de operare poate fi accesată în două variante:
¾ Prin intermediul interpretorului de comenzi, program de tip
shell-script sau prin selecţia de pe desktop în cazul unui mediu
grafic;

48
Sisteme de calcul şi operare

¾ Prin apeluri de funcţii chemate din programe utilizator (folosind


interfaţa API - Application Programming Interface).
Una dintre proprietăţile de bază ale unui sistem de operare este aceea
de a asigura accesul utilizatorilor la resursele hardware şi software ale
calculatorului. De regulă, sistemul de operare presupune existenţa mai
multor nivele software dispuse logic sub forma unor cercuri concentrice, în
centru fiind partea hardware, urmând apoi driverele şi kernelul, interpretorul
de comenzi şi aplicaţiile utilizator. Partea centrală (nucleul sau kernelul)
care este în strânsă legătură cu componenta hardware este reprezentată de
driverele de echipamente, administratorul memoriei şi dispecerul de
procese. Utilizatorul are acces la sistem prin intermediul liniei de comandă
sau a mediului grafic cu ferestre.
O altă posibilitate de a da comenzi sistemului de operare este aceea a
utilizării unor fişiere de comenzi, denumite shell-script-uri în cazul
sistemului de operare UNIX şi fişiere „batch” în cazul sistemului de operare
DOS/Windows. Apariţia interfeţelor grafice a făcut ca activitatea de
introducere a comenzilor să devină mai prietenoasă, astfel încât introducerea
de la tastatură a comenzilor a fost completată de posibilitatea utilizării unui
mediu grafic cu ferestre, meniuri cu diferite variante de selecţie etc.
Selectarea unui simbol grafic (icon) cu ajutorul unui pointer de mouse este o
operaţie mai uşoară şi mai simplă decât aceea de a reţine o comandă de
genul ls sau dir, cp sau copy.
Totodată, pentru utilizatorii profesionişti şi pentru administratorii de
sisteme abilitatea de a scrie programe la linia de comandă şi de a crea
utilitare de tip shell-script sau batch este deosebit de importantă pentru
automatizarea unor sarcini uzuale şi pentru administrarea cu succes a
sistemului. Sistemul de operare UNIX oferă o serie întreagă de interpretoare
(Bourne Shell, C Shell, Korn Shell, Bourne Again Shell, TC Shell etc.) din
care utilizatorii îşi pot alege programul preferat.
În concluzie, sarcina principală a unui sistem de operare este aceea
de a face ca resursele hardware şi software ale calculatorului să fie cât mai
disponibile utilizatorului. Atunci când un calculator este partajat de mai
mulţi utilizatori sau de mai multe sarcini, rolul sistemului de operare este
acela de a aranja şi arbitra utilizarea resurselor calculatorului precum şi de a
oferi soluţii software prin intermediul programelor de aplicaţii. De multe ori
eficienţa de lucru a unui calculator depinde mai mult de „îndemânarea”
sistemului de operare de a administra sarcinile decât de puterea brută de
calcul a procesorului sau a unor dispozitive periferice.

49
Sisteme de operare

2.2 Modelul client-server

Modul de utilizare a calculatoarelor s-a schimbat dramatic odată cu


apariţia reţelelor de calculatoare ce oferă posibilitatea partajării şi a
schimbului de informaţii între mai multe calculatoare interconectate între
ele. Aproape toate calculatoarele personale actuale sunt interconectate
într-un fel sau altul la o reţea locală de calculatoare. Accesul la reţeaua de
calculatoare este oferit de către sistemul de operare.
Sistemul de operare care oferă un astfel de acces se numeşte sistem
de operare de reţea (NOS - Netwrork Operating System). Prima dezvoltare în
acest sens aparţine firmei Novell care a produs pentru prima dată sistemul
de acces la distanţă pentru PC-uri, în timp ce firma Sun Microsystems a
introdus pentru prima oară sistemul de fişiere NFS (Network File System)
pentru staţiile sale UNIX. Ambele permit utilizatorului accesul la fişiere
local sau la distanţă.
Iniţial, arhitectura de reţea dorea să ofere posibilitatea partajării unor
fişiere şi a unei imprimante de reţea, apoi s-a dorit redistribuirea procesării
pe mai multe calculatoare din acelaşi grup de lucru. În zilele noastre este un
lucru obişnuit ca programele să ruleze pe calculatoare separate şi să
coopereze strâns la procesarea şi afişarea informaţiei.
În spatele acestui concept stă modelul client-server, în care cel care
iniţiază cererea de procesare se numeşte „client” iar cel care onorează
această cerere se numeşte „server”. Spre exemplu, calculatorul local poate
avea rolul de a gestiona afişarea informaţiei pe ecranul local, în timp ce
serverul central (de regulă un calculator cu o putere mult mai mare de
procesare) oferă facilităţi de lucru cu baze de date, distribuţie de mesaje de
tip e-mail sau servicii Web.
Modelul client-server are o largă răspândire astăzi, pionier în
domeniu fiind sistemul X Window de la MIT (Massachussets Institute of
Technology). Acelaşi model funcţional se întâlneşte şi în cazul proceselor
(un proces este o instanţă a unui program aflat în execuţie) sistemului de
operare: procesele client încep dialogul prin trimiterea unei cereri unui
server corespunzător. Mesajul răspuns trimis de procesul server poate
conţine datele cerute sau pur şi simplu o înştiinţare a faptului că s-a pornit
activitatea cerută. În continuare o serie de alte cereri vor pleca de la procesul
client către procesul server. Sesiunea de comunicare este ilustrată în
figura 2.1.

50
Sisteme de calcul şi operare

CLIENT

Mesaj
cerere Răspuns Cerere Răspunsuri Cerere

SERVER

Figura 2.1 Comunicaţia de tip client-server între procese

2.3 Sistemul de operare MS-DOS

MS-DOS (MicroSoft Disk Operating System) – este un sistem de


operare monoutilizator, monotasking, monoprocesor, ce funcţionează pe
microcalculatoarele dotate cu procesoare Intel 8088 şi succesoarele acestuia
(80286, 80386, 80486, Pentium etc.). Acest sistem de operare a fost inclus
în alte sisteme de operare, cum ar fi: Windows 95/98/Me/NT/2000/XP şi
Novell NetWare.

2.3.1 Structura sistemului de operare MS-DOS

Sistemul de operare MS-DOS este structurat pe trei nivele:


& BIOS (Basic Input Output System);
& Nucleul;
& Shell-ul (COMMAND.COM).

Ultimele două componente reprezintă sistemul de operare propriu-zis şi


sunt realizate de firma Microsoft.

51
Sisteme de operare

În principal, componenta BIOS (sau componenta fizică) conţine un


set de programe care asigură:
® autotestarea la punerea sub tensiune, operaţie denumită POST
(Power-On Self Test). În acest test procesorul se autoverifică
şi apoi verifică timer-ul sistemului şi memoria RAM. În acest
moment, dacă găseşte vreo eroare, se trimite un mesaj către
monitor. Dacă se întâlnesc erori ce nu pot fi afişate pe monitor,
ele sunt semnalizate sub formă de sunete. După POST se
transmite un sunet şi pe acran apar mesaje de încărcare a
sistemului de operare odată ce bootstrap a înregistrat terminarea
activităţilor POST;
® suportul software pentru dispozitivele periferice standard - în
felul acesta izolează sistemul de operare de ceea ce este specific
hardware-ului (de exemplu, componenta BIOS conţine codurile
apelurilor de sistem pentru citirea şi scrierea de la adresele
absolute de pe disc, pentru citirea unui caracter de la tastatură sau
pentru afişarea unui caracter pe ecran);
® rutina pentru iniţializarea sistemului;
® programul de încărcare a primului sector logic de pe discul
flexibil sau hard disc.
La pornirea calculatorului se porneşte încărcătorul bootstrap care
este localizat în cipul BIOS. Acesta asigură testarea componentelor
hardware ale calculatorului şi încărcarea sistemului de operare în memoria
RAM.
Există două modalităţi de pornire a calculatorului:
ƒ Pornirea la rece (cold-boot);
ƒ Pornirea la cald (warm-boot), care se realizează prin apăsarea
tastelor Ctrl+Alt+Delete.

Pornirea la rece implică următorii paşi:


1) Sursa de curent – se iniţializează; chipset-ul plăcii de bază
aşteaptă pentru semnalul „Power Good” din partea sursei;
2) BIOS ROM – procesorul localizează programul de boot
(iniţializare) al BIOS-ului;
3) POST – BIOS-ul rulează secvenţa POST. Dacă apare vreo eroare
majoră, procesul de boot se opreşte;
4) Video – BIOS-ul caută programul BIOS pentru placa video şi îl
execută pentru iniţializarea plăcii video;
5) Alte dispozitive BIOS – BIOS-ul caută programe BIOS pentru
alte echipamente BIOS (hard disk) şi le execută;

52
Sisteme de calcul şi operare

6) Ecranul de pornire – BIOS-ul afişează ecranul de pornire;


7) Memoria – BIOS-ul testează alte componente ale calculatorului
şi efectuează un test de memorie;
8) Hardware – BIOS-ul testează sistemul pentru a găsi
componentele hardware (de exemplu hard-discuri);
9) Plug and Play – Configurarea dispozitivelor Plug and Play;
10) Ecranul de configurare – BIOS-ul afişează un sumar al
configuraţiei hardware a sistemului;
11) Discul de boot – BIOS-ul caută un disc de boot pe baza
secvenţei de iniţializare;
12) Boot record – BIOS-ul caută primul dispozitiv de boot din
secvenţă pentru MBR (Master Boot Record) de pe un disc hard
sau VBS (Volume Boot Sector) de pe o dischetă floppy;
13) SO – BIOS-ul începe să iniţializeze sistemul de operare, moment
în care acesta preia controlul de la BIOS;
14) Eroare – dacă BIOS-ul nu găseşte un dispozitiv de iniţializare în
cadrul secvenţei de boot, va afişa un mesaj de eroare şi va bloca
sistemul.
Componenta BIOS este furnizată de constructor şi nu de firma
Microsoft, fiind localizată în memoria ROM (Read Only Memory) în blocul
de 64 KB, chiar sub limita de 1 MB a spaţiului de adresare. Cei mai
cunoscuţi producători de cip-uri BIOS sunt:
Þ AMIBIOS (Americam Megatrends, Inc.)
Þ PhoenixBIOS (Phoenix Technologies Ltd.)
Þ AwardBIOS (Award Software, Inc.)

Figura 2.2 Cipuri BIOS de tip PLCC

BIOS-ul este situat pe un cip de pe placa de bază a calculatorului.


Acest cip este fie sub formă dreptunghiulară - DIP (Dual In-line Package)
sau sub formă pătrată - PLCC (Plastic Leaded Chip Carrier - figura 2.2).

53
Sisteme de operare

Capacitatea cipului BIOS este măsurată în Megabiţi. Majoritatea cipurilor


BIOS de astăzi au dimensiunea de 2Mb (256KB).
Această capacitate mai mare oferă producătorilor posibilitatea de a
include mai multe facilităţi decât în cazul cipurilor mai vechi de dimensiune
mai redusă, de 1Mb. Totodată, trebuie ştiut că dimensiunea cipului BIOS nu
are legătură cu performanţele sale. Tipul şi dimensiunea cipului BIOS se
stabilesc în funcţie de funcţionalităţile oferite şi de costuri şi nu în funcţie de
performanţe.
Procedurile BIOS sunt apelate prin intermediul vectorilor de
întreruperi şi nu prin apeluri directe, ceea ce permite constructorilor
schimbarea mărimii şi a amplasării procedurilor BIOS.
Fişierul IO.SYS (IBMBIO.COM în versiunile IBM) este un fişier
ascuns, care există în toate sistemele MS-DOS. Se utilizează la iniţializarea
calculatorului şi oferă o interfaţă cu BIOS-ul pentru apelurile de proceduri.
Nucleul sistemului de operare poate accesa serviciile BIOS-ului prin
intermediul procedurilor din IO.SYS. Existenţa acestui fişier permite o
izolare mai bună a nucleului de componenta hardware. De exemplu, nucleul
nu trebuie să cunoască ce vector de întrerupere corespunde unui serviciu
BIOS dat, această informaţie fiind regăsită prin fişierul IO.SYS.
Nucleul conţine partea sistemului de operare independentă de
calculator şi se găseşte într-un alt fişier ascuns, MSDOS.SYS
(IBMDOS.COM). Are rolul de a gestiona procesele, memoria şi sistemul de
fişiere, ca şi interpretarea tuturor apelurilor de sistem.
După nucleu, cea de-a treia parte a sistemului de operare este shell-ul
reprezentat prin fişierul COMMAND.COM. Totuşi acesta poate fi înlocuit de
către utilizator. Fişierul COMMAND.COM realizează interfaţa dintre
utilizator şi nucleul sistemului de operare, conţinând:
” o parte rezidentă care este totdeauna în memorie;
” o parte nerezidentă, ce se încarcă în partea superioară a
memoriei, la limita celor 640 KB şi poate fi înlocuită.

2.3.2 Sistemul de gestiune a fişierelor MS-DOS

Sistemul de fişiere MS-DOS se ocupă de administrarea fişierelor


având la bază structura fizică a dischetelor sau a hard discurilor. Structura
fizică, la discurile magnetice, se referă la organizarea suportului disc la nivel
de sector, faţă (cap), cilindru (pistă). Împărţirea în sectoare a discurilor şi a
dischetelor se realizează prin operaţia de formatare (comanda FORMAT).

54
Sisteme de calcul şi operare

Prin comanda de formatare, sistemul de operare realizează în principal:


® împărţirea pistelor în sectoare (formatarea fizică);
® crearea structurii logice de date (formatarea logică).

Structurarea informaţiei pe discurile flexibile este aceeaşi cu a unei


partiţii de pe hard disc. Partiţia este unitatea logică, fizic reprezentată prin
totalitatea sectoarelor dintre două adrese. Hard discul poate conţine partiţii
MS-DOS sau partiţii care nu sunt MS-DOS. După generarea partiţiilor este
necesară formatarea acestora, crearea structurii logice de date.
Structura logică a unei partiţii sau a unei dischete este (figura 2.3):
Ö sectorul de BOOT (primul sector logic);
Ö sectorul FAT (tabela de alocare a fişierelor);
Ö copii FAT;
Ö directorul principal sau rădăcină (ROOT);
Ö zona de date.

În sectorul de BOOT sunt conţinute date care descriu formatul


discului şi prin intermediul cărora sistemul de operare MS-DOS poate
utiliza discul. Acest sector include:
♦ comanda de salt la procedura BOOT;
♦ numele producătorului şi numărul de versiune;
♦ numărul de octeţi/sector;
♦ numărul de sectoare/cluster (cluster – unitate de alocare, având
un număr de sectoare);
♦ numărul de sectoare rezervate (înaintea primului FAT);
♦ numărul de de FAT-uri;
♦ numărul de intrări în primul director;
♦ numărul de sectoare/disc;
♦ tipul discului;
♦ numărul de sectoare din FAT;
♦ numărul de sectoare/pistă;
♦ numărul de capetelor de scriere/citire;
♦ numărul de sectoarelor ascunse;
♦ procedura BOOT (încărcarea fişierelor de sistem);
♦ tabela de partiţionare (la hard disc);
♦ extensie a procedurii BOOT.

55
Sisteme de operare

Figura 2.3 Funcţionarea sistemului de fişiere FAT16

Prin utilizarea sectorului de BOOT, sistemul de operare poate


identifica primul fişier de tip director (directorul rădăcină - ROOT) care
conţine baza structurii arborescente a directoarelor de pe disc.

56
Sisteme de calcul şi operare

O intrare într-un director conţine (32 octeţi):


ƒ numele fişierului (8 octeţi);
ƒ extensia (3 octeţi);
ƒ atributul de director sau fişier obişnuit (1 octet +10 octeţi
neutilizaţi);
ƒ data şi ora (2 octeţi +2 octeţi);
ƒ primul cluster (2 octeţi);
ƒ dimensiunea în octeţi (4 octeţi).

Sistemul FAT conţine câte o intrare (16 biţi) pentru fiecare cluster.
Numărul cluster-ului este utilizat ca index.

2.3.3 Comenzi MS-DOS

Sintaxa generală al unei comenzi este:

comanda [parametru_1] [parametru_2] …[/opţiune]

♦ comanda – specifică numele comenzii;


♦ parantezele drepte [ ] – indică elementele opţionale;
♦ parametru – poate include următoarele elemente:
® unitatea logică de disc folosită (litera_disc:), care poate fi:
Ö unitatea de disc flexibil reprezentată prin A: sau B:;
Ö unitatea de hard disc reprezentată prin C:, D: sau E:.

Dacă elementul unitatea de disc se omite se va considera unitatea


implicită, aceasta fiind unitatea de disc curentă al cărui nume apare ca
primă literă în prompterul comenzii. Pentru a schimba discul curent se
tastează numele discului urmat de caracterul două puncte (:). De exemplu,
pentru a schimba discul curent A: în D:, după ce se tastează:
A:\>D: <ENTER>

Iar ca rezultat va apărea următorul prompter:


D:\>
dacă directorul curent pe discul D: este directorul rădăcină (\).

57
Sisteme de operare

♦ calea – specifică ruta prin care se identifică locul unui fişier sau
director din structura arborescentă.

[\][nume1_director]\[nume2_director]....

Primul caracter (backslash \) impune ca identificarea să înceapă cu


directorul rădăcină (ROOT). Dacă acesta se omite, căutarea începe din
directorul curent. Aşa cum este memorată unitatea de disc implicită, se
poate memora şi directorul implicit pentru fiecare unitate de disc. MS-DOS
afişează calea directorului curent de pe discul curent, ca parte a
prompterului.
♦ nume_fisier.ext – specifică numele unui fişier care poate avea
până la opt caractere şi poate fi urmat de punct ( . ) şi o extensie
de până la trei caractere.
♦ specificator de fişier – conţine elementele descrise anterior:

[disc:][cale] [\]nume_fisier[.ext]

♦ opţiuni – sunt specifice anumitor comenzi şi determină un anumit


mod de execuţie (exemplu: DIR/P).

Observaţie. În numele fişierului cât şi în extensie se pot regăsi caracterele:


” semnul întrebării (?)– specificând că orice caracter poate ocupa
această poziţie.

Exemplu: DIR A?CD.DAT

Dacă în directorul curent există fişierele ABCD.DAT, ACCD.DAT şi


AHCD.DAT acestea vor fi listate în urma execuţiei comenzii anterioare DIR.

” asterisc (*) – specificând că orice caracter poate ocupa această


poziţie cât şi restul poziţiilor.

Exemplu: DIR *.DAT

Vor fi listate toate fişierele care au extensia .DAT din directorul


curent.

58
Sisteme de calcul şi operare

Comenzi pentru lucrul cu directoare

MKDIR (MD) MKDIR (Make Directory) este comandă internă


utilizată pentru crearea unui director. Sintaxa generală a acestei comenzi este:

mkdir [disc:] cale

sau

md [disc:] cale

Exemplu
Pentru a se genera directorul CONT în:
a) directorul rădăcină al discului curent (directorul curent este altul
decât directorul rădăcină) vom folosi comanda: md \cont
b) directorul curent, vom folosi comanda: md cont

CHDIR (CD) CHDIR (Change Directory) este o comandă


internă utilizată pentru a vizualiza numele directorului curent sau pentru a
schimba directorul curent. Sintaxa acestei comenzi este:

chdir [disc:] cale

sau

cd [disc:] cale

Exemplu
1. Pentru a schimba directorul curent \STUD\STUD5 de pe discul
implicit în:
a) directorul părinte ( \STUD)
b) directorul rădăcină ( \)
linia de comandă va conţine:
a) CD .. [sau CD \STUD];
b) CD \

59
Sisteme de operare

2. Pentru a schimba directorul curent \STUD\STUD7 de pe discul A


astfel încât acesta să fie STUD3 - subdirector al directorului STUD, în linia
de comandă se va tasta (discul curent este C:):

CD A:\STUD\STUD3

RMDIR (RD) RMDIR (Remove Directory) este o comandă


internă utilizată pentru ştergerea unui director. Sintaxa generală este:

rmdir [disc:] cale

sau

rd [disc:] cale

Nu se poate utiliza comanda RD pentru a şterge directorul curent,


directorul rădăcină sau un director care conţine fişiere sau subdirectoare.
Pentru a fi şters, un director trebuie să fie golit de conţinut.

Exemplu
Prin comanda: RD A:\STUD\STUD3 se va şterge subdirectorul
STUD3 din directorul STUD de pe discul A: dacă este gol.

TREE TREE este o comandă externă prin care se afişează


structura arborescentă a directoarelor de pe discul specificat. Sintaxa generală
este:

tree [disc:] cale [/f][/a]

unde:
/f – listează şi numele fişierelor din fiecare director
/a – la afişare se utilizează caracterele ASCII text în loc de caracterele
grafice pentru a reprezenta legăturile cu subdirectoarele.

60
Sisteme de calcul şi operare

Exemplu
Prin comanda: TREE A: /F > PRN listarea se face la imprimantă.
Aici a fost utilizat caracterul special > prin care se face redirectarea
rezultatului comenzii către un dispozitiv special, imprimanta în cazul nostru
(identificat de numele generic special, PRN).

XCOPY XCOPY este o comandă externă pentru copierea


fişierelor şi directoarelor, incluzând subdirectoarele. Sintaxa generală a
acestei comenzi este:

xcopy sursa [dest][/a][/m][/d:data][/p][/s][/e][/v][/w]

unde:
ƒ sursa/destinaţia – poate fi o unitate de disc sau o cale;
ƒ /A – copierea numai a fişierelor sursă care au atributul de arhivare
setat fără a-l modifica;
ƒ /M – copierea numai a fişierelor sursă care au atributul de arhivare
setat, atributul de arhivare va fi modificat;
ƒ /D:date – copiază fişierele sursă modificate la sau după data
specificată;
ƒ /P – cere confirmarea înaintea copierii fiecărui fişier;
ƒ /S – copiază directoarele şi subdirectoarele, în afară de situaţia în
care sunt goale;
ƒ /E – copiază toate subdirectoarele, chiar dacă sunt goale;
ƒ /V – verificarea identităţii fiecărui fişier destinaţie (deja copiat) cu
fişierul sursă;
ƒ /W – generează o pauză înaintea operaţiei de copiere a fişierelor.

Observaţie. Prin comanda XCOPY nu se copiază fişierele ascunse şi de


sistem. Dacă destinaţia este omisă, prin comanda XCOPY se copiază fişierele
specificate în directorul curent.

Exemplu
Comanda XCOPY A: C: /S/E copiază toate fişierele şi subdirectoarele
(inclusiv cele goale) de pe discul A: (dischetă) pe discul C: (hard disc).

61
Sisteme de operare

PATH PATH este o comandă internă prin care se stabileşte calea


de căutare pentru fişierele executabile (.EXE, .BAT, .COM). Odată stabilită
această cale, fişierele executabile vor fi căutate în directoarele specificate de
PATH. Sintaxa generală a comenzii este:
path [[disc:] cale [; [disc:] cale][;…]]

Pentru afişarea căilor curente de căutare se utilizează comanda


apelată fără nici un parametru: PATH.
Exemplu
Să presupunem că programul PROGRAM.COM se găseşte numai în
directorul STUD3 de pe discul A:, iar unitatea de disc implicită este C:.
Comanda:
path \stud;\stud1\stud2;a:\stud3

instruieşte sistemul de operare să identifice comenzile (orice fişier executabil


este echivalent unei comenzi) lansate întâi în directorul curent, apoi în
C:\STUD; după aceea în C:\STUD1\STUD2 şi în final în A:\STUD3.
Comenzi pentru lucrul cu fişiere

DIR Comanda DIR este o comandă internă cu ajutorul căreia se


listează fişierele şi subdirectoarele unui director. Sintaxa generală a acestei
comenzi este:
dir [disc:][cale][nume_fisier][/p][/w][/a][[:][atribute]]
[/o[[:]ordine]][/s][/b][/l]

unde:
/P – permite listarea informaţiei în pagini;
/W – realizează afişarea condensată a listei;
/A[[:]atribute] – se vor lista numai numele acelor fişiere şi directoare
care deţin atributele specificate;
atribute: h/- h fişiere ascunse/nu sunt ascunse;
s/- s fişiere sistem/altele decât sistem;
d/- d directoare/nu directoare;
a/- a fişiere de arhivare/nu de arhivare;
r/- r fişiere ce se pot numai citi/citi şi scrie.

62
Sisteme de calcul şi operare

/O[[:]ordine] – controlează ordinea în care se listează numele


fişierelor şi directoarelor.
ordine: n/- n ordine alfabetică după nume A-Z/Z-A;
e/- e ordine alfabetică după extensie A-Z/Z-A;
d/- d după dată;
s/- s după mărime;
g/- g directoarele înaintea/după fişiere.
/S – listează orice apariţie în directorul specificat şi în toate
subdirectoarele acestuia a numelui de fişier specificat;
/B – listează numele unui director sau fişier pe o linie;
/L – listarea neordonată a numelor fişierelor şi directoarelor cu litere
mici.
Exemple
1. Comanda: DIR /S /O /P
Dacă directorul curent este directorul rădăcină se va obţine o listare a
tuturor directoarelor de pe discul implicit. Lista fiecărui director este
ordonată alfabetic, iar între afişarea a două ecrane succesive se execută o
pauză.
2. Prin comanda: DIR /S /O /P /A:-D
rezultatul este asemănător cu cel din cazul precedent numai că se vor omite
numele directoarelor.

TYPE Comanda TYPE este o comandă internă prin care se


vizualizează conţinutul unui fişier text. Sintaxa generală este:

type [disc:][cale]nume_fisier.ext

Exemplu
Prin comanda: TYPE MANUAL.TXT se va afişa conţinutul
fişierului MANUAL.TXT din directorul curent. Pentru a se executa o pauză
când ecranul este plin se va include şi comanda MORE, astfel linia de
comandă devine:
TYPE MANUAL.TXT | MORE

63
Sisteme de operare

În acest ultim caz a fost utilizat simbolul special pipe ( | ) prin care
rezultatul comenzii TYPE este redirectat către comanda MORE care
realizează afişarea ecran cu ecran.

COPY COPY este o comandă internă prin care se copiază unul


sau mai multe fişiere. Sintaxa generală a acestei comenzi este:
copy [/a][/b]sursa[/a/b][+sursa[/a/b][+…]][dest[/a/b]][/v]

unde:
/A se foloseşte pentru fişiere text de tip ASCII;
/B se foloseşte pentru fişiere binare;
/V verifică dacă noile fişiere sunt corecte.
Exemple
1. Copierea unui fişier cu acelaşi nume.
Presupunem că unitatea implicită de disc este A:.
Comanda: COPY D:\PROG.DAT copiază fişierul PROG.DAT din
directorul rădăcină al unităţii de disc D în directorul curent al discului
implicit A, fără a schimba numele fişierului.
Prin comanda: COPY D:\PROG.DAT D:\STUD se copiază fişierul
PROG.DAT din directorul rădăcină al discului D: în directorul STUD de pe
aceeaşi unitate. Fişierul copiat are acelaşi nume cu fişierul original.

2. Copierea cu nume diferite


Prin comanda: COPY D:PROG1.DAT A:PROG2.TXT se copiază
fişierul PROG1.DAT din directorul curent al unităţii de disc D: în directorul
curent al unităţii A:, sub numele PROG2.TXT.
3. Crearea unui fişier prin introducerea datelor de la tastatură
Cu ajutorul comenzii: COPY CON TEST.TXT tastatura are rolul de
fişier sursă, iar fişierul destinaţie este TEST.TXT din directorul curent al
unităţii de disc implicite. Tot ce se introduce de la tastatură va fi transferat
în fişierul destinaţie, astfel:
Prima linie <ENTER>
A doua linie <ENTER>

64
Sisteme de calcul şi operare

Sfârşitul introducerii se face prin tastarea combinaţiei CTRL+Z şi


apoi <ENTER>; în acest moment operaţia de copiere se termină şi
informaţiile sunt salvate în fişierul TEST.TXT.

RENAME Comanda RENAME (sau REN) este o comandă


internă pentru redenumirea unui fişier sau a unor fişiere.
Sintaxa generală a acestei comenzi este:
rename [disc:][cale] nume_vechi nume_nou
sau
ren [disc:][cale] nume_vechi nume_nou

unde nume_vechi reprezintă vechiul nume al fişierului iar nume_nou


reprezintă noul nume ce va fi atribuit.
Exemple
1. Comanda: REN A:\STUD\TABEL.DAT TABEL1.DAT
redenumeşte fişierul TABEL.DAT din directorul \STUD de pe unitatea A: în
TABEL1.DAT.
2. Comanda: REN *.EXE *.COM asigură schimbarea extensiilor
tuturor fişierelor de tip .EXE din directorul curent în extensii .COM.
Observaţie: În Windows Explorer nu este permisă redenumirea mai multor
fişiere simultan, deci pentru a redenumi mai multe fişiere o singură dată
trebuie să folosim comanda ren la linia de comandă DOS.

DEL (ERASE) Comanda DEL (ERASE) este o comandă


internă care realizează ştergerea fişierelor.
Sintaxa generală este:
del [disc:][cale] nume_fisier [/p]
sau
erase [disc:][cale] nume_fisier [/p]

/p – cere confirmarea (Y/N?) înainte de a şterge fişierul specificat.

65
Sisteme de operare

Exemplu:
Comanda: DEL C:\STUD\STUD3\*.* şterge toate fişierelor din
directorul \STUD\STUD3. Dacă s-a utilizat *.* în zona numelui de fişier,
MS-DOS afişează un mesaj pentru a verifica dacă se doreşte ştergerea
tuturor fişierelor: "Are you sure (Y/N) ?" Tastând Y şi apoi <ENTER> se
execută operaţia de ştergere.
Redirecţionarea intrării/ieşirii comenzilor

Pentru a redirecţiona intrarea sau ieşirea unei comenzi, se pot utiliza


caracterele:
> ieşirea unei comenzi se va transmite într-un fişier sau către un
dispozitiv periferic;
< intrarea necesară unei comenzi va fi preluată dintr-un fişier;
>> ieşirea unei comenzi este adăugată la sfârşitul unui fişier, fără a
şterge informaţia deja existentă.

Exemple:
1. Comanda: DIR > LISTA.TXT asigură redirecţionarea listei ce se
obţine prin comanda DIR către fişierul LISTA.TXT. Dacă fişierul nu există,
el va fi creat în directorul curent de pe unitatea implicită; dacă există, se va
înlocui informaţia care o conţine cu aceea ce se va obţine.

2. Prin comanda: DIR > PRN se va trimite lista cu numele fişierelor


din directorul curent către imprimantă.

Comenzi „pipe”
Dacă se doreşte ca ieşirea unei comenzi să fie intrare pentru alta se
vor tasta comenzile pe o singură linie de comandă, fiind separate prin
simbolul pipe, linie verticală ( | ).

Exemple:

1. Fie linia de comandă: DIR | SORT


Lista obţinută prin comanda DIR va fi folosită ca intrare pentru comanda
SORT, astfel încât pe ecran va apare o listă ordonată alfabetic.

2. Linia de comandă: DIR | SORT | MORE afişează aceeaşi listă ca


în exemplul precedent, afişarea făcându-se de data aceasta ecran cu ecran.

66
3
ELEMENTE DE TEORIA
TRANSMISIEI INFORMAŢIEI

3.1 Entropia informaţională

Informaţia este un mesaj ce aduce o precizare într-o problemă ce


comportă un anumit grad de incertitudine. Deşi există o mare diversitate de
informaţie, atât din punctul de vedere a formei de prezentare, a conţinutului, a
sursei care o generează cât şi a modului de recepţionare, oamenii de ştiinţă
şi-au pus problema măsurării ei cantitative. S-a constatat că informaţia şi
nedeterminarea sunt mărimi direct proporţionale.
Se consideră un experiment X în cadrul căruia se pot realiza un număr
finit de n evenimente elementare: x1, x2, x3, ..,xn. Probabilităţile de apariţie ale
acestor evenimente le vom nota cu p1, p2, p3, .., pn (pi = numărul cazurilor
favorabile evenimentului xi / numărul cazurilor egal posibile ale
experimentului).
Se presupune că sistemul de evenimente este un sistem complet:
⎧ pi ≥ 0 ∀ i = 1, n

⎨ n şi
⎪ ∑ pi = 1
⎩ i=1

Experimentul pune în evidenţă un anumit câmp de probabilitate


{X, x, p(x)} şi o anumită repartiţie:
⎛ x1 x 2 ... x n⎞
X = ⎜ ⎟
⎝ p1 p 2 ... p n⎠

67
Sisteme de calcul şi operare

Deoarece nu se cunoaşte apriori rezultatul experimentului


X, înseamnă că acesta conţine un anumit grad de nedeterminare. Putem
afirma că:
Ö în urma realizării unui experiment se obţine informaţie dacă şi
numai dacă rezultatul experimentului înlătură o anumită
nedeterminare;
Ö informaţia şi nedeterminarea sunt mărimi direct proporţionale;
Ö informaţia înlocuieşte nedeterminare.

Aceste particularităţi au condus la utilizarea aceleiaşi unităţi de


măsură atât pentru cantitatea de informaţie cât şi pentru nedeterminare.
Nedeterminarea unui experiment depinde de probabilităţile de realizare a
evenimentelor. Dacă se notează cu H măsura gradului de nedeterminare,
pentru experimentul X, aceasta va fi o funcţie de probabilităţile
evenimentelor:

H(X) = H(p1, p2, .…, pn)

În anul 1948, Claude E. Shannon a folosit pentru prima dată formula:

n
H( p1 , p2 ... pn ) = − ∑ pi log 2 pi
i =1

Măsura nedeterminării, dată de această formulă, se numeşte, conform


lui Claude Shannon, entropia experimentului X sau entropia informaţională.
În acest sens, unitatea de măsură a informaţiei definită ca fiind
cantitatea de informaţie obţinută prin precizarea unei variante din două egal
probabile se numeşte bit (binary digit), cu multiplii:

ƒ 1 octet (byte) = 8 biţi


ƒ 1 kilo octet = 210 octeţi
ƒ 1 Mega octet = 210 ko = 220 octeţi
ƒ 1 Giga octet = 210 Mo = 230 octeţi
ƒ 1 Tera octet = 210 Go = 240 octeţi
ƒ 1 Peta octet = 210 To = 250 octeţi
ƒ 1 cuvânt (word) = 16 / 32 / 64 biţi; lungimea variază în funcţie de
tipul calculatorului.

68
Elemente de teoria transmisiei informaţiei

Principalele proprietăţi ale entropiei informaţionale sunt:

P1. Entropia informaţională, fiind măsura informaţiei, este o entitate


nenegativă:

H(p1, p2, .…, pn) ≥ 0.

P2. Dacă pentru un indice i∈{1, 2, .., n} avem pi =1, atunci entropia
informaţională este nulă:

H(p1, p2, .…, pn) = 0.

P3. Entropia unui sistem de evenimente este maximă când


evenimentele au aceeaşi probabilitate de apariţie:

H(p1, p2, .…, pn) ≤ H(1/n, 1/n, 1/n,…, 1/n).

P4. Evenimentele imposibile nu modifică valoarea entropiei


informaţionale a unui sistem:

H(p1, p2, .…, pn, 0) = H(p1, p2, .…, pn).

P5. Entropia produsului mai multor surse independente de informaţie


este egală cu suma entropiilor fiecărei surse luate separat:

H(X1 x X2 x…Xn) = H(X1) + H(X2) +.. H(Xn).


Produsul mai multor surse de informaţie reprezintă un experiment
compus care constă din realizarea simultană a câte unui eveniment
corespunzător fiecărei surse.

P6. Entropia produsului a două surse oarecare X şi Y de informaţie


este:

H(X x Y) = H(X) + H(Y/X).

H(Y/X) reprezintă cantitatea medie de informaţie ce se obţine în urma


realizării experimentului Y, condiţionat de experimentul X.

n
H(Y/ X) = ∑ p( xk )H(Y/ xk )
k=1

69
Sisteme de calcul şi operare

unde:
p(xk) probabilitatea realizării evenimentului xk ∈ X ;
H(Y/xk) entropia experimentului Y, condiţionată de evenimentul
xk ∈ X.

m
H(Y/ x k ) = − ∑ p( y i / x k ) log 2 p( y i / x k )
i =1

iar p(yi/xk) este probabilitatea realizării evenimentului elementar


yi ∈ Y ( i = 1 , m ) când s-a realizat evenimentul xk ∈ X ( k = 1, n ).

Dacă X şi Y sunt experimente oarecare sunt respectate proprietăţile:


P7. H(Y/X) ≤ H(Y)
P8. H(X x Y) ≤ H(X) + H(Y)
P9. H(X/Y) = H(Y/X) + H(X) - H(Y)

3.2 Sistem de transmisie a informaţiei

Schema generală a unui sistem de transmisie a informaţiei include:


sursa, canalul (ce poate fi supus perturbaţiilor) şi recepţia (figura 3.1).

Figura 3.1 Schema unui sistem de transmisie a informaţiei fără codificare

70
Elemente de teoria transmisiei informaţiei

Fie:

♦ X mulţimea mesajelor emise de o sursă de informaţie (intrarea


sistemului);
♦ Y mulţimea mesajelor care se recepţionează (ieşirea sistemului);
♦ p(y/x) probabilitatea de a recepţiona mesajul y ∈ Y când s-a emis
x ∈ X.

Sistemul de transmisia informaţiei este format din două mulţimi finite


X şi Y şi o probabilitate condiţionată p(y/x), definită pe Y pentru orice x ∈ X
şi se notează cu [X, p(y/x), Y].

Sursa sistemului de transmisie a informaţiei este reprezentată prin


câmpul de probabilitate {X, x, p(x)}, fiind dată probabilitatea de emisie p(x)
pentru ∀ x ∈ X, astfel încât ∑ p( x ) = 1.
x ∈X
Recepţia sistemului de transmisie a informaţiei este reprezentată prin
câmpul de probabilitate {Y, y, p(y)}, fiind dată probabilitatea de emisie p(x)
pentru ∀ x ∈ X, iar probabilitatea de recepţie se calculează prin
relaţia: p( y) = ∑ p( x ) p( y / x ) .
x ∈X
Mediul prin care se propagă semnalele purtătoare de informaţie, de la
sursă la recepţie, se numeşte canalul sistemului de transmisia informaţiei. A
cunoaşte canalul de comunicaţie al unui sistem, revine la a cunoaşte
probabilităţile p(y/x) pentru toate mesajele x ∈ X şi y ∈ Y. Dacă p(y/x) ia
numai valorile 0 sau 1 pentru orice x ∈ X şi y ∈ Y, asupra canalului nu
acţionează perturbaţiile. În caz contrar, canalul prezintă perturbaţii.

Într-un sistem de transmisia informaţiei [X, p(y/x), Y], având sursa


{X, x, p(x)} şi recepţia {Y, y, p(y)}, expresiile:

H( X ) = − ∑ p( x ) log
x ∈X
2 p( x )

H( Y ) = − ∑ p( y) log
y ∈Y
2 p( y)

reprezintă entropiile câmpului de evenimente de la intrare şi câmpului de


evenimente de la ieşire.

71
Sisteme de calcul şi operare

Dacă se notează cu p(x/y) probabilitatea de a se emite mesajul x ∈ X


când se recepţionează y ∈ Y, expresia:

H( X / y ) = − ∑ p( x / y) log 2 p( x / y)
x ∈X

reprezintă cantitatea de informaţie care trebuie emisă de către sursă pentru a


recepţiona mesajul y ∈ Y. Cantitatea medie de informaţie emisă ce este
necesară pentru a recepţiona întreaga mulţime a mesajelor y ∈ Y va fi:

H( X / Y ) = ∑ p( y ) H ( X / y ) .
y ∈Y

Entropia H(X / Y) se numeşte echivocaţie, fiind măsura echivocului


care există în câmpul de la intrare când se cunoaşte câmpul de la ieşire
(figura 3.2). În mod asemănător, se determină entropia H(Y/X), care se
numeşte eroare medie şi este măsura incertitudinii câmpului de la ieşire când
se cunoaşte câmpul de la intrare (figura 3.3).

Expresia: I(X,Y) = H(X) - H(X/Y) reprezintă informaţia transmisă prin


canal şi se mai numeşte transinformaţie.
În lipsa perturbaţiilor p(x/y) = p(y/x) = 1 sau p(x/y) = p(y/x) = 0 şi
H(X/Y) = H(Y/X) = 0.

Figura 3.2 Reprezentarea grafică a echivocului

72
Elemente de teoria transmisiei informaţiei

Figura 3.3 Reprezentarea grafică a incertitudinii

3.3 Codificarea informaţiei în sistemele de calcul

Conform principiilor de structură şi funcţionalitate, în calculator sunt


recunoscute numai cifrele binare (0 şi 1). Se ştie că informaţia cel mai
frecvent este codificată cu ajutorul cifrelor zecimale, literelor alfabetului
(caracterele majuscule şi minuscule) şi diverse semne speciale. Pentru a putea
fi prelucrată şi eventual transmisă cu ajutorul unui sistem de calcul informaţia
va fi codificată binar.
Informaţia şi codificarea sunt entităţi inseparabile.
Fie X={x1, x2, x3,..., xN}, mulţimea simbolurilor primare emise de o
sursă de informaţie şi A={a1, a2,..., aD}, mulţimea simbolurilor codului
folosit. Cu simbolurile: a1, a2,..., aD se formează un număr N de cuvinte de
cod: C = {c1, c2,..., cN}.

Cuvintele de cod sunt succesiuni finite de simboluri ale mulţimii A.


Codificarea este operaţia de stabilire a unei corespondenţe biunivoce între
simbolurile xi ∈ X şi ci ∈ C.

Fie: c1: a1 a2 a3 → x1
c2: a2 a1 a3 → x2
c3: …

Totalitatea cuvintelor ci (i = 1÷n) formează un cod.


Cu ajutorul simbolurile mulţimii A se pot forma cuvinte cărora să nu
le corespundă elemente din mulţimea X. Acestea sunt cuvinte fără sens.
Cuvintele cărora le corespund simboluri din alfabetul sursei se numesc
cuvinte cu sens sau cuvinte de cod.

73
Sisteme de calcul şi operare

Practic, codificarea reprezintă o schimbare în forma de prezentare a


informaţiei, necesară în procesul prelucrării sau transmisiei. În momentul
realizării codificării apare şi problema transformării inverse, ce permite
revenirea la forma iniţială. Aşadar, dacă există funcţia cod:

f:X→C

trebuie să existe şi funcţia inversă:

f-1: C → X.

Operaţia de revenire din mulţimea secvenţelor de cod în mulţimea


simbolurilor primare prin intermediul funcţiei f-1 se numeşte decodificare.
Una din restricţiile necesare realizării codificării o reprezintă lungimea
secvenţei de cod. Numărul de simboluri elementare dintr-un cuvânt reprezintă
lungimea acestuia. Dacă toate cuvintele de cod au aceeaşi lungime,
codificarea se numeşte uniformă.

Stabilirea numărului (NR) de secvenţe distincte de lungime n, ce se pot crea


cu D simboluri elementare, se determină aplicând formula combinărilor cu
repetiţie:
NR = Dn

Pentru realizarea codificării este necesar ca NR ≥ N (N fiind numărul


de simboluri primare ce aparţin lui X). Pentru codificarea informaţiei utilizate
într-un sistem de calcul mulţimea simbolurilor codului este A = {0,1} şi
ţinând cont de relaţia de mai sus avem:

N ≤ 2n

Prin logaritmarea relaţiei se va obţine:

log2 N ≤ n

Într-o codificare uniformă, lungimea n a secvenţelor de cod trebuie să


fie cel puţin egală cu entropia maximă a sursei.
Când se urmăreşte mărirea eficienţei transmisiunii, cuvintele de cod
pot avea lungimi diferite, astfel încât lungimea medie l a unui cuvânt să fie
cât mai mică.

74
Elemente de teoria transmisiei informaţiei

Fie sursa primară X = {x1, x2,..., xN} având probabilităţile de


realizare P = {p(x1), p(x2),..., p(xN)} iar mulţimea cuvintelor de cod C = {c1,
c2,..., cN} cu probabilităţile PC = {p(c1), p(c2),...,p(cN)} = {p(x1),..., p(xN)}.
Lungimile cuvintelor de cod sunt: L = {l1, l2,...,lN}, li fiind numărul de
simboluri din alfabetul codului, care compun cuvântul ci. Lungimea medie a
unui cuvânt de cod se va calcula după formula:

N
l = ∑ p( x )
i=1
i li

Entropia sursei, care este aceeaşi cu entropia cuvintelor codului, va fi:


N
H(X) = H(C) = - ∑ p( x )
i =1
i log 2 p( x i )

Dacă alfabetul codului este A = {a1, a2,..., aD}, având probabilităţile


PA = {p(a1), p(a2),..., p(aD)}, entropia va fi:

D
H(A) = - ∑ i =1
p( a i ) log 2 p( a i ) ≤ log 2 D

Informaţia medie pe cuvânt va fi:

H(C) = H(X) = l ⋅ H(A) .

Înlocuind pe H(A) prin relaţia precedentă se va obţine:

H(X)
H(X) ≤ l log2 D ⇒ l ≥ = lmin
log2 D

Relaţia obţinută arată că lungimea medie l a unui cuvânt de cod are


o margine inferioară egală cu entropia sursei împărţită la valoarea maximă a
entropiei alfabetului codului sau informaţia medie pe un simbol din
H(X)
alfabetul codului nu poate fi mai mare decât valoarea maximă a
l
H(X)
alfabetului codului log2D, adică ≤ log 2 D .
l

75
Sisteme de calcul şi operare

Pentru realizarea unei codificări se mai ţine seama de:

¾ Capacitatea codului, valoarea maximă a entropiei alfabetului


codului:
Ccod = max H(A) = log2D.
¾ Eficienţa codului, raportul dintre lungimea medie minimă şi
l
lungimea medie a unui cuvânt de cod: ηcod = min . Înlocuind
l
l min şi l se va obţine:
H(X) / log 2 D H(A)
η cod = = .
H(X) / H(A) log 2 D
¾ Redundanţa codului este mărimea complementară eficienţei:
H(A)
R cod = 1 - η cod = 1 - .
H max (A)

3.4 Coduri numerice şi alfanumerice

Codurile în care sunt reprezentate numai numere se numesc coduri


numerice, iar cele care cuprind numerele, literele şi semnele speciale se
numesc coduri alfanumerice. Dintre codurile alfanumerice amintim:
” Codul BCD (Binary Coded Decimal), reprezintă unul din
primele coduri utilizate în tehnica de calcul. O secvenţă de cod
are lungimea de şase biţi/caracter.
” Codul EBCDIC (Extended Binary Coded Decimal Information
Interchange Code), secvenţele de cod au o lungime de
opt biţi/caracter.
” Standardul ASCII (American Standard Code for Information
Interchange) secvenţele de cod au o lungime de opt biţi/caracter.
” Standardul Unicode utilizează secvenţe de cod cu lungimea de
16 biţi/caracter. Acest cod a fost conceput să înlocuiască
standardul ASCII, prin intermediul căruia se pot reprezenta
maximum 256 (28) caractere. Codul ASCII este un subset al
standardului Unicode. Caracterele de bază din toate limbile
scrise existente pot fi reprezentate prin standardul Unicode.

76
Elemente de teoria transmisiei informaţiei

Codurile normalizate au fost realizate în aşa fel încât să uşureze


modul de prelucrare a informaţiei. Astfel, partea stângă a codului permite
identificarea imediată a naturii informaţiei codificate (litere, cifre, funcţii),
următoarele poziţii ale codului sunt organizate într-un mod care să uşureze
conversia în vederea calculelor (în cazul cifrelor) sau ordonarea alfabetică
(în cazul literelor).
Coduri alfanumerice
Tabelul 3.1

Caracterul Codul ASCII Codul EBCDIC Codul UNICODE


0 0011 0000 1111 0000 (0030)H
1 0011 0001 1111 0001 (0031)H
2 0011 0010 1111 0010 (0032)H
3 0011 0011 1111 0011 (0033)H

9 0011 1001 1111 1011 (0039)H


a 0110 0001 1000 0001 (0061)H
b 0110 0010 1000 0010 (0062)H

z 0111 1010 1010 1001 (007A)H


A 0100 0001 1100 0001 (0041)H
B 0100 0010 1100 0010 (0042)H

Z 0101 1010 1110 1001 (005A)H


LF(line feed) 0000 1010 0010 0101 (000A)H

Codurile numerice au fost introduse pentru a se opera mai uşor cu


informaţia numerică. Codurile numerice pot fi:
ƒ ponderate;
ƒ neponderate.

Un cod numeric este ponderat dacă unei cifre zecimale îi corespunde


o succesiune de cifre binare, în care fiecare cifră de rang j are asociată o
anumită pondere Pj. Fie N un număr zecimal:

N = zk zk-1 zk-2 .... z0 zi ∈{0, 1, ....9} i = 0, k

77
Sisteme de calcul şi operare

Oricare ar fi cifra zecimală zi, aceasta se va reprezenta printr-o


secvenţă binară ce satisface relaţia:

n
zi = ∑aj Pj , unde: aj∈{0,1},
j=1

P j ∈{0, ± 1, ± 2, ....±9} constituie ponderea corespunzătoare


rangului j, iar n numărul de simboluri din secvenţa binară asociată cifrei
zecimale.

Dintre codurile ponderate amintim (tabelul 3.2):

® Codul 8421, codul binar-zecimal natural, având ca ponderi


puterile lui 2 (23,22,21,20).

Coduri ponderate

Tabelul 3.2
Cifra Codul Codul Codul Codul bichinar
zecimală 8421 2421 8421 50 43210
0 0000 0000 0000 01 00001
1 0001 0001 0111 01 00010
2 0010 0010 0110 01 00100
3 0011 0011 0101 01 01000
4 0100 0100 0100 01 10000
5 0101 1011 1011 10 00001
6 0110 1100 1010 10 00010
7 0111 1101 1001 10 00100
8 1000 1110 1000 10 01000
9 1001 1111 1111 10 10000

® Codul 2421 (Aiken), la care codificarea primelor cinci cifre


zecimale (0÷4) este identică secvenţelor din codul 8421.
Codificarea cifrei zecimale 5 se obţine din secvenţa
corespunzătoare cifrei zecimale 4 prin schimbarea simbolurilor
binare 0 în 1 şi 1 în 0. Astfel, fiecare complement faţă de 9 al unei

78
Elemente de teoria transmisiei informaţiei

cifre zecimale se reprezintă printr-o secvenţă ce rezultă


complementând faţă de 1 simbolurile binare din secvenţa cifrei
zecimale respective. Codurile ce au această proprietate se numesc
autocomplementare, prezentând avantaje în efectuarea operaţiilor
aritmetice.
® Pentru codul 8421 ponderile sunt puteri ale lui 2, însă două sunt
negative. Este un cod auto-complementar.
® Codul bichinar (50 43210) conţine secvenţe de câte şapte
simboluri binare împărţite în două grupe. Acest cod a fost folosit
la primele calculatoare electronice.

Alte coduri numerice ponderate sunt: 4221, 5421, 7421, 6421


(tabelul 3.3).

Coduri ponderate (a doua parte)

Tabelul 3.3
Cifra Codul Codul Codul Codul
zecimală 4221 5421 7421 6421
0 0000 0000 0000 0000
1 0001 0001 0001 0011
2 0010 0010 0010 0010
3 0011 0011 0011 0101
4 0110 0100 0100 0100
5 1001 1000 0101 0111
6 1100 1001 0110 1000
7 1101 1010 0111 1011
8 1110 1011 1001 1010
9 1111 1100 1010 1101

Din categoria codurilor neponderate, amintim (tabelul 3.4):


ª Codul EXCES 3 a fost realizat de G. Stibitz şi se remarcă prin
aceea că:
o este un cod autocomplementar;
o cifrei zecimale zero îi corespunde o secvenţă binară ce conţine
cifre binare de 1.

79
Sisteme de calcul şi operare

ª Codul Gray se caracterizează prin aceea că două secvenţe de cod


consecutive diferă printr-o singură poziţie binară. Dacă notăm cu:
a8, a4, a2, a1 cifrele binare ale secvenţelor codului 8421, în ordinea
ponderilor şi cu b4, b3, b2 şi b1 cifrele binare ale secvenţelor Gray,
în ordinea de la stânga la dreapta, acestea din urmă pot fi calculate
folosind relaţiile: b8 = a8; b3 = a8 ⊕ a4; b2 = a4 ⊕ a2; b1 = a2 ⊕ a1.
ª Codul „2 din 5” este un cod pseudo-ponderat. Secvenţele de cod
pentru cifrele zecimale 1 ÷ 9 au asociate ponderile 74210, numai
codificarea cifrei zecimale 0 face excepţie de la această regulă.
Caracteristica secvenţelor de cod este aceea că din cele cinci cifre
binare două sunt semnificative (au valoarea 1).

Coduri neponderate

Tabelul 3.4
Cifra Codul Codul Codul 2 din 5
zecimală Exces 3 Gray (74210)
0 0011 0000 11 000
1 0100 0001 00 011
2 0101 0011 00 101
3 0110 0010 00 110
4 0111 0110 01 001
5 1000 0111 01 010
6 1001 0101 01 100
7 1010 0100 10 001
8 1011 1100 10 010
9 1100 1101 10 100

Codul de bare reprezintă un sistem de codificare prin care se permite


identificarea automată sau semiautomată a diverselor entităţi (legitimaţii,
cărţi, bilete de avion, produse din cele mai variate etc.).
Codul de bare are avantajul de a fi relativ simplu de produs şi
recunoscut. El poate fi aplicat direct pe orice produs (pe ambalajul acestuia)
sau ulterior, ca etichetă. Majoritatea codurilor de bare au la bază principiul
binar, reprezentarea făcându-se printr-un număr de linii sau linii şi spaţii cu
o anumită lăţime. Secvenţa de linii sau linii şi spaţii reprezintă un caracter
numeric sau alfanumeric.

80
Elemente de teoria transmisiei informaţiei

Pentru exemplificare vom considera codul 2/5 (2 din 5) (tabelul 3.5),


cod numeric (sunt reprezentate cifrele de la 0 la 9). Codificarea se face prin
trasarea a două linii late şi trei înguste. Raportul de imprimare linie
îngustă/linie lată este de 1/2 sau 1/3. Spaţiile nu conţin informaţie.

Codul de bare 2/5

Tabelul 3.5

Caracter Linia1 Linia2 Linia3 Linia4 Linia5


1 1 0 0 0 1
2 0 1 0 0 1
3 1 1 0 0 0
4 0 0 1 0 1
5 1 0 1 0 0
6 0 1 1 0 0
7 0 1 0 1 1
8 1 0 0 1 0
9 0 1 0 1 0
0 0 0 1 1 0
start 1 1 0
stop 1 0 1
1: linie lată
0: linie îngustă

Figura 3.4 Reprezentarea numărului 19 prin codul de bare 2/5

81
Sisteme de calcul şi operare

Dacă în cazul codului 2 din 5 spaţiile nu conţin informaţie, există şi


un cod asemănător în care densitatea informaţiei reprezentate este mai mare;
acest cod se numeşte „codul 2 din 5 intercalat” iar în acest caz spaţiile
conţin informaţii în acelaşi mod ca şi liniile.

Codificarea informaţiei permite rezolvarea unor probleme ce pot


apare în transmisia, stocarea sau prelucrarea acesteia, cum ar fi:
♦ detectarea şi corectarea erorilor pentru a se asigura integritatea
informaţiei;
♦ compresia pentru minimizarea cantităţii de informaţie;
♦ criptarea pentru a se garanta securitatea informaţiei.

3.5 Coduri detectoare şi corectoare de erori

Codificarea se efectuează având ca scop principal protejarea


informaţiei de perturbaţiile ce pot să apară într-un sistem de transmisie. De
aceea, înainte de a emite simbolurile de informaţie pe canalul de
comunicaţie, ce poate fi supus perturbaţiilor, se adaugă o anumită informaţie
redundantă, de obicei prin introducerea unor simboluri suplimentare, numite
simboluri de control.
Rolul acestor simboluri de control este acela de a indica
utilizatorului prezenţa erorilor şi chiar să-i dea posibilitatea de a le corecta.
Codurile obţinute astfel, prin mărirea redundanţei, se numesc coduri
detectoare şi corectoare de erori.
În acest caz, schema unui sistem de transmiterea informaţiei este
reprezentată în figura 3.5.

Figura 3.5 Sistem de transmisia informaţiei

82
Elemente de teoria transmisiei informaţiei

Se poate face o clasificare a codurilor detectoare şi corectoare de


erori după modul de prelucrare al simbolurilor.
Dacă prelucrările necesare obţinerii proprietăţilor de detecţie sau de
corecţie se fac în blocuri de n simboluri, avem coduri bloc. Dacă prelucrarea
simbolurilor generate de sursă se realizează în mod continuu, avem de-a
face cu coduri convoluţionale (recurente).

Din categoria codurilor bloc se disting:


ƒ codurile grup, secvenţele de cod sunt considerate ca fiind
elemente dintr-un spaţiu vectorial;
ƒ codurile ciclice, secvenţele de cod sunt considerate ca fiind
elemente într-o algebră.

3.5.1 Distanţa de cod

Fie c = [a1,....,an], un cuvânt de cod, conform unei codificări binare


ai ∈ {0,1} pentru ∀ i = 1, n . Notăm cu W mulţimea tuturor cuvintelor
(N=2n), care are o structură de spaţiu vectorial, iar mulţimea cuvintelor cu
sens o notăm cu V (presupunem că NC=2k) ce are o structură de subspaţiu
vectorial.
Dacă toate secvenţele care se pot realiza sunt cuvinte de cod (W=V),
nu va exista posibilitatea de a detecta sau corecta erorile ce apar în procesul
de transmitere pe canal. Practic, dacă un cuvânt de cod se modifică prin
canal, datorită perturbaţiilor, se va obţine tot un cuvânt de cod, respectiv un
cuvânt cu sens.
Pentru a avea posibilitatea de a detecta prezenţa erorilor în
secvenţele de cod recepţionate, mulţimea W a cuvintelor se va divide în
două submulţimi: a cuvintele cu sens (V) şi submulţimea cuvintelor fără
sens (F).
La un anumit grad de redundanţă atribuit unei codificări se pot
stabili mai multe coduri. Dintre acestea nu toate oferă posibilităţi în
depistarea erorilor şi eventual corectarea lor. Codurile care asigură o
anumită capacitate de detecţie şi eventual corecţie cu ajutorul unor
redundanţe minime se numesc coduri optimale.
Pentru a realiza codificarea se va lua în calcul parametrul denumit
distanţa de cod (distanţa Hamming).
În spaţiul n dimensional al cuvintelor de cod se introduce funcţia
distanţă D(vi,vj) care satisface proprietăţile unui spaţiu metric.

83
Sisteme de calcul şi operare

Prin definiţie această funcţie este:

n
D( vi, vj ) = ∑ ( aik ⊕ ajk ) ,
k =1

unde vi = [ai1, ai2, …, ain] şi vj = [aj1, aj2,…, ajn]

iar „⊕” se referă la adunarea modulo 2 în timp ce „+”, la adunarea în


corpul numerelor reale. Se poate spune că distanţa dintre două cuvinte de cod
este egală cu numărul de simboluri prin care cele două cuvinte se deosebesc.

Exemplul 1

Să se calculeze distanţa de cod între secvenţele de cod reprezentate în


figura 3.6.

Rezolvare. În figura 3.6.a) toate secvenţele de cod sunt cuvinte cu


sens. Calculând distanţele de cod, avem:

D(v0,v1)=(0 ⊕ 0) + (0 ⊕ 0) + (0 ⊕ 1) = 1
D(v0,v2)=(0 ⊕ 0) + (0 ⊕ 1) + (0 ⊕ 0) = 1
D(v0,v3)=(0 ⊕ 0) + (0 ⊕ 1) + (0 ⊕ 1) = 2
D(v0,v4)=(0 ⊕ 1) + (0 ⊕ 0) + (0 ⊕ 0) = 1
.
.
D(v0,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) = 3
D(v1,v2)=(0 ⊕ 0) + (0 ⊕ 1) + (1 ⊕ 0) = 2
.
.
D(v1,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (1 ⊕ 1) = 2
.
.
D(v6,v7)=(0 ⊕ 1) + (1 ⊕ 1) + (1 ⊕ 1) = 1

Se constată că: Dmin=1.

84
Elemente de teoria transmisiei informaţiei

Figura 3.6 Reprezentarea geometrică a secvenţelor de cod

În (figura 3.6.b) numai două secvenţe sunt cuvinte cu sens, iar


distanţa de cod va fi :
D(v0,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) = 3

Probabilitatea de detecţie şi corecţie a unui cod depinde de distanţa


minimă între două cuvinte de cod. Se poate demonstra că pentru un cod ce
poate detecta un număr de e erori existente în una din secvenţele sale, este
necesar ca:

Dmin ≥ e + 1

iar pentru a detecta e erori şi a corecta c erori, având c ≤ e, este


necesar ca:

Dmin ≥ e + c + 1

Pentru realizarea unor structuri de cod optime se va ţine seama de:


Ö numărul secvenţelor ce aparţin codului (NC);
Ö lungimea cuvintelor de cod;
Ö distanţa minimă de cod (Dmin).

Operaţia de determinare a simbolurilor de control funcţie de


simbolurile de informaţie se numeşte codificare redundantă.

85
Sisteme de calcul şi operare

3.5.2 Codul Hamming

Se consideră un spaţiu m-dimensional, denumit spaţiu de corecţie,


care are 2m elemente corectori (z). Rolul corectorilor este de a indica
poziţiile din cuvintele de cod în care au apărut erori. Se defineşte operatorul
H, ce stabileşte o corespondenţă univocă între mulţimea tuturor cuvintelor
recepţionate şi mulţimea corectorilor, astfel:

H{vi′} = z

Dacă vi′= vi, atunci H{vi} = 0.

Structura cea mai simplă pentru operatorul H se obţine dacă se va


considera o transformare liniară, definită prin ecuaţiile:

h11 a1′ + h12 a2′ + …. h1n an′ = em


h21 a1′ + h22 a2′ + …. H2n an′ = em-1
.
.
hm1 a1′ + hm2 a2′ + …. Hmn an′ = e1

unde:
hij - parametrii care determină transformarea H;
ai′ - simbolurile cuvântului recepţionat;
ei - elementele corectorului z.

Ecuaţiile se pot scrie sub formă matricială utilizând notaţiile:

⎡ h11 h12 h1 n ⎤
⎢ h 21 h 22 h 2n ⎥
H =⎢ ⎥ - este matricea de control;
⎢ ⎥
⎢ ⎥
⎣ hm1 hm 2 hmn ⎦
⎡em ⎤
⎢ ⎥
v′ = [ a1′ a2′ … an′ ] - cuvânt recepţionat şi z = ⎢ ⎥ - cuvânt corector.
⎢ e2 ⎥
⎢ ⎥
⎣ e1 ⎦

86
Elemente de teoria transmisiei informaţiei

Folosind aceste notaţii putem scrie: H v′T = z, iar în cazul când v = v′


vom avea:

H vT = 0

Aceasta este relaţia care se va folosi pentru determinarea celor


m simboluri de control, în funcţie de simbolurile generate de sursa de
informaţie (în număr de k). Operaţia prin care se determină valorile
simbolurilor de control în funcţie de simbolurile generate de sursa de
informaţie se numeşte codificare redundantă.

Codul Hamming asigură detecţia şi corecţia unei singure erori.


Pentru a indica poziţia erorii într-unul din cele n simboluri ale cuvântului de
cod sau pentru a indica absenţa erorilor este necesar ca numărul corectorilor
2m ≥ n + 1.

Cum n = k + m, o să avem: 2m ≥ m + k + 1.

Aceasta este relaţia prin care se determină numărul m al simbolurilor


de control când se cunoaşte numărul k al simbolurilor de informaţie, în cazul
corecţiei unei singure erori.
Codul Hamming este caracterizat de o matrice de control Hm,n, în
care coloana hi este reprezentarea binară a numărului i.

H = [h1h2....hn]

Se consideră cuvântul eroare, cu o singură poziţie eronată:

e=[0,...,αj,...0] (αj=1)

Dacă se transmite mesajul vi se va recepţiona:

v`i=vi ⊕ e (perturbaţie aditivă)

Corectorul corespunzător va fi:

T T
T
Z = H v ′ = H ( v i ⊕ e ) = H v ⊕ H eT
i i

87
Sisteme de calcul şi operare

T
Deoarece H v = 0 – este relaţia ce se foloseşte pentru determinarea
i
celor n simboluri de control, vom avea:

⎡0⎤
⎢ ⎥
⎢.⎥
⎢.⎥
⎢ ⎥
Z = H e T = [h1 h 2 ..... h j .... h n ] ⎢α j⎥ = h j
⎢ ⎥
⎢.⎥
⎢.⎥
⎢ ⎥
⎢⎣ 0 ⎥⎦

Aşadar, corectorul este reprezentarea binară a numărului j, indicând


poziţia în care există eroarea.
Pentru a simplifica operaţia de calcul a celor m simboluri de control,
acestea se vor alege astfel încât să corespundă vectorilor coloană hi cu o
singură componentă diferită de 0.
Notând cu ci simbolurile de control şi cu aj pe cele de informaţie,
vectorul cuvânt de cod va fi: v=[c1c2a3c4....an].
T
Ţinând seama de relaţia H v = 0 obţinem:
i

⎡ c1 ⎤ ⎡ 0 0 . . . . 1⎤ ⎡ c1 ⎤
⎢ ⎥ ⎢ 0 . . . . . 1⎥ ⎢ ⎥
⎢ c2 ⎥ ⎢ ⎥ ⎢ c2 ⎥
⎢ a3⎥ ⎢........⎥ ⎢.⎥
[h1 h 2 .... h n ] ⎢ ⎥ = 0 sau ⎢ ⎥ ⎢ ⎥ = 0
⎢.⎥ ⎢........⎥ ⎢.⎥
⎢.⎥ ⎢0 1 . . . . . ⎥ ⎢.⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣a n ⎦ ⎣1 0 . . . . 1⎦ ⎣a n ⎦

88
Elemente de teoria transmisiei informaţiei

relaţie echivalentă cu m ecuaţii în care simbolurile c1, c2, … intervin o


singură dată:

⎧ c1 ⊕ a 3 ⊕ a 5 ⊕ ..... ⊕ a n = 0

⎪c 2 ⊕ a 3 ⊕ a 6 ⊕ ..... ⊕ a n = 0


⎨ .

⎪ .

⎪⎩ c m ⊕ a m+1 ⊕ ....... ⊕ a n = 0

Ştiind că 0 ⊕ 0 = 0 şi 1 ⊕ 1= 0 se vor determina simbolurile de


control c1, c2,...,cm.

La recepţionarea cuvintelor de cod v', acestea se introduc într-un


dispozitiv pentru a calcula corectorul, utilizând relaţia:

⎡ c1' ⎤
⎡e m ⎤ ⎢ ' ⎥
⎢. ⎥ ⎢c2 ⎥
Z = H v ,T = ⎢ ⎥ = [h1...... h n ] ⎢ . ⎥
⎢ e2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ . ⎥
⎣ e1 ⎦ ⎢a ' ⎥
⎣ n⎦

În mod analog calculului anterior şi ţinând seama de structura


matricii de control H se va obţine:

⎧ e1 = c1' ⊕ a '3 ⊕.....⊕ a 'n



⎨ .................
⎪e
⎩ m = c m ⊕ a m +1 ⊕...+ a n
' ' '

Numărul binar (em.....e2,e1) se decodifică şi se obţine poziţia erorii,


conform relaţiei de mai sus.
Vom particulariza pentru k=4, numărul simbolurilor de informaţie.
Din relaţia: 2m ≥ m + k + 1, avem că 2m ≥ 5 + m, de unde se va
obţine m ≥ 3. Considerând m=3 vom avea n = m + k = 7.

89
Sisteme de calcul şi operare

Matricea de control este: H3,7=[h1h2.....h7], iar vectorul cuvânt de


cod va fi: v=[c1c2a3c4a5a6a7].
Aplicând relaţia HvT=0 vom avea:

⎡ c1 ⎤
⎢ ⎥
⎢c2 ⎥
⎡0 0 0 1111⎤⎢a 3 ⎥
⎢0 11 0 0 11⎥⎢ ⎥ = 0
⎢ ⎥⎢c4 ⎥
⎢⎣1 0 1 0 1 0 1⎥⎦⎢a 5 ⎥
⎢ ⎥
⎢a 6 ⎥
⎢a 7 ⎥
⎣ ⎦

Prin efectuarea calculelor se obţine:

⎧c4 ⊕ a5 ⊕ a 6 ⊕ a 7 = 0 ⎧c4 = a5 ⊕ a 6 ⊕ a 7
⎪ ⎪
⎨ c 2 ⊕ a 3 ⊕ a 6 ⊕ a 7 = 0 ⇒ ⎨c 2 = a 3 ⊕ a 6 ⊕ a 7
⎪c ⊕ a ⊕ a ⊕ a = 0 ⎪c = a ⊕ a ⊕ a
⎩ 1 3 5 7 ⎩ 1 3 5 7

Calcularea corectorului la recepţie se obţine din relaţia:

⎡ c1' ⎤
⎢ ⎥
⎢c '2 ⎥
⎢ ⎥
⎡e 4 ⎤ ⎡0 0 0 1 1 1 1⎤ ⎢ a 3' ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ' ⎥
⎢e 2 ⎥ = ⎢0 1 1 0 0 1 1⎥ ⎢c 4 ⎥
⎢⎣ e1⎥⎦ ⎢⎣1 0 1 0 1 0 1⎥⎦ ⎢ ' ⎥
⎢a 5 ⎥
⎢ ' ⎥
⎢a 6 ⎥
⎢ ' ⎥
⎢⎣a 7 ⎥⎦

90
Elemente de teoria transmisiei informaţiei

Efectuând calculele se va obţine:


⎧e4 = c '4 ⊕ a '5 ⊕ a '6 ⊕ a '7

⎨e2 = c '2 ⊕ a '3 ⊕ a '6 ⊕ a '7
⎪ e = c' ⊕ a ' ⊕ a ' ⊕ a '
⎩ 1 1 3 5 7

Combinaţia binară (e4,e2,e1) decodificată indică poziţia eronată.


Codul Hamming poate corecta erorile simple însă nu poate corecta nici o
eroare dublă.
Exemplul 2.
Să se determine secvenţele codului Hamming corespunzătoare
cifrelor zecimale 7,8 şi 9 ştiind că în codificarea primară s-a folosit codul
8421. Este respectată condiţia distanţei minime?
Rezolvare
Pentru calcularea cifrelor de control c1,c2,c4 din secvenţele codului
Hamming (tabelul 3.6) se utilizează relaţiile obţinute anterior.
Secvenţele de cod
Tabelul 3.6

Cifra Secvenţele codului


zecimală
8421 Hamming (calculate)
a3 a5 a6 a7 c1 c2 a3 c4 a5 a6 a7
7 0 1 1 1 0 0 0 1 1 1 1
8 1 0 0 0 1 1 1 0 0 0 0
9 1 0 0 1 0 0 1 1 0 0 1

Deoarece codul Hamming detectează şi corectează o singură eroare


va fi necesar ca Dmin ≥ 3. Vom calcula distanţa minimă în raport cu
secvenţele codului Hamming obţinute:
D(v7,v8)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) + (1 ⊕ 0) + (1 ⊕ 0) +
+ (1 ⊕ 0) + (1 ⊕ 0) = 7
D(v7,v9)=3
D(v8,v9)=4
Condiţia distanţei minime de cod este respectată, Dmin =3.
σ

91
Sisteme de calcul şi operare

Exemplul 3

Fie mesajul recepţionat 1111000.


a) Ştiind că reprezintă o secvenţă a codului Hamming, să se verifice
corectitudinea lui. În caz de eroare, presupunând că o singură poziţie este
eronată, să se asigure corecţia.
b) Cărei cifre zecimale îi corespunde mesajul corectat, dacă într-o
primă codificare a fost folosit codul 8421.

Rezolvare
Apelând la relaţiile:
⎧e4 = c '4 ⊕ a '5 ⊕ a '6 ⊕ a '7

⎨e2 = c '2 ⊕ a '3 ⊕ a '6 ⊕ a '7
⎪ e = c' ⊕ a ' ⊕ a ' ⊕ a '
⎩ 1 1 3 5 7

vom calcula (e4, e2, e1), având:


c'1 c'2 a'3 c'4 a'5 a'6 a'7

1 1 1 1 0 0 0

⎧ e4 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1

⎨e2 = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0
⎪e = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0
⎩ 1
Deoarece (e4,e2,e1) ≠ (0,0,0), mesajul recepţionat este eronat. Dacă o
singură cifră binară a mesajului a fost modificată, atunci se poate face
corecţia; cunoscând poziţia eronată prin decodificarea lui (e4,e2,e1)= (100)2 ⇒
⇒ (4)10 ⇒ cifra c'4 devine 0.
Mesajul corect este 1110000 ⇒ acesta corespunde cifrei zecimale 8.
Aceasta s-a obţinut prin decodificarea cifrelor binare: a'3 a'5 a'6 a'7.

3.5.3 Coduri liniare cu control încrucişat.

Un alt model de cod binar utilizat frecvent constă din structurarea


informaţiei pe blocuri de secvenţe de cod şi ataşarea unui bit de control, o
dată fiecărei secvenţe şi altă dată la fiecare coloană ce conţine biţii de
acelaşi rang din toate secvenţele.

92
Elemente de teoria transmisiei informaţiei

Un astfel de control se numeşte prin paritate încrucişată. Blocul de


informaţie codificată ce se va emite este:

Simboluri
Controlul liniei
informaţionale
a11 a12 ....a1n l1
............ .
............ .
am1 am2 ....amn lm
Control coloană c1 c2.......cn

unde:
⎧ n
⎪⎪ ⊕ a ik realizează paritatea pară
k =1
li = ⎨ n
⎪ a ik ⊕ 1 realizează paritatea impară
⎪⎩⊕
(i =1, m )

k =1

şi se numeşte paritate laterală sau transversală, iar

⎧m
⎪⎪⊕ a kj realizează paritatea pară
k =1
cj = ⎨ m
⎪ a kj ⊕ 1 realizează paritatea impară
⎪⎩ ⊕
(j=1,n )

k =1

şi se numeşte simbol de paritate longitudinală.

Controlul erorilor pe principiul parităţii încrucişate poate conduce la:


ƒ depistarea erorilor atât prin paritate transversală cât şi prin
paritate longitudinală;
ƒ depistarea numai prin paritate transversală sau longitudinală;
ƒ erorile să nu fie depistate.

93
Sisteme de calcul şi operare

Blocul de informaţie ce se recepţionează va fi:

Simboluri informaţionale Controlul liniei


a'11 a'12 …………..a'1n l'1
a'21 a'22 …………..a'2n l'2
……………………… .
………………………. .
a'm1 a'm2 …………..a'mn l'm
Control coloană c'1 c'2 ………………c'n l'm+1 (c'n+1)

La recepţie se vor calcula:

n
lic = ⊕ a ik [ ⊕ 1] , i = 1, m
k =1

şi
m
c jc = ⊕ a kj [⊕1] , j = 1, n
k=1

folosind acelaşi tip de paritate ca la emisie.

Comparând parităţile recepţionate cu cele calculate, se poate afirma


că blocul de informaţie a fost transmis:
a) fără erori, dacă l'i = l ic pentru ∀ i = 1, m şi c'j = cjc pentru
∀ j = 1, n ;
b) cu erori, dacă ∃ i∈{1, 2,…, m} astfel încât l'i ≠ lic sau
∃ j∈{1, 2,…, n} astfel încât c'j ≠ cjc.

Exemplul 4

Ştiind că într-o transmisie de date se utilizează detectarea erorilor


prin paritate încrucişată, care este blocul de informaţie ataşat emisiei cifrelor
zecimale de la 4 la 9, codificate primar cu ajutorul codului EXCES 3.
O secvenţă este reprezentată prin codificarea unei singure cifre zecimale.

94
Elemente de teoria transmisiei informaţiei

Rezolvare
Informaţia transmisă
Simbolurile informaţionale
Cifra zecimală Secvenţa EXCES 3 Control linie
x1 x2 x3 x4
4 S1 0 1 1 1 1
5 S2 1 0 0 0 1
6 S3 1 0 0 1 0
7 S4 1 0 1 0 0
8 S5 1 0 1 1 1
9 S6 1 1 0 0 0
Control coloană 1 0 1 1 1

Exemplul 5.
Cunoscând că a fost transmis un bloc de date în condiţiile
exemplului 4 şi s-a recepţionat:

0 1 1 0 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 0 1 1 1
Să se verifice corectitudinea recepţiei.

Informaţia recepţionată
x'1 x'2 x'3 x'4 l'i li calculat
S1 0 1 1 0 1 0
S2 1 0 0 0 1 1
S3 1 0 0 1 1 0
S4 1 0 1 0 0 0
S5 1 0 1 1 1 1
S6 1 1 0 0 0 0
C'j 1 0 1 1 1 1
Cj calculat 1 0 1 0 0

95
Sisteme de calcul şi operare

Avem: l'1 ≠ l1 calculat şi l'3 ≠ l3 calculat;


c'4 ≠ c4 calculat şi c'5 ≠ c5 calculat.
Erorile sunt în secvenţele: S1 şi S3 pe poziţiile x'4 şi l'1.

3.5.4 Coduri polinomiale ciclice

Codurile ciclice sunt coduri bloc în care cele n+1 simboluri ce


formează o secvenţă de cod sunt considerate ca fiind coeficienţii unui
polinom de grad n şi anume:
M(x) = anxn +an-1xn-1 +……+a0
unde ai ∈{0, 1} , i = 1, n .
Codurile polinomiale ciclice au proprietatea: dacă M = (an,an-1,....a0)
este un cuvânt cu sens, atunci orice permutare ciclică a simbolurilor sale
este un cuvânt cu sens M1 = (ai,ai-1,....,a0anan-1,....,ai+1). Mulţimea tuturor
cuvintelor formează o algebră, iar mulţimea cuvintelor cu sens formează un
ideal.
În cazul utilizării codurilor polinomiale ciclice, mesajului M ce se va
transmite i se asociază polinomul M(x) şi apoi printr-un algoritm de
codificare se transformă într-un polinom T(x), astfel încât T(x) să fie
multiplul al polinomului G(x), numit polinomul de generare.
Pentru realizarea codificării se pot utiliza algoritmul de înmulţire sau
algoritmul de împărţire.
Folosind algoritmul de înmulţire: T(x)=M(x)⋅G(x) (operaţiile de
înmulţire şi adunare ale coeficienţilor polinoamelor se fac în modulo 2) nu
se obţine o separare a simbolurilor redundante de cele informaţionale, acesta
fiind principalul motiv pentru care se preferă algoritmul de împărţire, deşi
este ceva mai complicat.
Algoritmul de codificare prin împărţire este:
Ö Fie mesajul M: (an,an-1,.....,a0), care cuprinde n+1 cifre binare
informaţionale. Acestuia i se asociază un polinom în
nedeterminata x: M(x) = anxn +an-1xn-1 +……+a0 (ai ∈{0, 1},
i = 1, n );
Ö Se alege polinomul G(x) de grad r, acesta fiind polinomul de
genarare al codului: G(x) = brxr + br-1xr-1 +…..+ b0, bj ∈{0, 1},
j = 1, r ;
r r
Ö Înmulţind M(x) cu x se va obţine M'(x)=M(x)⋅x

96
Elemente de teoria transmisiei informaţiei

Ö Se împarte M'(x) la G(x):

M ′(x) R(x)
= C(x) ⊕
G(x) G(x)

Gradul polinomului R(x) va fi mai mic, cel mult egal cu r-1.


Coeficienţii polinomului R(x), de grad r-1, constituie simbolurile de control
asociate mesajului informaţional.
¾ Se adună R(x) cu M'(x) obţinându-se polinomul T(x) = M' (x) ⊕
⊕ R(x). Coeficienţii polinomului T(x) constituie mesajul ce se va
transmite:
T: (anan-1....a0cr-1.....c0)
care conţine în poziţiile semnificative cele n+1 simboluri
informaţionale iar în poziţiile mai puţin semnificative cele r
simboluri de control.
Polinomul ataşat mesajului transmis este un multiplu al polinomului
de generare. Avem:
T(x) M ′(x) ⊕ R(x) M ′(x) R(x)
= = ⊕
G(x) G(x) G(x) G(x)
M ′(x) M ′(x) R(x)
Înlocuind prin relaţia = C(x) ⊕ se va obţine:
G(x) G(x) G(x)
T(x) R(x) R(x)
= C(x) ⊕ ⊕ = C(x)
G(x) G(x)
1 44244G(x)
3
=0

Cu alte cuvinte, polinomul T(x) este divizibil prin G(x). Această


proprietate este folosită drept criteriu pentru detecţia erorilor.

La recepţie, dacă mesajul recepţionat este T', acestuia i se asociază


polinomul T'(x). Putem scrie că T'(x)=T(x) ⊕ E(x), unde E(x) este
polinomul erorilor. Aplicând criteriul de detecţie a erorilor, obţinem:
T ′ (x) T(x) ⊕ E(x) T(x) E(x) E(x)
= = ⊕ = C(x) ⊕
G(x) G(X) G(x) G(x) G(x)

97
Sisteme de calcul şi operare

Se observă că dacă E(x) este multiplu al lui G(x), mesajul


recepţionat este validat, deşi conţine erori. Dacă E(x) nu este multiplu al lui
G(x) atunci eroarea este sesizată.
Prin această metodă sunt determinate toate pachetele de erori de
lungime mai mică decât gradul lui G(x)+1. Se numeşte pachet de erori o
succesiune de simboluri, corecte sau eronate, în care primul şi ultimul
simbol sunt eronate.

Exemplul 6

Mesajul binar M: 1110101 se transmite după codificarea prin


polinomul de generare G(x) = x3 + x + 1. Care este reprezentarea binară a
mesajului transmis?

Rezolvare.
Mesajului binar M : 1110101 i se asociază polinomul M(x):
6 5 4 2
♦ M(x) = x + x + x + x + 1;
3
♦ M'(x) = M(x) • x ; deoarece gradul lui G(x) este 3.
9 8 7 5 3
♦ M'(x) = x + x + x + x + x
♦ Se împarte M'(x) la G(x):

M ′(x) R(x)
= C(x) ⊕
G(x) G(x)

x9 + x8 + x7 + x5 + x3 |x3 + x + 1
|---------
9 7 6
x + x +x |x6 + x5 + 1
-----------------------
/ x8 + x6 + x5 + x3
x8 + x6 + x5
------------------------
/ / / x3
x3 + x + 1
-----------
/ x+1
(Adunarea şi scăderea în modulo 2 sunt echivalente)
R(x) = x + 1
♦ Se obţine polinomul T(x) = M'(x) ⊕ R(x)
T(x) = x9 + x8 + x7 + x5 + x3 + x + 1

98
Elemente de teoria transmisiei informaţiei

Coeficienţii acestui polinom reprezintă mesajul ce se va transmite:

Exemplul 7
Ştiind că mesajul recepţionat T': 1010101011 a fost transmis după
codificarea prin polinomul de generare G(x) = x3 + x + 1, să se verifice
corectitudinea lui.

Rezolvare.
Mesajului recepţionat T' i se asociază polinomul T'(x) = x9 + x7 +
+ x5 + x3 + x + 1.
Aplicând criteriul de detecţie a erorilor, obţinem:

T′ (x) T(x) ⊕ E(x) E(x)


= = C(x) ⊕
G(x) G(x) G(x)

x9 + x7 + x5 + x3 + x + 1 | x3 + x + 1
|--------------------
x9 + x7 + x6 | x6 + x3 + x2 + x + 1
----------------------------------------
/ / x6 + x5 + x3 + x + 1
x6 + x4 + x3
------------------------------
/ x5 + x4 + x + 1
x5 + x3 + x2
--------------------------
/ x4 + x3 + x2 + x + 1
x4 + x2 + x
---------------------
/ x3 + 1
x3 + x + 1
-----------------
/ / x /
Aşadar, mesajul recepţionat este eronat deoarece E(x) ≠ 0.

99
4
BAZELE NUMERICE
ALE CALCULATOARELOR

4.1 Sisteme de numeraţie

Un număr reprezintă informaţia a cărei semnificaţie este universal


stabilită şi ale cărei prelucrări au la bază aritmetica. Numerele sunt incluse
într-o clasă de codificare particulară, în care proprietăţile abstracte ale
aritmeticii sunt translatate în mecanismele concrete de calcul asupra
codurilor.
Sistemul de numeraţie este format din totalitatea regulilor de
reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Numărul
de simboluri permise pentru reprezentarea cifrei este numit baza sau
rădăcina sistemului de numeraţie.
Sistemele de numeraţie pot fi:
ƒ poziţionale (sistemele: zecimal, binar, octal);
ƒ nepoziţional (sistemul roman). În continuare sunt prezentate
simbolurile folosite în cadrul sistemului de numeraţie roman şi
valorile zecimale corespunzătoare acestor simboluri:
I X C M V L D
1 10 100 1000 5 50 500
În studiul arhitecturii calculatoarelor ne interesează în mod deosebit
(tabelul 4.1):
¾ reprezentarea binară (baza=2);
¾ reprezentarea octală (baza=8);
¾ reprezentarea zecimală (baza=10);
¾ reprezentarea hexazecimală (b=16).

100
Sisteme de calcul şi operare

Exemple de sisteme de numeraţie


Tabelul 4.1
Sistem de numeraţie Baza (b) Cifrele
Binar 2 (0,1)
Octal 8 (0,1,2,3,4,5,6,7)
Zecimal 10 (0,1,2,3,4,5,6,7,8,9)
Hexazecimal 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Fiind dat un număr întreg N, se numeşte reprezentare în baza b,


orice succesiune de cifre a n , a n-1, ..., a 0 care satisface următoarele
proprietăţi:
ª cifrele lui sunt numere naturale cu proprietatea :
0 ≤ ai ≤ b-1 (i = 0÷n)
ª există egalitatea:
N = anbn + an-1bn-1 + ….a0b0
Când succesiunea de cifre are proprietăţile enumerate, prin definiţie,
se poate scrie:
N = anan-1 ….a0 sau (N)b = anan-1 ….a0
Un număr întreg admite o reprezentare unică în baza b. Fiind dat un
număr real R, se numeşte reprezentare în baza b, orice succesiune de cifre
an,an-1,...,a0,a-1, a-2,...,a-m ce îndeplineşte proprietăţile:
ª cifrele ai sunt numere naturale cu proprietatea :
0 ≤ ai ≤ b-1 (i = − m, n ) ;
ª nu există un rang k astfel încât să avem:
ak = ak-1 = ak-2 = … = b-1
ª există egalitatea:
R = anbn + an-1bn-1 + ….a0b0 + a-1b-1 +….+ a-mb-m
În situaţia în care succesiunea de cifre are proprietăţile enumerate
prin definiţie se scrie:
R = anan-1….a0, a-1a-2 …. a-m
an este cifra cea mai semnificativă (CCMS) a numărului R, iar a-m este cifra
cea mai puţin semnificativă (CCMPS).

101
Bazele numerice ale calculatoarelor

4.2 Conversia bazei de numeraţie

Fiind dat un număr reprezentat în sistemul de numeraţie cu baza b,


calculul cifrelor reprezentării în baza q, q>1 se numeşte conversia din baza
b în baza q.
Conversia numerelor dintr-un sistem de numeraţie b în alt sistem de
numeraţie cu baza q se efectuează examinând separat partea întreagă şi
partea fracţionară.
Fie (N)b=(NI)b + (NF)b, unde (NI)b – reprezintă partea întreagă a
numărului (N)b iar (NF)b reprezintă partea fracţionară.

4.2.1 Conversia numerelor întregi

În noua bază de numeraţie q, partea întreagă [(NI)b] se va scrie:


( N I )b = a n q n + a n-1 q n-1 + ⋅ ⋅ ⋅ ⋅ + a0 q 0 ,
unde a i (i = 0, n) sunt cifre ce aparţin sistemului de numeraţie în baza q.
Conversia părţii întregi (NI)b în baza q se va reduce la determinarea
coeficienţilor a i (i = 0, n) , ce se obţin prin împărţirea succesivă a lui (NI)b
cu q, astfel:
(NI)b/q=(anqn-1+an-1qn-1+,...,+a1) + a0/q → a0

(NI1)b - partea întreagă Rest


a câtului
(NI1)b/q= (anqn-2+⋅⋅⋅⋅+a2) + a1/q → a1
(NI2)b


(NIk)b/q= anqn-k-1+an-1qn-k-2+⋅⋅⋅+ak+1 + ak/q → ak
(NI(k+1))b


(NI(n-1)b/q= an + an-1/q → an-1
(NIn)b
(NIn)b/q= 0 + an/q → an

102
Sisteme de calcul şi operare

Algoritmul se încheie când partea întreagă a câtului devine nulă.


Cifra an reprezintă cifra cea mai semnificativă iar a0 este cifra cea mai puţin
semnificativă.

Exemplul 1

Fiind dat numărul (248)10 să se facă conversia sa în sistemele: binar,


octal şi hexazecimal. (Numerele reprezentate în sistemul zecimal, în mod
obişnuit, se scriu fără specificarea bazei de numeraţie.)

Rezolvare.

a. Conversia în binar

248/2=124 + 0/2 → 0 (a0)


124/2= 62 + 0/2 → 0 (a1)
62/2= 31 + 0/2 → 0 (a2)
31/2= 15 + 1/2 → 1 (a3)
15/2= 7 + 1/2 → 1 (a4)
7/2= 3 + 1/2 → 1 (a5)
3/2= 1 + 1/2 → 1 (a6)
1/2= 0 + 1/2 → 1 (a7)

(248)10=(11111000)2

b. Conversia în octal

248/8=31 + 0/8 → 0 (a0)


31/8= 3 + 7/8 → 7 (a1)
3/8= 0 + 3/8 → 3 (a2)

(248)10=(370)8

c. Conversia în hexazecimal

248/16=15 + 8/16 → 8 (a0)


15/16= 0 + 15/16→ F (a1)

(248)10=(F8)H

103
Bazele numerice ale calculatoarelor

Calculul simplificat pentru conversia în:

binar octal hexazecimal


248 0 248 0 248 8
124 0 31 7 15 15
62 0 3 3 0
31 1 0
15 1
7 1
3 1
1 1
0

Aşadar, (248)10=(11111000)2=(370)8=(F8)H

4.2.2 Conversia rapidă

În cazurile în care între cele două baze de numeraţie (implicate în


conversie) există o relaţie de genul:
p
b1=b2
(b1 şi b2 sunt cele două baze, p este număr natural mai mare sau egal cu 2)
atunci conversia se poate realiza mai rapid.
Pentru a face conversia din baza b2 (baza mai mică) în baza b1, se
împarte numărul reprezentat în b1 în grupe de câte p cifre, de la dreapta la
stânga pentru partea întreagă şi de la stânga la dreapta pentru partea
fracţionară. Dacă ultimul grup de cifre nu are exact p cifre, se completează
cu zerouri pentru a se obţine un grup de p cifre.
Pentru a face conversia din baza b1 (baza mai mare) în baza b2,
pentru fiecare cifră a numărului din baza b1 se asociază un grup de p cifre în
baza b2, obţinându-se astfel numărul în noua bază b2.

104
Sisteme de calcul şi operare

Exemplul 2.
Pentru a face conversia din baza 2 în baza 8 sau 16 se poate porni de
la reprezentarea în baza 2 a numărului şi deoarece 8=23 iar 16=24, se pot
face grupări de 3 respectiv 4 cifre binare pentru a obţine reprezentarea în
aceste baze. În cazul numerelor întregi gruparea se face începând de la
CCMPS (de la dreapta la stânga numărului).
(248)10=( 11 111 000 )2=(370)8

(248)10=( 1111 1000 )2=(F8)H

Exemplul 3.
Pentru a face conversia din baza 8 în baza 2 vom înlocui fiecare
cifră a numărului scris în baza 8 cu un grup de 3 cifre binare, conform
tabelului 4.2.

Conversia rapidă din baza 8 în baza 2

Tabelul 4.2
Cifra din baza 8 Grupul de cifre în baza 2
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

Folosind datele din tabelul anterior, numărul (734)8 = (111 011 100)2
prin conversie directă.

Exemplul 4.
Pentru a face conversia din baza 16 în baza 2 vom înlocui fiecare
cifră a numărului scris în hexazecimal cu un grup de 4 cifre binare, conform
tabelului 4.3.

105

Conversia rapidă din baza 16 în baza 2


Bazele numerice ale calculatoarelor
Conversia rapida din baza 16 in baza 2
Tabelul 4.3
Cifra din hexazecimal Grupul de cifre în baza 2
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Folosind datele din tabelul anterior, numărul (5A2)16 = (0101 1010


0010)2 prin conversie directă.

4.2.3 Conversia numerelor fracţionare

Partea fracţionară se poate scrie:


(NF)b=a-1q-1 + a-2q-2 + a-3q-3 + ⋅⋅⋅
unde: a-j reprezintă cifre aparţinând sistemului de numeraţie q. Conversia
părţii fracţionare se va reduce la determinarea coeficienţilor
a-k (k=1,2,⋅⋅⋅) prin înmulţiri succesive:
(NF)b⋅q=a-1 + a-2q-1 + a-3q-2 + ⋅⋅⋅ → a-1
(NF1)b
(NF1)b⋅q=a-2 + a-3q-1 + a-4q-2 + ⋅⋅⋅ → a-2
(NF2)b

106
Sisteme de calcul şi operare

unde: a-1 reprezintă cifra cea mai semnificativă a părţii fracţionare. Teoretic,
algoritmul ar trebui să se încheie când partea fracţionară devine egală
cu zero, ceea ce se întâmplă într-un număr limitat de cazuri.
În practică, procedeul are un număr finit de paşi, în funcţie de
precizia aleasă. De exemplu, pentru a obţine o precizie bună, pentru fiecare
cifră zecimală trebuie calculate 4 cifre binare (în cazul conversiei din
zecimal în binar).

Exemplul 5
Fiind dat numărul (0,251)10 să se realizeze conversia în sistemele:
binar, octal şi hexazecimal.

Rezolvare.

a. Conversia în octal

0,251⋅8=2 + 0,008 → 2 (a -1)


0,008⋅8=0 + 0,064 → 0 (a -2)
0,064⋅8=0 + 0,512 → 0 (a -3)
0,512⋅8=4 + 0,096 → 4 (a -4)
0,096⋅8=0 + 0,768 → 0 (a -5)

(0,251)10=(0,20040)8

b. Conversia în hexazecimal

0,251⋅16=4 + 0,016 → 4 (a -1)


0,016⋅16=0 + 0,256 → 0 (a -2)
0,256⋅16=4 + 0,096 → 4 (a -3)

(0,251)10=(0,404)H

107
Bazele numerice ale calculatoarelor

c. Conversia în binar
0,251⋅2=0 + 0,502 → 0 (a -1)
0,502⋅2=1 + 0,004 → 1 (a -2)
0,004⋅2=0 + 0,008 → 0 (a -3)
0,008⋅2=0 + 0,016 → 0 (a -4)
0,016⋅2=0 + 0,032 → 0 (a -5)
0,032⋅2=0 + 0,064 → 0 (a -6)
0,064⋅2=0 + 0,128 → 0 (a -7)
0,128⋅2=0 + 0,256 → 0 (a -8)
0,256⋅2=0 + 0,512 → 0 (a -9)
0,512⋅2=1 + 0,024 → 1 (a-10)
0,024⋅2=0 + 0,048 → 0 (a-11)
0,048⋅2=0 + 0,096 → 0 (a-12)
0,096⋅2=0 + 0,192 → 0 (a-13)
0,192⋅2=0 + 0,382 → 0 (a-14)
0,382⋅2=0 + 0,762 → 0 (a-15)
0,762⋅2=1 + 0,524 → 1 (a-16)
0,524⋅2=1 + 0,048 → 1 (a-17)
(0,251)10=(0,01000000010000011)2

Calculul simplificat pentru conversia în:


binar octal hexazecimal
0 251 0 251 0 251
0 502 2 008 4 016
1 004 0 064 0 256
0 008 0 512 4 096
0 016 4 096
0 032 0 768
0 064
0 128
0 256
0 512
1 024

108
Sisteme de calcul şi operare

Conversia în octal sau hexazecimal se realizează şi din reprezentarea


binară a numărului, prin gruparea a câte trei, respectiv patru cifre binare.
Gruparea se va face de la stânga spre dreapta (invers decât în cazul părţii
întregi).
Astfel, (0,251)10 = (0, 010 000 000 100 000 110)2 = (0, 200405)8

(0,251)10 = (0, 0100 0000 0100 0001 1000)2 = (0, 40418)H

Exemplul 6

Fie numărul (23,65)10. Să se realizeze conversia în sistemele: binar,


octal şi hexazecimal.

Rezolvare.

Conversia părţii Conversia părţii


întregi fracţionare
23 1 0 65
11 1 1 30
5 1 0 60
2 0 1 20
1 1 0 40
0 0 80
1 60
1 20
0 40

Deci: (23,65)10=(23)10 + (0,65)10=(10111)2 + (0,10100110)2

(23,65)10 = (1 0 111,1010 0110 )2 = (27,514)8 = (17,A6)H

109
Bazele numerice ale calculatoarelor

Exemplul 7.
Să se facă conversia din binar în zecimal a numărului (1100011)2.

(1100011)2=1⋅26 + 1⋅25 + 0⋅24 + 0⋅23 + 0⋅22 + 1⋅21 + +1⋅20 = (99)10

Exemplul 8.
Conversia din binar în zecimal a numărului (110,101)2

(110,101)2=1⋅22 + 1⋅21 + 0⋅20 + 1⋅2-1 + 0⋅2-2 + 1⋅2-3 = 6 + 0,5 + 0,125 =


= (6,625)10

Exemplul 9.
Conversia din octal în zecimal a numărului (235)8.

(235)8=2 ⋅ 82 + 3⋅81 + 5⋅80=128 + 24 + 5=(157)10

Exemplul 10.
Conversia din hexazecimal în zecimal a numărului (23F)H.

(23F)H=2⋅162 + 3⋅161 + 15⋅160=512 + 48 + 15=(575)10

4.3 Reprezentarea binară a informaţiei numerice

Informaţia numerică se reprezintă în calculatoare într-unul dintre


formatele:
¾ în virgulă fixă (VF);
¾ în virgulă mobilă (VM);
¾ prin coduri numerice (cel mai utilizat este codul 8421).

110
Sisteme de calcul şi operare

4.3.1 Reprezentarea în virgulă fixă (VF)

a) Reprezentarea prin mărime şi semn (Cod direct - CD).

Un număr reprezentat prin mărime şi semn se poate scrie conform


relaţiei:
CD n-1
N = a n ⋅ 2n + ∑ ai ⋅ 2i
i= − m

⎧0 dacã N ≥ 0
an = ⎨
⎩ 1 dacã N p 0

an este bit de semn, iar ai ∈ {0,1} pentru i = − m, (n − 1) şi au fost obţinute


în urma conversiei numărului (N) în sistemul de numeraţie binar. Macheta
de reprezentare a numărului N este:

Observaţie. S-a considerat că partea întreagă se reprezintă prin n cifre


binare, iar partea fracţionară prin m cifre binare:
ƒ dacă n = 0 → se obţine reprezentarea numerelor subunitare;
ƒ dacă m = 0 → se obţine reprezentarea numerelor întregi.

111
Bazele numerice ale calculatoarelor

Exemplu.
Să se reprezinte în cod direct (pe 16 biţi) numărul (27)10, respectiv
numărul -(27)10.

Rezolvare.
CD
(27 )10 = (11011 )2 - -- f (27 )10 = (0000000000011011) 2

b semn
CD
- (27 )10 = (1000000000011011) 2

b) Reprezentarea prin complement faţă de 1 ( cod invers - CI)


Un număr reprezentat în cod invers se poate scrie:

⎧ n-1
⎪ 0 ⋅ 2 + ∑ ai ⋅ 2i
n dacã N ≥ 0
CI ⎪
i=- m
N=⎨
n-1

⎪1 ⋅ 2 + ∑ ai ⋅ 2
n i
dacã N p 0
⎩ i=- m

a i = 1 − a i pentru i = − m, (n − 1) iar ai reprezintă cifrele binare ale


numărului ⏐N⏐.

Observaţie.
Reprezentarea prin complement faţă de 1 se obţine astfel:

1. Fie calculând:
CI
N = 2 n+ 1 -| N |CD - 2- m

⏐N⏐CD este reprezentarea în cod direct a valorii absolute a numărului N.

112
Sisteme de calcul şi operare

2. Fie prin inversarea cifrelor binare (inclusiv cifra de semn) din


reprezentarea în cod direct a numărului în valoare absolută.

Exemplu.
Să se reprezinte în cod invers numerele (14)10 şi -(14)10
(reprezentarea pe un octet).

Rezolvare.
* Numerele pozitive se reprezintă în CI la fel ca şi în CD.

CD, CI
(14 )10 = (1110 ) 2 (14 )10 = ( 0000 1110 )


semn

CI pentru -(14)10 se poate calcula în două variante:


1.

CI 7
N = 28 - ∑ ai ⋅ 2i - 20
i=0

ai ( i = 1,6 ) reprezintă cifrele binare ale numărului (14)10, iar a7="0" este
cifra de semn. Calculând:

1 0000 0000 -
0000 1110
CI

Aşadar:
- (14) = (1111 0001 )2
1111 0010 -
1 ↑ semn

1111 0001

113
Bazele numerice ale calculatoarelor

2. Acelaşi rezultat se obţinea dacă se pornea de la reprezentarea în


CD a numărului în valoare absolută, adică (14)10, şi se inversau toate cifrele
binare.

CD
(14 )10 = (0000 1110 ) 2

CI
- (14 )10 = (1111 0001 ) 2

c. Reprezentarea prin complement faţă de 2 (cod complementar - CC)


Forma de scriere în cod complementar este:

⎧ n-1
⎪0 ⋅ 2n + ∑ ai 2i pentru N ≥ 0
CC ⎪
i= − m
N =⎨
n-1

⎪ 1⋅2 + ∑ a i 2 pentru N p 0
n ~ i
⎩ i= − m
unde:
n-1 n-1
∑ ~a 2i =
i ∑ ai ⋅ 2i + 2-m
i= − m i= − m

şi a i = 1 − a i iar ai (pentru i=n-1, n-2,...,0,...,-m) reprezintă cifrele binare


ale numărului | N|.

Codul complementar al unui număr se poate obţine astfel:

1. Fie calculând:
CC
N = 2n +1 - | N|CD

| N| are aceeaşi semnificaţie

114
Sisteme de calcul şi operare

ca la reprezentarea în CI;
2. Fie adunând un 1 la CCMPS a reprezentării numărului în CI;
3. Dacă se consideră reprezentarea în CD a numărului în valoare
absolută, pentru obţinerea codului complementar, începând de la CCMPS -
se lasă neschimbate toate cifrele de zero, inclusiv prima cifră binară a cărei
valoare este 1; apoi toate celelalte cifre binare se vor inversa, inclusiv cifra
de semn.

Exemplu.
Să se reprezinte în CC numerele 14 şi -14 (pe un octet).

Rezolvare.
CD,CI,CC
14 = (0000 1110 )2

semn

Pentru a calcula CC al numărului -14 vom folosi cele trei metode.

1.
CC 7
- (14 )10 = 28 - ∑ a i ⋅ 2i ai (i=1÷6) fiind cifrele binare ale
i=0 numărului zecimal 14, iar a7 = 0 cifra de
semn.

1 0000 0000 - CC
0000 1110 - (14 )10 = (1111 0010 )2

1111 0010

115
Bazele numerice ale calculatoarelor

2.
CI
- (14) = (1111 0001 )2
1
CC
- (14) = (1111 0010 )2

3.
Cifre binare nemodificate

CD
14 = ( 000011 10)2

Cifrele binare se vor modifica 0 → 1 şi 1 → 0.

CC
− 14 = (11110010) 2

În sistemul octal sau hexazecimal vom avea:


CC
- (14) = (362 )8 = (F 2 ) H

Gruparea a trei cifre binare (respectiv patru cifre binare) se face


începând de la CCMPS (pentru numerele întregi).

Observaţie.
În calculatoarele IBM-PC reprezentarea în virgulă fixă se face pentru
numerele întregi. Se utilizează formatele:

• format întreg pe cuvânt (word), având macheta:

116
Sisteme de calcul şi operare

• formatul scurt:

• formatul lung:

⎧ 0 dacă N ≥ 0

unde S este bitul de semn şi S = ⎨
⎪ 1 dacă N < 0

iar Ii (i=0÷14|30|62) sunt cifrele reprezentării binare a numărului. Dacă N<0


(număr negativ) se utilizează reprezentarea prin complement faţă de 2 (cod
complementar).
În tabelul 4.4 sunt prezentate formatul, precizia şi domeniul de valori
ale datelor reprezentate în virgulă fixă pentru Intel.

Lungimea, precizia şi domeniul de valori


ale datelor reprezentate în virgulă fixă la Intel

Tabelul 4.4

Domeniul de Domeniul de valori


Tipul Lungime Precizie
valori (binar) (zecimal)
Format 16 15 -215 – 215-1 -32768 ÷ 32767
word

Format 32 31 -231 – 231-1 -2.14*109 ÷ 2.14*109


scurt

Format 64 63 -263 – 263-1 -9.22*1018 ÷ 9.22*1018


lung

117
Bazele numerice ale calculatoarelor

Există o serie largă de aplicaţii ce necesită numere care nu sunt


întregi. Există, de asemenea, mai multe modalităţi de reprezentare a
numerelor reale fracţionare.
Una dintre modalităţi este virgula fixă, în care folosim aritmetica
numerelor întregi şi ne imaginăm virgula undeva în altă parte decât la
dreapta bitului CMPS.
Adunarea a două numere astfel reprezentate poate fi făcută în acelaşi
mod ca şi o adunare întreagă, în timp ce înmulţirea necesită o deplasare
de biţi.

De-a lungul anilor au fost propuse şi alte reprezentări ce utilizau fie


stocarea logaritmului numerelor şi executarea unei înmulţiri prin adunarea
logaritmilor, fie foloseau o pereche de întregi (a,b) pentru reprezentarea
fracţiei a/b.
Dintre toate aceste propuneri, una singură a avut succes pe scară
largă: reprezentarea în virgulă mobilă, prezentată în continuare.

4.3.2 Reprezentarea în virgulă mobilă

În cazul reprezentării numerelor în virgulă mobilă, se pleacă de la


faptul că un număr N se poate scrie sub forma: N=±(f)b*bE, unde:

ƒ b – reprezintă baza sistemului de numeraţie utilizat (mai frecvent


se utilizează baza 2 sau 16);
ƒ E – exponentul real;
ƒ f – partea fracţionară a numărului.

Reprezentarea în calculator, implică existenţa a trei câmpuri, acestea


fiind:
ƒ bitul de semn:

⎧ 0 dacă N ≥ 0
⎪⎪
S= ⎨

⎪⎩ 1 dacă N < 0

La unele calculatoare reprezentarea numerelor reale pozitive diferă


de reprezentarea numerelor negative numai prin bitul de semn.

118
Sisteme de calcul şi operare

ƒ Exponentul (cunoscut şi sub denumirea de caracteristică), are o


valoare determinată prin relaţia:

EXP = exponent real + constantă în exces

Constanta în exces se stabileşte în funcţie de format şi de calculator


şi are ca scop eliminarea unei zone în care să fie specificat semnul
corespunzător exponentului real. Se pot reprezenta în acest mod şi numere
negative folosind acelaşi tip de reprezentare.
ƒ Fracţia (sau mantisa). Numărul de cifre binare corespunzătoare
acestei zone variază, de asemenea, în funcţie de calculator şi
formatul utilizat. De regulă, fracţia trebuie să fie normalizată,
respectând relaţia:

1
≤ (f ) b < 1
b

Pentru reprezentarea în virgulă mobilă a unui număr real N, într-un


calculator din familia IBM-PC se consideră:

N=±2E (f)2

1≤(f)2<2 iar (f)2=I0f1f2...fn (I0 = 1 iar valoarea lui n depinde de


formatul ales).

De regulă se utilizează următoarele formate:

1) Formatul real binar

simplă precizie, având macheta:

119
Bazele numerice ale calculatoarelor

dublă precizie:

S este bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0);


fn - cifrele binare ale fracţiei normalizate;
Ei - cifrele binare ale zonei de exponent;
EXP=E + (81)H.

Dacă zona exponent este egală cu zero, numărul zecimal este egal cu
zero. Dacă zona exponent este diferită de zero, atunci numărul zecimal va fi
determinat astfel:
< N >=< S >∗ ( 0.1 < fractie > )2 * 2< EXP> − (80)h

2) Formatul real sau formatul IEEE (Institute of Electrical and


Electronics Engineers) 754, apărut în anul 1985:
simplă precizie (format scurt), având macheta:

dublă precizie (format lung), cu macheta:

unde:
S - bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0);
fi - cifrele binare ale zonei exponent (EXCES=127 sau 1023);

EXP = E + 127 [(7F)H] - pentru format scurt;


EXP = E + 1023 [(3FF)H] - pentru format lung.

120
Sisteme de calcul şi operare

format temporar (sau real extins), cu macheta:

unde:
S - bit de semn;
I0 - bitul părţii întregii, ce se memorează în formatul temporar,
implicit în formatul scurt şi lung;
fi - cifrele binare ale fracţiei;
Ei - cifrele binare ale zonei exponent,
EXP = E + 16383 [(3FFF)H]
Dacă exponentul este egal cu zero, atunci numărul este egal cu zero.
Dacă exponentul nu este egal cu zero, numărul zecimal se va calcula după
relaţia:

<N>=<S>*(1.<fracţie>)2*2<EXP>-EXCES

Exemplu.
Să se reprezinte în virgulă mobilă (în format binar cât şi în format
real) simplă precizie numerele: N1 = 1 şi N2 = -1.

Rezolvare.
N1 = 1⋅20 ; N2 = -1⋅20

a) Format binar

VM
N1 = (8100 0000 ) H

121
Bazele numerice ale calculatoarelor

VM
N2 = (8180 0000 ) H

b) Format real

N1=(3F800000)H
N2=(BF800000)H

Exemplu
Fie N1 = (8561 0000)H - reprezentarea în virgulă mobilă simplă
precizie format binar. Să se determine numărul din zecimal.

Rezolvare.
N1=25⋅(0,1110000100...0)2=25x(2-1+2-2+2-3+2-8) = 24+23+22+2-3=28,125

4.3.3 Numere şi valori speciale

În cadrul reprezentării valorilor numerice pentru microprocesorul


Intel, există o serie de numere şi valori ce au o reprezentare specială,
prezentate în continuare. Există astfel:
9 Zerouri cu semn. În acest sens, valoarea 0 poate fi reprezentată
drept +0 sau -0 în funcţie de bitul de semn. Ambele reprezentări
sunt egale ca valoare. Semnul unui rezultat cu valoare 0 depinde
de operaţia efectuată şi de modalitatea de rotunjire.
9 Numere finite normalizate si denormalizate.
9 +∞, -∞ reprezintă valoarea maximă pozitivă, respectiv valoarea
minimă negativă pentru numere reale ce poate fi reprezentată în
virgulă mobilă. Valoarea infinit este totdeauna reprezentată de o
fracţie 0 şi de exponentul maxim permis de formatul respectiv
(de exemplu 255 în format simplă precizie). Sunt generate
excepţii atunci când utilizarea unei valori infinite ca operand
sursă conduce la o operaţie invalidă.

122
Sisteme de calcul şi operare

9 Valori NaN (Not a Number). Aceste valori nu fac parte din


mulţimea numerelor reale. Reprezentarea lor se face prin
intermediul unui exponent maxim acceptat de reprezentarea
respectivă şi a unei fracţii diferită de zero. În acest caz bitul de
semn este ignorat.

Numere finite normalizate şi denormalizate

În această categorie intră numerele diferite de zero finite. Numerele


normalizate reprezintă numerele ce pot fi codificate într-o formă
normalizată între 0 şi ∞. În reprezentarea de mai jos, acest grup include
toate numerele cu exponenţi modificaţi între 1 şi 254 (între –126 şi 127).
Atunci când exponentul modificat este 0, numerele mai mici pot fi
reprezentate făcând bitul părţii întregi zero. Numerele din acest domeniu se
numesc numere denormalizate. Acest lucru duce la scăderea preciziei
(numărul de biţi semnificativi ai fracţiei este redus datorită apariţiei
zerourilor de la început).
În momentul normalizării calculelor în virgulă mobilă, unitatea în
virgulă mobilă operează cu numere normalizate şi produce rezultate
normalizate. Numerele denormalizate reprezintă o condiţie de excepţie
denumită underflow. Un număr denormalizat este calculat prin intermediul
unei tehnici denumită gradual underflow. În figura 4.1 este prezentat un
exemplu al procesului de denormalizare, iar în figura 4.2 sunt înfăţişate
reprezentările valorilor +0, -0 şi a numerelor normalizate şi denormalizate
finite.

Figura 4.1 Exemplu de denormalizare

123
Bazele numerice ale calculatoarelor

Figura 4.2 Reprezentări pentru +0, -0, numere normalizate


şi denormalizate finite

Valori NaN (Not A Number)

Standardul IEEE defineşte două clase de valori NaN:


” QNaN (quiet NaN) –au bitul CMS setat (valoarea 1)
” SNaN (signaling NaN) – au bitul CMS zero.
Valorile QNaN se propagă prin operaţiile aritmetice fără a indica o
excepţie, pe când valorile SNaN semnalizează în general o excepţie
(operaţie invalidă) atunci când apar ca operanzi în operaţii aritmetice. În
figura 4.3 sunt înfăţişate modalităţile de reprezentare pentru valorile speciale
+∞, -∞ şi NaN. În figura 4.4 sunt prezentate operaţiile ce generează valorile
speciale despre care am discutat.

Figura 4.3 Reprezentări pentru +∞, -∞, valori NaN

124
Sisteme de calcul şi operare

Figura 4.4 Operaţii ce generează valori speciale

4.3.4 Reprezentarea numerelor întregi zecimale


codificate binar (BCD)

Pentru reprezentarea numerele folosind codificarea BCD (Binary


Coded Decimal) se utilizează două formate: formatul împachetat (packed
BCD) şi formatul despachetat (unpacked BCD).
Reprezentarea în BCD format împachetat conţine două cifre
zecimale pe un octet (cifra zecimală mai puţin semnificativă pe biţii 0 ÷ 3 şi
cifra zecimală mai semnificativă pe biţii 4 ÷ 7).
Datele reprezentate în BCD format despachetat conţin o cifră
zecimală pe octet - memorată în biţii 0 ÷ 3, iar biţii 4 ÷ 7 conţin informaţia
(F)H [(1111)2].
Microprocesorul acceptă datele în format BCD împachetat sau
despachetat, având următoarea machetă de reprezentare pe un octet:

125
Bazele numerice ale calculatoarelor

Exemplu.
Să se reprezinte în zecimal codificat binar (în BCD) numerele
zecimale N1=9450 şi N2=78431.
Rezolvare.
N1=(1001 0100 0101 0000)2 - format împachetat
N2=(0111 1000 0100 0011 0001)2 - format împachetat
N1=(F9F4F5F0)H - format despachetat
N2=(F7F8F4F3F1)H - format despachetat
Pentru reprezentarea numerelor nu s-a impus o anumită lungime a
secvenţelor şi nu s-a ţinut cont de semnul numărului.
Pentru calculatoarele compatibile IBM-PC coprocesorul matematic
memorează numerele întregi zecimale pe zece octeţi - în format împachetat.
În acest caz macheta de reprezentare este:

unde:
S - bit de semn ( 0 pentru numere pozitive, 1 pentru numere negative);
Di - cifră zecimală (două cifre per octet);
X - biţi nefolosiţi.
Numerele negative se deosebesc de cele pozitive prin bitul de semn.

4.4 Operaţii aritmetice în sistemul binar

4.4.1 Adunarea în binar

Tabela operaţiei de adunare în binar este:

+ 0 1
0 0 1
*
1 1 10
*
1 se transportă la rangul următor

126
Sisteme de calcul şi operare

Exemplu.
Să se însumeze în binar (00010101)2 cu (10010111)2. Vom avea:

(00010101)2 + (21)10 +
(10010111)2 ⇔ (151)10

(10101100)2 (172)10

4.4.2 Scăderea în binar

Tabela operaţiei de scădere în binar este:

Descăzut
- 0 1
Scăzător 0 0 1
*
1 1 0

*
Rezultat datorită împrumutului din rangul superior

Exemplu.
Să se scadă în binar:

(11011)2 - (27)10
(01111)2 ⇔ (15)10

(01100)2 (12)10

Observaţie. În calculator operaţia de scădere se reduce la o operaţie de


adunare prin utilizarea codului invers sau a codului complementar.

127
Bazele numerice ale calculatoarelor

4.4.3 Înmulţirea în binar

Tabela înmulţirii în binar este:

• 0 1
0 0 0
1 0 1

Exemplu.
Să se efectueze înmulţirea: (1101)2 x (1001)2.

11012•
10012

11012
00002
00002
11012
11101012

Deci (1101)2 x (1001)2 = (1110101)2

(13)10 x (9)10=(117)10

128
Sisteme de calcul şi operare

4.4.4 Împărţirea în binar

Cea mai simplă metodă este scăderea repetată a împărţitorului din


deîmpărţit.

Exemplu.
Să se efectueze împărţirea: (1010001)2:(1001)2=(1001)2.

În acest caz împărţirea s-a efectuat fără rest: (81)10 :(9)10=(9)10.

Exemplu.
Să se efectueze împărţirea: (100011)2 : (110)2= (101,110)2.

În această situaţie operaţia de împărţire poate continua, astfel încât


aproximarea rezultatului să fie cât mai bună.

Operaţiile în sistemul octal sau hexazecimal se vor efectua conform


regulilor de adunare şi înmulţire ce sunt prezentate în tabelele 4.5 ÷ 4.8.

129
Bazele numerice ale calculatoarelor

Adunarea în sistemul hexazecimal

Tabelul 4.5

+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 a B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 1
2 2 3 4 5 6 7 8 9 A B C D E F 10 1
3 3 4 5 6 7 8 9 A B C D E F 10 11 1
4 4 5 6 7 8 9 A B C D E F 10 11 12 1
5 5 6 7 8 9 A B C D E F 10 11 12 13 1
6 6 7 8 9 A B C D E F 10 11 12 13 14 1
7 7 8 9 A B C D E F 10 11 12 13 14 15 1
8 8 9 A B C D E F 10 11 12 13 14 15 16 1
9 9 A B C D E F 10 11 12 13 14 15 16 17 1
A A B C D E F 10 11 12 13 14 15 16 17 18 1
B B C D E F 10 11 12 13 14 15 16 17 18 19 1
C C D E F 10 11 12 13 14 15 16 17 18 19 1 1
D D E F 10 11 12 13 14 15 16 17 18 19 1 1 1
E E F 10 11 12 13 14 15 16 17 18 19 1 1 1 1
F F 10 11 12 13 14 15 16 17 18 19 1 1 1 1 1

130
Sisteme de calcul şi operare

Înmulţirea în sistemul hexazecimal

Tabelul 4.6

* 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 1 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

131
Bazele numerice ale calculatoarelor

Adunarea în sistemul octal

Tabelul 4.7

+ 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16

Înmulţirea în sistemul octal

Tabelul 4.8

* 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 23 34 45 52 61

132
Sisteme de calcul şi operare

4.5 Operaţiile aritmetice în virgulă fixă (VF)

4.5.1 Adunarea în cod direct (CD)

Se adună mărimile numerelor, fără cifra de semn şi se dă rezultatului


semnul comun celor două numere. Fie:
CD n-1
N1 = an ⋅ 2n + ∑ ai ⋅ 2i ai ∈ {0,1}
i= − m

CD n-1
N2 = b n⋅ 2n + ∑ bi⋅2i bi ∈ {0,1}
i= − m

CD n -1
N1 + N 2 = a n ⋅ 2 +
n
∑ (a + b + t ) 2
i = −m
i i i
i

Însumarea se face începând de la bitul cel mai puţin semnificativ al


reprezentării numerelor, ţinându-se cont de transportul de la rangul anterior (ti).
Se consideră t-m=0, iar dacă va apare tn (transport de la bitul CMS al
mărimii) avem de-a face cu depăşire binară. Rezultatul operaţiei poate fi
corect când nu apare transport de la cifra cea mai semnificativă a mărimii
rezultatului şi poate fi incorect când apare transport.
Pentru simplitate, vom lucra cu numere întregi reprezentate pe un
octet, primul bit fiind bitul de semn iar următorii şapte biţi pentru mărime
(-128 < N < 127).

133
Bazele numerice ale calculatoarelor

Exemplu
Să se însumeze N1 cu N2, având N1=(40)10 şi N2=(60)10.

Rezolvare.

CD
N1 = (00101000 )2
CD
N2 = (00111100 )2
CD
N1 + N 2 = (01100100 )2

Verificând rezultatul o să obţinem:

N 1 +N 2 =+(1 ⋅ 2 6 +1 ⋅ 2 5 +0 ⋅ 2 4 +0 ⋅ 2 3 +1 ⋅ 2 2 +0 ⋅ 2 1 +0 ⋅ 2 0 )=(100) 10

Exemplu
Să se calculeze N1 + N2, având N1=40 şi N2=90.

Rezolvare.

CD
N1 = (00101000 )2

CD
N2 = (01011010 )2

CD
N1 + N 2 = (10000010 )2

Bitul CMS al mărimii rezultatului

Deoarece în acest caz rezultă transport de la bitul CMS, rezultatul este


incorect. (Rezultatul însumării celor două numere nu poate fi reprezentat
utilizând doar şapte cifre binare).

134
Sisteme de calcul şi operare

Exemplu
Să se calculeze N1+N2, având N1= -25 şi N2= -30.

Rezolvare.

CD
N1 = (1 0011001 )2

CD
N2 = (1 0011110 )2

CD
N1 + N 2 = (1 0110111 )2

Verificând:
N 1 +N 2 = -(0 ⋅ 2 6 +1 ⋅ 2 5 +1 ⋅ 2 4 +0 ⋅ 2 3 +1 ⋅ 2 2 +1 ⋅ 2 1 +1 ⋅ 2 0 )
N 1 +N 2 = -55, rezultat corect

Exemplu
Să se calculeze N1+N2, având N1= -75 şi N2= -80

Rezolvare.
CD
N1 = (11001011 )2
CD
N2 = (11010000 )2
CD
N1 + N 2 = (10011011 )2

Apare transport de la bitul CMS, rezultat incorect.

135
Bazele numerice ale calculatoarelor

Dacă cele două numere au semne diferite procedura de lucru este


asemănătoare celei ce urmează, când numerele sunt reprezentate în cod
invers.

4.5.2 Adunarea/scăderea în cod invers (CI)

Adunarea/scăderea numerelor cu acelaşi semn


a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod invers
este identică reprezentării în cod direct.
b) Numerele sunt negative, fie N1 < 0 şi N2 < 0
(În continuare se va lucra cu numere întregi reprezentate pe un octet).

Vom nota prin ⏐N1⏐CD ,⏐N2⏐CD reprezentarea în cod direct a valorilor


absolute ale numerelor N1 şi N2.
CI
N1 = 28 - | N1 |CD - 20

CI
N2 = 2 -| N
8
|
2 CD -2 0

CI
N1 + N 2 = 28 + 28 -| N 2 |CD -| N 2 |CD - 2 0 - 2 0

Având în vedere că rezultatul trebuie să fie de forma:

CI
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) - 2 0

apare necesar ca transportul de la cifra de semn să fie adunat la cifra cea mai
puţin semnificativă,

136
Sisteme de calcul şi operare

CI
Bitul CMPS
N1 + N 2 = 28 - (| N1|CD +| N 2 |CD ) - 20 + 28 - 20

Rezultat Transport de la cifra de semn

Exemplu.
Să se calculeze N1+N2, având: N1= -30 şi N2= -14.

Rezolvare

CI
N1 = ( 1110 0001 )2

CI
N 2 = ( 1111 0001 )2

CI
N1 + N 2 = (1 1101 0010 )2 +

1
CI
N1 + N 2 = (1101 0011 )2

CD
N1 + N 2 = (1010 1100 )2

Verificând: N 1 +N 2 = - (1 ⋅ 2 5 +1 ⋅ 2 3 +1 ⋅ 2 2 )=-44, rezultat corect.

137
Bazele numerice ale calculatoarelor

Exemplu.
Să se calculeze N1+N2, având N1= -81 şi N2= -72

Rezolvare.
CI
N1 = ( 1010 1110 )2

CI
N 2 = ( 1011 0110 )2

CI
N1 + N 2 = (1 0110 0100 )2 +
1
CI
N1 + N 2 = (0110 0101 )2 N1 + N 2 > 0

Rezultatul este eronat, deoarece cel mai mic număr întreg ce se poate
reprezenta în cod invers pe un octet este -127.

Adunarea/scăderea numerelor cu semne diferite

Fie N1>0 şi N2<0.

Reprezentarea lui N1 este aceeaşi în cod direct şi cod invers.

CI
N 2 = 28 -| N 2 |CD - 2 0

În urma operaţiei de adunare obţinem:

CI
N1 + N 2 = 28 -(| N 2 |CD -| N1|CD ) - 2 0

Rezultatul este pozitiv sau negativ, după valorile absolute ale


numerelor N1 şi N2.

138
Sisteme de calcul şi operare

Exemplu.
Să se calculeze N1 + N2, având N1=91 şi N2=-20.

Rezolvare.

CI
N1 = ( 0101 1011 )2

CI
N 2 = ( 1110 1011 )2

CI
N1 + N 2 = (1 0100 0110 )2 +

1
CI
N1 + N 2 = (0100 0111 )2 → rezultat corect

Exemplu.
Să se calculeze N1+N2, având N1= -91 şi N2= 20.

Rezolvare.
CI CI
N1= ( 1010 0100 ) 2 N 2 = ( 0001 0100 ) 2

CI CD
N1 + N 2 = (1011 1000 ) 2 N1 + N 2 = (1100 0111 ) 2

Şi în acest caz rezultatul este corect. Pentru verificarea rezultatului se


va ţine seama de bitul de semn:
Ö dacă acesta este "0" → reprezentarea rezultatului este acelaşi în
cod invers şi cod direct.
Ö dacă acesta este "1" → rezultatul este în cod invers şi diferă de
reprezentarea lui în cod direct.

Scăderea a două numere binare se rezumă la adunarea celor două


numere, utilizând reprezentarea în cod invers.
Fie N1>0 şi N2>0. Relaţia N1 - N2 este echivalentă cu N1 + (-N2).

139
Bazele numerice ale calculatoarelor

Observaţie. Adunarea în cod invers, ca şi în cod complementar, operează


asupra tuturor cifrelor binare, inclusiv asupra cifrei de semn.

4.5.3 Adunarea/scăderea în cod complementar (CC)

Adunarea /scăderea numerelor cu acelaşi semn

a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod


complementar este identică reprezentării în CD.

b) Numerele sunt negative.

Fie N 1 <0 şi N 2 <0:

CC CC
N1 = 28 -| N1|CD N 2 = 28 -| N 2 |CD

Prin ⏐N1⏐CD, ⏐N2⏐CD am notat reprezentările în cod direct ale


valorilor absolute pentru numărul N1, respectiv N2. Deci:

CC
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) + 28

Forma de reprezentare a rezultatului Transportul de la bitul


de semn

Ţinând seama de forma de reprezentare a rezultatului, apare necesar


ca transportul de la cifra de semn să se neglijeze.

140
Sisteme de calcul şi operare

Exemplu.

Să se calculeze: N1+N2, având N1=-14 şi N2=-72

Rezolvare.

CC CC
N1 = ( 1111 0010 )2 N 2 = ( 1011 1000 )2

CC
N1 + N 2 = (1 1010 1010 )2

Se ignoră

Pentru verificarea rezultatului se va calcula:

CD
N1 + N 2 = (11010110 )2 = - (1 ⋅ 26 + 1 ⋅ 24 + 1 ⋅ 22 + 1 ⋅ 21) = - 86

Observaţie. Dacă în urma însumării a două numere cu acelaşi semn, rezultatul


are semn contrar → acesta este eronat (valoarea rezultatului nu se poate
încadra pe numărul de biţi utilizat).

Adunarea/scăderea numerelor cu semn diferite

Fie N1>0 şi N2<0.

CC
N2 = 28 -| N 2 |CD
Prin adunare avem:
CC
N1 + N 2 = 28 -(| N 2 |CD - | N1|CD )

Dacă ⏐N1⏐ > ⏐N2⏐ rezultatul va fi pozitiv, iar pentru ⏐N1⏐ < ⏐N2⏐
rezultatul va fi negativ.

141
Bazele numerice ale calculatoarelor

Exemplul.
Să se calculeze N1 + N2, având N1= 33 şi N2= -23.

Rezolvare.

CC CC
N1 = ( 0010 0001 )2 N 2 = ( 1110 1001 )2
CC
N1 + N 2 = (1 0000 1010 )2

Transport care se neglijează

Verificarea: N 1 +N 2 = 1 ⋅ 2 3 +1 ⋅ 2 1 =(10) 1 0

Exemplu.
Să se calculeze N1+N2, având N1 = -33 şi N2 = 3

CC CC
N1 = ( 1101 1111 )2 N 2 = ( 0001 0111 )2

CC
N1 + N 2 = ( 1111 0110 )2

Pentru verificarea rezultatului se va ţine seama de valoarea bitului de


semn:
9 dacă acesta este "0" - rezultatul este pozitiv şi reprezentarea este
aceeaşi în CD şi CC;
9 dacă acesta este "1" - rezultatul negativ şi avem reprezentări
diferite în CD şi CC.

Verificarea rezultatului anterior:


CD
N1 + N 2 = (1000 1010 )2 _ N1 + N 2 = - (10 )10

142
Sisteme de calcul şi operare

4.6 Operaţii aritmetice în virgulă mobilă (VM)

a) Adunarea/scăderea

Fie numerele N1>0 şi N2>0, ce se pot scrie:

N1 = 2n1 x (0, b11 b12 b13 ... b1k )2 = 2n1 x( f 1 )2

N 2 = 2n 2 x (0, b21 b22 b23 ... b2 k )2 = 2n 2 x( f 2 )2

unde bij∈ {0,1} pentru i=1,2 şi j = 1, k , valoarea lui k depinde de numărul


de cifre binare utilizate pentru reprezentarea părţii fracţionare.

a1) n1=n2
N 1 +N 2 =2 n 1 × (f 1 +f 2 )
Dacă f1+f2 ≥ 1 sau f1-f2 < 1/2 , rezultatul se va normaliza, prin
deplasarea cu o poziţie spre stânga sau dreapta virgulei, concomitent cu
adunarea sau scăderea unei unităţi din zona exponent.

a2) n1≠n2, n1 > n2 .


Pentru a aduna/scădea cele două numere, trebuie să aibă acelaşi
exponent. Deoarece n1 > n2, putem scrie:

N 2 = 2n1x(0, 0....0 b21 b22 .... b2[k-(n1-n 2 )])2

Un număr de (n1-n2) zerouri

În continuare se va proceda ca în cazul precedent; dacă în urma


efectuării adunării/scăderii fracţia rezultat nu este normalizată se va
normaliza modificând corespunzător şi exponentul.

143
Bazele numerice ale calculatoarelor

b) Înmulţirea şi împărţirea
N1 = 2n1 ⋅ ( f 1 )2 N 2 = 2n 2 ⋅ ( f 2 )2

N1 * N 2 = 2n1+n 2 x ( f1 x f 2 )2 iar

N1 / N 2 = 2n1-n 2 x ( f 1 / f 2 )2

Operaţiile de înmulţire/împărţire asupra zonelor de fracţie se


realizează prin însumări (scăderi) repetate. Dacă nu este normalizată, fracţia
rezultat se va normaliza.

4.7 Operaţii aritmetice în codul numeric 8421

4.7.1 Adunarea în 8421

Adunarea numerelor în zecimal codificat binar (8421) se face binar,


rang cu rang pe fiecare grup de patru cifre binare, cu adăugarea, eventual, a
unor corecţii.
Fie a şi b două cifre zecimale codificate binar (în 8421) care se
adună; rezultatul c = a + b poate fi:
ƒ corect, şi nu este necesar să se aplice nici o corecţie dacă:
0000< c< 1001;
ƒ incorect şi se impune corecţia, adunând 0110 în situaţiile:
1010< c< 1111 - această reprezentare nu corespunde unei cifre
în zecimal. Adunând 0110 va determina în transport la rangul
următor.
0000< c< 1001, dar a rezultat a cincea cifră binară, aceasta
fiind 1 şi reprezintă transportul pentru tetrada binară
superioară.
ccorectat = c + 0110

144
Sisteme de calcul şi operare

Exemplu.
Să se adune în codul numeric 8421 numerele N=883 şi M= 592.

4.7.2 Scăderea în 8421

Fie a şi b două cifre zecimale codificate binar, în codul 8421 ce se


scad astfel:
ª dacă c = a-b este un număr pozitiv, acest rezultat este corect;
ª dacă rezultatul este negativ, se realizează un împrumut de la
tetrada binară superioară (-0001)2, care va reprezenta pentru
tetrada unde este necesar împrumutul valoarea
(10000)2=16.Această configuraţie de cifre [(10000)2] se adună la
tetrada a şi din aceasta se scade tetrada b, obţinându-se un număr
pozitiv. Noului rezultat i se aplică o corecţie prin scăderea cifrei
610, adică (0110)2. Scăderea este necesară deoarece în zecimal
valoarea împrumutului este 10, iar prin reprezentarea într-un cod
cu 4 cifre binare împrumutul este 16.

145
Bazele numerice ale calculatoarelor

Exemplu
Să se scadă, în codul 8421, din numărul N= 1032, numărul M = 974.

146
5
BAZELE LOGICE
ALE CALCULATOARELOR

5.1 Definirea algebrei logice

Algebra booleană (algebra logicii) este o mulţime B ≠ {∅} (B = B2 =


= {0,1}) înzestrată cu două legi de compoziţie:
⎧ ∩ (*) produs logic (ŞI)

⎩ ∪ (+) sumă logică (SAU)
şi o aplicaţie a mulţimii B în ea însăşi notată cu ¯ numită complement (NU).

Sunt respectate proprietăţile:

a) idempotenţă: x ∩ x = x; x ∪ x = x

b) comutativitate: x ∩ y = y ∩ x; x ∪ y = y ∪ x

c) asociativitate: (x ∩ y) ∩ z = x ∩ (y ∩ z)
(x ∪ y) ∪ z = x ∪ (y ∪ z)

d) absorbţie: x ∩ (x ∪ y) =x ; x ∪ (x ∩ y) = x

e) distributivitate: x ∩ (y ∪ z) = (x ∩ y) ∪ (x ∩ z)
x ∪ (y ∩ z) = (x ∪ y) ∩ (x ∪ z)

147
Sisteme de calcul şi operare

f) ∃ un element 0, numit prim element, astfel încât:


x ∩ 0 = 0; x ∪ 0 = x
g) ∃ un element 1, numit ultim element, astfel ca:
x ∩ 1 = x; x ∪ 1 = 1

h) legea dublei negaţii: x =x


i) principiul contradicţiei: x∩ x =0
j) principiul terţului exclus: x ∪ x = 1
k) legile lui de Morgan: x ∩ y = x ∪ y ;x ∪ y = x ∩ y

Prin aplicarea de un număr finit de ori a operaţiilor ∩, ∪,⎯ unor


elemente determinate sau nedeterminate ale unei algebre booleene se obţine o
expresie booleană (logică).

Considerând expresia booleană E (x1, x2,..., xn), se numeşte valoare a


expresiei booleene pentru setul de valori i1, i2,..., in, valoarea obţinută prin
înlocuirea în expresia E a variabilelor x1, x2,..., xn cu valorile i1, i2,...,in şi
efectuarea operaţiilor indicate.

Exemplul 1.
E (x1, x2, x3) = x1 ∪ x2 ∪ (x2 ∩ x3 )

E (0 , 0 , 1 ) = 0 ∪ 0 ∪ (0 ∩ 1) = 0
Spunem că expresia booleană E1 (x1, x2,..., xn) este echivalentă cu
E2 (x1, x2,..., xn) dacă E1 (i1j, i2j,..., inj) ≡ E2 (i1j, i2j,...,inj) pentru ∀ j = 1, 2 n .

Exemplul 2.
E1 (x1, x2 ,x3) = x2 ∪ ( x1 ∩ x2 ∩ x3)

E2 (x1, x2, x3) = ( x1 ∩ x2 ) ∪ ( x1 ∩ x3) ∪ ( x1 ∩ x2)


E1 (0,0,0) = E2 (0,0,0)
E1 (0,0,1) = E2 (0,0,1)

E1 (1,1,1) = E2 (1,1,1)

148
Bazele logice ale calculatoarelor

Funcţia logică (booleană) de n variabile, f(x 1 ,x 2 ,..,x n ) , este o funcţie


definită pe produsul cartezian B 2 X B 2 X...X B 2 cu valori în mulţimea B2:

f : B 2 X B 2 X...X B 2 → B 2

astfel încât f (i1j, i2j,..., inj) ∈ {0,1} ∀ j = 1 , 2 n (Unele funcţii logice pot fi
incomplet definite).

Exemplul 3.
Fie f: B2 x B2 x B2 → B2 , astfel:
f(0,0,0) = 0, f(0,0,1) = 0, f(0,1,0) =1,
f(0,1,1) = 1, f(1,0,0) = 0, f(1,0,1) = 1, f(1,1,1) = 0.
În figura 5.1 avem reprezentarea grafică a acestei funcţii.

Figura 5.1 Reprezentarea grafică a unei funcţii

149
Sisteme de calcul şi operare

5.2 Modalităţi de reprezentare a funcţiilor logice

Funcţiile booleene se pot reprezenta fie sub forma unor tabele de


adevăr, fie sub forma expresiilor booleene. Cele două forme de reprezentare
sunt echivalente. Oricărei funcţii logice i se poate asocia un tabel de adevăr
sau expresia logică corespunzătoare. Considerăm în continuare câteva
exemple:
Exemplul 4.
Reprezentarea sub formă de tabel de adevăr a funcţiilor : NU, SAU,
ŞI, SAU-NU, ŞI-NU.

x y NU SAU ŞI SAU-NU ŞI-NU

f1(x)= x f2(x,y)= x ∪ y f3(x,y)= x ∩ y f4(x,y)= x ∪ y f5(x,y)= x ∩ y

0 0 1 0 0 1 1

0 1 1 1 0 0 1

1 0 0 1 0 0 1

1 1 0 1 1 0 0

Exemplul 5.

Fie funcţia logică următoare:


f ( x, y ) = x y ∪ xy
Tabelul de adevăr asociat este:

150
Bazele logice ale calculatoarelor

Exemplul 6.
Reciproc, dacă avem tabelul de adevăr al funcţiei, putem determina
expresia funcţiei. Din tabelul de adevăr, funcţia f are valoarea 1 pentru
următoarele valori ale lui x şi y:
Considerăm acum valorile lui x şi y pentru care funcţia f este zero:

⎧x = 0, y = 1

⎩x = 1, y = 0
sau
⎧⎪x = 0, y = 0

⎪⎩x = 0, y = 0
f 2 ( x, y) = ( x ∪ y)(x ∪ y)

Verificăm faptul că cele două funcţii sunt egale:

f 2 (x, y) = (x ∪ y)(x ∪ y) = x • x ∪ x • y ∪ y • x ∪ y • y =

= x • y ∪ x • y = f1(x, y)

⎧x = y = 0

⎩x = y = 1
sau
⎧ x = 1, y = 1

⎩x = y = 1
f1 ( x, y ) = x • y ∪ x • y

151
Sisteme de calcul şi operare

5.3 Formele canonice ale funcţiilor logice

5.3.1 Produse elementare şi mintermeni

Se numeşte produs elementar un produs de variabile booleene sau


complemente ale acestora, în care aceeaşi variabilă apare o singură dată.
Un mintermen în raport cu variabilele logice x1, x2,..., xn este produsul
elementar în care apar, fie simple, fie complementare, toate variabilele
x1, x2,..., xn. Un mintermen se va scrie în aşa fel încât pentru un set de valori
ale variabilelor booleene să ia valoarea logică 1.

Forma canonică disjunctivă (FCD) pentru o funcţie de n variabile


booleene se poate scrie astfel:

2n
f( x1 , x 2 , ... x n ) = ∪ f(i1 k , i 2 k ,..., i nk ) ⋅ x1i1k ⋅ x 2i2 k ⋅ ... x n ink
k =1

⎧⎪ x j dacă i jk = 1
având x ji jk = ⎨
⎪⎩ x j dacă i jk = 0
iar f(i1 k , i 2 k , ..., i nk ) = 1 pentru ∀ k = 1, 2n

În concluzie, forma canonică disjunctivă a unei funcţii logice este o


sumă a mintermenilor pentru care funcţia are valoarea logică 1.

5.3.2 Sume elementare şi maxtermeni

Se numeşte sumă elementară o sumă de variabile booleene sau


complemente ale acestora, fără ca aceeaşi variabilă să apară de mai multe ori.
Un maxtermen în raport cu variabilele logice x 1 ,x 2 ,.., x n este o sumă
elementară, în care apar, fie simple, fie complementare, toate variabilele
x1, x2, ..., xn. Un maxtermen se va scrie în aşa fel încât pentru un set de valori
ale variabilelor logice să ia valoarea logică 0.

152
Bazele logice ale calculatoarelor

Forma canonică conjunctivă (FCC) pentru o funcţie de n variabile se


poate scrie:
n
2
f( x1 , x 2 , ... , x n ) = ∩ [f( i1 k , i 2 k , ... , i nk ) + x1i1 k + x 2 i 2 k + ... + x n i nk ]
k =1

⎧x j dacă i jk = 0

având x ijjk = ⎨

⎩ x j dacă i jk = 1
f(i1 k , i 2 k , ...i nk ) = 0 pentru ∀ k = 1, 2n

Aşadar, forma canonică conjunctivă reprezintă produsul


maxtermenilor pentru care funcţia booleană are valoarea logică 0.

Exemplul 7.

Fie funcţia f (x,y,z) o funcţie booleană care are valoarea logică "1",
dacă cel puţin două dintre argumentele sale sunt egale cu "0". Să se scrie FCD
şi FCC pentru funcţia f(x,y,z).

Rezolvare.
Alcătuim tabelul de valori (tabelul 5.1), în care vom trece mintermenii
(mi) şi maxtermenii (Mi). Fiind o funcţie de trei variabile vom avea un număr
de 8 seturi de valori (23).

153
Sisteme de calcul şi operare

Tabel de adevăr pentru funcţia f(x,y,z)

Tabelul 5.1

x y z f(x,y,z) mi Mi
0 0 0 1 M0= x + y + z
m0= x y z
0 0 1 1
m1= x yz M1= x + y+ z
0 1 0 1
m2= x yz M2= x + y+ z
0 1 1 0
m3= x yz M3= x + y+ z
1 0 0 1
m4= x y z M4= x + y+z
1 0 1 0
m5= x yz M5= x + y+z
1 1 0 0
m6= x y z M6= x + y+ z
1 1 1 0 m7= x y z M7= x + y+ z

Forma canonică disjunctivă a funcţiei se va determina aplicând


relaţia:

f 1 (x,y,z) = f(0,0,0)⋅m 0 + f(0,0,1)⋅m 1 + f(0,1,0)⋅m 2 +


+ f(0,1,1)⋅m 3 + f(1,0,0)⋅m 4 + f(1,0,1)⋅m 5 +
+ f(1,1,0)⋅m 6 + f (1,1,1) m 7

Folosind proprietăţile algebrei logice obţinem:

f1 (x,y,z) = m0 + m1 + m2 + m4 =
x y z + x y z+ x y z + x y z

154
Bazele logice ale calculatoarelor

Forma canonică conjunctivă a funcţiei se determină aplicând relaţia:

f2 (x,y,z) = [f (0,0,0) + M0] [f (0,0,1) + M1] [f (0,1,0) +


+ M2] [ f(0,1,1) + M3] [f (1,0,0) + M4] [f (1,0,1) + M5]
[f (1,1,0) + M6] [f (1,1,1) + M7]

Ţinând cont de valorile funcţiei pentru diferitele seturi de valori şi


utilizând proprietăţile algebrei booleene, se va obţine:

f 2 (x,y,z) = M 3 ⋅ M 5 ⋅ M 6 ⋅ M 7 =
(x + y + z)(x + y + z)(x + y + z)(x + y + z)

Forma canonică disjunctivă a funcţiei este echivalentă cu forma


canonică conjunctivă, deci: f 1 (x,y,z) ≡ f 2 (x,y,z).

5.3.3 Proprietăţile mintermenilor şi maxtermenilor

Avem o serie de proprietăţi pentru mintermeni şi maxtermeni:

P1. Produsul logic între doi mintermeni mi şi mj (i # j) ai unei funcţii


booleene de n variabile este egal cu 0:

mi ⋅ m j = 0, ∀i ≠ j

P2. Suma logică dintre doi termeni Mi şi Mj (i # j) ai unei funcţii


booleene de n variabile este egal cu 1:

M i ∪ M j = 1, ∀i ≠ j

P3. O funcţie booleană de n variabile poate fi reprezentată printr-o


sumă logică de mintermeni mi (respectiv un produs logic de maxtermeni Mi)
sub forma:

2 n −1
f ( x1 ,K , xn ) = U (α i ⋅ mi )
i =0
2 n −1
f ( x1 , K, xn ) = I (α i ∪ M i ), α i ∈ {0,1} - numere caracteristice
i =0

155
Sisteme de calcul şi operare

P4. Complementul unei funcţii booleene de n variabile scrise în FCC


poate fi exprimat în mod unic prin relaţia:

2 n −1
f ( x1 ,K , xn ) = U (α i ⋅ mi )
i =0

iar complementul unei funcţii booleene de n variabile scrise în FCD poate fi


exprimat unic astfel:

2 n −1
f ( x1 , K , xn ) = I (α i ∪ M i ),α i ∈ {0,1}
i =0

P5. Dacă o funcţie booleană de n variabile este scrisă în FCD şi


conţine 2n termeni distincţi de n variabile atunci ea este egală cu 1.
În aceleaşi condiţii, dacă funcţia este scrisă în FCC, atunci ea este
egală cu 0.

2 n −1
f ( x1 , K , xn ) = Um i = 1 (FCD)
i =0
2 n −1
f ( x1 , K, xn ) = IM i = 0 (FCC)
i =0

P6. Orice mintermen mi al unei funcţii booleene de n variabile scrise


în FCD este egal cu produsul logic a 2n-1 termeni Mj, respectiv orice
maxtermen Mi al unei funcţii booleene de n variabile scrisă în FCC este egal
cu suma logică a 2 n -1 termeni mj:

mi = I M j , j = 0 K 2 n − 1
j ≠i

M i = U m j , j = 0K 2n − 1
j ≠i

156
Bazele logice ale calculatoarelor

5.4 Existenţa şi unicitatea funcţiilor logice

Forma canonică disjunctivă, respectiv conjunctivă a unei funcţii logice


este unică. Forma canonică disjunctivă (respectiv conjunctivă) a unei funcţii
logice se numeşte şi forma normală disjunctivă (respectiv conjunctivă)
perfectă.
Forma normală disjunctivă a unei expresii logice este o sumă de
produse elementare egală cu expresia dată. Forma normală conjunctivă a unei
expresii logice este un produs de sume elementare egal cu expresia dată.
Forma normală disjunctivă (respectiv conjunctivă) a unei funcţii nu este
unică.
Vom considera în continuare cele două forme canonice atât pentru
funcţia de o singură variabilă cât şi pentru funcţia de două variabile.

Funcţia booleană de o singură variabilă

Fie f : B 2 →B 2 o funcţie booleană de o singură variabilă iar a şi b


două constante booleene. Forma canonică disjunctivă este:

f ( x) = ax ∪ b x

Am obţinut a = f(1) şi b = f(0), valori unic determinate.


Înlocuim x = 1, x = 0 în relatia lui f(x) :
⎧⎪ f (1) = a • 1 ∪ b • 1 = a • 1 ∪ b • 0 = a ∪ 0 = a

⎪⎩ f (0) = a • 0 ∪ b • 0 = a • 0 ∪ b • 1 = 0 ∪ b = b
FCD : f ( x) = f (1) • x ∪ f (0) • x

Pentru demonstrarea existenţei (în forma canonică disjunctivă), vom


înlocui x pe rând cu valorile 0 şi 1 în relaţia anterioară:
⎧⎪ f (1) = f (1) • 1 ∪ f (0) • 1 = f (1) • 1 ∪ f (0) • 0 = f (1)

⎪⎩ f (0) = f (1) • 0 ∪ f (0) • 0 = f (1) • 0 ∪ f (0) • 1 = f (0)

157
Sisteme de calcul şi operare

Pentru forma canonică conjunctivă avem:

f ( x ) = (a ∪ x )(b ∪ x ) - forma canonică conjunctivă

Înlocuim x = 1, x = 0 în relatia lui f(x) :

⎧f (1) = (a ∪1) • (b ∪ 1) = (a ∪1) • (b ∪ 0) = 1 • b = b




⎪⎩f (0) = (a ∪ 0) • (b ∪ 0) = (a ∪ 0) • (b ∪ 1) = a • 1 = a

FCC : f ( x ) = (f (0) ∪ x ) • (f (1) ∪ x )

Am obţinut în acest caz: a = f(0) şi b = f(1), valori unic determinate.

Pentru demonstrarea existenţei (în forma canonică conjunctivă), vom


înlocui x pe rând cu valorile 0 şi 1 în relaţia anterioară:

⎧⎪ f (1) = ( f (0) ∪ 1) • ( f (1) ∪ 1) = ( f (0) ∪ 1)( f (1) ∪ 0) = 1 • f (1) = f (1)



⎪⎩ f (0) = ( f (0) ∪ 0) • ( f (1) ∪ 0) = ( f (0) ∪ 0)( f (1) ∪ 1) = f (0) • 1 = f (0)

f (x, y) = axy∪ bxy ∪ cxy ∪ dxy - forma canonică disjunctivă

Considerăm forma FCD şi înlocuim x = 1, x = 0, y = 1, y = 0 în relaţia


lui f(x,y). Vom avea:

⎧a = f (1,1)

⎪⎪b = f (1,0)

⎪c = f (0,1)

⎪⎩d = f (0,0)

FCD : f ( x, y) = f (1,1) xy ∪ f (1,0) x y ∪ f (0,1) xy ∪ f (0,0) x y

158
Bazele logice ale calculatoarelor

Funcţia booleană de două variabile

Fie f : B 2 × B 2 →B 2 o funcţie booleană de două variabile iar a, b, c şi


d patru constante booleene. Forma canonică disjunctivă este:

În cazul formei canonice conjunctive avem:

f (x, y) = (a ∪ x ∪ y)(b ∪ x ∪ y)(c ∪ x ∪ y)(d ∪ x ∪ y)

Înlocuim în această relaţie x=0, x=1, y=0, y=1 şi obţinem:

⎧a = f (0,0)
⎪b = f (0,1)


⎪c = f (1,0)
⎪⎩d = f (1,1)

FCC : f ( x, y ) = ( f (0,0) ∪ x ∪ y )( f (0,1) ∪ x ∪ y )( f (1,0) ∪ x ∪ y )( f (1,1) ∪ x ∪ y )

Demonstrarea existenţei în cazul formei canonice disjunctive

f (x, y) = f (1,1)xy ∪ f (1,0)x y ∪ f (0,1)xy ∪ f (0,0)x y - forma canonică


disjunctivă.

Considerăm expresia de mai sus şi înlocuim x = 1, x = 0, y = 1, y = 0 şi


obţinem:
⎧x = y = 1 ⇒ f (1,1) = f (1,1) • 1 • 1 ∪ f (1,0) • 1 • 1 ∪ f (0,1) • 1 • 1 ∪ f (0,0) • 1 • 1 = f (1,1)

⎪x = 1, y = 0 ⇒ f (1,0) = f (1,1) • 1 • 0 ∪ f (1,0) • 1 • 0 ∪ f (0,1) • 1 • 0 ∪ f (0,0) • 1 • 0 = f (1,0)


⎪x = 0, y = 1 ⇒ f (0,1) = f (1,1) • 0 • 1 ∪ f (1,0) • 0 • 1 ∪ f (0,1) • 0 • 1 ∪ f (0,0) • 0 • 1 = f (0,1)

⎪x = y = 0 ⇒ f (0,0) = f (1,1) • 0 • 0 ∪ f (1,0) • 0 • 0 ∪ f (0,1) • 0 • 0 ∪ f (0,0) • 0 • 0 = f (0,0)

159
Sisteme de calcul şi operare

Demonstrarea existenţei în cazul formei canonice conjunctive

FCC: f (x, y) = (f (0,0) ∪ x ∪ y)(f (0,1) ∪ x ∪ y)(f (1,0) ∪ x ∪ y)(f (1,1) ∪ x ∪ y)

Considerăm expresia de mai sus şi înlocuim x = 1, x = 0, y = 1, y = 0 şi


obţinem:
⎧x = y = 1 ⇒ f (1,1) = (f (0,0) ∪ 1 ∪ 1)(f (0,1) ∪ 1 ∪ 1)(f (1,0) ∪ 1 ∪ 1)

⎪ (f (1,1) ∪ 1 ∪ 1) = f (1,1)


⎪x = 1, y = 0 ⇒ f (1,0) = (f (0,0) ∪ 1 ∪ 0)(f (0,1) ∪ 1 ∪ 0)(f (1,0) ∪ 1 ∪ 0)

⎪⎪ (f (1,1) ∪ 1 ∪ 0) = f (1,0)

⎪x = 0, y = 1 ⇒ f (0,1) = (f (0,0) ∪ 0 ∪ 1)(f (0,1) ∪ 0 ∪ 1)(f (1,0) ∪ 0 ∪ 1)

⎪ (f (1,1) ∪ 0 ∪ 1) = f (0,1)


⎪x = y = 0 ⇒ f (0,0) = (f (0,0) ∪ 0 ∪ 0)(f (0,1) ∪ 0 ∪ 0)(f (1,0) ∪ 0 ∪ 0)

⎪⎩ (f (1,1) ∪ 0 ∪ 0) = f (0,0)

5.5 Funcţiile logice de bază

Considerăm f : B2 X B2 X...X B2 → B2. Atunci vor exista un număr de


n
22 funcţii distincte. Funcţia fiind de n variabile va putea avea 2n mintermeni
sau maxtermeni. Considerând forma canonică disjunctivă (conjunctivă), o
funcţie logică este reprezentată prin suma (produsul) a k minitermeni
(maxtermeni) distincţi.
Valoarea maximă a lui k=2n, rezultă că mulţimea funcţiilor logice
k
distincte este: N = ∑ C k j = 2k = 22 .
n

j=0
Au fost incluse: funcţia zero şi funcţia unitate.

160
Bazele logice ale calculatoarelor

Exemplul 8.
Mulţimea funcţiilor de două variabile este prezentată în tabelul 5.2.
Dacă f : B2 X B2 X ... X B2 → B2 este o funcţie de n variabile,
analizând tabelul 5.2, putem spune că principalele funcţii elementare sunt:

1) Funcţia NU: f10 (x1, x2,..., xn) = xi ∀ i=1, n

2) Funcţia IDENTITATE : f3 (x1, x2,..., xn) = xi ∀ i =1, n

3) Funcţia ŞI: f1 (x1, x2,..., xn) = x1 . x2 . ... . xn, această funcţie are
valoarea logică 1 dacă toate variabilele au valoarea logică 1.

4) Funcţia SAU: f7 (x1, x2, ..., xn) = x1 + x2 +...+ xn , ce are valoarea


logică 1 dacă cel puţin o variabilă are valoarea logică 1.

5) Funcţia ŞI-NU, are valoarea logică 1 dacă cel puţin o variabilă are
valoarea logică 0:

f14 ( x1 , x2 , .. , x n ) = x1 ⋅ x2 ⋅ .. ⋅ x n = x1 + x2 + .. + xn

6) Funcţia SAU-NU, are valoarea logică 0 dacă cel puţin o variabilă


are valoarea logică 1:

f 8 ( x1 , x2 , .., x n ) = x1 + x2 + .. + x n = x1 ⋅ x2 ⋅ .. ⋅ x n

7) Funcţia INHIBARE:

f 4 ( x1 , x2 , ..., x n ) = x1 ⋅ x2 ⋅ ⋅ x k-1 ⋅ x k ⋅ x k+1 ⋅ ..⋅ x n


k ∈ {1,2,...,n}.

8) Funcţia IMPLICARE:

f 11 ( x1, x2 , .. , x n ) = x1 + x2 + x k-1 + x k + x k+1 + .. + x n


k ∈ {1,2,...,n}.

161
Sisteme de calcul şi operare

Funcţiile logice de două variabile

Tabelul 5.2

Denumirea
x 0 0 1 1 Funcţia FCD
funcţiei
y 0 1 0 1
f0 0 0 0 0 f0=0 f0=0 ZERO
f1 0 0 0 1 f1=xy f1=m3 ŞI
f2 0 0 1 0 f2=m2 INHIBARE
f2= x y
f3 0 0 1 1 f3=x f3=m2+m3 IDENTITATE
f4 0 1 0 0 f4=m1 INHIBARE
f4= x y
f5 0 1 0 1 f5= y f5=m1+m3 IDENTITATE
f6 0 1 1 0 f6= x ⊕ y f6=m1+m2 SAU EXCLUSIV
f7 0 1 1 1 f7= x + y f7=m1+m2+m3 SAU [INCLUSIV]
f8 1 0 0 0 f8=m0 SAU-NU [NICI,NOR]
f8= x + y
f9 1 0 0 1 f9=m0+m3 COINCIDENŢĂ
f9= x y + xy
f10 1 0 1 0 f10=m0+m2 NU
f10= y
f11 1 0 1 1 f11=m0+m2+m3 IMPLICARE
f11= x + y
f12 1 1 0 0 f12= x f12=m0+m1 NU
f13 1 1 0 1 f13=m0+m1+m3 IMPLICARE
f13= x + y
f14 1 1 1 0 f14=m0+m1+m2 ŞI-NU [NAND]
f14= x ⋅ y
f15 1 1 1 1 f15=1 f15=m0+m1+m2+m3 UNU

5.6 Simplificarea funcţiilor logice

5.6.1 Introducere
Simplificarea (minimizarea) funcţiilor logice are ca efect obţinerea
unor funcţii în formă elementară cu un număr minim de variabile şi
elemente constitutive. Minimizarea se poate face fie prin calcul direct
utilizând procedee algebrice elementare, fie utilizând diagrame ce conduc la
proceduri rapide de simplificare.

162
Bazele logice ale calculatoarelor

Exemplul 9.

Să se minimizeze funcţia:

f(x, y, z) = x y z + x y z + x y z = x y z

Rezolvare.
Se ştie că:
x y z+ x y z = x y z (proprietatea de idempotenţă).

Folosind această proprietate putem scrie:

f(x,y,z)= x y z + x y z + x y z + x y z + x y z + x y z

Folosind proprietăţile de distributivitate şi comutativitate avem:

f(x,y,z)= x y ( z + z ) + x z ( y + y ) + y z ( x + x )

Din principiul terţiului exclus: x + x = 1, în final se obţine:

f(x,y,z)= x y + x z + y z .

Diagramele de minimizare Veitch şi Karnaugh se obţin reprezentând


fiecare mintermen (maxtermen) printr-o suprafaţă dreptunghiulară
elementară.

5.6.2 Diagrame Veitch

a) Pentru o funcţie de două variabile - f(x,y):

163
Sisteme de calcul şi operare

b) Pentru o funcţie de trei variabile - f(x,y,z):

FCD FCC

164
Bazele logice ale calculatoarelor

5.6.3 Diagramele Karnaugh

a) Pentru o funcţie de două variabile - f(x,y):

b) Pentru o funcţie de trei variabile f(x,y,z):

165
Sisteme de calcul şi operare

Se utilizează mintermenii mi - pentru FCD şi maxtermenii


Mi - pentru FCC.
c) Pentru o funcţie de patru variabile - f(x,y,z,t):

d) Pentru o funcţie de cinci variabile - f(x,y,z,t,v) :

166
Bazele logice ale calculatoarelor

Algoritmul de minimizare, utilizând diagramele Veitch sau


Karnaugh este următorul:
9 Scrierea valorilor funcţiei în diagramă, scrierea după 1 (sau
după 0) dacă se foloseşte FCD (sau FCC) a funcţiei.
k
9 Gruparea a 2 (k = 0,1,2,...) suprafeţe elementare adiacente, care
au valoarea logică 1 (sau 0 dacă s-a folosit FCC), astfel încât să
formeze o suprafaţă dreptunghiulară. În suprafeţele extinse se
încearcă includerea tuturor suprafeţelor elementare care au
valoarea logică 1 (sau 0 în FCC).
9 Corespunzător unei suprafeţe extinse se obţine un produs
elementar al variabilelor ce nu-şi schimbă valoarea pe această
suprafaţă, dacă s-a folosit FCD, sau o sumă elementară a
variabilelor ce nu-şi schimbă valoarea în FCC. Dacă nu este
posibil ca o suprafaţă elementară să se alipească altei suprafeţe
elementare, pentru aceasta se va scrie expresia ce corespunde
mintermenului / maxtermenului.

În unele cazuri, în practică, anumite combinaţii ale valorilor


variabilelor de intrare nu apar niciodată în timp, funcţia numindu-se
incomplet definită. Se poate considera că aceste combinaţii sunt
nesemnificative pentru determinarea funcţiei logice de la ieşire. Se pot
folosi aceste situaţii atribuind suprafeţelor elementare respective valoarea
logică 1 sau 0 (R), în funcţie de modul în care se poate obţine o formă mai
simplă pentru funcţia logică.

167
Sisteme de calcul şi operare

Exemplul 10.

Să se simplifice funcţia logică f(x,y,z), dată prin tabelul de adevăr


prezentat mai jos.

FCD a funcţiei este:


f1 (x,y,z) = m2 + m3 + m6 + m7 = x y z + x y z + x y z + x y z

Diagrama Veitch este:

168
Bazele logice ale calculatoarelor

Diagrama Karnaugh este:

Forma simplificată a FCD este : f 1 (x,y,z) = y

FCC a funcţiei este f 2 (x,y,z)=M 0 ⋅ M 1 ⋅ M 4 ⋅ M 5

Exemplul 11.

Un ascensor transportă greutăţi cuprinse între 500 şi 10000 kg.


Sesizarea greutăţii încărcăturii ascensorului se face prin închiderea a trei
contacte a, b, c, fixate sub podeaua cabinei.
Ordinea de închidere a contactelor în funcţie de greutate este: a
pentru greutate > 0 kg; b pentru greutate ≥ 500 kg; c pentru greutate ≥
10000 kg.
Se cere să se determine funcţia de comandă a urcării ascensorului,
ştiind că acesta poate urca şi dacă este gol.

Rezolvare.
Vom atribui valoarea logică 1 pentru contact închis şi valoarea
logică 0 pentru contact deschis. Tabelul de adevăr pentru funcţia cerută este
prezentat în tabelul 5.3.

169
Sisteme de calcul şi operare

Tabelul de adevăr al funcţiei de comandă a urcării ascensorului

Tabelul 5.3

a b c f(a,b,c)
0 0 0 1
0 0 1 - La o funcţionare normală,
aceste combinaţii
nu pot să apară

0 1 0 -
0 1 1 -
1 0 0 0
1 0 1 -

1 1 0 1
1 1 1 0

FCD a funcţiei va fi: f(a, b, c) = a b c ∪ a b c

Pentru simplificarea acestei funcţii vom folosi diagrama Karnaugh.

În urma minimizării, funcţia este: f(a, b, c) = a ∪ b c

170
Bazele logice ale calculatoarelor

5.7 Circuite logice

5.7.1 Definire şi clasificare

Circuitele logice sunt componente electronice interconectate


capabile să realizeze operaţii logice. Schema logică reprezintă
implementarea unei expresii logice, folosind în acest scop o serie de
simboluri specifice fiecărei funcţii logice elementare din cadrul expresiei
respective. Se poate face o clasificare a circuitelor logice, astfel:
ƒ după nivelul de tensiune asociat cifrelor binare (figurile 5.2
şi 5.3):
ª circuite logice în logică pozitivă;
ª circuite logice în logică negativă.
ƒ după modul de funcţionare în timp:
® circuite logice combinaţionale;
® circuite logice secvenţiale.

Reprezentarea stărilor binare ale semnalelor în circuitele logice se


pot realiza prin două niveluri de tensiune sau curent. La reprezentarea prin
niveluri de tensiune, cele două valori de tensiune utilizate se numesc nivelul
pozitiv respectiv nivelul negativ.
Logica pozitivă este logica prin care valoarea logică "1" corespunde
nivelului de tensiune cel mai pozitiv, iar valoarea logică "0" corespunde
nivelului de tensiune cel mai negativ.
Logica negativă este logica pentru care valoarea logică "1" este
reprezentată prin nivelul de tensiune cel mai negativ, iar valoarea logică "0"
corespunde nivelului de tensiune cel mai pozitiv.

Logica pozitivă Logica negativă

Valoarea logică "0" "1" "0" "1"

0 +5 V +5 V 0V
Nivelul de tensiune -5 V 0V 0V -5 V
-5 V +5 V +5 V -5 V

Figura 5.2 Corelaţia dintre valoarea logică şi nivelul de tensiune

171
Sisteme de calcul şi operare

Figura 5.3 Reprezentarea cifrelor binare în logica pozitivă(a)/negativă (b)

5.7.2 Circuite logice combinaţionale

Circuitele logice combinaţionale (CLC) sunt acele circuite la care


starea internă nu influenţează ieşirea, deci setul mărimilor de ieşire este
complet determinat la orice moment de timp numai de setul mărimilor de
intrare curente.

Figura 5.4 Schemă logică combinaţională

Se poate scrie că: yj(t) = fj (i1(t), i2(t),… im(t)) j = 1, n

172
Bazele logice ale calculatoarelor

Analiza schemelor logice combinaţionale (SLC - figura 5.4) se face


cu ajutorul tabelelor de adevăr, pe baza cărora se poate urmări
corespondenţa intrare - ieşire.
Sinteza schemelor logice combinaţionale este inversa analizei - se
urmăreşte obţinerea unei scheme logice după anumite date iniţiale care
descriu funcţionarea şi care permit stabilirea tabelei de adevăr, pe baza
căreia se scriu funcţiile logice ce pot fi implementate.
Circuitele logice elementare (de bază) se încadrează în grupa
circuitelor combinaţionale şi sunt circuitele realizate pentru efectuarea de
operaţii logice elementare. Se mai numesc şi porţi logice. Circuitele logice
de bază poartă numele funcţiei logice pe care o realizează.

Dispozitivele electronice care stau la baza construcţiei circuitelor


logice sunt: diodele semiconductoare, tranzistoarele bipolare/MOS,
rezistoare, condensatoare, bobine.

Circuitul logic NU (INVERSOR)

Funcţia logică de inversare sau complementare necesită un dispozitiv


activ. Cel mai frecvent se realizează cu ajutorul unui tranzistor în montaj
emitor comun. Reprezentarea circuitului logic NU se face prin simbolul din
figura 5.5.

Figura 5.5 Simbolul unui inversor

Tabelul de adevăr al funcţionării circuitului logic NU este:

x f(x)= x
0 1

1 0

173
Sisteme de calcul şi operare

Circuitul logic ŞI

Tabelul de adevăr asociat circuitului logic ŞI în varianta cea mai


simplă, existând doar două intrări, este:

x1 x2 f(x1,x2)= x1 x2
0 0 0
0 1 0
1 0 0
1 1 1

Reprezentarea grafică a acestui circuit este:

Figura 5.6 Simbolul circuitului logic ŞI

Se poate realiza o poartă logică ŞI cu ajutorul diodelor, deoarece au


dimensiuni reduse, caracteristici de comutaţie bune şi lucrează cu tensiuni
mici.

Circuitul logic SAU

Tabelul de adevăr asociat circuitului logic SAU în varianta cea mai


simplă, existând doar două intrări, este:

x1 x2 f(x1,x2) = x1 + x2
0 0 0
0 1 1
1 0 1
1 1 1

174
Bazele logice ale calculatoarelor

Reprezentarea grafică a acestui circuit este:

Figura 5.7 Simbolul circuitului logic SAU

Circuitul logic ŞI-NU (NAND, NUMAI)

Circuitul logic ŞI-NU se poate realiza combinând un circuit ŞI cu o


poartă NU sau folosind numai tranzistoare. Tabelul de adevăr asociat
circuitului NAND este:

x1 x2 f(x1,x2)= x1 x2

0 0 1
0 1 1
1 0 1
1 1 0

Reprezentarea grafică a circuitului NAND este:

Figura 5.8 Simbolul circuitului logic ŞI-NU

175
Sisteme de calcul şi operare

Circuitul logic SAU-NU (NOR,NICI)

Tabelul de adevăr asociat circuitului NOR este:

x1 x2 f(x1,x2)= x1 + x2
0 0 1
0 1 0
1 0 0
1 1 0

Reprezentarea grafică a circuitului SAU-NU este:

Figura 5.9 Simbolul circuitului logic SAU-NU

Circuitul SAU-EXCLUSIV (MODULO 2)

Tabelul de adevăr al circuitului SAU-EXCLUSIV este:

x1 x2 f(x1, x2)= x1 x2
0 0 0
0 1 1
1 0 1
1 1 0

176
Bazele logice ale calculatoarelor

iar reprezentarea grafică a circuitului SAU-EXCLUSIV este:

Figura 5.10 Simbolul circuitului logic SAU-EXCLUSIV

Acest circuit se poate realiza şi cu porţi NU, ŞI, SAU:

Figura 5.11 Circuitul SAU EXCLUSIV realizat cu porţi de bază

Circuitul logic de INHIBARE

Dacă se va nega una din intrările unei porţi ŞI se obţine circuitul logic
de INHIBARE.

Figura 5.12 Simbolul circuitului logic INHIBARE

177
Sisteme de calcul şi operare

Circuitul logic de IMPLICARE

Prin negarea uneia din intrările unui circuit logic SAU se va obţine
un circuit logic de IMPLICARE.

Figura 5.13 Simbolul circuitului logic IMPLICARE

Observaţie.
Utilizând circuitul logic NAND sau NOR se pot obţine implementări
pentru funcţiile NU, ŞI (figura 5.14), SAU.

Figura 5.14 Implementarea funcţiilor logice: NU, ŞI

5.7.3 Circuite logice secvenţiale

Circuitele logice secvenţiale se caracterizează prin aceea că valoarea


funcţiei de la ieşire (y), la un moment dat t, depinde atât de valorile
variabilelor de intrare (ui unde i = 1 , n ), la momentul t cât şi de valoarea pe
care a avut-o anterior funcţia.
Putem scrie că:
y(t)=f((u1(t),u(t),...,un(t),y(t-τ))

178
Bazele logice ale calculatoarelor

Circuitul logic secvenţial conţine (figura 5.15):


¾ structură logică combinaţională;
¾ structură de memorare.

Figura 5.15 Circuit logic secvenţial

Aşa cum poarta (ŞI, SAU etc.) este element combinaţional de bază,
circuitul basculant bistabil este folosit ca element de bază pentru memorare
(memorie RAM de un bit).
Circuitul basculant bistabil (CBB) se caracterizează prin două stări
stabile. Trecerea dintr-o stare în alta se face prin aplicarea unei comenzi
exterioare.
Din categoria circuitelor basculante mai avem:
ƒ Circuite basculante monostabile, ce se caracterizează printr-o
singură stare stabilă. Cu ajutorul unei comenzi exterioare se
poate trece într-o altă stare, în care va rămâne un interval de timp
determinat de elementele circuitului, după care revine în starea
iniţială. Acestea sunt utilizate ca elemente de temporizare.
ƒ Circuite basculante astabile, nu prezintă nici o stare stabilă.
Trecerea dintr-o stare în alta se realizează fără o comandă
exterioară. Perioada semnalelor generate depinde de valorile
parametrilor circuitului. Acestea sunt folosite drept circuite
oscilante.

179
Sisteme de calcul şi operare

Circuitele basculante bistabile pot fi:


Î asincrone, în cazul în care variaţiile obţinute la ieşirea lor
urmăresc semnalele de comandă, comutarea este arbitrară;
Î sincrone, în cazul în care modificările la ieşire au loc în
raport cu semnalele de comandă, numai ca urmare a
tranzacţiei intrării de sincronizare (intrare de tact sau intrare
de ceas).

Circuite basculante bistabile asincrone

Circuitul bistabil RS a fost primul bistabil folosit pentru memorarea


datelor. Cu ajutorul a două porţi NAND conectate ca în figura 5.16 se poate
obţine un circuit bistabil având intrările S (set) şi R (reset) iar ieşirile Q şi Q .

Figura 5.16 Circuitul basculant bistabil RS (schema şi simbol)

Dacă notăm cu Q(t-τ) starea bistabilului la momentul t-τ şi cu Q(t)


starea sa ca urmare a unei tranzacţii, funcţionarea circuitului se poate urmări
în tabelul:

S(t) 0 0 0 0 1 1 1 1
R(t) 0 0 1 1 0 0 1 1
Q(t-τ) 0 1 0 1 0 1 0 1
Q(t) 0 1 0 0 1 1 ? ?

180
Bazele logice ale calculatoarelor

În forma canonică disjunctivă, expresia logică a funcţionării


circuitului bistabil RS este:

Q(t) = S(t) R(t) Q(t-τ) +S(t) R(t) Q(t-τ) +S(t) R(t) Q(t-τ)

Utilizând diagrama Karnaugh (figura 5.17) pentru simplificarea


funcţiei logice, se va obţine expresia:

Q(t) = S(t) + R(t) Q(t-τ)

Figura 5.17 Diagrama de minimizare

Diagrama stării semnalelor de ieşire funcţie de starea semnalelor de


intrare este reprezentată în figura 5.18.

Circuitul bistabil JK

Starea de nedeterminare din funcţionarea circuitului bistabil RS este


înlăturată prin utilizarea circuitului din figura 5.19, ce corespunde
bistabilului de tip JK.

181
Sisteme de calcul şi operare

Figura 5.18 Diagrama semnalelor unui circuit bistabil RS

Figura 5.19 Schema logică a circuitului bistabil JK (a) şi simbolul (b)

182
Bazele logice ale calculatoarelor

Tabelul de adevăr corespunzător funcţionării circuitului este:

J(t) K(t) Q(t-τ) Q(t)


0 0 0/1 0/1
0 1 0/1 0
1 0 0/1 1
1 1 0/1 1/0

Circuite basculante bistabile sincrone

Bistabilul RST

Dacă circuitul basculant bistabil asincron RS este alimentat prin


două porţi NAND conectate ca în figura 5.20, având fiecare câte două
intrări, se obţine un circuit ce are proprietatea de a-şi modifica starea în
raport cu cea a semnalelor de intrare numai dacă se aplică un semnal logic 1
pe intrarea comună T, numită intrare de sincronizare. Acest tip de bistabil
funcţionează în regim RS.

Figura 5.20 Bistabilul RST realizat cu porţi NAND

183
Sisteme de calcul şi operare

Bistabilul JKT

În cazul acestui tip de bistabil, circuitul logic este asemănător


bistabilului JK asincron, având în plus o intrare comună, intrarea de
sincronizare, pe NAND-urile cu intrările J şi K ca în figura 5.21.

Figura 5.21 Bistabilul JKT

5.8 Blocuri funcţionale

5.8.1 Registrul

Registrele sunt dispozitivele digitale realizate cu elemente de


memorare (CBB) şi sunt folosite în construcţia sistemelor de calcul pentru
memorarea temporară (în vederea prelucrării) a datelor reprezentate în
formă binară. Un registru conţine un număr de celule de memorare egal cu
numărul de cifre binare asociat informaţiei ce trebuie memorată. Funcţie de
modul de păstrare a informaţiei registrele pot fi:
Ö statice – când oprirea impulsurilor de comandă nu afectează
conţinutul memorat;
Ö dinamice –- când oprirea impulsurilor de comandă duce la
pierderea conţinutului memorat.

184
Bazele logice ale calculatoarelor

Registrele pot avea o funcţionare sincronă sau asincronă. Operaţia de


înregistrare a datelor binare într-un registru se numeşte scriere, iar operaţia
de transfer a conţinutului citire. Trecerea tuturor celulelor de memorare din
structura unui registru în starea 0 se numeşte ştergere.
Atât operaţia de citire cât şi cea de scriere se pot efectua în:
Î serie – cifrele binare fiind preluate secvenţial;
Î paralel – cifrele binare se înscriu/citesc simultan.

După modul de realizare a operaţiilor de scriere/citire avem:


& registre cu intrare/ieşire serie;
& registre cu intrare/ieşire paralelă;
& registre cu intrare serie/ieşire paralelă;
& registre cu intrare paralelă/ieşire serie.

Registrul serie (intrare/ieşire) sau registrul de deplasare

Un astfel de registru pe 4 biţi este ilustrat în figura 5.22, s-au folosit


circuite basculante care au intrările sincrone J, K şi intrările asincrone R, S.
Tranziţia semnalului de la ieşire, Qi, are loc pe frontul descrescător al
semnalului de ceas (figura 5.23).

Figura 5.22 Registru serie

185
Sisteme de calcul şi operare

Figura 5.23 Diagrama de semnale

Memorarea se face pe timpul a n impulsuri de ceas (n este egal cu


numărul de ranguri ale registrului). Citirea se va face tot în n impulsuri de
ceas. Ansamblul tacturilor necesare înscrierii - citirii unui număr constituie un
ciclu.

186
Bazele logice ale calculatoarelor

Registrul paralel (intrare/ieşire)

Pentru un astfel de registru (figura 5.24) înscrierea informaţiei se face


pe timpul unui singur impuls de ceas, la fel şi citirea.

Figura 5.24 Registru paralel

a) Exemplu de circuit integrat pentru registru 4x4 (74170)

Figura 5.25 Registru 4x4

187
Sisteme de calcul şi operare

Tabelul de adevăr pentru Tabelul de adevăr pentru


operaţia de scriere operaţia de citire

Intrări Intrarea Starea Ieşiri


Starea internă internă
WE Di RE Qi
L L L L L L
L H H L H H
H * Nu se schimbă H * H

b) Registru de deplasare – intrare serie/paralel, ieşire serie (74165)

Figura 5.26 Registru de deplasare

Tabelul de adevăr
Tabelul 5.4

Intrări Qi Ieşirea
Modul de
operare
PL CE CP DS D0-D7 Q0 Q1-Q6 Q7
Încărcarea L * * * L L L L
paralelă L * * * H H H H
Deplasarea H L L-H L * L Q0-Q5 Q6
serială H L L-H H * H Q0-Q5 Q6
Starea
H H * * * Q0 Q1-Q6 Q7
nemodificată

188
Bazele logice ale calculatoarelor

5.8.2 Numărătorul

Numărătoarele sunt utilizate pentru controlul secvenţializării


operaţiilor. Circuitul de bază al numărătorului este circuitul basculant
bistabil. Ieşirile bistabililor ce formează numărătorul sunt interpretate
împreună, ca stare a numărătorului. Conectarea a n circuite basculante
bistabile realizează un numărător binar cu N = 2n stări distincte. Pentru
realizarea unui numărător cu un factor de divizare M ≠ 2n (M fiind număr
întreg), se aplică bucle de reacţie circuitelor bistabile, prin scheme logice
combinaţionale.

Clasificarea numărătoarelor se poate face:


ƒ funcţie de modul de aplicare a impulsurilor de comandă:
numărătoare asincrone – impulsul de sincronizare acţionează
numai asupra primului CBB.
numărătoare sincrone – impulsul de tact se aplică simultan la
intrările tuturor circuitelor bistabile.

ƒ funcţie de sensul numărării:


numărătoare directe – creşte conţinutul pentru fiecare impuls
de ceas;
numărătoare inverse – scade conţinutul pentru fiecare impuls
de ceas;
numărătoare bidirecţionale (reversibile) – au o intrare pentru
numărare înainte iar alta pentru numărare înapoi.

Numărătoare asincrone directe

Aceste tipuri de numărătoare se caracterizează prin faptul că


impulsurile de tact pe intrarea de numărare comandă bascularea primei
celule, bascularea celorlalte făcându-se cu ajutorul semnalelor de pe ieşirile
etajelor precedente. În figura 5.27 a) este reprezentat un numărător asincron
direct ce conţine trei CBB. Deoarece pe intrările J, K nu apar semnale, se
consideră ca fiind pe 1 logic.

189
Sisteme de calcul şi operare

Stările
Impuls Valoarea
Q3 Q2 Q1
ceas zecimală
T1 0 0 0 0
T2 0 0 1 1
T3 0 1 0 2
T4 0 1 1 3
T5 1 0 0 4
T6 1 0 1 5
T7 1 1 0 6
T8 1 1 1 7
c)
Figura 5.27 Numărător asincron direct
a) schema b) diagrama de semnale c) stările
Dezavantaj: limitarea vitezei de lucru, din cauza timpului mare de
propagare.
Avantaje:
 impulsurile de numărare acţionează asupra unui singur CBB şi
deci nu este necesară o putere mare a generatorului de impulsuri;
 controlul numărării este foarte simplu, fiind suficientă oprirea
basculării primului CBB din lanţ pentru ca numărarea să fie
oprită.

190
Bazele logice ale calculatoarelor

Numărătorul asincron invers este reprezentat în figura 5.28.

Stările
Impuls Valoarea
Q3 Q2 Q1
ceas zecimală
T1 0 0 0 0
T2 1 1 1 7
T3 1 1 0 6
T4 1 0 1 5
T5 1 0 0 4
T6 0 1 1 3
T7 0 1 0 2
T8 0 0 1 1
c)

Figura 5.28 Numărător asincron invers


a) schema b) diagrama de semnale c) stările

191
Sisteme de calcul şi operare

Numărătoare sincrone directe (figura 5.29) se caracterizează prin


faptul că impulsul de tact se aplică simultan pe intrările de numărare ale
tuturor CBB din structura numărătorului.

Figura 5.29 Numărător sincron direct:


a) schema; b) diagrama de semnale

Numărătoare reversibile

Dacă este activă comanda de numărare directă (ND) numărătorul va


funcţiona ca un numărător asincron direct, iar când este activă comanda de
numărare inversă (NI) va funcţiona ca un numărător asincron invers.

192
Bazele logice ale calculatoarelor

Figura 5.30 Numărător reversibil

5.8.3 Elemente ale blocului aritmetic - sumatorul elementar

Dacă ai este o cifră binară a numărului A, bi cifra binară


corespunzătoare din numărul B şi Ti este cifra binară ce reprezintă
transportul de la rangul anterior, în urma însumării se va obţine Si -
rezultatul însumării şi Ti+1 - transportul pentru rangul următor.

Tabelul de adevăr va fi:

Intrări Ieşiri
ai bi Ti Si Ti+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

193
Sisteme de calcul şi operare

Formele canonice disjunctive ale celor două funcţii Si şi Ti+1 sunt:

Si (ai, bi, Ti) = ai biTi + aibiTi + ai biTi + aibiTi

Ti + 1 (ai, bi, Ti) = aibiTi + ai biTi + aibiTi + aibiTi

Folosind diagramele Karnaugh pentru minimizarea funcţiilor Si şi


Ti+1, vom avea:

Figura 5.31 Minimizarea pentru Si şi Ti+1

Din diagrama Karnaugh pentru funcţia Si (ai, bi, Ti), se constată că


nu este posibilă minimizarea acesteia. Funcţia Ti+1 simplificată va fi:

Ti+1 (ai, bi, Ti) = bi Ti + ai Ti + ai bi

Schema logică a sumatorului elementar este prezentată în figura


5.32.

194
Bazele logice ale calculatoarelor

Figura 5.32 Sumator elementar:


a) schema logică b) simbol

Însumarea celor n cifre binare ale numerelor A şi B se poate realiza


serial (figura 5.33) sau paralel (figura 5.34). Dacă pentru însumarea serială
se utilizează un singur element de însumare şi două registre de deplasare
(RD1, RD2), pentru însumarea paralelă se vor utiliza n elemente de
însumare.

Figura 5.33 Însumarea serială

195
Sisteme de calcul şi operare

Figura 5.34 Însumarea paralelă

5.8.4 Matrice de comutaţie

O matrice de comutaţie este un circuit logic cu ieşiri multiple, care


realizează o funcţie matricială booleană. La o matrice de comutaţie ieşirile
sunt dependente de intrări printr-o relaţie matricială. Se poate face o
clasificare a matricilor de comutaţie după:
Ö structura logică:
Î matrice rectangulară;
Î matrice piramidală;
Î matrice dual piramidală.

Ö utilizare:
 matrice pentru codificare;
 matrice pentru decodificare;
 matrice pentru selecţie;
 matrice pentru distribuţie.

Matricea pentru codificare are rolul de codifica informaţia care se


prelucrează prin sistemul de calcul. Exemplu: codificarea cifrelor sistemului
octal.

196
Bazele logice ale calculatoarelor

Tabel de adevăr
Tabelul 5.5

Intrarea Ieşirile codificatorului


Cifra octală A B C
C0 0 0 0
C1 0 0 1
C2 0 1 0
C3 0 1 1
C4 1 0 0
C5 1 0 1
C6 1 1 0
C7 1 1 1

Figura 5.35 Matricea pentru codificare

Matricea pentru decodificare realizează operaţia inversă codificării.

Figura 5.36 Matricea pentru decodificare

Decodificatorul se utilizează pentru scrierea selectivă a datelor în


memoria adresabilă RAM. În figura 5.37 este prezentată schema unui
decodificator pentru cifrele sistemului octal.

197
Sisteme de calcul şi operare

Figura 5.37 Decodificator

Circuitul de multiplexare (multiplexorul) este unul din cele mai


importante circuite logice MSI. El se poate utiliza:
¾ În cadrul unităţii de calcul, când codul de selecţie reprezintă
codul operaţiei care se va executa;
¾ Citirea selectivă a unei locaţii dintr-o zonă de memorie;
¾ Generator de funcţii logice, dacă sursele de date sunt constante;
¾ Partajarea unei linii de transmisie prin multiplexarea în timp.

198
Bazele logice ale calculatoarelor

Figura 5.38 Multiplexorul


Demultiplexorul realizează funcţia inversă multiplexorului. El are
n
rolul de selecta o ieşire, din cele 2 , spre care se transferă informaţia de pe
intrare. Adresa pentru selecţie o reprezintă cele n intrări de selecţie.

Figura 5.39 Demultiplexorul

199
Sisteme de calcul şi operare

5.8.5 Bloc de memorie

Memoria are la bază un ansamblu de registre de aceeaşi dimensiune,


accesibile printr-o magistrală unică. Memoria, în cazul general, reprezintă un
sistem secvenţial a cărui funcţionalitate este independentă de natura
informaţiei manipulate.
Caracteristicile de bază ale unui bloc de memorie sunt:
ƒ mărimea cuvintelor de memorie;
ƒ numărul de cuvinte sau mărimea spaţiului adresabil.
Memoria RAM (Random Access Memory) poate fi:
ª cu magistrale pentru date şi adrese (varianta standard – figura 5.40);
ª cu magistrală de adrese multiplexată;
ª cu multiplexarea magistralei pentru adrese/date.

Figura. 5.40 Schema bloc pentru memoria RAM

200
Bazele logice ale calculatoarelor

Operaţia de scriere necesită:


ˆ transferul adresei într-un registru de adrese şi al datelor într-un
registru de date;
ˆ transferul conţinutului registru de date în locaţia de memorie
identificată prin informaţia din registrul de adrese.

Operaţia de citire necesită:


‰ transferul adresei într-un registru de adrese;
‰ transferul conţinutului din locaţia de memorie, identificată prin
informaţia din registrul de adrese, într-un registru de date.
După cum se ştie, circuitul basculant bistabil constituie elementul de
bază pentru memorare. Dacă aceste elemente sunt grupate în reţele, se va
obţine o matrice de memorie. Deoarece circuitele basculante bistabile pot
păstra informaţia, pe durata alimentării, spunem că sunt memorii statice.
Memoriile dinamice memorează informaţia prin prezenţa sau absenţa
unei sarcini electrice pe un condensator. Deoarece condensatorul se poate
descărca în timp, pentru a păstra neschimbată informaţia scrisă, este necesar
ca periodic memoria dinamică să fie reîmprospătată prin citirea şi
reînscrierea fiecărei cifre binare.
În figura 5.41 este prezentată structura unui circuit integrat ce
conţine 64 K x 1 biţi memorie dinamică.
Logica externă trebuie să asigure ca fiecare linie de pe cip să fie
adresată odată la un interval de timp (de obicei, < 2ms). Deoarece memoriile
dinamice sunt optimizate pentru construirea memoriilor de mare capacitate,
ele au, în general, intrări de adrese multiplexate în timp pentru a reduce
numărul conexiunilor. Astfel, în timpul unui ciclu normal de scriere sau
citire, jumătatea cea mai puţin semnificativă a adresei de rând este stocată
prin impulsul RAS (Row Address Strobe). Pe aceeaşi pini se aduc biţii, cei
mai semnificativi fiind eşantionaţi prin ceasul CAS (Column Address
Strobe).
Memoria de tip ROM (Read Only Memory) nu este un sistem
secvenţial, deţine caracteristicile de implementare a funcţiilor logice
combinaţionale.

201
Sisteme de calcul şi operare

Memoriile fixe - ROM, realizate cu circuite integrate pe scară largă,


reprezintă un anumit nivel al standardizării pentru utilizator. Această
posibilitate de adaptare la cerinţele utilizatorilor s-a obţinut prin folosirea
calculatorului în generarea automată a măştilor într-o anumită fază a
procesului tehnologic de realizare a circuitelor integrate.
Considerând o memorie ROM de 16384 biţi, aceasta poate fi
organizată ca o matrice X x Y de 128 x 128 puncte care sunt sau nu
conducătoare (vezi figura 5.42). Un astfel de circuit are opt ieşiri (0 0 ÷ 0 7 ) şi
11 intrări de adresă fiind organizat în 2048 cuvinte a câte opt biţi (2 Kocteţi).
Pentru o anumită combinaţie de pe intrare este generată o combinaţie la ieşire.

Figura 5.41 Memorie 64 K x 1 biţi RAM dinamică

202
Bazele logice ale calculatoarelor

Figura 5.42 Memorie ROM

Memoriile fixe programabile (PROM - Programmable ROM) sunt


programate de producătorul de echipamente de calcul prin mijloace
electronice, folosindu-se „programatorul PROM” prin intermediul căruia se
reţine configuraţia dorită de biţi.

Există tipuri de memorii PROM ce pot fi reprogramabile (EPROM -


Erasable PROM), în sensul că pot fi şterse electric sau prin expunere la
lumină ultravioletă şi reprogramate de mai multe ori.
Densitatea funcţională ce se obţine prin folosirea memoriilor ROM
sau PROM este incomparabil mai mare decât cea obţinută prin utilizarea
porţilor şi bistabilelor.

203
Sisteme de calcul şi operare

Matricile logice programabile (PLA - Programmable Logic Array)


necesită specificarea atât a configuraţiei biţilor fiecărui cuvânt de ieşire cât
şi adresa acestuia.

Aplicaţiile matricilor logice programabile pot fi legate de funcţia de


memorare, de conversia de cod, sau de generarea de funcţii logice. PLA-ul
ca un generator de funcţii logice poate fi asimilat cu o structură ŞI/SAU în
care cele m adrese sunt decodificate cu m circuite ŞI cu n intrări, iar fiecare
ieşire este a unui circuit SAU ce are, ca intrare ieşirea oricăreia din cele m
porţi ŞI. Orice ieşire poate fi definită ca o sumă de produse.

5.8.6 Circuite integrate

Circuitul integrat (CI) a fost elementul ce a permis miniaturizarea


componentelor fizice ale unui sistem de calcul. Circuitul integrat reprezintă
un circuit electronic ale cărui componente (rezistoare, diode, condensatoare,
tranzistoare etc.) sunt realizate pe o pastilă de material semiconductor în
scopul obţinerii unor funcţii specifice. În tabelul următor sunt prezentate
circuite tipice fiecărui nivel de integrare, din categoria circuitelor discutate.

204
Bazele logice ale calculatoarelor

Familii de circuite integrate

Tabelul. 5.6
Familia de CI Circuite combinaţionale Circuite secvenţiale
Porţi: NU, ŞI, SAU, NAND, Circuite basculante
NOR bistabile

Integrare pe scară medie Decodificatoare, Registre,


(MSI) sumatoare, numărătoare
multiplexoare
(100-1000 componente/cip)

Integrarea pe scară largă Memorii fixe (ROM, Memorii cu acces


(LSI) PROM) aleator (RAM)
Matrici logice
(1000-10000 comp./cip)
programabile (PLA)

Integrarea pe scară foarte


largă (VLSI)
Circuite specializate
(>10000 comp./cip)

205
6
REŢELE
DE CALCULATOARE

6.1 Introducere

Dezvoltarea extraordinară în ultimii ani a industriei calculatoarelor şi


a comunicaţiilor a făcut ca în zilele noastre majoritatea calculatoarelor să fie
conectate la o reţea. Practic nu mai este suficient să analizăm funcţionarea
unui calculator de sine-stătător ci se impune să considerăm o abordare din
prisma reţelei de calculatoare la care acesta este conectat. Din această cauză
vom prezenta în acest capitol câteva concepte, definiţii şi elemente de bază
utilizate în studiul reţelelor de calculatoare.
Definiţia unanim acceptată de toate lumea (chiar dacă există mai
multe definiţii pentru termenul reţea de calculatoare) este aceea că o reţea
de calculatoare (îi vom spune pe scurt, reţea) este o colecţie de două sau mai
multe calculatoare intreconectate între ele. Avantajul imediat al conectării la
o reţea este evident: utilizatorii pot partaja fişiere şi dispozitive periferice
(imprimante, modemuri, unităţi de backup, unităţi CD-ROM, etc.). În cazul
în care reţele din mai multe locaţii sunt interconectate prin serviciile oferite
de furnizorii de servicii Internet (linii telefonice, cablu, antene), utilizatorii
pot folosi aplicaţii extrem de răspândite astăzi, precum cele de e-mail, chat,
video-chat, video-conferinţa cu alţi utilizatori conectaţi la reţea şi situaţi
oriunde pe glob.

206
Sisteme de calcul şi operare

6.2 Topologii

Una dintre primele noţiuni prezentate atunci când se vorbeşte despre


o reţea de calculatoare este noţiunea de topologie, care înseamnă, de fapt,
structura reţelei. Topologia poate fi atât fizică, cât şi logică. O topologie
fizică reprezintă modalitatea de aşezare în spaţiu a componentelor reţelei, pe
când topologia logică se referă la modalitatea de acces la mediu a
dispozitivelor conectate la reţea.

6.2.1 Topologii fizice

Cele mai răspândite topologii fizice sunt următoarele:

ƒ Topologia de magistrală (bus)


Această topologie foloseşte un singur cablu de conexiune principal
iar dispozitivele din reţea sunt conectate toate la această conexiune
(magistrală) (figura 6.1).

Figura 6.1 Topologiile de magistrală şi inel

ƒ Topologia de inel (ring)


În această topologie fiecare dispozitiv este conectat de următorul, de
la primul până la ultimul, ca într-un lanţ de interconectare (precum zalele
unei brăţele) (figura 6.1).

207
Reţele de calculatoare

Figura 6.2 Topologiile de stea şi stea extinsă

ƒ Topologia de stea (star)


În această topologie toate cablurile de conexiune ale dispozitivelor
sunt legate la un dispozitiv central (denumit concentrator). De regulă, acest
concentrator este un hub sau un switch. (figura 6.2).

ƒ Topologia de stea extinsă (extended star)


Topologia de stea extinsă uneşte topologiile stea intermediare la un
concentrator central (hub sau switch) (figura 6.2).

208
Sisteme de calcul şi operare

Figura 6.3 Topologia ierarhică şi cea complet interconectată

ƒ Topologia ierarhică (hierarchical)


Această topologie este asemănătoare cu cea de stea extinsă, în care
reţelele locale sub formă de stea sunt conectate la un computer ce
controlează traficul în reţea (figura 6.3).

ƒ Topologia complet interconectată (mesh)


În această variantă topologică fiecare dispozitiv din reţea este
interconectat cu toate celelalte (figura 6.3). În cazul în care numărul de
gazde din reţea este n, numărul conexiunilor necesare este n*(n-1).

6.2.2 Topologii logice

În general există două tipuri de topologii logice (modalităţi de


comunicaţie în reţea): topologia de tip broadcast şi cea de tip token passing.

Topologia broadcast

Cea mai cunoscută tehnologie broadcast este tehnologia Ethernet


(apărută încă de la sfârşitul anilor 1970), larg utilizată în toate reţelele locale
LAN (Local Area Network) din lume. Modalitatea de funcţionare a reţelelor
Ethernet se bazează pe CSMA/CD (Carrier Sense Multiple Access with
Collision Detection), un protocol de comunicaţie în reţea. Ideea de bază este
simplă: o staţie din reţeaua Ethernet poate trimite pachete de date în reţea
atunci când nu există alte pachete de date care circulă în reţea (reţeaua este

209
Reţele de calculatoare

„liberă”). În caz contrar, staţia care doreşte să transmită pachete de date în


reţea aşteaptă până când reţeaua devine „liberă”, exact ca o persoană care
doreşte să intre într-o conversaţie şi aşteaptă politicoasă ca altă persoană să
termine de vorbit. Dacă mai multe staţii din reţea încep să transmită date în
acelaşi timp, apare fenomenul de „coliziune”. După apariţia unei coliziuni,
fiecare staţie aşteaptă un timp (de durată aleatoare) după care încearcă din
nou să trimită pachetele de date. Dacă se întâmplă să se contorizeze 16 astfel
de încercări nereuşite de trimitere a pachetelor de date în reţea, aplicaţia care
a generat operaţia de trimitere de date trebuie să reia cererea de transmitere
de pachete de date în reţea.
Într-o reţea Ethernet, cu cât numărul utilizatorilor (staţiilor de lucru)
creşte, cu atât va creşte şi numărul coliziunilor, al erorilor şi al cererilor de
retransmisie, cu efect de multiplicare asemănător cu acela al „bulgărului de
zăpadă”. Fenomenul de apariţie al coliziunilor este normal să se întâmple
într-o reţea Ethernet, dar prea multe coliziuni vor duce la încetinirea
funcţionării reţelei. În cazul în care este utilizată mai mult de 50% din
lăţimea de bandă a reţelei, coliziunile încep să „gâtuiască”, să încetinească
reţeaua, producând fenomenul de congestie. Într-un astfel de moment, toate
activităţile din reţea sunt încetinite: aplicaţiile se deschid mai greu,
transferul fişierelor durează mai mult, tipărirea la imprimanta de reţea se
face mai greu şi utilizatorii sunt obligaţi să aştepte. Dacă traficul de reţea
depăşeşte 60% din lăţimea de bandă, deja reţeaua este supraîncărcată şi
există posibilitatea chiar ca reţeaua să „cadă”. Standardul clasic Ethernet are
asigură o lăţime de bandă de 10 Mbps, în timp ce mai noile standarde Fast
Ethernet (denumită şi 100BaseT) şi Gigabit Ethernet (sau 1000BaseT)
funcţionează în acelaşi mod cu Ethernet-ul clasic, dar la viteze de 100 Mbps,
respectiv 1000 MBps. Ultimul standard Ethernet asigură o lăţime de bandă
de 10 Gbps.

Topologia token passing

Cea mai cunoscută tehnologie „token passing” este tehnologia


Token Ring, construită ca alternativă la metoda Ethernet de detecţie a
coliziunilor. Ideea reţelei Token Ring este următoarea: în reţea circulă de la
o staţie la alta un token (jeton de acces) care „întreabă” staţia respectivă
dacă doreşte sau nu să transmită pachete de date în reţea. Reţeaua Token
Ring are o topologie fizică de tip inel (după cum ne spune, de altfel, şi
numele).

210
Sisteme de calcul şi operare

Figura 6.4 Adaptor (placă) de reţea

În momentul în care o staţie din reţea doreşte să transmită date, preia


token-ul şi îl converteşte într-un cadru de date pe care îl transmite în reţea.
Acest cadru de date circulă în reţea, fiecare staţie retransmite aceste date în
jurul inelului iar staţia destinaţie copiază acest cadru de date în memorie. În
momentul în care cadrul trimis se întoarce înapoi la staţia care l-a trimis,
staţia respectivă eliberează un nou token de acces în reţea.
Reţelele Token Ring operează la viteze de 4 sau 16 Mbps, dar
costurile scăzute şi uşurinţa în exploatare a reţelelor Ethernet au făcut ca
standardul Token Ring să fie din ce în ce mai puţin utilizat în noile
implementări de reţea din zilele noastre.

6.3 Echipamente de reţea

Dispozitivele care sunt interconectate într-o reţea se numesc gazde


de reţea sau, pe scurt, gazde (hosts). Există o serie întreagă de dispozitive ce
pot exista într-o reţea, dar elementele de bază într-o reţea simplă sunt
următoarele: cel puţin două calculatoare, o interfaţă de reţea (placă de reţea)
instalată pe fiecare calculator în parte, un mediu de conexiune (tipic un
cablu, dar există şi conexiuni fără fir – wireless) şi un sistem de operare de
reţea (Unix, Linux, Windows 95, 98, 2000, XP, NT sau Novell Netware).

211
Reţele de calculatoare

De asemenea, majoritatea reţelelor posedă şi un hub sau un switch pentru


interconectarea gazdelor din reţea. Prezentăm în continuare pe scurt
echipamentele de bază dintr-o reţea.

Figura 6.5 Placă de reţea PCMCIA pentru laptop

Placa de reţea

Placa de reţea (figura 6.4), denumită şi interfaţă de reţea sau adaptor


de reţea sau NIC (Network Interface Card), reprezintă un element de bază
într-o reţea de calculatoare, având în vedere că orice calculator conectat la
reţea trebuie să posede un astfel de adaptor. Placa de reţea este o placă cu
circuite electronice sau o placă PCMCIA (pentru laptop – figura 6.5) şi are
rolul de a asigura conexiunea la reţea a unui echipament (calculator,
imprimantă, etc.). Fiecare placă de reţea are o adresă unică, numită şi adresă
fizică sau adresă MAC (Media Access Control). Atunci când se alege o placă
de reţea pentru un calculator sau pentru alt dispozitiv pe care vrem să îl
conectăm la o reţea trebuie să luăm în considerare următoarele:
ˆ Tipul reţelei (Ethernet, Token Ring, etc.);
ˆ Tipul mediului de conexiune (cablu coaxial, fibră optică, cablu
UTP sau legătură wireless);
ˆ Tipul magistralei de sistem (PCI, ISA etc.).

212
Sisteme de calcul şi operare

Figura 6.6 Echipamente gazdă într-o reţea

Echipamente gazdă într-o reţea

Toate calculatoarele, indiferent de tipul lor, imprimantele sau


serverele conectate la o reţea se numesc gazde (figura 6.6).

Repetorul (repeater)

Un echipament foarte simplu întâlnit în reţele este repetorul


(repeater-ul), dispozitiv care nu face altceva decât să amplifice şi să
regenereze semnale la nivel de biţi de-a lungul reţelei. Aceste echipamente
se întâlnesc atunci când se doreşte extinderea dimensiunii maxime pentru
tipul de cablu respectiv şi prezintă din punct de vedere constructiv un port
de intrare şi un port de ieşire.

213
Reţele de calculatoare

Hub-ul
Hub-ul acţionează tot la nivel de bit şi de regenerare a semnalelor,
fiind denumit, de fapt, repetor multi-port, deoarece prezintă un port de
intrare, dar mai multe porturi de ieşire. Introducerea unui hub în reţea
creează un punct de conexiune centrală (la care sunt legate toate gazdele) şi
măreşte fiabilitatea. Hub-urile pot fi de mai multe tipuri, unele fiind hub-uri
active, ce folosesc energie electrică pentru a regenera semnalele, în timp alte
hub-uri sunt hub-uri pasive care doar împart semnalele la mai mulţi
utilizatori. Hub-urile pasive nu regenerează biţii, nu extind lungimea cablării
şi nu permit ca două sau mai multe gazde să fie conectate pe acelaşi segment
de cablu. Există, de asemenea, şi hub-uri inteligente, care pot fi programate
pentru a se administra traficul în reţea.
Bridge-ul
Bridge-ul acţionează la un nivel superior (nivelul 2 din modelul OSI,
model pe care îl vom prezenta în secţiunea 6.2.3), conectând două segmente
de reţea. De asemenea, un bridge filtrează traficul în reţea pe baza adreselor
MAC, regula generală fiind următoarea: traficul local (ce provine din acelaşi
segment de reţea) este menţinut local iar traficul din afara segmentului de
reţea este direcţionat în afara segmentului de reţea. Un bridge creează şi
administrează nişte tabele de adrese MAC pe baza cărora poate face filtrarea
traficului după regula de mai sus.
Switch-ul
Switch-ul este tot un echipament de reţea ce acţionează la nivelul 2
din modelul OSI, fiind denumit şi bridge multi-port. Deciziile de
direcţionare a traficului din reţea se fac tot pe baza adreselor MAC,
comutarea semnalelor transmise făcându-se către portul unde este conectat
calculatorul destinaţie (cel căruia i se adresează pachetul de date).
Switch-urile arată oarecm asemănător cu un hub dar administrează
transmisiunile de pachete de date mult mai eficient, combinând capacitatea
de conectivitate a hub-ului cu reglarea traficului din reţea (pe care o face un
bridge) la nivelul fiecărui port de conexiune.
Router-ul
Router-ul este un echipament de reţea mai complex (şi mai scump, de
asemenea) ce acţionează la nivelul 3 din modelul OSI. Acest dispozitiv
poate lua decizii de direcţionare a pachetelor de date din reţea pe bază de
clase de adrese logice (adrese IP), putând conecta diferite tehnologii de nivel

214
Sisteme de calcul şi operare

2 OSI, cum ar fi Ethernet, FDDI, Token Ring etc. Routerele reprezintă


elementele centrale ale Internetului, ele examinează pachetele de date de
intrare şi le direcţionează către interfeţele respective de ieşire. Un router este
asemănător cu un calculator, având procesor, memorie, interfeţe de
intrare/ieşire, având deci putere de procesare şi de luare a unei decizii de
direcţionare a unui pachet de date către o anumită interfaţă pe baza unor aşa
numite protocoale de rutare.

Figura 6.7 Simbolurile grafice utilizate pentru repetor,


hub, bridge, switch, ruter

Simbolurile grafice utilizate pentru realizarea diagramelor de reţea


sunt prezentate în figura 6.7.

215
Reţele de calculatoare

6.4 Modele utilizate în dezvoltarea şi studiul reţelelor


de calculatoare

6.4.1 Introducere

Primele reţele de calculatoare din lume erau formate, de regulă, din


calculatoare ce proveneau de la acelaşi producător, neexistând posibilitatea
de a face să coopereze computere şi echipamente de reţea produse de firme
diferite. Pe măsură ce numărul de calculatoare a crescut şi complexitatea
reţelelor s-a mărit, a apărut necesitatea de a putea fi integrate împreună
soluţii provenite de la mai mulţi fabricanţi de computere şi tehnologii de
reţea. La sfârşitul anilor 1970, Organizaţia Internaţională pentru
Standardizare (ISO – International Organization for Standardization) a
început dezvoltarea primului model arhitectural – denumit OSI (Open
Systems Interconnection) pe baza căruia să se rezolve această necesitate.
Acest model s-a impus ca un standard bine cunoscut în lumea
reţelelor de calculatoare, iar pentru că organizaţia ISO a conceput acest
model, numele complet al său este modelul ISO-OSI. Acest model doreşte
să fie un ajutor pentru ca producătorii de calculatoare şi de echipamente de
reţea să aibă produse interoperabile cu cele similare ale altor producători.
Modelul ISO-OSI este modelul arhitectural de bază al reţelelor de
calculatoare, descriind modul în care aplicaţiile de pe un computer
comunică prin intermediul mediilor de reţea cu aplicaţiilor de pe un alt
computer aflat în reţea.
Alte două modele arhitecturale de reţea pe care le vom prezenta în
continuare sunt modelul TCP/IP şi modelul ierarhic Cisco. Toate aceste
modele au o caracteristică principală comună, în sensul că abordarea
problematicii reţelistice se face pe nivele.

6.4.2 Necesitatea unui model ierarhic

Pentru a înţelege mai bine de ce a apărut necesitatea existenţei unui


model după care să fie proiectate, dezvoltate, analizate şi depanate reţelele
de calculatoare trebuie să definim noţiunea de flux informaţional.
Considerând exemplul a două calculatoare aflate într-o reţea (Figura 6.8),
comunicarea dintre acestea se face pe baza unui schimb de date; această
deplasare a datelor de la calculatorul sursă la cel destinaţie poartă numele de
flux de date sau, pe scurt, flux.

216
Sisteme de calcul şi operare

Fig. 6.8. Fluxul de date între sursă şi destinaţie

Putem face analogii ale scurgerii fluxului de date cu numeroase


exemple din viaţa de zi cu zi: traficul maşinilor pe stradă, scurgerea apei
într-o conductă sau drumul parcurs de o scrisoare de la expeditor la
destinatar. În toate aceste exemple este vorba de o mişcare a unor obiecte
(fie că este vorba de maşini, apă sau scrisori) dintr-un loc în altul, iar această
mişcare reprezintă un flux. În legătură cu fluxul de date dintr-o reţea de
calculatoare, apar o serie de întrebări care trebuie lămurite:
¾ Care este fluxul?
¾ Care sunt diferitele forme de flux?
¾ Ce reguli guvernează acest flux?
¾ Unde apare acest flux?

Pentru a clarifica răspunsurile la aceste întrebări ce apar când este


forma de fluxul de date dintr-o reţea de calculatoare s-a recurs la divizarea
problemei de comunicaţie pe mai multe nivele, lucru pe care îl fac şi
modelele arhitecturale de reţea. Divizarea chestiunii comunicaţiei pe mai
multe nivele are următoarele avantaje:
ª se împarte problema comunicaţiei din reţea în piese mai mici şi
mai simple, deci mai uşor de analizat;
ª se doreşte standardizarea componentele de reţea pentru a putea
permite dezvoltare şi suport multiproducător;
ª permite diferitor tipuri de hardware şi software din reţea să
comunice între ele;
ª este o modalitate de prevenire a faptului că o modificare ce apare
la un nivel să afecteze celelalte nivele, astfel încât să se dezvolte
mai rapid.

217
Reţele de calculatoare

6.4.3 Modelul ISO-OSI

Lansat oficial în 1984, modelul ISO-OSI reprezintă modelul


arhitectural principal pe baza căruia reţelele de calculatoare sunt proiectate,
analizate, dezvoltate, implementate sau depanate. Acest model este conceput
să trateze reţelele de calculatoare pe mai multe nivele, făcând astfel ca
problemele comunicaţiei (fluxurile din reţea) să fie divizate în probleme mai
simple şi mai uşor de analizat, corespunzătoare unui nivel din reţea. Cu
ajutorul modelului OSI se îmbunătăţeşte transferul datelor dintre nodurile
unei reţele, având în vedere că una dintre caracteristicile sale principale este
aceea de a asista modalitatea de transfer a datelor între două sisteme
terminale din reţea.

APLICAŢIE Interfaţa cu utilizatorul

PREZENTARE Modalitatea de prezentare a datelor

SESIUNE Separă datele diferitelor aplicaţii

Asigură livrarea datelor la destinaţie


TRANSPORT
Asigură corecţia datelor înaintea transmiterii

Se ocupă cu adresarea logică pe care ruterele


REŢEA
o utilizează pentru determinarea rutei până la destinaţie

Pachetele de date sunt transformate în octeţi


şi octeţii în cadre
LEGĂTURĂ DE DATE
Oferă acces la mediu prin utilizarea adreselor MAC
Asigură detecţia erorilor

Mută şiruri de biţi între echipamente


FIZIC Specifică tipul de cablare, viteza de transmisie,
voltaje, tipuri de conectori, etc.

Figura 6.9 Nivelele modelului OSI

Modelul OSI este practic un set de principii de bază pe care


dezvoltatorii de aplicaţii de reţea îl pot folosi pentru a crea şi implementa
aceste aplicaţii. De asemenea, modelul oferă cadrul specific pentru crearea
şi implementarea standardelor de reţea, a echipamentelor şi a schemelor de
interconectare în reţea. Modelul OSI descrie modalitatea în care datele şi
informaţiile din reţea sunt transmise de la o aplicaţie de pe un computer
către o altă aplicaţie de pe alt computer; acest lucru se face folosind o
abordare pe 7 nivele. Cele 7 nivele ale modelului OSI sunt împărţite în două

218
Sisteme de calcul şi operare

grupuri. Primul grup, format din cele trei nivele superioare defineşte modul
de comunicare între aplicaţiile de pe staţiile terminale din reţea şi modul de
comunicare cu utilizatorii. Cel de-al doilea grup, format din cele 4 nivele
inferioare defineşte modul de transmitere a datelor de la o sursă la o
destinaţie. În figura 6.9 sunt prezentate cele 7 nivele ale modelului OSI
împreună cu câteva caracteristici principale ale fiecărui nivel.
Modalitatea de funcţionare a nivelelor din modelul OSI este
următoarea: fiecare nivel oferă servicii nivelului imediat superior (nivelul
fizic oferă servicii nivelului legătură de date, nivelul legătură de date oferă
servicii nivelului reţea ş.a.m.d.), excepţie făcând nivelul aplicaţie care nu are
un alt nivel superior. Comunicarea între două sisteme terminale din reţea se
face, de asemenea, pe baza unor protocoale corespunzătoare nivelelor din
modelul OSI la care acestea activează. Astfel, nivelul aplicaţie al uni sistem
terminal comunică cu nivelul aplicaţie al celuilalt sistem, nivelul reţea cu
nivelul reţea, etc.
Vom face în continuare o analiză mai detaliată pentru fiecare nivel
din modelul OSI în parte, pe baza modelului top-down, plecând de la nivelul
aplicaţie (de vârf) şi ajungând la nivelul fizic (de bază).

Nivelul aplicaţie

Nivelul aplicaţie din modelul OSI este folosit de către utilizatori


pentru asigurarea interfeţei cu calculatorul. Acest nivel se ocupă cu
identificarea şi stabilirea partenerului de comunicaţie şi determină dacă
există suficiente resurse pentru stabilirea comunicaţiei dorite. În timp ce
unele aplicaţii necesită numai resurse locale, alte aplicaţii pot necesita
componente ce provin de la mai multe aplicaţii de reţea – exemple pot fi:
transferuri de fişiere, localizarea de informaţii, poşta electronică (e-mail),
acces la distanţă, management de reţea etc.
Dacă în trecut comunicaţia dintre aplicaţii se făcea de regulă la
nivelul unei organizaţii sau firme, există o tendinţă generală în ultimii ani de
a mări spectrul acestor comunicaţii la nivel interorganizaţional,
dezvoltându-se aplicaţii inter-reţea precum:
 WWW (World Wide Web) – sau prescurtat Web, asigură
conexiunea dintre servere din întreaga lume folosind diverse
formate. Majoritatea formatelor sunt multimedia şi includ text,
grafică, sunet sau video. Programele de navigare Web (denumite
browsere) precum Netscape Navigator, Internet Explorer, Opera
şi altele ne ajută să accesăm şi să vizualizăm site-urile Web.

219
Reţele de calculatoare

 EDI (Electronic Data Interchange) – reprezintă o colecţie de


standarde şi procese ce facilitează fluxul de operaţii ce includ
contabilizarea, transportul/recepţia, inventarierea datelor
interschimbate între diferite companii.
 Utilitare pentru navigare Internet – acestea includ aplicaţii
precum Gopher, WAIS sau motoare de căutare ca Yahoo!,
Lycos, Alta Vista, Google, Excite care ajută utilizatorii să
localizeze informaţiile dorite.
 Servicii pentru tranzacţii financiare – acestea colectează şi oferă
informaţii referitoare la investiţii, pieţe financiare, active
financiare, rate de schimb valutar etc. pentru clienţii permanenţi
sau ocazionali.
 Sisteme BBS (Bulletin Board System) – acestea sunt baze de
date de produse software unde putem găsi o mulţime extrem de
mare de programe din diverse domenii. Software-ul existent aici
este, de regulă, gratis sau promoţional, adică programele nu
funcţionează cu toate facilităţile până când nu sunt cumpărate (de
tip shareware).

Nivelul prezentare

După cum spune şi numele său, acest nivel oferă o modalitate de


prezentare a datelor nivelului superior, nivelului aplicaţie. Nivelul
prezentare acţionează ca un translator oferind funcţii de codificare şi
conversie. Modalitatea de a asigura o transmisie cu succes a datelor este
aceea de a codifica datele într-un format cunoscut înaintea începerii
transmisiunii. Acest lucru se face deoarece computerele sunt astfel
construite pentru a recepţiona date formatate generic şi a le converti într-un
format nativ pentru citire (de exemplu folosind codul ASCII, EBCDIC sau
Unicode). Prin oferirea de servicii de translatare, nivelul prezentare asigură
faptul că datele transmise de nivelul aplicaţie al unui sistem terminal sunt
înţelese de nivelul aplicaţie al altui sistem terminal.
Modelul OSI oferă o serie de protocoale standard pentru acest nivel,
protocoale ce definesc modalităţi de formatare a datelor. Operaţii precum
criptarea, decriptarea, compresia sau decompresia datelor sunt în strânsă
legătură cu acest nivel. Majoritatea standardelor acestui nivel se referă la
operaţii multimedia. Exemple de astfel de standarde sunt:
Ö GIF (Graphic Interchange Format) – este un format pentru
fişiere de tip grafic;
Ö PICT (PICTure) – acest format grafic este folosit de programe
Macintosh sau PowerPC pentru transferul de grafice QuickDraw;

220
Sisteme de calcul şi operare

Ö TIFF (Tagged Image File Format) – este un format standard


grafic pentru imagini de înaltă rezoluţie;
Ö JPEG (Joint Photographic Expert Group) – este un alt format
grafic;
Ö MIDI (Musical Instrument Digital Interface) este folosit pentru
crearea de fişiere ce conţin muzică în format digital;
Ö AVI (Audio Video Interleave) este un format pentru fişiere de
sunet şi video dezvoltat de Microsoft. El reprezintă formatul
standard pentru PC-uri, făcând parte integrantă din distribuţia
„Video for Windows (VfW)” a sistemului de operare Windows;
Ö MPEG (Moving Picture Experts Group) – este un standard
pentru compresia şi codificarea fişierelor ce conţin imagini în
mişcare – oferă rate de transfer de până la 1,5 Mbps;
Ö QuickTime – este un alt format popular pentru fişiere ce conţin
date audio/video – dezvoltat iniţial pe platforme Macintosh şi
PowerPC.

Nivelul sesiune

Acest nivel este responsabil cu iniţierea, administrarea şi încheierea


sesiunilor de comunicaţie între entităţile nivelului prezentare. De asemenea,
nivelul sesiune oferă un control al dialogului între nodurile terminale şi
coordonează comunicaţia între sisteme. Există 3 moduri de comunicaţie
între sistemele terminale: simplex, half-duplex şi full-duplex•. Exemple de
protocoale ale nivelului sesiune:
ª NFS (Network File System) – este un sistem de fişiere de reţea
dezvoltat de Sun Microsystems şi folosit împreună cu Unix şi
TCP/IP pentru a permite accesul transparent la resurse din reţea;
ª X Window – este o interfaţă grafică extrem de folosită de către
terminalele inteligente pentru comunicarea cu computere Unix
din reţea, permiţând operarea ca şi cum ar fi monitoare locale
ataşate;
ª SQL (Structured Query Language) – dezvoltat de compania IBM
pentru a oferi utilizatorilor o modalitate simplă şi standardizată

• Modul simplex implică faptul că transmisia de date se face într-un singur sens între staţia
sursă şi cea destinaţie. Modul half-duplex oferă posibilitatea transmisiei în ambele sensuri
între două sisteme terminale, dar într-un singur sens la un moment dat, în timp ce modul
full-duplex semnifică faptul că transmisia se poate efectua în ambele sensuri la acelaşi
moment dat.

221
Reţele de calculatoare

de a îşi specifica necesităţile pentru informaţii aflate pe staţia de


lucru locală sau în altă parte în reţea;
ª RPC (Remote Procedure Call) reprezintă un instrument
client/server folosit în medii de reţea. Procedurile sunt create pe
clienţi şi operează pe servere;
ª AppleTalk Session Protocol (ASP) este un alt mecanism
client/server care stabileşte şi administrează sesiuni de
comunicaţie între un client AppleTalk şi un server.

Nivelul transport

Nivelul transport oferă servicii care segmentează şi reasamblează


datele provenite de la aplicaţii de nivel superior, unificându-le într-un flux
de date. De asemenea, acest nivel din modelul OSI asigură servicii de
transport între sursă şi destinaţie, putând stabili o conexiune logică între
sistemul transmiţător şi sistemul destinaţie dintr-o reţea. Exemple de
protocoale folosite la acest nivel sunt TCP (Transmission Control Protocol)
şi UDP (User Datagram Protocol).
Nivelul transport este responsabil cu asigurarea mecanismelor pentru
multiplexarea datelor provenite de la nivelele superioare, stabilirea
sesiunilor de comunicaţie şi stoparea circuitelor virtuale. Noţiunile
fundamentale ce trebuie luate în considerare la acest nivel sunt: controlul
fluxului, comunicaţii orientate pe conexiune, windowing sau transmisia de
confirmări.

Controlul fluxului

Una dintre sarcinile de bază ale nivelului transport o constituie


asigurarea integrităţii datelor. Acest lucru este realizat prin controlul
fluxului de date şi prin asigurarea unui mecanism fiabil de transport de date
între un sistem sursă şi un sistem destinaţie. Controlul fluxului împiedică
faptul ca un sistem transmiţător să transmită mai multe date decât sistemul
receptor poate primi, deoarece un astfel de eveniment poate duce la pierderi
de date. Transportul fiabil al datelor între sursă şi destinaţie implică o
sesiune de comunicaţie orientată pe conexiune iar protocoalele implicate în
acest fenomen vor asigura următoarele:
& transmiţătorul va primi o confirmare din partea receptorului
pentru segmentele de date transmise şi recepţionate;
& toate segmentele care nu primesc această confirmare vor fi
retransmise;

222
Sisteme de calcul şi operare

& segmentele ajunse la destinatar vor fi aranjate în ordinea


corespunzătoare transmisiei, indiferent de ordinea la care au
ajuns la destinaţie;
& se va asigura un control al fluxului de date pentru a evita
congestiile, supraîncărcarea sau pierderea de date.

Comunicaţii orientate pe conexiune

Modalitatea de lucru a unei comunicaţii orientate pe conexiune este


următoarea: pentru a se asigura un transport fiabil de date de la sursă la
destinaţie, sistemul care trimite date stabileşte într-o primă etapă o sesiune
orientată pe conexiune cu sistemul său pereche cu care comunică. În acest
caz, programele aplicaţie de pe cele două sisteme terminale încep prin a
trimite un semnal sistemelor de operare care anunţă faptul că se va iniţia o
conexiune. Cele două sisteme de operare comunică între ele prin trimiterea
de mesaje de-a lungul reţelei confirmând că se aprobă transferul de date şi
că acesta poate începe. Din momentul realizării sincronizării între sisteme,
se poate spune că a fost creată o conexiune şi transferul de date se poate
iniţia. Un astfel de procedeu se mai numeşte three-way-handshake, adică
stabilirea conexiunii în trei etape (figura 6.10).
Detaliat, conexiunea de tip three-way-handshake presupune
următoarele etape: la început, staţia transmiţătoare iniţiază (trimite un apel
SYN) conexiunea prin trimiterea unui pachet de date ce are un număr de
secvenţă n şi care conţine un bit în header care indică faptul că secvenţa
reprezintă o cerere de conexiune. În faza a doua, staţia receptoare primeşte
pachetul, înregistrează secvenţa n şi răspunde cu o confirmare
(ACKnowledgement) n+1 şi include secvenţa iniţială proprie ce are numărul
m. Confirmarea cu numărul n+1 semnifică faptul că staţia receptoare a
primit toţi octeţii de date până la n şi aşteaptă secvenţa următoare n+1.

223
Reţele de calculatoare

Transmiţător Receptor

Se trimite SYN Se recepţionează SYN


Secvenţa n Secvenţa n

Se trimite SYN
Secvenţa m
ACK=n+1

Se recepţionează SYN
Secvenţa m
ACK=m+1

Se trimite ACK Se recepţionează ACK


ACK=m+1 ACK=m+1

Figura 6.10 Comunicaţia de tip three-way-handshake

Din momentul iniţierii comunicaţiei, cele două sisteme terminale


comunică prin intermediul unui protocol anume pentru a asigura transferul
corect al datelor pe toată durata transmisiunii.
O altă tehnică obişnuită de transmitere fiabilă a datelor este PAR
(Positive Acknowledgement and Retransmission) în care staţia sursă trimite
un pachet de date, porneşte un contor de timp şi aşteaptă o confirmare
înainte de a trimite următorul pachet. Dacă timpul scurs până la primirea
confirmării depăşeşte valoarea specificată, staţia sursă retransmite acel
pachet de date şi porneşte din nou contorul de timp.
În timpul unui transfer de date poate apărea la un moment dat o
congestie. Acest lucru se întâmplă atunci când un computer transmite date
cu o mare viteză generând un trafic prea rapid pentru reţea sau atunci când
mai multe computere transmit simultan date prin intermediul unei singure

224
Sisteme de calcul şi operare

porţi (gateway) către destinaţie. În acest din urmă caz, fie poarta de
transmitere fie destinaţia pot deveni aglomerate iar cauza problemei nu
provine de la un singur sistem terminal. Congestia în reţea este similară cu
traficul de maşini de pe o autostradă: un număr prea mare de maşini ce
utilizează autostrada conduce la un trafic aglomerat şi la apariţia de gâtuiri
ale traficului (aşa numitele ambuteiaje). În momentul în care o staţie din
reţea recepţionează datagrame (structuri de date) prea rapid pentru a le
putea procesa, acestea sunt stocate într-o zonă de memorie tampon numită
buffer. Această modalitate de a copia datagramele în memoria tampon
rezolvă problema doar dacă acest trafic supraaglomerat este de scurtă
durată. Dacă supraîncărcarea persistă, memoria tampon va deveni
insuficientă pentru stocarea tuturor datagramelor primite şi datagramele
ulterioare primite se vor pierde. Tocmai pentru a se evita astfel de pierderi
de date a fost creată funcţia de transport ce controlează fluiditatea traficului
de date din reţea.
Un alt procedeu utilizat pentru transmiterea datelor de la o sursă la o
destinaţie se numeşte windowing. Deoarece viteza efectivă de transfer a
datelor ar fi prea înceată dacă staţia care transmite ar aştepta o confirmare
pentru fiecare segment de date trimis, după iniţierea comunicaţiei se pot
transmite mai multe pachete de date înainte de a primi o confirmare din
partea destinatarului. Numărul de segmente transmise până la primirea unei
confirmări poartă numele de window (îi vom spune fereastră de date).
Există mai multe tipuri de folosire a acestei tehnici: în timp ce unele
protocoale cuantifică informaţia trimisă într-o fereastră de date ca multiplu
de pachete, alte protocoale (între care şi TCP/IP) folosesc multiplii de octeţi
pentru ferestrele de date. Figura 6.11 ilustrează acest procedeu folosind două
dimensiuni window: 1 şi 3. În cazul unui window de mărime 1,
transmiţătorul aşteaptă o confirmare pentru fiecare segment de date transmis
înainte de a trimite alt segment de date. În cazul unui window de
dimensiune 3, se vor transmite 3 pachete de date fără a se aştepta
confirmarea.

225
Reţele de calculatoare

Transmiţător Receptor

Se trimit 3 pachete

Se recepţionează 3
pachete şi se trimite
confirmarea

Se recepţionează
confirmarea şi se trimit
alte 3 pachete

Se recepţionează 3
pachete şi se trimite o
nouă confirmare
ACK=m+1

Se recepţionează
confirmarea şi se
continuă procedeul

Figura 6.11 Ilustrarea procedeului windowing cu o „fereastră” de dimensiune 3

Protocolul TCP utilizează o astfel de tehnică de windowing denumită


sliding-window (fereastră glisantă). Denumirea semnifică faptul că
dimensiunea ferestrei de date „glisează”, adică este negociată dinamic în
timpul transmisiunii.

Nivelul reţea

Nivelul reţea din modelul OSI este responsabil cu direcţionarea


(rutarea) datelor între reţele şi cu adresarea inter-reţea. Acest lucru înseamnă
că nivelul reţea are grijă de datele transmise între echipamente care nu sunt
în aceeaşi reţea locală. Dispozitive speciale numite rutere funcţionează la
acest nivel OSI oferind servicii de rutare într-o inter-reţea. În funcţie de
nivelul OSI la care activează, spunem că echipamentul respectiv este

226
Sisteme de calcul şi operare

un echipament de nivel corespunzător; astfel, ruterele se mai numesc şi


echipamente de nivel 3.
Vom prezenta în continuare cum funcţionează mecanismul de
rutare, adică modalitatea prin care ruterele direcţionează pachetele de date
spre destinaţie. Porturile de comunicaţie în reţea ale unui ruter se numesc
interfeţe. Primul lucru care se face atunci când un pachet de date ajunge la o
interfaţă a unui ruter este să se verifice adresa destinaţie (adresa IP -Internet
Protocol). Dacă acest pachet nu are ca adresă de destinaţie chiar ruterul,
atunci ruterul consultă un tabel de adrese de reţea ce se numeşte tabelă de
rutare (routing table). În continuare pachetul se trimite la o interfaţă de
ieşire a ruterului pentru a fi descompus în cadre şi trimis în reţeaua locală. În
situaţia în care adresa destinaţie nu se regăseşte în tabela de rutare atunci
pachetul este „aruncat”.
La nivelul reţea OSI se utilizează două tipuri de pachete: pachete ce
conţin date efective şi pachete ce conţin informaţii de reîmprospătare a
rutelor de reţea.
ƒ Pachetele de date sunt folosite pentru a transporta datele
utilizatorilor în cadrul inter-reţelei iar protocoalele folosite
pentru acest tip de trafic se numesc protocoale rutate (routed
protocols), categorie din care fac parte şi protocoalele IP şi IPX.
ƒ Pachetele ce conţin informaţii de reîmprospătare a rutelor sunt
utilizate pentru a aduce la zi rutele vecine provenite de la ruterele
conectate în inter-reţea. Protocoalele utilizate în acest sens se
numesc protocoale de rutare (routing protocols) şi ca exemple
pot fi date RIP (Routing Information Protocol – cel mai utilizat
protocol de rutare din Internet), EIGRP (Enhanced Interior
Gateway Routing Protocol) sau OSPF (Open Shortest Paths
First).

Tabelele de rutare memorate şi folosite de către rutere conţin


următoarele informaţii: adrese de reţea, denumiri de interfeţe şi metrica.
Adresele de reţea sunt specifice protocoalelor folosite; un ruter trebuie să
administreze o tabelă de rutare pentru fiecare protocol în parte deoarece
acestea gestionează reţelele folosind scheme de adresare diferite. Putem
compara această situaţie cu aceea a inscripţionării denumirii unei străzi în
mai multe limbi care sunt vorbite de către locuitorii de pe acea stradă.
Denumirile de interfaţă specifică interfaţa de ieşire pe care pachetul o va
urma atunci când este adresat unei anumite reţele.
Metrica reprezintă distanţa către reţeaua destinaţie, distanţă care se
calculează în funcţie protocolul de rutare utilizat. În cazul protocoalelor
bazate pe vectorul-distanţă metrica (hop-count) este de numărul de rutere

227
Reţele de calculatoare

intermediare existente până la acea reţea. Alte tipuri de metrice includ


calculul lăţimii de bandă, întârzierile sau un contor de timp (tick-count, cu o
valoare de 1/18 dintr-o secundă).
Cel mai utilizat protocol pentru transferul informaţiilor de rutare
între rutere direct conectate este RIP. Acest protocol interior de rutare
(IGP – Interior Gateway Protocol) calculează distanţele până la destinaţie,
permiţând ruterelor să-şi reîmprospăteze tabelele de rutare la intervale
programabile, de regulă la fiecare 30 de secunde. Dezavantajul acestui
procedeu este acela că se generează trafic suplimentar în reţea. Protocolul
RIP oferă posibilitatea ruterului de a alege drumul (ruta) din reţea pe care se
vor transmite datele pe baza vectorului distanţă (distance-vector). Ori de
câte ori sunt transmise date în reţea ce trec printr-un nou ruter se consideră
că „s-a trecut un hop”. Spre exemplu, dacă până la destinaţie un pachet trece
prin 3 rutere intermediare (hopuri) atunci avem de-a face cu o metrică în
valoare de 3.
În cazul în care avem mai multe rute până la destinaţie, protocolul
RIP selectează ruta cu numărul minim de hopuri, care însă nu este neapărat
cea mai rapidă rută. Cu toate acestea, RIP rămâne foarte popular şi răspândit
printre protocoalele de rutare folosite. O altă problemă a protocolului RIP
este aceea că acesta nu poate alege rute ce au numărul de hopuri până la
destinaţie mai mare de 15. Din această cauză pot apărea cazuri în care
destinaţia se află prea departe şi atunci se va considera că nu poate fi atinsă.
Ruterele sunt dispozitive ce nu iau în considerare domeniile de tip
broadcast. O transmisie de tip broadcast în reţea semnifică faptul că are ca
destinaţie toate dispozitivele din acea reţea; din această cauză, dacă
transmisiunile de tip broadcast sunt prea frecvente va rezulta o
supraîncărcare a traficului reţelei. Ruterele delimitează atât domenii de
broadcast cât şi domenii de coliziuni, lucru pe care îl fac însă şi dispozitivele
nivelui 2 din modelul OSI, nivelul legătură de date. Fiecare interfaţă a
ruterului reprezintă o reţea separată şi trebuie să i se atribuie un număr de
identificare unic. În acest caz fiecare sistem terminal conectat la ruter
trebuie să utilizeze acelaşi număr de reţea. Caracteristicile cele mai
importante ale ruterelor sunt următoarele:
 ruterele folosesc adrese logice în header-ul nivelului reţea pentru
a determina ruta pe care să direcţioneze pachetul de date spre
destinaţie;
 ruterele nu direcţionează pachete de tip broadcast sau multicast
(pachete ce au mai multe destinaţii);
 ruterele pot folosi liste de acces setate de administratorul reţelei
pentru a asigura securitatea reţelei şi a controla pachetele de date
care intră sau ies din ruter;

228
Sisteme de calcul şi operare

 ruterele pot asigura simultan atât servicii de nivel 2 de tip


bridging cât şi servicii de rutare de nivel 3;
 echipamentele de nivel 3 (în acest caz ruterele, dar pot exista şi
switch-uri cu funcţii de nivel 3) pot oferi conexiuni între reţele
virtuale LAN (Virtual LAN).

Nivelul legăturii de date

Nivelul legăturii de date (data link) din modelul OSI are două
funcţiuni principale: asigură faptul că mesajele sunt transmise dispozitivului
corespunzător şi translatează aceste mesaje provenite de la nivelul superior
(nivelul reţea) în biţi pe care îi transmite mai departe nivelului fizic.
Mesajele sunt formatate în cadre de date (data frames) şi li se adaugă un
header ce conţine adresele hardware pentru destinaţie şi pentru sursă. Aceste
informaţii adiţionale formează un fel de înveliş (capsulă) ce înconjoară
mesajul original, de aceea acest procedeu se mai numeşte şi procedeul de
încapsulare a datelor.
Dispozitivele ce activează la nivelul 2 OSI se numesc switch-uri
(comutatoare) şi bridge-uri (punţi). Dacă ruterele ce activează la nivelul
reţea iau decizii privind direcţionarea pachetelor de date inter-reţele,
switch-urile şi bridge-urile se ocupă cu identificarea destinaţiei pachetelor în
cadrul reţelei locale. Atunci când un sistem terminal sursă doreşte să
transmită date către un sistem terminal destinaţie, nivelul legătură de date
foloseşte adresarea hardware (spre deosebire de nivelul reţea care foloseşte
adresarea software). Atunci când un pachet de date este schimbat între două
rutere, este transformat într-un cadru prin adăugarea informaţiei de control
la nivelul legătură de date, dar această informaţie este înlăturată de către
ruterul destinaţie şi este considerat doar pachetul original de date. Acest
procedeu de încapsulare în cadre a pachetului continuă până ce pachetul
ajunge la destinaţie. Este important să înţelegem că pachetul de date rămâne
intact pe toată durata transportului, încapsularea cu diverse tipuri de
informaţie de control (în funcţie de mediul de transmisie) neafectând
conţinutul său.
Nivelul legătură de date are două subnivele:
Subnivelul MAC (Media Access Control) 802.3 care defineşte
modalitatea în care pachetele sunt trimise spre mediul de transmisie.
Accesul la mediul de transmisie (pe scurt, mediu) se face pe baza regulii
primul venit, primul servit, atunci când este partajată întreaga lăţime de
bandă. Tot aici se defineşte şi adresarea fizică precum şi topologia locală.

229
Reţele de calculatoare

De asemenea, la acest subnivel pot apărea funcţii legate de


notificarea erorilor, transmiterea în ordine a cadrelor sau controlul
fluxului.
Nivelul LLC (Logical Link Control) 802.2 se ocupă cu identificarea
protocoalelor de nivel superior pe care le încapsulează. Un header LLC
specifică nivelului legătură de date cum să acţioneze cu un pachet de date
atunci când se primeşte un cadru. De exemplu, un sistem terminal ce
recepţionează un cadru examinează header-ul LLC pentru a vedea dacă
pachetul este destinat protocolului IP de la nivelul reţea. Subnivelul LLC
poate oferi, de asemenea, controlul fluxului şi controlul secvenţelor de biţi.

Nivelul fizic

Nivelul fizic din modelul OSI se ocupă cu recepţia şi transmiterea


şirurilor de biţi, comunicând direct cu diversele tipuri de medii de
transmisiune. Fiecare mediu de transmisie reprezintă valorile biţilor
(o sau 1) în mod diferit. Astfel, unele dintre acestea folosesc pentru
reprezentare tonuri audio, altele tranziţii de stare (schimbări de voltaj) etc.
Pentru fiecare mediu de transmisiune în parte este necesar să se specifice un
protocol pentru specificarea modelelor de biţi folosite, modalitatea de
codificare a biţilor în semnale media precum şi diverse caracteristici fizice
ale interfeţelor şi conectorilor corespunzătoare mediilor de transmisiune.
Specificaţiile nivelului fizic includ caracteristicile electrice,
mecanice, procedurale şi funcţionale necesare pentru activarea,
administrarea şi dezactivarea legăturilor fizice între sistemele terminale din
reţea. La nivelul fizic sunt identificate, spre exemplu, interfeţele între
echipamentele terminale DTE (Data Terminal Equipment) şi echipamentele
DCE (Data Circuit-Terminating Equipment). Echipamentele DCE sunt de
regulă localizate la furnizorul de servicii de reţea în timp ce echipamentele
DTE sunt echipamentele ataşate. Serviciile disponibile unui DTE sunt cel
mai des accesate prin intermediul unui modem sau a unui echipament
CSU/DSU (Channel Service Unit / Data Service Unit). Conectorii existenţi
la nivelul fizic precum şi diferitele topologii fizice sunt definite de către OSI
ca şi standarde, permiţând comunicaţia dintre sisteme terminale diferite.
Dispozitivele de reţea ce acţionează la nivelul fizic sunt repetoarele
şi hub-urile. Un repetor (repeater) recepţionează un semnal digital pe care îl
amplifică şi îl trimite mai departe sau îl regenerează, direcţionându-l către
toate porturile active de ieşire fără a examina conţinutul datelor. Hub-ul
acţionează în acelaşi mod, fiind de fapt un repetor multi-port. Fiecare
semnal digital recepţionat la un port de intrare al hub-ului este regenerat sau

230
Sisteme de calcul şi operare

amplificat şi trimis apoi către toate porturile hub-ului. În acest caz, toate
dispozitivele ataşate hub-ului spunem că se află în acelaşi domeniu de
coliziuni şi în acelaşi domeniu broadcast. Un domeniu broadcast este un
domeniu în care echipamentele din segmentul de reţea respectiv „ascultă”
toate semnalele de tip broadcast de pe acel segment. La fel ca şi repetoarele,
hub-urile nu analizează traficul de date pe timpul retransmiterii lor.
Hub-urile generează o reţea fizică de tip stea (star) în care hub-ul este
nodul central la care sunt conectate dispozitivele în formă de stea.
Standardul Ethernet pentru reţele LAN foloseşte o topologie logică de tip
magistrală (bus), în care semnalele sunt transmise de la un capăt la altul al
reţelei şi fiecare echipament conectat la hub „ascultă” dacă un alt
echipament transmite date.

6.4.4 Modelul TCP/IP

Introducere

Modelul de referinţă TCP/IP este modelul utilizat de strămoşul


tuturor reţelelor de calculatoare, care este ARPANET-ul şi de către
succesorul acestuia, Internetul. Concepută iniţial ca o reţea extrem de fiabilă
şi care să ofere posibilitatea interconectării diferitor tipuri de echipamente,
reţeaua ARPANET a Departamentului de Apărare a SUA a condus în cele
din urmă la realizarea arhitecturii TCP/IP sau, altfel spus, modelul de
referinţă TCP/IP. Arhitectura TCP/IP a fost definită pentru prima dată în
1974 de către autorii Cerf şi Kahn. Ulterior ea este dezvoltată de către
Leiner în 1985 iar filozofia din spatele modelului este analizată de către
Clark (1988). Modelul TCP/IP conţine 4 nivele:
ƒ nivelul gazdă-la-reţea (host-to-network);
ƒ nivelul Internet;
ƒ nivelul transport;
ƒ nivelul aplicaţie.

Figura 6.12 ne prezintă comparativ modelul TCP/IP şi modelul OSI.

231
Reţele de calculatoare

OSI TCP/IP

Aplicaţie

Nivele legate de
Prezentare
aplicaţii Aplicaţie
Protocoale

Sesiune

Transport Transport

Reţea Internet
Nivele legate de
fluxul de date

Legătură de Reţea
date Gazdă-la-reţea

Fizic

Figura 6.12 Comparaţie între modelul TCP/IP şi modelul OSI

Nivelul aplicaţie

Spre deosebire de modelul OSI, modelul TCP/IP nu conţine


nivelurile sesiune şi prezentare, ele nefiind incluse deoarece nu s-a simţit
nevoia lor. Experienţa oferită de modelul OSI a dovedit că această viziune a
fost corectă deoarece în majoritatea aplicaţiilor cele două nivele nu aduc un
real folos. Practic, funcţiunile nivelelor sesiune şi prezentare din modelul
OSI au fost în cazul modelului TCP/IP încorporate în nivelul aplicaţie.
Nivelul aplicaţie se situează deasupra nivelului transport şi are în
componenţă toate protocoalele de nivel înalt. Printre aceste protocoale se
află TELNET (pentru conexiuni pe calculatoare la distanţă), FTP (File
Transfer Protocol - transfer de fişiere), SMTP (Simple Mail Transmission
Protocol – pentru poşta electronică), DNS (Domain Name Service – pentru
stabilirea corespondenţei între numele gazdelor şi adresa de reţea) şi HTTP
(HyperText Transfer Protocol – pentru aducerea paginilor web).

232
Sisteme de calcul şi operare

Nivelul transport

Este următorul nivel de sus în jos după nivelul aplicaţie şi este astfel
conceput încât să permită conversaţii între entităţile pereche din sistemul
terminal sursă şi cel destinaţie, într-un mod asemănător cu nivelul transport
din modelul OSI. La acest nivel se află implementate două protocoale: TCP
(Transmission Control Protocol) şi UDP (User Datagram Protocol). TCP
este protocolul sigur şi fiabil orientat pe conexiune care permite ca un flux
de octeţi trimişi de la o sursă să ajungă la destinaţie fără erori, în timp ce
UDP este un protocol nesigur, fără conexiune, destinat aplicaţiilor care
doresc să utilizeze propria lor secvenţiere şi control al fluxului şi nu cele
oferite de TCP.

Nivelul Internet

Nivelul Internet reprezintă coloana vertebrală a întregii arhitecturi


TCP/IP. Rolul acestui nivel este acela de a permite sistemelor gazdă să
trimită pachete în orice reţea şi de a face ca pachetele să circule independent
până la destinaţie. Pachetele de date pot sosi într-o ordine diferită de aceea
în care au fost transmise, caz în care rearanjarea lor în ordinea corectă trece
în sarcina nivelelor superioare. La nivelul Internet se defineşte un format
standard de pachet de date (pachet IP) şi un protocol denumit IP (Internet
Protocol), sarcina nivelului fiind aceea de a livra pachetele IP către
destinaţie. Probleme apar la dirijarea pachetelor în reţea şi la evitarea
congestiei; de aceea putem spune că nivelul Internet din modelul TCP/IP
acţionează ca şi nivelul reţea din modelul OSI.
Se poate face o analogie a funcţionalităţii acestui nivel cu aceea a
sistemului poştal internaţional. Atunci când trimitem o scrisoare la
destinaţie sistemul poştal ştie să direcţioneze scrisoarea către destinatar, dar
noi nu cunoaştem mecanismele prin care se face acest lucru; singurul lucru
care ne interesează este ca scrisoarea să ajungă în bune condiţii şi în timp
util la destinaţie.

Nivelul gazdă-la-reţea

Nivelul gazdă-la-reţea (denumit şi nivelul de acces la reţea) este cel


mai puţin specificat dintre toate nivelele modelului TCP/IP. Numele său este
oarecum prea general şi confuz; acest nivel se ocupă cu toate chestiunile
legate de conexiunile fizice pe care trebuie să le străbată pachetele IP pentru
a ajunge în bune condiţii la destinaţie. El include specificaţii tehnologice

233
Reţele de calculatoare

legate de reţele LAN şi WAN, precum şi toate detaliile corespunzătoare


nivelelor fizic şi legătură de date prezente în modelul OSI.

6.5 Internetul şi reţelele de calculatoare

6.5.1 Introducere şi concepte de bază

Internetul este un termen nou, intrat de curând în vocabularul nostru


de zi cu zi. Unii chiar abordează subiecte legate de „sindromul Internet” sau
dependenţa de Internet. Vom încerca în cele ce urmează să clarificăm
definiţia acestuia, având în vedere că până şi mulţi utilizatori împătimiţi ai
Internetului nu ştiu să facă deosebirea între Internet şi Web sau între
serviciul de poştă electronică şi cel de transfer de fişiere.
Trebuie să lămurim de la început că nu se poate da o definiţie
complexă a termenului de Internet în câteva rânduri. Având însă câteva
noţiuni de bază şi o serie de caracteristici lămurite, ne putem face o privire
de ansamblu asupra concepţiei de Internet.
În primul rând, Internetul este o reţea de calculatoare (este, de fapt, o
reţea de reţele) la nivel mondial prin intermediul cărora sunt interconectate
milioane de echipamente de calcul (aici sunt incluse şi calculatoarele
personale) din întreaga lume. O reţea de calculatoare reprezintă o colecţie de
calculatoare interconectate între ele, adică sunt capabile să schimbe
informaţie între ele. Pe de altă parte, Internetul este denumirea celei mai
vaste grupări de surse de informaţie din lume. Reţeaua de care vorbeam mai
înainte are o dimensiune extinsă la mărimea planetei noastre şi cuprinde o
cantitate inimaginabilă de resurse fizice, logice, informaţionale.
Printre echipamentele interconectate se găsesc: calculatoare
personale, staţii de lucru Unix, servere de Web sau de e-mail, laptop-uri,
pagere, telefoane mobile, etc. De curând au fost conectate la Internet şi
dispozitive electrocasnice, cum ar fi frigiderul sau cuptorul cu microunde.
Se prevede că în viitor multe dintre echipamentele electrocasnice vor
dispune de conexiune Internet. Toate aceste echipamente sunt denumite
sisteme gazdă (hosts sau end systems). Aplicaţiile Internet care ne sunt
tuturor foarte familiare (poşta electronică sau web-ul) sunt de fapt, aplicaţii
de reţea ce rulează pe aceste sisteme gazdă.
Pentru a comunica între ele, sistemele gazdă folosesc aşa numitele
protocoale pentru controlul transmiterii, recepţiei şi corecţiei informaţiilor
care circulă prin Internet. Mai multe despre protocoale în continuarea
capitolului. Dintre aceste protocoale, TCP (Transmission Control Protocol)

234
Sisteme de calcul şi operare

şi IP (Internet Protocol) sunt cele mai importante protocoale folosite în


Internet. De asemenea, pentru asigurarea conexiunii între ele, sistemele
gazdă folosesc legături de comunicaţie ce constau din diverse tipuri de
cabluri, printre care cablu coaxial, torsadat, fibră optică sau pot fi conexiuni
fără fir, prin unde radio, de exemplu. Una dintre caracteristicile importante
ale acestor legături este viteza teoretică de transfer a datelor care este
denumită lăţime de bandă (bandwidth) şi care se exprimă în biţi sau multipli
ai acestora pe secundă (1 Mb/s = 1000 biţi/s).
Sistemele gazdă nu sunt interconectate direct între ele, ci prin
intermediul unor dispozitive intermediare denumite rutere. Pe scurt, un ruter
este un dispozitiv care preia informaţia ce ajunge la el prin intermediul uneia
dintre legăturile (de intrare) de comunicaţie şi o trimite mai departe pe o altă
legătură (de ieşire) de comunicaţie. Formatul informaţiilor care sunt
recepţionate şi transmise mai departe între rutere şi sistemele gazdă sunt
precizate de protocolul IP. Acest protocol reprezintă „limbajul universal” al
Internetului şi de aceea se mai numeşte şi „Internet dial tone”. Drumul pe
care îl parcurg informaţiile de la transmiţător la receptor poartă numele de
rută (route sau path) în reţea.
Modalitatea de stabilire a unei conexiuni în Internet (pentru a putea
transmite informaţii de la un transmiţător la un receptor) se bazează pe o
tehnică denumită comutare de pachete, care permite mai multor sisteme să
comunice pe o rută (sau o porţiune dintr-o rută) Internet, în acelaşi timp.
Topologia Internetului (structura sistemelor conectate la Internet) este
ierarhizată în modul următor: la bază sunt sistemele gazdă conectate la un
ISP (Internet Service Provider - Furnizor de Servicii Internet) local prin
intermediul unor reţele de acces, furnizorii locali sunt conectaţi la nişte
furnizori naţionali sau internaţionali, iar aceştia din urmă sunt conectaţi
împreună la cel mai înalt nivel din această ierarhie.
Este interesant de remarcat faptul că pot fi adăugate noi componente
sau nivele (noi reţele sau noi reţele de reţele) în această topologie ierarhică
într-o manieră foarte simplă, aşa cum ai adăuga noi piese într-un joc de
Lego. Internetul a crescut în ultimii ani şi continuă să crească într-un ritm
exponenţial: dacă în prima jumătate a lui 1996 au fost adăugate aproximativ
3.000.000 de host-uri (sisteme gazdă) [Network 1996], în prima jumătate a
lui 2001 au apărut 16.000.000 de noi host-uri conectate la Internet [Network
2001].
Această reţea uriaşă care este Internetul nu ar fi s-ar fi putut crea
dacă nu ar fi fost create, testate şi implementate o serie de standarde. Dacă
în faza incipientă a reţelelor de calculatoare (anii 1970) era imposibil să
interconectezi computere provenite de la diverşi producători (un computer
IBM cu un server Gateway, spre exemplu) datorită incompatibilităţii

235
Reţele de calculatoare

protocoalelor folosite, treptat s-a ajuns la concluzia că trebuie folosite


standarde generalizate de comunicaţie pentru a putea interconecta diverse
echipamente provenite de la diverşi producători. Astfel au luat fiinţă aşa
numitele standarde deschise (open-standards) şi necesitatea conectivităţii
indiferent de platformă (cross-platform). Aceste standarde sunt dezvoltate
de organisme internaţionale specializate, precum IETF (Internet Engineering
Task Force) ale căror documente poartă denumirea de documente RFC
(Request For Comments). După cum reiese şi din denumirea originală
(cereri pentru observaţii, comentarii), RFC-urile s-au născut pentru a rezolva
problemele arhitecturale ale predecesorilor Internetului.
Documentele RFC au evoluat astfel încât acum sunt adevărate
standarde, documente tehnice şi detaliate, care cuprind definiţii de
protocoale cum ar fi TCP (Transmission Control Protocol), IP (Internet
Protocol), SMTP (Simple Mail Transfer Protocol) sau HTTP (Hyper Text
Transfer Protocol). La ora actuală există peste 2000 de documente RFC.
Copii ale documentelor RFC sunt găzduite de numeroase site-uri Web. Una
dintre aceste locaţii este la Institutul de Ştiinţe ale Informaţiei (ISI –
Information Sciences Institute - http://www.rfc-editor.org). Alte locaţii sunt:
http://www.faqs.org/rfcs, http://www.pasteur.fr/other/ computer/RFC şi
http://www.csl.sony.co.jp/rfc/.
Internetul este un domeniu public, care cuprinde, după cum am mai
spus, o varietate de reţele publice ale unor companii private, instituţii
educaţionale sau guvernamentale. Există însă şi reţele asemănătoare private,
ale căror calculatoare gazdă nu sunt accesibile din afara reţelei respective. O
astfel de reţea se numeşte intranet şi de regulă foloseşte aceleaşi tehnologii
ca cele folosite în Internet.

6.5.2 Internet – scurt istoric

Funcţionarea Internetului se bazează pe protocolul TCP/IP, care este


de fapt o colecţie de protocoale dintre care cele mai importante sunt TCP şi
IP, de unde provine şi denumirea de TCP/IP. De multe ori întâlnim
denumirea de stivă de protocoale TCP/IP (TCP/IP Protocol Stack). Pentru a
înţelege funcţionarea unei reţele TCP/IP (bazată pe TCP/IP) trebuie să
cunoaştem o serie de considerente care au stat la baza naşterii reţelei
Internet şi a stivei de protocoale TCP/IP. Dacă la începuturile dezvoltării
sistemelor de calcul comerciale (sfârşitul anilor 1960, începutul anilor 1970)
companiile foloseau arhitecturi şi protocoale proprietare (ce aparţineau unui
anumit producător), treptat s-a ajuns la nevoia de a achiziţiona echipamente
provenite de la mai mulţi producători. Aceste echipamente trebuiau

236
Sisteme de calcul şi operare

interconectate şi făcute să lucreze împreună pe baza aceloraşi standarde şi


protocoale.
Utilizarea computerelor în programul agenţiei americane de stat
ARPA (Advanced Research Projects Agency) din cadrul Departamentului de
Apărare (DOD – Department Of Defense) a condus la elaborarea
coordonării dezvoltării unei reţele independente de producător pentru a
conecta marile centre de cercetare. Necesitatea unei astfel de reţele a fost
prima prioritate a acestui program, având în vedere că, iniţial, fiecare centru
de cercetare folosea tehnologii proprietare. Anul 1968 a marcat începutul
elaborării unei reţele bazate pe comutare de pachete, care mai târziu a
devenit reţeaua ARPAnet.
Reţeaua ARPAnet a fost prima reţea de calculatoare de arie largă
(WAN – Wide Area Network) din lume, concepută să permită unor pachete
de date să fie rutate în reţea ca entităţi de sine stătătoare. Acest lucru a
reprezentat o revoluţie în domeniu, deoarece reţelele anterioare se bazau pe
comutarea de circuite, ce însemna stabilirea de conexiuni dedicate între
două locaţii pentru ca acestea să poată schimba date. Mai mult, ARPAnet
oferea pentru prima dată posibilitatea interconectării mai multor locaţii într-
o topologie neregulată, permiţând datelor să circule între oricarea dintre
aceste locaţii pe diverse rute. Conceptul de bază era următorul: dacă una din
locaţii era distrusă (eventual bombardată într-un război – să nu uităm că era
vorba despre un proiect militar), acest lucru nu afecta comunicaţiile dintre
celelalte locaţii care făceau parte din reţea.
În aceeaşi perioadă de timp şi alţi furnizori de servicii de reţea au
început să dezvolte conexiuni cu locaţii din reţeaua ARPAnet, ceea ce a dus
treptat la apariţia termenului de Internet. În anii următori tot mai multe
organizaţii au fost adăugate în ARPAnet, în paralel cu dezvoltarea altor
reţele şi tehnologii de reţea, precum Ethernet.
Toate aceste dezvoltări ulterioare au condus la concluzia că este
nevoie de o serie de protocoale de reţea care să opereze la un nivel superior
celui fizic, astfel încât să se permită schimbul de informaţii între diverse
reţele fizice. Aceste protocoale trebuiau implementate în software deasupra
oricărei topologii de reţea, indiferent că era vorba despre o reţea de arie
largă WAN cu comutare de pachete (ARPAnet) sau o reţea locală LAN
(Local Area Network) Ethernet sau Token Ring.

237
Reţele de calculatoare

6.5.3 Definiţia unui protocol de reţea

Unul din termenele cele mai folosite atunci când este vorba de o
reţea de calculatoare sau de Internet este termenul de „protocol”. Vom
prezenta în continuare o definiţie şi câteva exemple pentru a putea identifica
un protocol. Probabil că cea mai bună modalitate de a înţelege noţiunea de
protocol este aceea de a considera pentru început o serie de analogii cu
intercomunicarea din lumea umană. Să considerăm exemplul în care
întrebăm pe cineva unde se află o anume stradă (Figura 6.13).
Bunele maniere (protocolul uman) ne fac să spunem întâi „Bună
ziua!” pentru a începe comunicarea cu o altă persoană. Răspunsul ar trebui
să fie, desigur, tot „Bună ziua!”, ca o confirmare a faptului că este acceptată
comunicarea. Interpretarea răspunsului ca un accept al comunicării ne
permite acum să formulăm întrebarea care ne interesează. Dacă răspunsul
iniţial al persoanei căreia îi adresăm „Bună ziua!” ar fi fost „Lasă-mă în
pace, sunt ocupat!” sau ceva asemănător, atunci ar fi însemnat că nu există
posibilitatea comunicării. În acest caz, nu mai are rost să formulăm
întrebarea al cărei răspuns dorim să-l aflăm. Uneori este posibil să nu
primim nici un răspuns la o întrebare, caz în care de regulă renunţăm a mai
repeta întrebarea.
Regulile intercomunicării umane (protocolul uman) sunt astfel
reprezentate de mesajele pe care le trimitem şi de acţiunile specifice pe care
le întreprindem corespunzătoare răspunsului primit de la interlocutor sau
producerii altor evenimente. Mesajele transmise şi cele recepţionate joacă
un rol fundamental în cazul protocoalelor umane; dacă o persoană are
obiceiuri diferite sau foloseşte un limbaj străin altei persoane, atunci
protocoalele diferite nu vor permite intercomunicarea între respectivele
persoane. Acelaşi lucru este valabil şi în cazul comunicării între entităţile
dintr-o reţea de calculatoare. Pentru a putea comunica, respectivele entităţi
trebuie să folosească (să ruleze) acelaşi protocol de reţea.
Un protocol de reţea este asemănător unui protocol uman, excepţie
făcând obiectele comunicării: în loc să avem de-a face cu oameni, avem de-
a face cu componente hardware sau software ale reţelei. Toate activităţile
dintr-o reţea de calculatoare (deci şi din Internet) sunt bazate pe
funcţionarea unui anumit set de protocoale. De exemplu, comunicarea dintre
două calculatoare în reţea se face prin protocoale implementate în hardware
la nivelul plăcii de reţea pentru controlul fluxurilor de biţi transmişi prin
intermediul suportului fizic; protocoalele de control al congestiilor au grijă
să controleze viteza de transmitere a datelor între un transmiţător şi un
receptor iar protocoalele de poştă electronică guvernează modalitatea de
transmitere şi de recepţie a mesajelor de tip e-mail.

238
Sisteme de calcul şi operare

Figura 6.13 Analogie între un protocol uman şi un protocol de reţea

În figura 6.13 este prezentat cazul în care un calculator face o cerere


unui server Web (asta se întâmplă în momentul în care scriem adresa web în
fereastra browserului), se primeşte un răspuns afirmativ de conexiune din
partea serverului şi apoi calculatorul foloseşte un mesaj de tip „GET” pentru
a recepţiona pagina respectivă. În cele din urmă, serverul returnează
conţinutul fişierului calculatorului care a făcut cererea.
Ca urmare a analogiei cu comportamentul uman, putem da
următoarea definiţie a protocolului: un protocol defineşte formatul şi
ordinea mesajelor schimbate între două sau mai multe entităţi ce comunică
între ele, precum şi acţiunile ce sunt întreprinse odată cu transmiterea sau
recepţia unui mesaj sau a unui alt eveniment.

6.5.4 Naşterea stivei de protocoale TCP/IP

Naşterea Internetului a dus în 1973 la începutul dezvoltării stivei de


protocoale TCP/IP, care se dorea a fi o colecţie de protocoale de reţea bazate
pe software care să permită oricărui sistem să se conecteze cu orice alt
sistem, folosind orice topologie de reţea. Cinci ani mai târziu, în 1978, era
gata versiunea 4 IP, adică aceeaşi versiune pe care o folosim şi astăzi.
Imediat după aceea au început să apară o serie de semnale pozitive în
legătură cu recunoaşterea TCP/IP: Universitatea Berkeley din California

239
Reţele de calculatoare

a încorporat stiva de protocoale TCP/IP în versiunea proprie de


UNIX-FreeBSD (distribuită gratis) ce avea să devină cel mai folosit sistem
de operare în comunităţile academice şi de cercetare.
Introducerea la scară largă a suitei de protocoale TCP/IP a produs o
serie de schimbări majore în lumea reţelelor de calculatoare. În primul rând,
topologia de bază a unei reţele era concentrată pe un nod central, în care
fiecare sistem ataşat trimitea datele unui nod central (pe post de dispecer)
pentru a fi procesate. Cu alte cuvinte, utilizatorii din reţea nu aveau
independenţă în lucru, orice procesare, tipărire la imprimantă etc. trebuind
să treacă pe la nodul central.
O dată cu introducerea TCP/IP, lucrurile s-au schimbat: s-a introdus
„descentralizarea”, astfel încât fiecare echipament din reţea era tratat
independent şi complet funcţional, fără a mai depinde de un nod central.
Comunicarea cu alt echipament din reţea se putea face acum direct, fără să
se comunice mai întâi cu nodul central. Reţelele bazate pe protocolul IP sunt
oarecum anarhice, fiecare echipament acţionând pe cont propriu ca o unitate
autonomă, responsabilă pentru serviciile de reţea proprii [Hall 2000].
Această concepţie arhitecturală a permis partajarea aplicaţiilor şi a
resurselor la scară largă, având în vedere că un model centralizat top-down
nu era viabil în cazul existenţei a milioane de echipamente larg răspândite.
În plus, acest model oferea siguranţă în exploatare în cazul „căderii” unei
componente din reţea, în contrast cu modelul centralizat în care toată
funcţionarea se oprea în cazul „căderii” nodului central.

6.5.5 Arhitectura Internetului

De-a lungul timpului, ARPAnet a evoluat într-o „reţea de reţele”,


folosind TCP/IP şi conectând între ele diverse organizaţii comerciale,
educaţionale, politice etc. A rezultat astfel o structură generală destul de
neregulată a Internetului (figura 6.14).

240
Sisteme de calcul şi operare

Figura 6.14 Arhitectura generală a Internetului

În reţeaua Internet există:


ƒ Furnizorii de servicii Internet care asigură clienţilor acces la
Internet - ISP (Internet Service Provider);
ƒ Furnizorii de servicii de reţea, care asigură conexiunile între
furnizorii de acces la Internet din întreaga lume - NSP (Network
Service Provider sau Backbone Provider).

În figură se mai pot observa aşa numitele NAP (Network Access


Points) care reprezintă punctele de acces la reţea.
În zilele noastre se tinde spre o arhitectură mai structurată,
organizată ierarhic ca un arbore (Figura 6.15). La primul nivel din arbore se
află câţiva furnizori de servicii care oferă majoritatea serviciilor de
interconectare la nivel unei ţări sau la nivel mondial, care se numesc
furnizori naţionali. Majoritatea acestor firme sunt mari companii de
telecomunicaţii specializate în reţele de scară largă.

241
Reţele de calculatoare

Figura 6.15 Structura ierarhică a Internetului

Pe următorul nivel în arbore găsim furnizorii de acces Internet sau de


servicii Internet (întâlniţi uneori şi sub denumirea de IAPs – Internet Access
Providers) pe care îi denumim furnizori regionali. Aceştia oferă acces la
nivel unei localităţi sau regiuni geografice restrânse, având servicii de
conexiune la viteze mai reduse decât furnizorii naţionali.
Următorul nivel îl constituie clienţii reţelei (fie ei clienţi PC sau
servere) ce sunt conectaţi prin intermediul unui furnizor de servicii Internet
la un punct de acces la reţea, de unde se face legătura spre întreaga reţea
Internet. Punctele de acces la reţea sunt, de regulă, bazate pe tehnologie
ATM şi FDDI.

6.5.6 Componente Internet

Calculatoare gazdă, clienţi şi servere

Computerele folosite în jargonul reţelelor de calculatoare sunt


denumite, de regulă, calculatoare gazdă (hosts) sau sisteme terminale
(end-systems). Denumirea de calculator gazdă provine de la faptul că acesta
găzduieşte programe de nivel aplicaţie (program de e-mail, navigator web
sau program de chat). Denumirea de sisteme terminale provine de la faptul
că ele se află la „marginea” Internetului (vezi figura 6.16).

242
Sisteme de calcul şi operare

Figura 6.16 Componente ale Internetului

Calculatoarele gazdă se împart în două categorii: clienţi şi servere.


Clienţii sunt reprezentaţi de calculatoare PC sau staţii de lucru, în timp ce
serverele sunt calculatoare mai puternice care au de obicei funcţionalităţi
specifice: pot fi servere de baze de date, servere de mail sau servere de Web
etc. Sintagma client/server este însă cu mult mai importantă în cadrul
reţelelor de calculatoare, având în vedere faptul că majoritatea acestora
folosesc modelul client/server. Conform acestui model, un program client ce
rulează pe un sistem terminal cere şi primeşte informaţii de la un program
server ce rulează pe alt sistem terminal. Cele mai multe aplicaţii Internet
(Web, e-mail, ftp, telnet) folosesc acest model; datorită faptului că un
program client rulează pe un calculator şi programul server rulează alt
calculator, aceste aplicaţii se mai numesc şi aplicaţii distribuite.
Dacă cele mai multe sisteme terminale sunt formate din calculatoare
personale, staţii de lucru şi servere, în ultimul timp au apărut din ce în ce
mai multe echipamente conectate la Internet ca sisteme terminale (camere
digitale, sisteme WebTV etc.) [Dertouzous 1999].

243
Reţele de calculatoare

Servicii orientate pe conexiune

Sisteme terminale aflate în reţea comunică între ele şi fac schimb


de informaţii conform unui protocol de comunicaţie. Serverele,
ruterele, legăturile fizice şi alte componente ale Internetului oferă mijloacele
transportării acestor mesaje între aplicaţiile sistemelor terminale.
Serviciile de conexiune oferite se împart în două tipuri: servicii neorientate
pe conexiune (connectionless) şi servicii orientate pe conexiune
(connection-oriented).
În cazul serviciilor bazate (orientate) pe conexiune, programele
client şi server trimit pachete de control unul altuia înainte de a trimite
pachetele cu date. Acest procedeu se numeşte handshaking („strângere de
mână”) şi are rolul de a atenţiona atât clientul, cât şi serverul, că urmează să
aibă loc schimbul de date.
Odată încheiată procedura de handshaking, se spune că se stabileşte
o conexiune între cele două sisteme terminale. Sistemele terminale sunt
informate despre această conexiune dar modalitatea prin care pachetele care
sunt trimise de la sursă la destinaţie prin Internet nu permite stocarea unor
informaţii legate de starea conexiunii. Serviciul orientat pe conexiune din
Internet oferă şi alte servicii ce ţin de transferul sigur al datelor, de controlul
fluxului sau de controlul congestiilor.
Transferul sigur al datelor (reliable data transfer) înseamnă faptul că
o aplicaţie se poate baza pe conexiune pentru a transmite datele fără erori şi
în ordinea corectă. Siguranţa transmisiei datelor în Internet se face prin
utilizarea confirmărilor şi a retransmisiilor. Pentru a ne face o idee generală
asupra modului în care funcţionează acest lucru, să presupunem că a fost
stabilită o conexiune între două sisteme terminale X şi Y. Atunci când X
primeşte un pachet de la Y, îi trimite o confirmare; atunci când Y primeşte
confirmarea, atunci el ştie că respectivul pachet a ajuns la destinaţie. Dacă
sistemul Y nu primeşte confirmarea, atunci presupune că pachetul respectiv
nu a fost primit de către X şi în acest caz retransmite pachetul.
Controlul fluxului este folosit pentru a ne asigura de faptul că nici
una dintre părţile implicate în conexiune nu-şi aglomerează „interlocutorul”
trimiţând mai multe date decât acesta este capabil să recepţioneze în unitatea
de timp. Într-adevăr, o aplicaţie de la unul dintre capetele conexiunii poate
să nu fie în stare să proceseze informaţia la fel de repede aşa cum ea soseşte,
existând riscul supraîncărcării. Serviciul de control al fluxului forţează
sistemul ce transmite datele să reducă viteza de transmitere ori de câte ori
apare riscul supraîncărcării.

244
Sisteme de calcul şi operare

Serviciul de control al congestiilor previne intrarea într-o situaţie de


blocaj. Când un ruter devine congestionat, dimensiunea memoriilor sale
tampon poate fi depăşită şi să se producă pierderi de pachete. În astfel de
situaţii, dacă fiecare dintre sistemele pereche ce comunică continuă să
trimită pachete în reţea, are loc un blocaj şi astfel puţine dintre aceste
pachete vor mai ajunge la destinaţie. Internetul evită această problemă
forţând sistemele terminale să-şi reducă ratele de transfer la cer trimit
pachete în reţea în astfel de perioade de congestie. Sistemele terminale sunt
atenţionate de existenţa congestiilor atunci când nu mai primesc confirmări
pentru pachetele pe care le-au trimis la destinaţie.
Transferul sigur de date, controlul fluxului şi controlul congestiilor
nu reprezintă caracteristicile generale ale unui serviciu orientat pe
conexiune; orice serviciu sau protocol orientat pe conexiune are la bază doar
procedura de handshaking pentru iniţierea transferului de date între cele
două sisteme terminale. Serviciul orientat pe conexiune al Internetul este
TCP (Transmission Control Protocol), definit iniţial în documentul
RFC 793. Caracteristicile TCP includ transferul sigur de date, controlul
fluxului şi controlul congestiilor.

Servicii ne-orientate pe conexiune

După cum ne putem aştepta, într-un astfel de serviciu de conexiune


nu există procedura de handshaking. În momentul în care una dintre
aplicaţiile ce comunică trimite pachete celeilalte aplicaţii, transmiţătoarea
trimite pur şi simplu pachetele de date. Având în vedere că nu mai există
procedura iniţială de stabilire a conexiunii, înseamnă că datele pot fi
transmise mai rapid. Cum nu există nici confirmări de primire a pachetelor,
înseamnă că cel care trimite datele nu este niciodată sigur că acestea au
ajuns la destinaţie. Acest tip de serviciu nu se ocupă nici cu controlul
fluxului, nici cu controlul congestiilor. Serviciul neorientat pe conexiune din
Internet poartă numele de UDP (User Datagram Protocol), definit în
documentul RFC 768.
Printre aplicaţiile Internet ce folosesc serviciul TCP se numără:
TELNET – conectare la distanţă, SMTP – poştă electronică, FTP – transfer
de fişiere, HTTP – World Wide Web. Exemple de aplicaţii Internet care
folosesc protocolul UDP sunt: Internet phone, audio-la-cerere
(audio-on-demand) şi video conferinţa.

245
BIBLIOGRAFIE

1 Brăescu, C. L., Internet pentru începători, Bucureşti,


Dudaş, L. Editura TIMS, 1995
2 Dodescu, Gh., Sisteme de operare MS-DOS şi UNIX,
Vasilescu, A. Bucureşti, Editura Viaţa Românească,
1994
3 Dodescu Gh., Sisteme de calcul şi operare, Bucureşti,
Năstase, F. 1995-1
4 Dodescu, Gh., Sisteme de calcul şi operare, Bucureşti,
Năstase, F. Editura Aldo, 1995-2
5 Dodescu, Gh., Sisteme de calcul şi operare, Bucureşti,
Năstase, F. Editura Economică, 2002
6 Kurose, J., Computer Networking, A Top-Down
Keith, R., Approach Featuring the Internet, 2001
Addison, W.

7 Năstase, F. Arhitectura reţelelor de calculatoare,


Bucureşti, Editura Economică, 1999
8 Stallings, W. Operating Systems, fourth edition,
New York, Prentice Hall PTR, 2001
9 Vasilescu, A. Reţele de calculatoare, Bucureşti,
Editura Inforec, ASE, 1999
10 Zota, R. D. Sisteme de operare pentru reţele de
calculatoare, Bucureşti Editura
Economică, 2002
11 Zota, R. D. Reţele de calculatoare în era Internet,
Bucureşti, Editura Economică, 2002

12 Zota, R. D. Elemente de arhitectură a sistemelor de


calcul şi operare, Bucureşti, Editura
ASE, 2004

246