Sunteți pe pagina 1din 161

ELEMENTE DE TELEINFORMATICA

Informatica


Teleinformatica (telematica) se poate defini ca fiind domeniul
informaticii care utilizeaza mijloace de transmisie la distanta a
informatiilor.
Retelele de calculatoare sunt constituite din elemente ale informaticii si
ale sistemelor de telecomunicatii.
Evolutia teleinformaticii a cunoscut mai multe etape:
a) transmiterea datelor ntre doua calculatoare (anii '60);
b) accesarea informatiei la distanta, deci o tendinta de descentralizare
prin utilizarea statiilor de intrare/iesire (anii '70);
c) retele de terminale (comutare de circuite cu concentratori,
multiplexare), retele de calculatoare (comutare mesaje, pachete)
(sfrsitul anilor '70);
d) teleinformatica cu utilizarea pe scara larga a retelelor publice,
locale, comunicatie ntre retele prin tehnica satelitilor, utilizarea
fibrelor optice ca suport fizic, comunicatia digitala etc. (anii '80 si
n prezent).
n general, o retea poate fi definita ca o multime de noduri legateprintr -
un ansamblu de drumuri (deci poate fi reprezentata printr -un graf).
Topologia retelei vizeaza localizarea nodurilor si modul de nlantuire al

acestora.
n mod obisnuit se utilizeaza un numar de retele, ca de exemplu: sosele,
cai ferate, linii aeriene, posta, telefon, electricitate, apa, radio, televiziune
etc.
Notiunea de retea nu este un concept nou si exemplele anterioare permit
evidentierea unor caracteristici generale ale retelelor:
a) serviciul oferit prin retea depinde de tipul legaturii folosite n retea.
De exemplu, soselele furnizeaza o retea punct la punct, n timp ce
apa este difuzata n toate nodurile retelei;
b) utilizarea unei retele n bune conditiuni implica respectarea unui
anumit numar de reguli. De exemplu, pe sosele se poate circula
respectnd regulile de circulatie;
c) o retea se poate construi pe alte retele. De exemplu, posta utilizeaza
sosele, cai ferate, linii aeriene.
O retea teleinformatica (o vom numi, fara riscul confuziei, retea) este o
retea ale carei noduri sunt constituite din unitati de prelucrare a informatiei,
2
schimbul de informatie realizndu-se prin intermediul legaturilor dintre
noduri, numite canale de transmisie.
n practica, nodurile pot fi calculatoare sau echipamente terminale
(ecran de vizualizare + tastatura + imprimanta) si canalele de transmisie
sunt adesea linii telefonice pentru marile retele si cabluri coaxiale pentru
retelele locale.
Pentru schimbul de informatie, doua unitati de prelucrare trebuie sa
respecte aceleasi protocoale, care sunt reguli complexe de comunicare.
4.1 Transmisia informatiilor
Suporturi fizice ale unei cai de transmisie
Toate caile de transmisie se bazeaza pe propagarea undelor
electromagnetice:
a) cale metalica: este o linie electrica ce poate fi o linie telefonica sau
un cablu electric. Aceasta solutie prezinta unele inconveniente care
se refera la sensibilitatea la zgomote, scaderea semnalului transmis
la distanta etc;
b) fascicol hertzian: utilizeaza unde radioelectrice pentru transportul
informatiei;
c) fibre optice: transportul informatiei este realizat prin propagarea
undelor luminoase n fibre de sticla, prezenta sau absenta unui
semnal luminos permitnd codificarea unui bit de informatie.
Utilizarea acestor diverse suporturi de informatie poate fi schematizata
astfel: o legatura intercontinentala este realizata cu ajutorul unui satelit, o
legatura ntre calculatoarele unei tari se realizeaza prin linii telefonice, o
legatura ntre doua cladiri din acelasi oras se face prin fibre optice, legatura
ntre diverse echipamente din aceesi cladire utilizeaza cablu coaxial, iar
daca echipamentele sunt apropiate, se foloseste un simplu cablu electric.
Moduri de transmisie a informatiei
a) transmisie paralela: se transmit mai multi biti simultan, de
exemplu, bus-ul unui microcalculator transmite 8 sau 16 biti
simultan, o linie telefonica de lunga distanta poate asigura 12
comunicatii simultane etc.;
b) transmisie seriala: informatiile se transmit pe aceeasi linie si se
succed n timp.
Sincronizarea transmisiei informatiei
3
Orice transfer de informatie care utilizeaza telecomunicatiile este n
general realizat sub forma seriala. Una din principalele probleme ale
transmisiei seriale consta n sincronizarea emitatorului cu receptorul
informatiei. Transmisia paralela ridica probleme de sincronizare si mai mari
si nu se utilizeaza dect pe distante scurte. Majoritatea echipamentelor
informatice sunt dotate cu o iesire (poarta) RS232C, care este iesire
standard permitnd o transmisie seriala. Sincronizarea determina esantioane
ale semnalului transmis pentru a recunoaste bitii constituind informatia. O
secventa de biti corespunde unui sir de schimbari ale starii semnalului,
fiecare stare dureaza un interval foarte scurt de timp. Receptorul trebuie sa
fie sincronizat pentru ca nceputul si sfrsitul esantioanelor sa corespunda
schimbarilor de stare (sincronizare bit). Cnd receptorul primeste bitii de
informatie ele trebuie sa reconstituie semnalul, deci sa reconstituie
caracterele (sincronizare caracter). Se disting doua moduri de transmisie:
a) transmisia asincrona: caracterele sunt emise n mod neregulat, ca
de exemplu caracterele tastate. Sincronizarea ntre emitator si
receptor se realizeaza n timpul transmiterii fiecarui caracter.
Datorita transmisiei aleatoare a caracterelor, acestea sunt ncadrate
de biti suplimentari pentru asigurarea corectitudinii transmisiei
(start-bit, stop-bit, bit de paritate). Acest mod de transmisie este
relativ simplu si ieftin, dar redondanta datorata bitilor adaugati nu
permite realizarea unei mari capacitati de transmisie si utilizarea sa
este limitata la terminale lente ca tastatura sau imprimanta;
b) transmisia sincrona: bitii sunt emisi n mod regulat, fara separare
ntre caractere. Pentru sincronizare se utilizeaza un ceas-bit att de
catre emitator ct si de catre receptor. Sincronizarea caracterelor se
realizeaza prin recunoasterea secventelor particulare de biti. Acest
mod de transmisie permite debite mai mari de informatie
(superioare de 12000 biti/sec).
Moduri de exploatare a unei cai de transmisie
a) simplex: transmisia este unidirectionala, o extremitate emite iar
cealalta receptioneaza. Difuziunile radio si TV sunt exemplele cele
mai caracteristice;
b) semiduplex |half-duplex|(bidirectional alternat): permite o
transmisie n doua sensuri, dar alternativ, fiecare din cele doua
extremitati primeste si emite la rndul sau, dar niciodata simultan;
4
c) duplex |full-duplex|(bidirectional simultan): permite o transmisie
simultana n cele doua sensuri.
Banda de trecere
O cale de transmisie nu permite dect transportul semnalelor care
apartin unui anumit domeniu (banda) de frecvente. Banda de frecvente
corect transmisa este numita banda de trecere (notata W), si constituie
caracteristica esentiala care determina direct capacitatea de transmisie.
H. Nyquist a aratat ca rapiditatea de semnalizare (capacitatea de
transmisie) a unei cai este C = 2*W bound, unde W este marimea benzii de
trecere. Bound-ul este unitatea de rapiditate a semnalizarii si corespunde
unui anumit numar de semnale pe secunda, iar daca fiecare semnal permite
transmiterea a n biti, atunci C = 2*n*W biti/sec (bps).
n anul 1948, C. Shannon a aratat ca rapiditatea de semnalizare este
determinata nu numai de banda de trecere ci si de raportul semnal (S) /
bruiaj (B), si anume: C = W * log2 (1 + S / B) (Hz).
Transmisie analogica si digitala
a) transmisia analogica: consta n a utiliza un semnal simplu numit
unda purtatoare careia i se modifica unul sau mai multi parametri:
amplitudine, frecventa, faza;
b) modularea: consta n transformarea informatiilor digitale n
informatii analogice prin modelarea unei unde purtatoare
sinusoidala periodica ce se poate reprezenta s (t) =A*sin (w*t+j),
sau s(t)=A*sin (2*p*f*t+j) unde: A este amplitudinea semnalului,
w este pulsatia, f este frecventa, iar j este faza intiala. Exista trei
posibilitati de modulare a semnalului:
-modulare n amplitudine: s (t) = A (t) * sin (w * t + j);
-modulare n frecventa: s (t) = A * sin (2 * p * f (t) * t+j);
-modulare de faza: s (t) = A * sin (2 * p * f * t + j (t)).
Transmisia digitala si modularea
Transmisia digitala sau numerica consta n a transmite bitii sub forma de
impulsuri electrice patrate avnd o durata si o amplitudine patrate.
Codificarea informatiilor se realizeaza n mod asemanator cu cea
utilizata pentru memorare pe un suport magnetic. Transmisia digitala
5
necesita o banda de trecere larga. Noile tehnologii bazate pe fibre optice
permit transmisii digitale.
Pentru transmisia informatiilor analogice este necesara efectuarea unei
modulari care consta n esantionarea semnalului analogic la emisie,
transmisia esantioanelor sub forma digitala si reconstituirea semnalului la
receptie. Un rafinament al acestei tehnici, modularea delta, consta n
transmiterea diferentelor ntre doua esantioane n locul acestora.
Multiplexare
Multiplexarea nseamna partajarea unei cai de transmisie ntre mai multe
legaturi. O legatura este stabilirea unei comunicatii ntre doua echipamente
informatice. Sunt utilizate n principal doua tehnici:
a) multiplexare frecventiala |FDM: Frequency Division
Multiplexing|(spatiala) care consta n divizarea benzii de trecere a
caii de transmisie, semnalele sub-benzilor de trecere sunt adaugate
unele altora pentru a fi transmise pe calea de transmisie cu ajutorul
multiplexorului, iar la receptie un demultiplexor filtreaza
semnalul primit. Semnalele transmise astfel sunt analogice, pentru
semnalele numerice trebuie utilizat un modem pentru modularea
acestora;
b) multiplexarea temporala: |TDM: Time Division Multiplexing|
consta n partajarea n timp a caii de transmisie ntre mai multe
transmisii, tehnica ce se poate utiliza si pentru transmisii digitale.
Multiplexoarele inteligente |ITDM: Intelligent TDM|sau
statistice rezolva problema alocarii transelor de timp potrivit
necesitatilor fiecarei legaturi (mod asincron) (se mai numesc
concentratoare).
3.2 Retele de calculatoare
O retea de calculatoare |network|este o multime de calculatoare (si
echipamente terminale), geografic dipersate, conectate ntre ele prin una sau
mai multe legaturi pentru a permite schimburi de informatii.
Calculatoarele unei retele pot sa apartina unor categorii diverse, de la
supercalculatoare pna de la microcalculatoare care evident, pot fi de tipuri
diferite. Daca sistemele de calcul ale retelei sunt compatibile ntre ele
reteaua este omogena, altfel reteaua este neomogena.
6
O retea are drept scop de a oferi un anumit numar de servicii
utilizatorilor, bazate pe schimbul informatiilor (acces la distanta):
- acces la informatii (programe, date) stocate pe alte calculatoare ale
retelei;
- acces la alte calculatoare (de exemplu un supercalculator sau
calculator specializat);
- permite schimbul de informatii ntre utilizatori (mesagerie);
n functie de "diametrul" retelei, adica departarea maxima ntre noduri,
exista urmatoarea clasificare a retelelor:
a) retea extinsa |WAN: Wide Area Network|: retea ale carei noduri
sunt geografic foarte ndepartate unele de altele (mai multe sute, sau
chiar mii de kilometri). Acest tip de retea utilizeaza n general
retelele publice (de exemplu, linii telefonice);
b) retea metropolitana |MAN: Metropolitan Area Network|: retea ale
carei noduri se situeaza n aceeasi metropola. Fibrele optice sunt
adesea utilizate pentru realizarea unei asemenea retele;
c) retea locala |LAN: Local Area Network|: retea ale carei noduri se
gasesc n aceeasi cladire sau n cladiri vecine, deci departate pna la
cteva sute de metri.
Erorile de transmisie a informatiilor n retea constituie o problema
importanta. Exista metode de detectare a erorilor, iar estimarea posibilitatii
de aparitie a erorilor este exprimata astfel:
-1 bit eronat din 1012 n retelele locale;
-1 bit eronat din 105 n retelele extinse.
Retelele punct la punct si retelele de difuziune
Pentru a permite schimbul de informatii ntre doi utilizatori este necesar
sa se poata adresa membrii retelei. O tehnica consta n a adauga fiecarui
mesaj adresa destinatarului, ntr-o maniera analoaga corespondentei postale.
Deoarece destinatarul nu este n mod obligatoriu legat direct cu expeditorul,
mesajul va tranzita prin nodurile intermediare care decodifica adresa si care
transmit n continuare mesajul la un nod apropiat, ntr-o buna directie.
Aceasta este o retea punct la punct.
O alta tehnica de transmisie la distanta utilizeaza o retea de difuziune
|broadcasting|, care difuzeaza direct informatia catre toti membrii retelei.
Mesajul este ntotdeauna etichetat cu o adresa pe care numai destinatarul o
recunoaste. Acest tip de retea necesita n mod normal utilizarea unui satelit
pentru transmisia informatiilor.
7
Tehnici de comutatie a datelor
n general, drumul urmat de informatie de la expeditor la destinatar,
parcurge un anumit numar de noduri intermediare care trebuie sa asigure
respectarea corectitudinii datelor pe care le primesc. Exista mai multe
metode care permit efectuarea comutatiilor necesare fiecarui nod:
a) comutatia de circuite |circuit switching|: se stabileste o conexiune
fizica temporara ntre nodurile implicate n schimbul de informatie.
Transferul are loc din momentul stabilirii conexiunii care ramne
activa pe tot parcursul comunicatiei, chiar si n perioadele cnd nu
are loc nici-un schimb de informatie. Acest tip de comutatie este
rentabil pentru o linie care suporta putine schimburi de informatie,
exemplul cel mai sugestiv fiind cel al unei retele telefonice.
b) comutatia de mesaje |message switching|: cu aceasta tehnica se
trimite un mesaj cu adresa sa n retea. Cnd mesajul soseste la un
nod, acesta decodifica adresa si-l trimite nodului urmator, n directia
destinatarului, conform tabelei de rutare. Marimea mesajelor poate
fi variabila, ceea ce impune nodurilor sa dispuna de mijloace de
stocare a mesajelor. Acest tip de comutatie este mai suplu dect cel
precedent deoarece permite nregistrarea mesajului daca nodul
receptor nu este disponibil.
c) comutatia de pachete |packet switching|: este similara cu
comutatia de mesaje, dar limiteaza marimea informatiilor transmise.
Se procedeaza la divizarea mesajului de transmis n pachete de
marime limitata (de exemplu 1024 biti = 128 octeti) si se trimit
separat pachetele n retea. Datorita marimii reduse, pachetele sunt
mai putin sensibile la erori, mai usor de stocat (este suficienta
memoria centrala). Printr-o numerotare corespunzatoare a
pachetelor se poate reconstitui mesajul la destinatie.
Topologia retelelor de calculatoare
n figura urmatoare sunt prezentate diverse topologii de retea:
Reteaua de tip plasa este caracterizata prin faptul ca doua noduri
oarecare sunt legate ntre ele. Acest tip de retea asigura o mare suplete si
siguranta n utilizare, dar este dificil de realizat pentru un numar foarte
mare de noduri. n general plasa nu este perfecta (sunt anumite noduri
nelegate), situatie n care se vorbeste despre retea plasa partiala. Toate
celelalte tipuri de retele sunt particularizari ale retelei de tip plasa, obtinute
prin impunerea unor restrictii asupra legaturilor ntre noduri.
8
Retea de tip plasa Retea de tip stea Retea de tip arbore
Retea de tip inel Retea de tip bus
a) Reteaua de tip stea este o retea centralizata, un singur nod este
legat direct la toate celelalte, fara ca acestea sa aiba legaturi ntre
ele. Nodul central suporta orice sarcina a retelei.
b) Reteaua de tip arbore este o retea ierarhica repartizata pe mai
multe nivele, nodurile aceluiasi nivel nu sunt legate ntre ele dar
sunt legate la un nod de nivel superior (reteaua telefonica este un
exemplu caracteristic).
c) Reteaua de tip bucla sau inel este o retea n care fiecare nod este
legat la doua noduri pentru a forma un inel. Este o retea
descentralizata de tip punct la punct.
d) Reteaua de tip bus este o retea de difuzine, n care toate nodurile
sunt conectate pe acelasi suport.
Retelele extinse au n general o topologie obtinuta pornind de la o
combinatie de trei topologii: retea partiala de tip plasa, retea de tip stea si
retea de tip arbore.
Topologiile cele mai utilizate pentru retelele locale sunt cele de tip bus
si inel.
9
Suportul fizic de transmisie cel mai utilizat n retelele locale este cablul
coaxial.
Retelele locale functioneaza n general prin difuziune, adica o statie ce
doreste sa transmita un mesaj l expediaza n retea, statia vizata prin mesaj
recunoaste adresa sa si n consecinta ea trateaza acest mesaj, n timp ce alte
statii, nerecunoscnd mesajul, l ignora.
Protocoale de retea
Un protocol de retea este constituit din multimea regulilor care trebuie
sa fie respectate pentru a realiza un schimb de informatii ntre sistemele de
calcul din cadrul retelei.
O modalitate de simplificare a problemei comunicarii n retea este
aceea de divizare a acesteia prin definirea mai multor nivele de comunicare
si stabilind un protocol pentru fiecare nivel.
Problema standardizarii presupune definirea de norme pentru
simplificarea comunicatiilor n retelele eterogene.
n timp ce constructorii au tendinta de a defini propriile lor protocoale,
totusi, un anumit numar de institutii si organizatii internationale ncearca sa
defineasca standarde, si anume:
-departamentul apararii americane |DOD|a definit protocolul
TCP/IP pentru reteaua Arpanet;
-institutiile internationale:
- CCITT |Comit Consultatif International du Tlphone et du
Tlgraphe|a definit recomandari reunite sub denumirea de
seria V (pentru transmisia datelor prin telefon) si seria X
(pentru retele publice);
- ISO |International Standards Organization|cu modelul OSI
|Open Systems Interconnection|;
Modelul ISO - OSI
Modelul OSI |Open Systems Interconnection|, elaborat de organizatia
ISO |International Standards Organization|ntre anii 1975-1985, trebuie sa
permita interconectarea sistemelor de calcul de tipuri diferite.
Interesul acestui model este acela de a diviza multimea protocoalelor de
retea n sapte nivele, ntre care sunt definite doua tipuri de relatii:
-verticale, ntre nivelele aceluiasi sistem (se numesc interfete);
-orizontale, relative la dialogul la acelasi nivel ntre sisteme diferite
(protocoale care definesc reguli de schimb).
10
Fiecare nivel furnizeaza nivelului superior un anumit numar de
informatii cunoscute sub denumirea de primitive.
Vom prezenta n continuare o descriere succinta a celor sapte nivele ale
modelului ISO-OSI:
a) Nivelul 1 (fizic) este cel mai de jos nivel si descrie caracteristicile
electrice si echipamentul fizic de transmisie (cabluri, fascicole
hertziene etc.). El se ocupa de conexiunea fizica a statiei la retea,
permite transmisia de biti ntre doua sisteme, defineste daca
transmisia este sincrona sau asincrona, rezolva probleme de
modulare/demodulare ale informatiilor.
b) Nivelul al 2-lea (legatura de date, sau linie) |data link|are drept
scop transmisia datelor structurate n pachete de biti fara erori (n
caz de eroare se procedeaza la retransmisia acestora).
c) Nivelul al 3-lea (retea) serveste n principal asigurarii comutatiei si
rutarii pachetelor de date ntre nodurile retelei, de asemenea
efectueaza controlul fluxului informatiilor.
d) Nivelul al 4-lea (transport) permite stabilirea, ntretinerea si
ntreruperea conexiunilor de transport. Se efectueaza controlul
fluxului informatiilor si se asigura segmentarea si reasamblarea
mesajelor, precum si multiplexarea cailor de tramsmisie.
e) Nivelul al 5-lea (sesiune) permite stabilirea unei conexiuni logice
ntre doua aplicatii, asigura organizarea si sincronizarea dialogului,
modul de transmisie: simplex, semiduplex, duplex.
f) Nivelul al 6-lea (prezentare) se ocupa de aspectele prezentarii
(sintaxa) datelor, conversia codului, formatul datelor, optimizarea
transferului prin diverse metode de comprimare si asigurarea
securitatii datelor prin criptare.
g) Nivelul al 7-lea (aplicatie) furnizeaza servicii si interfete de
comunicatie ale utilizatorului, deci constituie multimea punctelor de
intrare n programele utilizatorilor.
Conexiuni ntre retele
Retele, sau anumite parti ale retelelor locale pot fi legate, utiliznd:
a) repetor |repeater|: ce permite conectarea a doua retele la nivelul
fizic, lucreaza deci la nivelul 1 OSI si are drept scop unic
transmiterea de biti de la o retea la alta;
11
b) pod |bridge|: lucreaza la nivelul al 2-lea OSI si asigura trasmiterea
fizica a informatiilor sub forma de pachete, garantnd absenta
erorilor;
c) rutor |router|: lucreaza la nivelul al 3-lea OSI si asigura rutarea
pachetelor ntre diferite retele;
d) pasarela |gateway|: lucreaza n general la nivelul al 7-lea OSI si
leaga doua retele oricare ar fi natura lor, ocupndu-se de toate
conversiile necesare.
Conexiuni inter-retele: internet si TCP/IP
Pentru a ncerca rezolvarea conexiunii ntre diferite retele a aparut
notiunea de internetwork sau general referita internet. Internet defineste o
multime de protocoale independente de retea. O versiune UNIX a acestor
protocoale a fost dezvoltata n ultima perioada si a avut ca efect conexiunea
unui mare numar de universitati, firme si persoane fizice.
Un anumit numar de aplicatii sunt bazate pe protocoale TCP/IP de nalt
nivel si pot fi considerate ca servicii universale:
-posta electronica;
-transfer de fisiere la distanta;
-emularea unui terminal la distanta;
-gestiunea automata a retelelor.
Adresarea statiilor ntr-o retea internet se realizeaza printr-o adresa pe
32 biti descompusa n doua parti (identificatorul retelei si identificatorul
local al statiei) si reprezentata n general prin patru numere de cte 8 biti.
Conceptul client - server
O utilizare importanta a retelelor este cooperarea ntre aplicatii.
Conceptul de baza utilizat pentru cooperare este acela de client - server,
care este folosit ca model de baza pentru aplicatiile distribuite.
Termenul server se aplica oricarui program care ofera un serviciu care
poate fi extins de-a lungul retelei. Un server primeste cereri, le trateaza si le
retrimite celui care le-a solicitat (client).
Termenul client se aplica oricarui program care trimite o cerere unui
server si asteapta rezultatele.
Evolutia retelelor de calculatoare
n situatia actuala, retelele de telecomunicatii existente permit
transportul unei mari varietati de informatii sub forme diverse, ca de
12
exemplu: cuvinte (telefon), mesaje (telex), imagini (telecopiator,
televiziune), ca si date informatice. Pentru a se putea transporta toate aceste
tipuri de informatii au fost realizate: retea telefonica, retea telex, diverse
retele specializate permitnd schimbul de informatii ntre sistemele de
calcul. Cea mai importanta este reteaua telefonica bazata pe transmisia
semnalelor analogice.
Retelele viitorului vor fi bazate pe transmisii numerice, vor utiliza
cabluri coaxiale, fibre optice si sateliti pentru a transmite date, imagini si
conversatii telefonice.
a) RNIS (retea numerica de servicii integrate) |IDSN|, este
implementata n cea mai mare parte a tarilor europene si SUA.
Legaturile internationale ridica nsa unele probleme datorita
particularitatilor de implementare a retelelor specifice fiecarei tari.
Aceasta retea ofera servicii deosebite:
-servicii suport de informatii (transmisie date + servicii
telefonice);
-servicii complementare (identificare apel, sub-adresare
terminale, portabilitate etc);
-teleservicii (transmisii de fisiere cu imagini fixe sau animate,
videofonia, videoconferinta etc);
b) Evolutia comutatiei prin pachete vizeaza urmatoarele aspecte
importante:
-cresterea performantelor prin sporirea debitului si simplificarea
protocoalelor de retea;
-posibilitatea transmisiei izocrone (vocea);
c) Releu de cadre |frame relay|: este o simplificare a transmisiei prin
pachete. n acest caz se utilizeaza acelasi protocol de rutare, dar se
suprima protocoalele de control a erorilor si a fluxului (nivelul
retea este vid). Aceasta abordare este de 4-10 ori mai rapida dect
comutatia prin pachete si se dovedeste bine adaptata pentru
interconexiunea retelelor locale.
d) Releu de celule |cell relay|are drept principiu descompunerea
informatiilor n mici pachete de lungime fixa si determinarea rutei
acestora. Comutatia prin circuite permite transportul informatiilor
izocrone (vocea), n timp ce comutatia prin pachete este mai
adaptata transmisiei informatiilor numerice. Releul de celule
realizeaza deci un compromis ntre cele doua moduri de comutatie.
13
e) RNIS cu banda larga: permite transportul tuturor tipurilor de
informatii (de exemplu, imaginile de televiziune). Spre deosebire
de RNIS prima versiune, care nu solicita modificarea cablajului
abonatilor, RNIS cu banda larga cere modificari multiple n
reteaua de transport si va utiliza n acest sens tehnica satelitilor si
fibrele optice, mod de transfer asincron potrivit tehnicii ATM
|Asynchronous Transfer Mode|.
f) Retele locale fara fir |CLAN: Cordless LAN|: nu necesita
cablare, se utilizeaza doar n cazuri particulare datorita tehnologiei
foarte costisitoare. Transmisia se realizeaza prin unde radio sau
prin infrarosu.
g) Retele de foarte nalt debit: dezvolta viteze de transfer de ordinul
gigabitilor pe secunda prin utilizarea fibrelor optice. nca nu s -au
definit protocoale standard ci doar protocoale particulare care
realizeaza conexiuni punct la punct si care necesita echipamente
specifice foarte perfectionate.
1
5 ELABORAREA PROGRAMELOR
Tehnologia produselor software |software engineering|caracterizeaza
multimea tuturor metodelor si instrumentelor care permit elaborarea
produselor software.
Dezvoltarea unei mari aplicatii este o problema complexa care nu consta
numai n a programa, n sensul strict al cuvntului, aceasta presupune
parcurgerea unui anumit numar de etape, ceea ce constituie ciclul de viata
al unui produs software.
n plus, un mare proiect este dezvoltat de catre echipe de programatori,
ceea ce obliga la descompunerea problemei n subprobleme pentru fi
repartizate ntre echipe, asigurarea comunicatiei corespunzatoare ntre
echipe, controlul evolutiei proiectului si a calitatii produsului software.
Ciclul de viata se compune din fazele urmatoare:
a) Analiza si formularea clara a problemei: consta n a stabili
functionalitatile, restrictiile si obiectivele proiectului n acord cu
clientul/utilizatorul. Principala problema a acestei faze rezida n
comunicarea dintre conceptor si client.
b) Specificarea: consta n determinarea functionalitatilor detaliate ale
produsului software ce urmeaza a fi realizat, fara o preocupare
deosebita pentru modalitatea de implementare efectiva.
c) Conceptia: este faza de definire a structurii modulare a produsului
software, alegerea algoritmilor corespunzatori precum si a
limbajelor de programare adecvate.
d) Programarea consta n implementarea efectiva a diferitelor module
care compun produsul software.
e) Testarea si validarea: consta n depistarea erorilor de conceptie si
de programare nct sa se poata oferi asigurarea ca produsul
software raspunde bine exigentelor formulate initial.
f) ntretinerea: este faza cea mai ndelungata a ciclului de viata a
unui produs software, care dureaza toata perioada de exploatare a
produsului. n timpul acestei faze se ncearca sa se raspunda
cerintelor utilizatorilor, fie corectnd erorile aparute, fie efectund
modificari, fie adaugnd noi functionalitati.
g) Documentarea: consta n regruparea tuturor informatiilor produse
n timpul ciclului de viata. Documentarea nu este deci o faza
proprie a ciclului de viata, dar ea trebuie sa se efectueze n timpul
fiecarei faze n paralel cu derularea acesteia. Documentarea trebuie
2
sa permita ntelegerea si modificarea ulterioara a produsului
software.
Trecerea de la o faza a ciclului de viata la urmatoarea este rareori
definitiva, se ntmpla frecvent sa se revina la o faza anterioara pentru a se
aduce un anumit numar de modificari. ntr-adevar, este foarte dificil sa se
prevada n avans toate aspectele si n plus, n timpul fazei de ntretinere,
modificarile importante cum ar fi crearea unei noi versiuni implica
dezvoltarea completa pornind de la faza de specificare. Din acest aspect
decurge notiunea de ciclu.
Etapele ciclului de viata ale unui produs software sunt prezentate
schematic n figura urmatoare:
Analiza problemei
Specificare
Conceptie
Programare
Testare si validare
ntretinere
3
Conceptul de software este utilizat pentru a caracteriza toate programele
care sunt executate de catre sistemul de calcul. Acest concept se opune
aceluia de hardware care desemneaza aspectul material, fizic al sistemului
de calcul.
Executia unui program care este elaborat n faza de programare a
ciclului de viata a unui produs software consta n a furniza sistemului de
calcul o secventa de instructiuni direct interpretabile.
n mod obigatoriu, primele programe erau scrise n binar (limbajul
masina), activitate dificila si expusa riscurilor de eroare, datorita
secventelor de biti a caror semnificatie era nscrisa ntr-o tabela descriind
toate operatiile posibile si semnificatia lor binara.
n continuare, pentru usurarea activitatii de programare s-au elaborat
limbajele de asamblare.
Scrierea de programe n limbaj de asamblare ramne o sarcina
complicata si de asemenea programele depind de sistemul de calcul pe care
au fost concepute. Limbaje evoluate, ca de exemplu, Fortran sau Pascal au
adus o solutie (partiala) acestor probleme.
Ca si n cazul limbajelor de asamblare, programele scrise n limbajele de
programare evoluate trebuie sa fie convertite n limbaj masina pentru a fi
executate, iar conversia se poate efectua n doua moduri diferite: traducere
sau interpretare.
Traducerea consta n a genera un program echivalent programului
sursa, dar codificat n limbajul binar al calculatorului. Traducerea este un
procedeu prin care, pornind de programul sursa, se genereaza un program
obiect, care se poate ncarca ulterior n memorie pentru executie.
Interpretarea efectueaza conversia si executia unui program ntr-o
singura etapa: instructiunile sunt citite unele dupa altele si sunt convertite
imediat n limbaj masina prin intermediul interpretorului care realizeaza
executia lor pe masura aparitiei. Totul se petrece ca si cnd limbajul sursa
ar fi acceptat de catre masina.
Interpretarea este mai bine adaptata dezvoltarii si punerii la punct a
programelor deoarece executia ncepe imediat, iar traducerea este indicata
pentru exploatarea programelor, cnd nu mai este reluata traducerea.
Limbajele evoluate dispun n general de un traducator ( compilator), dar
pot dispune si de un intrerpretor (exemplul limbajului Pascal).
4
4.1 Limbajul de asamblare
Limbajul de asamblare este utilizat astazi de catre specialistii n
informatica, n general pentru rezolvarea unor probleme de optimizare,
atunci cnd se impune exploatarea arhitecturii calculatorului si functionarea
sa la nivelul operatiilor elementare.
Limbajul de asamblare este o varianta simbolica a limbajului masina.
Activitatea de programare este facilitata de utilizarea codurilor de operatii
mnemonice, etichete (adrese simbolice), literale (constante numerice) si
directive (rezervare de spatiu de memorie, declararea unei macroinstructiuni
etc.).
Spre deosebire de limbajele evoluate, limbajul de asamblare nu ascunde
nimic programatorului, permitnd accesarea tuturor resurselor sistemului si
exploatarea facilitatilor de prelucrare ale acestuia.
O instructiune n limbaj de asamblare este divizata n mai multe cmpuri
care sunt separate n general prin spatii. Numarul operanzilor din al zona de
adresa variaza de la un sistem de calcul la altul ntre 0 si 3. Dupa acest cmp
este de dorit adaugarea comentariilor pentru documentare. Iata structura
tipica a unei instructiuni n limbaj de asamblare:
eticheta cod operatie (mnemonic) operanzi
Codurile operatiilor mnemonice
Codurile operatiilor sunt simbolizate ntr-o tabla a codurilor mnemonice
care urmeaza a fi consultata la scrierea de programe n limbajul de
asamblare, mai ales daca setul de instructiuni este complex (arhitecturi
CISC).
Operanzi si etichete
Spre deosebire de limbajul masina, limbajul de asamblare permite
atribuirea de nume pentru variabile si etichete (adrese de instructiuni), ceea
ce usureaza programarea.
De asemenea, operanzii pot sa posede un nume care permite referirea
lor, iar fiecare registru are un nume predefinit, recunoscut de catre
programul de traducere.
Exemple de operanzi si etichete:
Tab DS 1 Definirea unei variabile Tab de un cuvnt;
5
Zece DC 10 Definirea constantei Zece care are val. 10;
Ciclu: MOVE Zece, A1 Transferul valorii 10 n registrul A1;
MOVE A2,Tab Transfer valoare registru A2 n variabila Tab;
JUMP Ciclu Salt neconditionat la adresa Ciclu.
Literale
Limbajul de asamblare permite definirea valorilor ntregi sau reale n
diverse baze de numeratie (2, 8, 10 sau 16) ca siruri de caractere, care sunt
traduse de catre asamblor. Specificarea bazei de numeratie se face prin
plasarea unui caracter particular la nceputul fiecarei date. Absenta
caracterului particular specifica o data zecimala. }irurile de caractere sunt
de regula delimitate de caracterul " ' ".
Directive
Directivele sau pseudo-instructiunile sunt instructiuni neexecutabile
(referite prin cod mnemonic) care nu au cod masina echivalent. Acestea
sunt indicatii pentru asamblor (programul de traducere) n vederea
traducerii programului.
Exemple de directive:
TTL 'Titlul programului'
Vec DS 50 Definire variabila Vec si rezervare 50
cuvinte;
Zero DC 0 Definire constanta Zero cu valoare 0;
PLEN 50 50 linii pe pagina (PLEN=Page
Length);
END Sfrsit de program.
Expresii aritmetice
Spre deosebire de limbajele evoluate, expresiile aritmetice utilizate
pentru a calcula valoarea unei variabile, ca de exemplu n atribuirea
urmatoare: A = B + C / D, nu sunt admise n limbajul de asamblare si de
aceea trebuie programate prin mai multe instructiuni.
Macroinstructiuni si subprograme
Anumite asambloare permit structurarea programelor, ele ofera n
general posibilitatea de a grupa o secventa de instructiuni sub forma unui
6
subprogram sau a unei macroinstructiuni, n scopul modularizarii
programului si a evitarii scrierii repetate a unor grupuri de instructiuni.
Macroinstructiuni
O macroinstructiune se construieste prin izolarea unei secvente de
instructiuni careia i se atribuie un nume simbolic prin care poate fi referita.
Ori de cte ori n cadrul programului se face referire la acest nume,
asamblorul, n etapa de traducere, nlocuieste referinta cu secventa de
instructiuni corespunzatoare.
Utilizarea macroinstructiunilor prezinta mai multe avantaje, si anume:
-extinderea setului de instructiuni, deoarece fiecare
macroinstructiune se utilizeaza ca o alta instructiune;
-reducerea si structurarea programelor, care conduce la ntelegerea si
modificarea usoara a acestora;
-economisirea timpului de programare.
Instructiunile care servesc pentru definirea si delimitatea
macroinstructiunilor (de exemplu, MACRO si ENDM) sunt cazuri tipice de
directive; n timpul asamblarii, fiecare apel al unei macroinstructiuni este
nlocuit prin corpul macroinstructiunii si cele doua pseudo-instructiuni sunt
eliminate.
Exemplu: Calculul cubului unui numar:
MACRO CUB (val, valcub)
MOVE val, D1
MOVE val, D2
MUL D1, D2 (D2:= D1 D2)
MUL D1, D2
MOVE D2, valcub
ENDM
Subprograme
Subprogramele sunt definite ca si macroinstructiunile, avnd de
asemenea scopul de a evita repetarea scrierii unei secvente de instructiuni ce
va fi utilizata de mai multe ori.
O diferenta esentiala fata de macroinstructiune rezida n faptul ca
instructiunile care compun subprogramul constituie o entitate bine separata
de programul principal, iar aceasta separare se pastreaza si dupa traducere,
nct subprogramul se gaseste o singura data n memorie si doar la executia
programului se satisfac referintele la un subprogram al sau.
7
Aceasta maniera de abordare a programarii conduce la avantaje
suplimentare fata de utilizarea macroinstructiunilor, deoarece permite
minimizarea taliei codului executabil, ceea ce nu este cazul
macroinstructiunilor.
Figura urmatoare ilustreaza diferenta dintre o macroinstructiune si un
subprogram.
macroinstructiune program subprogram subprogram
salvare
stare
program
program
restaurare
stare
revenire
program
apel macroinstructiune
instructiune normala
apel subprogram
MACROINSTRUC|IUNE SUBPROGRAM
Problemele care se manifesta n situatia utilizarii subprogramelor se
refera n special la asigurarea salvarii adresei de revenire n timpul
8
executiei unui subprogram. Adresa de revenire este adresa instructiunii care
urmeaza dupa instructiunea de apel a subprogramului.
Deci, principala diferenta ntre o macroinstructiune si un subprogram
este aceea ca apelurile la o macroinstructiune sunt nlocuite prin corpul
macroinstructiunii n timpul traducerii, pe cnd apelurile la un subprogram
sunt tratate n timpul executiei.
Transmiterea parametrilor
Un program poate sa schimbe date cu macroinstructiunile si
subprogramele sale prin intermediul parametrilor. Un parametru este o
variabila al carei nume este cunoscut, dar al carei continut nu este precizat
dect n momentul executiei. O macroinstructiune sau un subprogram se
scrie utiliznd parametrii formali care vor fi nlocuiti prin parametrii
efectivi corespunzatori datelor reale care sunt tratate.
Substitutia parametrilor formali cu cei efectivi se realizeaza la traducere,
pentru macroinstructiuni, si la executie, pentru subprograme.
Pentru subprograme exista mai multe tehnici de transmitere a
parametrilor:
a) Transmiterea prin valoare consta n recopierea valorii de transmis
ntr-o zona cunoscuta de subprogram, care poate fi o zona de
memorie sau un registru. n acest fel, subprogramele actioneaza
asupra unei copii a parametrilor, orice modificare a parametrului nu
este posibila dect n interiorul subprogramului, iar la revenire n
programul apelant parametrul regaseste valoarea sa initiala, ceea ce
permite o anumita protectie a parametrilor.
b) Transmiterea prin referinta consta n a transmite catre
subprogram adresele parametrilor. Subprogramul lucreaza deci
efectiv asupra datelor programului apelant, deci orice modificare a
valorii parametrului n interiorul subprogramului este reflectata la
revenire n programul apelant.
Salvarea starii masinii
Salvarea starii masinii consta n a salva starea registrelor CPU (n alte
registre CPU prevazute n acest scop sau n memoria centrala) pentru a
permite executarea unui alt program si la sfrsitul executiei acestuia,
reluarea executiei primului.
Spre deosebire de macroinstructiuni, unde expandarea (nlocuirea
apelului prin corpul macroinstructiunii) se realizeaza la traducere, n cazul
subprogramelor este necesara salvarea starii masinii la apelul acestora.
9
ntr-adevar, apelul unui subprogram consta n trecerea controlului CPUului
acestui subprogram, care se comporta ca un program independent si
care trebuie sa fie capabil sa redea controlul programului apelant la sfrsitul
executiei sale. Primele instructiuni ale subprogramului servesc la salvarea
starii diverselor registre, iar ultimele instructiuni restaureaza aceste valori
salvate, revenind la contextul anterior apelului.
Recursivitate
Un subprogram este recursiv daca poate sa se autoapeleze (direct sau
indirect).
Problema unui subprogram recursiv este ca n timpul fiecarui apel,
trebuie salvata starea masinii. Datorita faptului ca nu se poate utiliza aceeasi
zona de memorie pentru salvare, se adopta o solutie bazata pe utilizarea
unei stive care lucreaza dupa principiul LIFO |Last In, First Out|, n care se
salveaza starea masinii pe masura activarii apelurilor recursive (este
necesara o conditie de sfrsit pentru apelurile recursive).
4.2 Limbaje de programare
Un limbaj este o modalitate de exprimare si comunicare a gndurilor.
Exista o multitudine de limbaje: limbaje orale, scrise, limbajul semnelor (de
exemplu, limbajul surdo-mutilor) si multe alte limbaje care utilizeaza
diverse moduri de transmisie (de exemplu, limbajul albinelor).
Un limbaj informatic cuprinde:
-un alfabet: multimea simbolurilor elementare disponibile;
-nume sau identificatori: grupe de simboluri ale alfabetului (cu
anumite restrictii: numar de caractere, tipul primului caracter etc.);
-fraze sau instructiuni: secvente de nume si simboluri de punctuatie
care respecta aspectele sintactice si semantice ale limbajului.
Limbajele informatice, spre deosebire de limbajele naturale, sunt
structurate, riguros neambigue si pot fi definite n mod formal.
Limbajele de asamblare au fost primele limbaje informatice si ele
depind de arhitectura sistemelor de calcul.
Limbajele evoluate |HLL: High Level Languages|au aparut mai trziu
si permit comunicarea cu sistemul de calcul fara a tine seama de arhitectura
sa.
n informatica se disting mai multe categorii de limbaje: limbajele de
programare si limbajele de comanda sunt cele mai utilizate, dar exista de
10
asemenea si limbaje de analiza si limbaje de specificare, care ajuta n
timpul primelor faze de dezvoltare a produselor software.
Scrierea unui program se realizeaza prin utilizarea simbolurilor
limbajului de programare pentru constituirea frazelor sau instructiunilor
care trebuie sa respecte sintaxa limbajului.
Cele doua modalitati de reprezentare a sintaxei unui limbaj sunt:
-notatia BNF |Backus Naur Form|;
-diagramele sintactice.
Prezentam n continuare un exemplu de sintaxa a unui limbaj foarte
simplu care permite definirea identificatorilor (ncep ntotdeauna cu o
litera), ntregii fara semn, expresiile aritmetice simple si instructiunea de
atribuire.
Pentru notatia BNF, semnul " |" indica o alternativa, semnele "< " si "
> " delimiteaza obiectele limbajului si semnul " := " indica atribuirea.
< litera > ::= a |b |c |d . . .y |z
< cifra > ::= 0 |1 |2 |3 |4 |5 |6 |7 |8 |9
< identificator > ::= < litera > |<identificator > < litera > |
|< identificator > < cifra >
< ntreg > ::= < cifra > |< ntreg > < cifra >
< termen > ::= < ntreg > |< identificator >
< operator > ::= + |- | |/
<expresie > ::= < termen > |
|<termen> < operator><expresie>
< atribuire > ::= < identificator > := < expresie >
Utiliznd diagramele sintactice, prezentam acelasi exemplu de definire a
sintaxei limbajului:
litera
identificator litera
cifra
ntreg cifra
11
ntreg
termen
identificator
+
-
operator

/
expresie termen
operator
atribuire identificator := expresie
Concepte de baza ale limbajelor evoluate
Limbajele evoluate permit usurarea activitatii de programare printr -o
apropiere de limbajul natural, dar cu respectarea exigentelor de rigoare si
neambiguitate.
Primele concepte de baza ale limbajelor de programare evoluate se
refereau la independenta fata de sistemul de calcul, ceea ce a permis
elaborarea unor instructiuni posednd un nivel semantic superior limbajului
de asamblare.
12
Elaborarea de limbaje de programare evoluate a vizat nca de la nceput
trei directii importante, si s-a concretizat prin trei categorii de limbaje:
a) limbaje bazate pe conceptele de algoritm si prelucrarea datelor cu
caracter stiintific (Fortran, Algol);
b) limbaje bazate pe prelucrarea datelor (Cobol);
c) limbaje bazate pe prelucrarea listelor (Lisp).
Limbajele din primele doua categorii sunt limbaje procedurale care
furnizeaza o descriere detaliata a algoritmilor de rezolvare a problemelor,
iar limbajele din a treia categorie sunt limbaje functionale, care subliniaza
aspectul functional al rezolvarii unei probleme, fara a intra n detalii.
Orientarea algoritmica a permis n continuare dezvoltarea limbajelor
Algol 60, Algol 68, Fortran II, Fortran IV, Fortran 66, Fortran 77,
Fortran 90, Pascal, C, Modula-2, Ada si C++, care furnizeaza
metodologii bazate pe conceptele de programare structurata,
abstractizare, modularitate etc.
A doua orientare, bazata pe prelucrarea datelor a ramas fidela limbajului
Cobol, dar a evoluat spre sisteme de gestiune de baze de date care permit
rezolvarea problemelor specifice bazelor de date.
Limbajul Prolog, instrument de baza n domeniul inteligentei
artificiale, a rezultat din abordarea functionala si aduce nou, n afara de
prelucrarea listelor, un mecanism de inferenta foarte util pentru realizarea
sistemelor expert.
Asistam astazi la o oarecare convergenta ntre limbajele orientate
obiect si bazele de cunostinte, ceea ce permite gruparea si unificarea
conceptelor de baza ale diverselor orientari.
Vom prezenta n continuare o scurta descriere pentru cteva limbaje de
programare dintre cele mai utilizate:
-Fortran |Formula Translator|este primul limbaj algoritmic, utilizat
n principal pentru rezolvarea problemelor cu caracter stiintific. El
produce cod eficace, utilizeaza o mare cantitate de biblioteci
matematice si a introdus concepte importante, ca de exemplu,
structurarea expresiilor aritmetice, subprograme, compilarea
independenta a subprogramelor. Limbajul a evoluat mereu,
versiunea Fortran 90 permite programarea paralela si concurenta
specifica supercalculatoarelor.
-Cobol |Common Business Oriented Language|este un limbaj
destul de utilizat n lume, si este adaptat aplicatiilor de gestiune care
permit un acces usor la fisiere si baze de date. Inconvenientele
13
utilizarii sale provin din aspectul "stufos" al scrierii si dificultatea
de structurare a programelor.
-Algol |Algorithmic Oriented Language|este un limbaj care a avut o
influenta primordiala asupra limbajelor actuale. Definit pentru
aplicatii stiintifice, limbajul nu a reusit sa se impuna din cauza
complexitatii sale, lipsei de soliditate a intrarilor/iesirilor si lipsa
eficacitatii. Totusi, Algol a introdus conceptul de structurare, cu
structuri de blocuri, structuri de control, proceduri, recursivitate.
Este primul limbaj definit n notatia BNF si a evoluat n Algol 60,
Algol 68, Algol W dar nu a reusit sa paraseasca mediul academic.
Lisp |List Processing|a fost conceput pentru manipularea
expresiilor si functiilor simbolice. Caracteristicile sale sunt:
capacitatea de tratare a listelor, un numar mic de operatori de baza,
un numar mare de paranteze si recursivitatea care joaca un rol de
seama n parcurgerea listelor. Limbajul este utilizat curent n
inteligenta artificiala. Datorita lipsei de eficacitate pe sisteme de
calcul traditionale, anumiti constructori au dezvoltat masini Lisp,
care accepta acest limbaj ca limbaj masina, avnd o arhitectura
particulara, bazata pe notiunea de stiva.
Basic |Beginner's All-purpose Symbolic Instruction Code|este un
limbaj foarte rudimentar, care a fost dezvoltat doar n scop didactic.
El a devenit un limbaj foarte raspndit datorita dezvoltarii
microcalculatoarelor care, la nceput nu aveau capacitatea de a
utiliza alte limbaje.
PL/1 |Programming Language number 1|este o realizare
ambitioasa, un limbaj aproape universal, menit sa nlocuiasca
limbajele Fortran, Algol si Cobol utilizate n acea epoca. Din
cauza complexitatii sale, lipsa de omogenitate si de rigoare limbajul
nu a cunoscut o mare raspndire, limitndu-se la calculatoarele din
familia IBM.
Pascal, care poarta numele matematicianului francez creator al
uneia dintre primele masini aritmetice de calcul din secolul XVII, a
fost dezvoltat de catre elvetianul Niklaus Wirth. Acest limbaj
provenit din Algol caruia i preia conceptele, este bazat pe o mare
simplitate si este destinat nainte de toate nvatarii programarii.
Modula-2 este nca un limbaj dezvoltat de Wirth. Limbajul este un
descendent al limbajului Pascal, caruia i adauga notiunea de
modularitate care permite compilarea independenta a modulelor.
14
Smalltalk este un limbaj care caracterizeaza o noua tendinta de
programare bazata pe conceptul de obiect. El permite o interactiune
grafica cu sistemul, bazata pe utilizarea ferestrelor si a meniurilor,
ceea ce constituie o inovatie n domeniul programarii.
Prolog |Programmation Logique|(elaborat n 1972 de catre
Colmerauer) este un limbaj care preia conceptele limbajului Lisp,
adaugnd un mecanism de inferenta utilizat la realizarea sistemelor
expert. Japonezii si-au pus mari sperante n acest limbaj pentru
proiectul de sisteme de calcul de generatia a cincea.
C, un succesor al limbajelor BCPL si B, este un limbaj orientat spre
programare de sistem. Succesul limbajului se datoreaza utilizarii
sale pentru dezvoltarea sistemului de operare UNIX. C este un
limbaj relativ simplu la nivel de concepte, codul generat de
compilator este eficace, dar sintaxa permite scrierea ntr-o linie a
instructiunilor foarte complexe, care devin aproape ilizibile.
Ada, al carui nume aduce omagiu Adei Byron (sec. XIX),
considerata ca prima informaticiana, este un limbaj conceput pentru
departamentul apararii al SUA. El preia conceptele limbajelor
Pascal si Modula-2, adaugnd concepte de timp real, paralelism,
genericitate si gestiunea exceptiilor.
C++ este un succesor al limbajului C, dezvoltat de catre Bjarne
Stroustrup la nceputul anilor '80. Acest limbaj poate fi vazut ca o
evolutie naturala a limbajului C, reia conceptele acestui limbaj, la
care se adauga un anumit numar de concepte legate de programarea
orientata obiect, ca de exemplu, notiunea de clasa de obiecte,
mostenire ntre clase etc.
Orientarea obiect
Evolutia programarii clasice se poate rezuma n felul urmator:
a) Programarea procedurala |procedural programming|: accentul
este pus pe algoritmi, codul este repartizat n proceduri, iar
structurile de date nu sunt luate n considerare. Este cazul limbajelor
Fortran sau C.
b) ncapsularea si abstractizarea datelor |data hidding and
abstraction|: apare notiunea de modul, care permite descompunerea
codului n diferite module. Datele sunt nchise n interiorul
modulelor ceea ce constituie tipurile abstracte de date |ADT:
15
Abstract Data Type|. Practic, un ADT poate fi vazut ca o "cutie
neagra", iar seviciile (metode) sunt oferite prin intermediul unei
interfete. Este cazul limbajelor Modula-2 si Ada.
c) Programarea orientata obiect |object oriented programming|: reia
conceptele de tipuri abstracte de date dar se insista asupra notiunii
de reutilizare a obiectelor sistemului. n acest sens, se determina
principalele modele de date necesare, care se vor numi clase de
obiecte si n continuare se stabilesc metodele care vor manipula
aceste modele. Un program se compune deci dintr -un ansamblu de
obiecte care interactioneaza ntre ele trimitndu-si mesaje care
activeaza metodele specifice fiecarei clase de obiecte. Este cazul
limbajelor Smalltalk, Eiffel, C++, Objective-C.
Tipuri abstracte de date
Un tip abstract de date permite descrierea unei clase de structuri de date
prin lista functiunilor (metode) disponibile asupra structurilor de date si nu
prin implementarea lor.
Clase si obiecte
O clasa de obiecte corespunde implementarii unui tip abstract de date.
Definitia unei clase descrie comportamentul tipului sau abstract prin
specificarea interfetei tuturor operatiilor (metode) care pot fi aplicate asupra
tipului abstract.
Definitia unei clase comporta de asemenea detalii cu privire la
implementarea unor astfel de structuri de date sau codul sursa care
implementeaza metodele.
Un obiect |object|este o variabila a carei tip este o clasa. El reprezinta o
instanta (realizare) a unei clase. Actiunile pot fi aplicate asupra acestui
obiect invocnd metodele definite n clasa, care se realizeaza printr -un
procedeu numit trimitere de mesaje obiectelor clasei.
Clasele sunt entitati definite n codul sursa al unui program, ele descriu
de o maniera statica o multime de obiecte (pot fi considerate si ca tipuri de
date), n timp ce obiectele sunt elementele dinamice, ele nu exista dect la
executie si corespund instantelor clasei.
16
Mesaje
Obiectele pot comunica ntre ele trimitndu-si mesaje prin care se
solicita efectuarea unei anumite operatii asupra acestor obiecte. Multimea
tipurilor de mesaje proprii unui obiect corespunde interfetei sale.
Polimorfism
Polimorfismul permite efectuarea unei actiuni prin trimiterea unui mesaj
la un obiect pentru care sunt posibile mai multe instante de executie.
Aceasta capacitate este foarte importanta atunci cnd acelasi mesaj poate fi
ndeplinit n moduri diferite pentru tipuri diferite de obiecte.
Limbajele orientate obiect permit trimiterea mesajelor identice spre
obiecte care apartin unor clase diferite (dar derivate din clasa de baza).
Polimorfismul consta n esenta n posibilitatea asocierii mai multor
implementari ale aceluiasi mesaj, iar sistemul de calcul trebuie sa fie n
masura sa stabileasca implementarea corespunzatoare mesajului transmis.
Acesta decizie (constnd n legarea mesajului de implementarea
corespunzatoare) se poate lua fie la compilare |early sau static bilding|, fie
la executie |late sau dynamic bilding|.
Mostenirea si ierarhizarea claselor
Prin mecanismul mostenirii |inheritance|, programarea orientata obiect
permite definirea subclaselor. O subclasa, numita si clasa derivata permite
caracterizarea comportamentului unei multimi de obiecte care mostenesc
caracteristicile clasei lor "parinte", dar care poate de asemenea sa posede
caracteristici particulare proprii, pe care "parintele" nu le are.
Utilizarea subclaselor permite diminuarea costului si complexitatii
programelor, deoarece subclasele faciliteaza reutilizarea claselor existente,
permitnd n acelasi timp modificarea lor.
Genericitate
Genericitatea se exprima prin capacitatea de a defini clase
parametrizabile. De exemplu, presupunem ca este necesara o stiva de
numere ntregi si o stiva de numere reale. n locul definirii celor doua tipuri
de stiva se va proceda la definirea unei clase parametrizata numita stiva, din
care se vor genera cele doua clase dorite.
Genericitatea si mostenirea corespund unor necesitati diferite si
genereaza structuri diferite: mostenirea favorizeaza rafinamente succesive
ale unei aceeasi clase rezultnd astfel o structura pe verticala, n timp ce
17
genericitatea permite definirea unei clase de baza parametrizata care se
poate instantia de mai multe ori cu tipuri diferite, rezultnd astfel o structura
pe orizontala. Figura urmatoare evidentiaza aceasta situatie.
Mostenire Genericitate
structura verticala structura orizontala
Inteligenta artificiala si sistemele
expert
Inteligenta artificiala este domeniul informaticii care propune
simularea pe sistemele de calcul a comportamentului inteligent al omului.
Sunt implicate domeniile perceperii, ntelegerii, luarii deciziilor, nvatarii.
Aceasta orientare a condus la unele rezultate notabile, n special n unele
domenii: teoria jocurilor, demonstrarea teoremelor, recunoasterea formelor,
recunoasterea parolelor, ntelegerea limbajelor naturale, rezolvarea
problemelor care necesita expertiza legata de un domeniu specific (de
exemplu, diagnosticul medical), matematici simbolice etc.
Inteligenta artificiala trebuie sa permita rezolvarea problemelor pentru
care abordarea algoritmica este ineficienta sau chiar imposibil de aplicat.
Un program al inteligentei artificiale se caracterizeaza prin utilizarea
simbolurilor n locul informatiilor alfanumerice.
18
Sisteme expert
Sistemele expert constituie cu siguranta domeniul inteligentei artificiale
care a cunoscut cea mai mare dezvoltare. Un sistem expert este un program
care utilizeaza intensiv cunostinta n scopul rezolvarii problemelor care
necesita n mod normal expertiza umana.
ntr-un sistem expert exista o separatie neta ntre programe si cunostinte.
Arhitectura de baza a unui sistem expert cuprinde trei parti:
a) Baza de fapte este un fel de baza de date care regrupeaza faptele si
asertiunile viznd problema tratata;
b) Baza de reguli contine cunostintele care permit manipularea
faptelor din baza de fapte. Cunostintele se exprima sub forma de
reguli de productie. O regula comporta o parte stnga, exprimnd
o conditie (daca) si o parte dreapta continnd concluzii (atunci);
c) Motorul de inferenta exploateaza baza de cunostinte (baza de
fapte + baza de reguli) asociind faptele si regulile pentru a formula
un rationament asupra problemei puse. Pentru aceasta, pornind de la
baza de fapte, el determina multimea regulilor a caror parte stnga
este verificata, faptele continute n partea dreapta adagndu-se la
baza de fapte. n continuare, motorul de inferenta aplica aceste
reguli (nlantuire nainte) pentru a ajunge la o concluzie, procesul
oprindu-se cnd nu se mai pot genera fapte noi. Se poate de
asemenea porni de la concluzie, inferentele propagndu-se invers
(nlantuire napoi). Ele determina noi subscopuri mai simplu de
verificat pna la gasirea partilor stngi ale regulilor corespunzatoare
faptelor din baza de fapte. Un anumit numar de limbaje (Lisp si
Prolog) permit dezvoltarea cu usurinta a sistemelor expert simple.
4.3 Etapele dezvoltarii unui program
Dezvoltarea unui program, de la analiza problemei pna la punerea sa la
punct, necesita numeroase instrumente software constituite ntr-un mediu
de programare, care utilizeaza serviciile sistemului de operare, n special
sistemul de gestiune al fisierelor.
Elementele clasice ale unui mediu de programare sunt urmatoarele:
editorul de texte, traducatorul (compilator sau asamblor), editorul de
legaturi, programul ncarcator si programul corector.
Figura urmatoare prezinta grafic un mediu de programare minim:
19
idee
Editor de texte
program sursa
Traducator asamblor
compilator
program obiect
subprograme subprograme
de biblioteca traduse separat
Editor de legaturi
program obiect
ncarcator
program executabil
executie
Corector
20
Editorul de texte
Un editor de texte |text editor|este un program interactiv care permite
preluarea unui text pornind de la tastatura si stocarea sa ntr-un fisier.
Informatiile continute n fisier sunt de tip text, adica o multime de caractere,
n general structurate n linii.
Principalele functiuni ale unui editor de texte sunt:
-vizualizarea unei parti a textului;
-deplasarea si pozitionarea n fisier (se indica pozitia curenta);
-modificarea textului prin inserare, modificare, stergere;
-regasirea sirurilor de caractere particulare.
Editorul poate fi utilizat att pentru tastarea textului sursa al unui
program ct si pentru introducerea datelor necesare programului.
Vom evidentia doua dintre cele mai importante tipuri de editoare:
a) editor sintactic, adaptat prelucrarii programelor sursa, care verifica
sintaxa programelor pe masura tastarii acestora, permitnd de
asemenea gestionarea automata a structurilor sintactice proprii
limbajului de programare utilizat;
b) procesor de texte, destinat tratarii textelor. Acest tip de editor ofera
functionalitati mult mai pronuntate pentru manipularea caracterelor:
utilizarea literelor accentuate, fonturi diferite (adica diferite seturi
de caractere), alinierea textului, inserare de desene etc., mai general
se zice ca aceste editoare ofera facilitati de punere n pagina pentru
scriere de scrisori, articole, carti etc.
Compilatorul
Un compilator este un program sistem care traduce un program sursa
scris ntr-un limbaj de programare de nivel nalt n program obiect.
Activitatea compilatorului se divide n doua mari componente:
a) faza de analiza, care cuprinde urmatoarele etape:
-analiza lexicala;
-analiza sintactica;
-analiza semantica.
b) faza de sinteza, care cuprinde urmatoarele etape:
generarea codului intermediar;
optimizarea codului;
-generarea codului obiect.
Activitatea compilatorului este prezentata schematic astfel:
21
program
sursa
tabela de analiza lexicala arbore sintactic
simboluri
analiza sintactica
analiza semantica
generarea codului
intermediar
optimizarea
codului
generarea codului
obiect
Compilator
program obiect
Analiza lexicala
Analiza lexicala este prima faza a compilarii. Rolul sau major consta n
citirea secventei de caractere care constituie programul sursa si producerea
unor secvente de elemente sintactice ale limbajului.
22
Identificatorii, de exemplu numele de variabile, sau de proceduri ca si
atributele lor sunt stocate ntr-o tabela de simboluri, n timp ce informatiile
inutile pentru compilator (comentariile) sunt eliminate.
Analiza sintactica
Analizorul sintactic primeste o lista de elemente sintactice (cuvinte
rezervate, identificatori, operatori aritmetici, semne de punctuatie etc.)
elaborata de catre analizorul lexical.
El verifica daca aceasta lista este corecta n raport cu sintaxa limbajului
si pornind de la aceste elemente, analizorul sintactic genereaza arborele
sintactic al programului.
Sunt posibile doua abordari pentru generarea arborelui sintactic:
-ascendenta: se analizeaza elementele componentr ale frazei de
tratat si se cauta regulile care permit ascensiunea spre radacina;
-descendenta: se porneste de la radacina si se aplica regulile care
permit construirea frazei dorite.
Analiza semantica
Analiza semantica se ocupa de analiza sensului si a semnificatiei
frazelor limbajului, utiliznd arborele sintactic pentru a identifica operatorii
si operanzii instructiunilor.
Sarcina principala a unui analizor semantic este verificarea concordantei
tipurilor, ceea ce revine la a verifica daca fiecare operator actioneaza asupra
operanzilor care sunt autorizati prin limbaj. Pentru efectuarea acestor
verificari, analizorul semantic utilizeaza informatiile care sunt stocate n
tabela de simboluri.
Generarea codului intermediar
Dupa etapele fazei de analiza, se procedeaza la generarea programului n
cod obiect. O metoda raspndita consta n divizarea acestei sarcini n doua
etape: generarea codului intermediar si generarea codului obiect.
Codul intermediar se poate defini ca un cod al unei masini abstracte,
care trebuie sa posede doua proprietati: sa fie usor de generat pornind de la
arborele sintactic al unui program si sa fie usor de tradus n cod obiect.
Deci, pornind de la arborele sintactic al unui program, compilatorul
genereaza un flux de instructiuni simple care se aseamana cu
macroinstructiunile, dar contrar asamblorului, acestea nu fac referire
explicita la registrele sistemului de calcul.
Optimizarea codului
23
Optimizarea codului consta n ameliorarea codului pentru a -l face mai
rapid de executat si mai putin "ncurcat" n memorie, si vizeaza n special
eliminarea redondantelor si evaluarea expresiilor care utilizeaza constante.
Deoarece optimizarea conduce la o crestere substantiala a timpului de
compilare, este de preferat evitarea acestei faze n timpul dezvoltarii si
punerii la punct a programelor.
Optimizarea codului joaca un rol determinant pentru sistemele de calcul
care utilizeaza un procesor RISC, datorita complexitatii compilatoarelor
pentru astfel de masini, care utilizeaza un numar mare de registre n vederea
reducerii numarului de accese la memoria centrala.
Generarea codului obiect
Generarea codului obiect este faza finala a compilarii, care genereaza
codul obiect relocabil, adica relativ la originea 0. Fiecare instructiune a
codului intermediar este tradusa ntr-o secventa de instructiuni n cod
obiect. Generarea codului obiect atribuie pozitii n memorie pentru datele si
instructiunile programului.
Tabela de simboluri
n timpul compilarii este necesara descrierea identificatorilor si a
caracteristicilor acestora. Tabela de simboluri permite gruparea acestor
informatii care sunt puse la dispozitia diferitelor faze ale compilatorului.
n tabela se gasesc numele variabilelor, constantelor si procedurilor.
Fiecarei intrari din tabela i se asociaza o nregistrare care contine numele
obiectului considerat si caracteristicile proprii (tip, adresa numerica,
numarul si tipul parametrilor etc.). Accesul la aceasta tabela trebuie sa fie
rapid, deoarece toate fazele compilarii pot utiliza tabela de simboluri.
Tratarea erorilor
n activitatea practica de programare s-a constatat ca este dificila
scrierea programelor fara erori si din aceasta cauza, un bun compilator
trebuie sa faca posibila detectarea si corectarea acestor erori.
La sfrsitul compilarii se ntocmeste un raport al erorilor depistate si se
ncearca specificarea cauzei care a generat eroarea precum si pozitia sa n
cadrul textului sursa.
Un program scris ntr-un limbaj de pogramare evoluat poate contine
erori de natura diferita:
a) erori lexicale: erori de ortografiere a identificatorilor sau cuvintelor
rezervate, caractere ilegale etc.
24
b) erori sintactice: constituie majoritatea erorilor de programare si se
refera la: expresii aritmetice sau logice incorecte, erori de
structurare a blocurilor, lipsa separatorilor etc.
c) erori semantice: identificatori nedeclarati, incompatibilitate ntre
operatori si operanzi etc.
d) erori logice: erori aritmetice de tipul mpartirii cu zero, radacina
patrata dintr-un numar negativ, depasirea limitelor unui tablou,
ciclu infinit, adresare incorecta etc.
Erorile din primele trei categorii sunt detectate de compilator n timpul
analizei cu acelasi nume (analiza lexicala, sintactica, semantica), si sunt
relativ usor de corectat deoarece compilatorul indica prezenta lor.
Erorile logice sunt vizibile doar la executie si au ca efect fie efectuarea
unor calcule eronate, fie oprirea executiei programului. Acestea sunt erorile
cele mai dificil de detectat si corectat, si la fiecare tentativa de corectare
trebuie reluat ciclul compilare - executie - testare.
Editorul de legaturi
Un editor de legaturi |linker, linkage editor|este un produs software
care permite combinarea mai multor programe obiect, obtinndu -se un
singur modul obiect.
Dezvoltarea unor programe complexe se realizeaza prin descompunerea
acestora n module care se traduc independent, deci un program poate fi
constituit din mai multe fisiere (sau subprograme), unul dintre fisiere
continnd n mod obligatoriu programul principal.
Toate aceste fisiere sunt traduse separat, ele pot utiliza subprograme
care se gasesc n alte fisiere, ceea ce da nastere la referinte exterioare.
Exista doua tipuri de referinte exterioare:
a) posibilitatea ca un modul sa apeleze alt modul sau subprogram de
biblioteca;
b) posibilitatea ca un modul sa fie referit de un alt modul;
Referintele exterioare unui modul ridica probleme deosebite pentru
programul traducator care nu poate satisface referintele exterioare ci doar
ntocmeste o lista a acestora pe care o transmite editorului de legaturi.
Editorul de legaturi preia modulele independente, le grupeaza si
satisface toate referintele exterioare pentru a forma un program complet,
care este executabil.
Figura urmatoare prezinta un exemplu de editare de legaturi pentru un
program care contine doua subprograme traduse si stocate n fisiere
25
separate, si care face de asemenea apel la doua module de biblioteca care
sunt traduse n prealabil si conservate n cod obiect.
subprogram program principal subprogram
(cod sursa) (cod sursa) (cod sursa)
traducere traducere traducere
modul de modul de
subprogram program principal subprogram biblioteca biblioteca
(cod obiect) (cod obiect) (cod obiect) (cod obiect) (cod obiect)
editare de legaturi
program
complet
executabil
26
Programul ncarcator
Programul obiect care rezulta n urma editarii de legaturi, trebuie sa fie
ncarcat n memoria calculatorului pentru a putea fi executat. Programul
ncarcator |loader|, care este de obicei cuplat cu editorul de legaturi
realizeaza ncarcarea programului obiect la adresa sa de ncarcare.
Exista doua tipuri de programe ncarcatoare:
a) ncarcator absolut, specific vechilor sisteme de calcul care permite
ncarcarea programului (unic n memorie) la o adresa fixata n
avans, ca si toate adresele din cadrul programului.
b) ncarcator relocabil, specific noilor tipuri de sisteme
multiprogramate, care utilizeaza pentru ncarcare n memorie
tehnica relocarii. O modalitate de realizare a relocarii este aceea a
utilizarii indicatorului de relocare de catre programul traducator n
cmpul de adresa al instructiunii. Relocarea se mai poate realiza
prin intermediul unui registru de baza, astfel:
-se traduce programul n raport cu adresa 0 si se realizeaza
editarea de legaturi;
-se alege un registru de baza printre cele disponibile;
-se depune n registrul de baza adresa de baza (adresa absoluta a
programului);
-se ncarca programul n memorie, pornind de la adresa de baza,
fara modificarea adreselor programului. n timpul executiei, la
fiecare referire a unei adrese, sistemul de calcul efectueaza
operatiile:
adresa efectiva = adresa de baza + adresa referita.
1
6 STRUCTURI DE DATE
6.1 Tipuri si structuri
Un sistem de calcul este programat pentru prelucrarea instructiunilor.
Un program este un ansamblu de instructiuni si date. n capitolele
precedente au fost introduse conceptele esentiale ale programarii,
instructiuni n cod masina si limbaje de programare. Prezentul capitol se
refera la organizarea informatiilor de prelucrat n memoria calculatorului.
Sistemul de calcul defineste la nivel hardware un set de instructiuni
elementare si cteva reprezentari ale datelor elementare.
O data structurata se poate defini ca fiind o colectie de date elementare.
O astfel de colectie se mai numeste structura de date.
Structurile de date au aparut la nivelul limbajelor de programare
evoluate care definesc structuri abstracte asupra instructiunilor, de exemplu,
macrodefinitii, proceduri, functii, subprograme, etc. Ele definesc de
asemenea structuri de date precum variabile dubla precizie, numere
complexe, vectori, siruri de caractere etc.
Structurile de date sunt construite pornind de la datele elementare
realizate la nivel masina. Utilizatorul poate sa lucreze si cu informatii mai
complexe , deci la un nivel superior de abstractizare, fara sa tina seama de
detaliile implementarii fizice a acestor structuri care sunt "ascunse" de
limbajul de programare si software-ul asociat (traducator, interpretor, etc.).
Utilizatorul poate defini structuri de date si mai complexe (arbori,
tabele, liste, etc.) utiliznd datele structurate la nivelul limbajului de
programare.
Pentru a introduce o noua structura abstracta se procedeaza astfel :
- se defineste structura informatiei;
- se definesc operatiile aplicabile acelei structuri;
- se lucreaza cu aceasta informatie structurata la acest nivel de
abstractizare, fara a se tine seama de detaliile de implementare;
Exista un mare numar de structuri de date. Vom prezenta cteva
exemple dintre structurile cele mai utilizate : vectori, tablouri, liste, arbori,
cozi, stive si tabele.
Exemple de structuri de date ntlnite la diferite nivele de abstractizare
sunt prezentate n figura urmatoare:
2
Vectori
Vectorii |vectors|sunt structuri foarte utile, folosite de majoritatea
limbajelor de programare (procesoarele vectoriale suporta vectorii la nivel
hardware). Un vector este o multime finita si ordonata de elemente, toate de
acelasi tip. El este definit prin numarul de elemente, ca si prin tipul si
Nivel masina
Biti
Octeti
Cuvinte
Memorie
Registre
Numere ntregi
Numere
n virgula
mobila
Nivel
limbaj
Multimi nregistrari Tablouri
Variabile logice
Vectori
Variabile ntregi Variabile reale Variabile
caracter
Nivel aplicatie
Arbori Stive LIFO Fisiere
Tabele Cozi FIFO Liste
3
marimea lor, stabilindu-se o corespondenta imediata ntre structura abstracta
si organizarea n memorie. Figura urmatoare prezinta schematizat structura
unui vector:
1 2 3 4 5 6 7 n-1 n
Tablouri
Un tablou |array|este o colectie multidimensionala de
obiecte de acelasi tip. Un tablou cu o singura dimensiune este
un vector. Fiecare element al tabloului este reperat printr-un set
de indici |subscripts|. Accesul la informatia continuta ntr-un
tablou este deci aleator. Realizarea unui tablou
multidimensional utilizeaza vectori, iar specificarea
dimensiunilor necesita o declaratie n cadrul programului.
Liste
Listele |lists|sunt structuri suple capabile sa contina un numar
nedeterminat de obiecte. Daca fiecare obiect este accesibil prin cel
precedent datorita unui pointer, atunci avem de a face cu o lista legata sau
nlantuita |linked list|. Un astfel de exemplu este prezentat n figura
urmatoare:
Exista de asemenea liste dublu nlantuite care pot fi parcurse n ambele
sensuri, fiecare element fiind compus dintr-un obiect si doi pointeri.
Evident, realizarea unei astfel de liste se bazeaza pe notiunea de pointer. Se
spune ca un pointer nlantuieste elementele sau pointeaza, asupra unui
element. Pointerul este o variabila a carei valoare corespunde unei adrese.
Schimbnd un pointer, se poate insera un nou element ntr-o lista, iar
prin simpla modificare a pointerilor se pot suprima elemente dintr-o lista.
Pointer catre
elementul urmator
element element element
4
Arbori
Arborele este o structura constituita din noduri legate prin arce. Fiecare
nod contine un obiect al colectiei. Arborele este o structura ierarhica. n vrf
exista un nod numit radacina, de la care pornesc ramurile, catre nodurile
nivelului inferior. Nodurile terminale se numesc frunze.
Arborele binar este un caz particular n care fiecare nod poseda cel mult
doua ramuri catre nodurile nivelului inferior.
Implementarea n memorie a unui arbore se poate realiza cu ajutorul
pointerilor. Fiecarui nod i corespunde un ansamblu de cuvinte de memorie
care contin datele si pointerii reprezentnd ramurile care pleaca din nod.
Cozi
O coada este un fir de asteptare (FIFO = First In First Out). Inserarile se
realizeaza la o extremitate iar extragerile se fac la celalalt capat. Realizarea
este posibila cu ajutorul unui vector si a doi pointeri.
Pentru a evita deplasarea cozii n memorie, se poate defini o zona de
memorie circulara, adica prima adresa sa urmeze dupa ultima adresa. Un
pointer pointeaza asupra ultimului element din coada, unde se adauga
datele, iar al doilea pointer indica primul element, unde se extrag datele.
Stive
O siva |LIFO = Last In First Out|este o structura liniara particulara, n
care datele sunt adaugate sau extrase la o extremitate predeterminata.
Stiva este una dintre structurile cele mai importante si mai utilizate (de
exemplu: recursivitate, ntreruperi multinivel, masina pe 0 adrese etc.).
Implementarea n memorie a unei stive se poate face cu ajutorul unui
vector si a unui pointer care indica vrful stivei, unde datele sunt depuse sau
de unde sunt extrase.
Tabele
n capitolul precedent am descris tabelele utilizate de asamblor si
compilator pentru pastrarea simbolurilor si valorilor corespunzatoare.
Se poate defini o tabela ca o structura n general neordonata de date de
acelasi tip, unde fiecare data are asociata o informatie unica numita cheie si
care serveste la identificarea elementului tabelei. De exemplu, daca vom
considera o agenda telefonica, cheia este numele abonatului iar informatiile
asociate pot fi adresa si numarul de telefon.
5
Cautarea unui element n tabela se realizeaza prin specificarea cheii.
Desi au fost elaborate mai multe metode de cautare n tabele, nu exista o
tehnica universala si optimala, alegerea depinznd de tipul si talia tabelei,
precum si de specificul utilizarii sale.
Vom prezenta trei algoritmi de cautare n tabele utilizati frecvent n
programare: cautarea liniara, cautarea binara si adresajul dispersat.
Cautarea liniara
Tabelele de simboluri, construite n timpul primei treceri ale unui
asamblor si n timpul fazelor de analiza lexicala si sintactica ale unui
compilator, asociaza numele simbolic al unei variabile sau al unui
identificator oarecare utilizat drept cheie a tabelei un anumit numar de
atribute, ca de exemplu: tip, adresa, protectie, etc. Atunci cnd traducatorul
ntlneste un simbol, el trebuie sa verifice daca exista deja n tabela, altfel
trebuie sa stabileasca o noua intrare n tabela.
Deoarece nici simbolurile si nici ordinea de prezentare nu sunt
cunoscute n prealabil, traducatorul introduce datele n tabela, pe masura ce
ntlneste noi simboluri n programul sursa, deci tabela este nesortata.
Pentru a gasi un element n tabela se poate utiliza metoda de cautare
liniara. Este cea mai simpla metoda, dar si cea mai putin performanta. Ea
consta n a parcurge tabela ncepnd cu primul element si comparnd
fiecare nume cu cheia de cautare. Cu o tabela de n elemente, timpul mediu
de cautare este proportional cu n / 2.
Dezavantajul unei astfel de metode este deci numarul mare de
comparatii. Avantajele se refera la usurinta de realizare, aplicarea ei pentru
tabele nesortate (sortarea unei tabele ia mult timp) si faptul ca pot fi
efectuate cautari n timpul ncarcarii tabelei.
Cautarea binara
Printre tehnicile rapide, dar care impun existenta unei tabele ordonate,
se poate cita cautarea binara sau dihotomica |binary search|.
Ideea consta n a considera cheile ca fiind uniform distribuite si deci de
a ncepe cautarea prin compararea cheii date cu cea plasata n mijlocul
tabelei. Aceasta comparare permite eliminarea dintr-o data a unei jumatati a
tabelei. Se poate continua n acelasi mod aplicnd metoda pentru elementele
ramase s.a.m.d. Metoda converge rapid si durata cautarii este proportionala
cu log2(n).
Avantajul acestei tehnici provine din numarul redus de comparatii
necesare pentru a gasi obiectul dorit. Pentru o tabela cu 1000 de date,
6
cautarea binara va putea gasi orice cheie din 10 comparari, n timp ce
cautarea liniara ar necesita n medie 500 de comparari.
Figura urmatoare prezinta comparativ cele doua cautari si se observa ca
metoda de cautare liniara necesita 13 comparari n timp ce metoda
compararii binare necesita doar 4 comparari ale cheii (cauta: mmmmm).
1 ccccc aaaaaa
2 ggggg bbbbb
3 zzzzz Ccccc
4 sssss ddddd
5 eeeee Eeeee
6 hhhhh Fffff
7 kkkkk ggggg
8 lllll hhhhh
9 qqqqq Iiiii
10 aaaaa Jjjjj 1
11 ddddd kkkkk
12 fffff Lllll 3
13 wwwww mmmmm 4
14 mmmmm nnnnn
ooooo ooooo 2
ttttt ppppp
bbbbb qqqqq
rrrrr Rrrrr
uuuuu Sssss
Cautare liniara
Tabela nesortata Tabela sortata
Cautare binara
7
Adresaj dispersat
O solutie ideala ar fi ca sa existe un mecanism de cautare rapida care sa
nu impuna ca tabela sa fie ordonata. Memoriile asociative realizeaza o
cautare paralela pe toate cheile, dar o memorie asociativa de mare
capacitate este costisitoare. Pentru simularea comportamentului unei
memorii asociative (acces aleator) se poate utiliza metoda de adresaj
dispersat (hashing, hash code).
Aceasta tehnica foarte utilizata consta n evidentierea unei functii de
hashcode, care se aplica cheii si furnizeaza o adresa sau un indice n tabela
asociata. Functia de hashcode este importanta, ea trebuie sa furnizeze adrese
destul de uniform distribuite n intervalul de adrese disponibile.
Daca aplicarea functiei de hashcode asupra a doua nume de simboluri
alese drept cheie da acelasi rezultat, adica cele doua obiecte ar trebui sa fie
plasate la aceeasi adresa, spunem ca s-a realizat o coliziune. O buna functie
de hashcode trebuie sa genereze un numar minim de coliziuni.
Este foarte clar ca spatiul de adrese din cadrul tabelei trebuie sa fie
suficient pentru a contine toate obiectele.
Pentru rezolvarea coliziunilor se pot utiliza mai multe strategii:
- liste nlantuite pentru adresarea obiectelor implicate, fiecare lista sa
nceapa la adresa comuna;
- repetarea calculului de adresa cu o a doua functie de hashcode;
- plasarea obiectului care gaseste locul ocupat la adresa urmatoare
sau la prima adresa disponibila (presupune o tabela generos
dimensionata, si n plus o cautare liniara).
Metoda adresajului dispersat permite stabilirea unei relatii functionale
cheie-adresa, de aceea cautarea n tabele se limiteaza la o singura comparare
(exceptnd coliziunile) dupa calculul adresei cu ajutorul functiei de
hashcode.
6.2 Fisiere si de baze de date
Structurile de date prezentate sunt adaptate organizarii memoriei
centrale, adresabile prin cuvinte sau octeti.
Fisierele sunt o structura adaptata memoriilor auxiliare (unitati de banda
si discuri magnetice).
Un fisier este o colectie de date reprezentnd o entitate pentru
utilizator. n mediul informatic, datele unui fisier sunt nregistrate astfel
nct sa fie facilitata citirea si prelucrarea acestora cu calculatorul. n acest
8
context, un fisier este deci o colectie de date, rezultate, un text, un program
sursa, un program binar executabil etc. Un fisier este conceput ca o colectie
de nregistrari. Prezentarea detaliata a conceptului de fisier va fi realizata n
capitolul urmator.
O baza de date este un ansamblu structurat de date. Continutul unei
baze de date este cunoscut sub numele de banca de date.
O baza de date permite regruparea si centralizarea informatiilor
necesare diverselor aplicatii n vederea unei mai bune repartizari.
Din punct de vedere logic, o baza de date (BD) |data base|este
constituita din multimea informatiilor relative la un subiect dat. Aceasta
multime trebuie sa respecte urmatoarele criterii:
- exhaustiviate : informatii complete despre un subiect dat;
- neredondanta : unicitatea informatiilor n baza de date;
- structura : asigura o buna gestionare a bazei de date.
Din punct de vedere fizic, o baza de date este o virtualizare a notiunii
de fisier. n general, bazele de date sunt stocate pe discuri magnetice si
gestiunea lor se efectueaza direct asupra discurilor. O baza de date este
implementata cu fisiere dar acest aspect nu este transparent pentru
utilizatori. Stocajul fizic al unei baze de date consta ntr-o multime de
nregistrari fizice organizate cu ajutorul listelor, pointerilor si diverselor
metode de indexare.
Operatiile care se pot efectua asupra unei baze de date sunt :
- interogare sau consultare;
- actualizare;
- inserare;
- suprimare.
Pentru efectuarea acestor operatii sunt necesare programe adecvate,
reunite sub denumirea de Sistem de gestiune de baze de date (SGBD)
|DBMS : DataBase Management System|.
Un aspect important al bazelor de date actuale este independenta
datelor fata de aplicatii, ceea ce constituie principalul obiectiv al bazelor de
date. n vederea asigurarii unei accesibilitati sporite a informatiilor se
realizeaza o separare ntre problemele de stocaj si ntretinere, pe de o parte,
si problemele de prelucrare ale utilizatorilor, pe de alta parte, realizndu-se
astfel o independenta ntre date si metodele de acces.
Pentru simplificarea problemelor de acces s-au elaboart mai multe
modele logice de baze de date: modelul ierarhic, modelul retea, modelul
relational si modelul pe obiecte.
9
Modelul ierarhic consta n organizarea datelor de maniera
arborescenta, ceea ce constituie o structura simpla care este o ierarhie n
care fiecare element nu are dect un superior, fara a exista conexiuni ntre
ramurile de pe acelasi nivel.
Modelul retea este o extensie a modelului precedent deoarece permite
stabilirea conexiunilor ntre elemente diferite. n acest mod se poate realiza
un mare numar de interogari posibile, dar acestea trebuiesc prevazute la
construirea bazei de date. n aceasta clasa de SGBD, modelul CODASYL
este unul din cele mai raspndite.
Modelul relational (de exemplu: SGBD Ingres, SQL/DS, Oracle,
Informix, Access etc.) permite eliminarea constrngerii de cunoastere n
avans a interogarilor care se vor efectua, permitnd stabilirea conexiunilor
n momentul executiei.
Datele sunt stocate sub forma de relatii n tabele, iar accesul la
informatii se efectueaza prin aplicarea celor trei operatii de baza: selectia,
proiectia, compunerea.
Selectia consta n extragerea dintr-o relatie a acelor elemente care
satisfac o conditie.
Proiectia permite izolarea unui numar de coloane dorite.
Compunerea produce noi tabele pornind de la tabele existente.
Bazele de date permit definirea unei structuri logice deasupra structurii
fizice (cea de fisiere pe disc) care nu este adaptata manipularii datelor.
Interfata dintre o aplicatie si o baza de date este efectuata cu ajutorul
limbajelor specifice, dintre care cel mai cunoscut este SQL. Limbajul SQL
|Structured Query Language|este un limbaj standard de definire si
manipulare a datelor din bazele de date relationale.
Modelul pe obiecte este un sistem de baze de date orientate obiect
|OODB-Object Oriented DataBases|. Principiul acestui nou model este
relativ simplu, el consta n a utiliza aceleasi structuri de date n aplicatie si
n baza de date, realiznd astfel o corespondenta directa ntre aplicatie si
baza de date.
Aceste structuri de date sunt clase de obiecte si baza de date este o baza
de obiecte. Obiectele bazei de date sunt obiecte persistente si care
beneficiaza de polimorfism si mostenire ceea ce garanteaza o buna
flexibilitate.
Conceptul de obiect a dat nastere unei noi tehnologii care se aplica n
numeroase domenii, de exemplu: limbajele de programare, sistemele de
operare si bazele de date.
1
7 SISTEME DE OPERARE
Un sistem de calcul fara software-ul sau este inutil. Software-ul
exploateaza universalitatea sistemului, asigurndu-i potentialul necesar
rezolvarii problemelor. Sistemul de calcul, prin intermediul software -ului
sau, poate de exemplu, sa faciliteze scrierea unei scrisori, sa recunoasca
forme, sa prevada timpul, sa stocheze sau sa imprime imagini, sa corecteze
erori de ortografie, sa realizeze simplificarea unei expresii algebrice,
optimizarea conceptiei unui circuit electronic, simularea comportamentului
unor subansamble pentru diverse tipuri de masini etc.
De-a lungul timpului software-urile au evoluat n mai multe directii:
a) software-uri de aplicatie, care servesc la rezolvarea unor
probleme specifice, pot fi scrise de utilizator, sau sunt elaborate de
catre firme specializate, cum este cazul programelor de utilitate
generala: procesoare de texte, software-uri de gestiune si
contabilitate, pentru conceptia asistata de calculator, didactice etc.
b) software-uri utilitare, care ofera ajutor pentru dezvoltarea
aplicatiilor, cum ar fi: compilatoarele, asambloarele, linkeditoarele,
programele ncarcatoare si depanatoare etc., cuprinznd de
asemenea instrumente grafice si de comunicare.
Sistemul de operare |operating sistem|este un produs software care
coordoneaza ansamblul tuturor activitatilor sistemului de calcul, asigura
gestiunea eficienta a resurselor sale si faciliteaza munca utilizatorilor prin
preluarea unor sarcini complicate cum ar fi, de exemplu, controlul
perifericelor sau stocarea si gestiunea fisierelor.
Sistemul de operare permite interactiunea directa ntre om si sistemul de
calcul, oferind n acest sens o interfata convenabila si organiznd
prelucrarea si stocarea programelor si datelor.
Sarcinile sistemelor de operare s-au amplificat de-a lungul timpului si
astfel, volumul sau a crescut considerabil, necesitnd eforturi deosebite
pentru programare. Un sistem de operare modern este constituit din sute de
mii, chiar milioane de instructiuni, solicitnd utilizarea limbajelor de
programare evoluate adaptate scrierii acestui gen de software.
Pentru a reliefa importanta deosebita a sistemului de operare, n
lumea informaticii se spune adesea ca "un elefant este un soricel
mpreuna cu sistemul sau de operare".
2
7.1 Evolutie si caracteristici
Calculatoarele primei generatii erau lipsite de sistem de operare, erau
programate n binar, programele erau ncarcate n memorie, executate si
puse la punct de la pupitrul de comanda.
Chiar si dupa aparitia limbajului de asamblare procedura de utilizare a
sistemului de calcul era aceeasi, utilizatorul era stapn unic asupra masinii
pe toata durata de executie a programului sau care putea sa fie foarte mare.
Etapele evolutiei unui sistem de operare corespund introducerii unor noi
dispozitive capabile sa amelioreze performantele sistemului de calcul.
Evolutia sistemelor de operare cuprinde urmatoarele etape:
a) Monitorul sau executivul anilor '60 este precursorul sistemelor de
operare moderne. El este un program nsarcinat cu asigurarea bunei
desfasurari a operatiilor prin secventializarea actiunilor utilizatorilor
si continuitatea operatiilor;
b) Sisteme pe loturi sau trenuri de lucrari |batch|, sunt sisteme
monoutilizator aparute la sfrsitul anilor '50, o data cu introducerea
primelor sisteme pe tranzistoare si dotate cu benzi magnetice, care
asigurau succesiunea mai rapida a informatiilor. Programarea era n
plin avnt datorita aparitiei limbajului Fortran. Separarea operatiilor
de intrare/iesire de cele de prelucrare se realizeaza prin utilizarea
unui calculator auxiliar. Joburile, prezentate operatorului sub forma
de pachete de cartele perforate sunt recopiate pe banda magnetica
de catre calculatorul auxiliar. Banda, continnd un lot de lucrari se
constituie ca intrare pentru calculatorul principal care executa
actiunile n ordinea prezentarii, iar rezultatele se scriu de asemenea
pe banda pentru a putea fi imprimate n continuare de catre
calculatorul auxiliar;
c) Independenta intrarilor/iesirilor este un deziderat atins la
mijlocul anilor '50, si care se materializeaza prin realizarea
urmatoarelor dispozitive:
unitati de discuri si tambururi magnetice la un pret
abordabil, care ofera un acces aleator si capacitati de
memorare importante;
unitati de canal si sistemul de ntreruperi, care elimina
dependenta intrarilor/iesirilor de prelucrari;
Joburile sunt citite si stocate pe disc n fisiere (spooling), si sunt
utilizate de catre monitor n momentul executiei, acesta putnd
3
alege ordinea de executie pe baza unor criterii de exploatare care se
prezinta sub forma unui sistem de prioritati. Monitorul este dotat n
acest sens cu un nou modul, planificatorul |scheduler|, care
asigura planificarea lucrului.
d) Multiprogramarea. Un sistem de calcul este multiprogramat daca
mai multe programe sunt ncarcate n memorie n scopul partajarii
CPU-ului, asigurndu-se exploatarea mai eficienta a sistemului de
calcul prin eliminarea perioadei de asteptare a unitatilor de
prelucrare n timpul operatiilor de intrare/iesire. Sistemul de
operare va contine un nou modul, alocatorul, care asigura
gestiunea CPU tinnd cont de sistemul de prioritati gestionat de
catre planificator, dar poate decide de asemenea ntreruperea unei
executii prelungite fara sa astepte o operatie de intrare-iesire n
vederea unei partajari echitabile a CPU-ului. Multiprogramarea
ridica un anumit numar de probleme:
-partajarea unitatii de prelucrare ntre programe si salvarea
contextului (starea de executie) pentru fiecare program;
-gestiunea memoriei centrale nct sa permita ncarcarea unui
numar ridicat de programe ntr-un spatiu limitat;
-gestiunea intrarilor/iesirilor pentru diversele programe,
asigurnd transferul de date ntre memorie si unitatile
periferice si mpiedicnd sistemul sa "amestece" informatiile
specifice programelor diferite;
-protejarea programelor si a datelor stocate n memoria centrala
si pe disc, eventualele erori putnd avea consecinte grave
asupra derularii operatiilor;
e) Sistemele n timp partajat |time-sharing|, numite de asemenea
multiacces sau multiutilizator, sunt o varianta a sistemelor
multiprogramate n care timpul CPU este distribuit n mici transe
egale unui mare numar de utilizatori interactivi, conectati la sistem.
Sistemele actuale combina prelucrarile batch si time-sharing. ntrun
sistem n timp partajat, orice job lansat de la un terminal poate fi
direct controlat de catre utilizator, care are posibilitatea, de
exemplu, sa decida corectarea erorilor, recompilarea si relansarea n
executie. Acest mod de exploatare este adaptat n special fazei de
punere la punct a unui program, n timp ce modul batch este utilizat
n general pentru aplicatii care vizeaza activitati de productie si
pentru alte sarcini interactive.
4
Caracteristicile sistemelor de operare pentru sistemele
multiprogramate vizeaza urmatoarele aspecte:
a) Exploatarea resurselor este o sarcina fundamentala care asigura:
-paralelismul ntre diverse activitati n vederea cresterii
performantelor sistemului de calcul. Notiunea de procese
paralele si concurente faciliteaza ntelegerea functionarii unui
sistem de calcul multiprogramat;
-partajarea resurselor si a informatiilor este asigurata prin
gestiunea diferitelor unitati functionale ale sistemului (CPU,
memorie centrala si auxiliara, dispozitive de intrare/iesire),
permitnd acccesul simultan la datele comune (baze de date,
fisiere etc.) si la anumite programe (utilitare, biblioteci etc.);
-interdependenta ntre functiunile sistemului de operare si
alte functiuni, deoarece nu exista o distinctie neta ntre ele,
de exemplu, compilatorul si editorul de texte sunt considerate
programe utilitare, iar n sistemul Unix, modulul de gestiune a
fisierelor este tratat ca o aplicatie oarecare;
-nedeterminismul operatiilor care vizeaza caracteristica de
comportament a sistemelor de operare. Daca la nivelul unei
aplicatii, executii repetate cu aceleasi date produc aceleasi
rezultate, sistemul de operare trebuie sa reactioneze la situatii
nereproductibile, la evenimente aleatoare, ca de exemplu,
ntreruperi generate de dispozitive de intrare/iesire, transferuri
de date repetate ca urmare a erorilor detectate n urma
verificarilor de paritate, incidente n functionare etc.
b) Virtualizarea sistemului prezinta utilizatorului, prin intermediul
limbajului de comanda, o masina virtuala mai usor de programat
dect cea reala. Limbajul de comanda furnizeaza modalitatea de a
comunica sistemului, prin formularea de cereri, toate informatiile
necesare diferitelor etape de lucru. Desi exista o oarecare asemanare
ntre limbajele de comanda si cele de programare n sensul
formularii unor fraze care specifica ntr-un mod neambiguu actiuni
de executat, totusi, instructiunile unui limbaj evoluat de programare
sunt n mod normal executate de catre CPU dupa ce au fost traduse
de catre compilator, n timp ce comenzile unui limbaj de comanda
sunt interpretate de catre sistemul de operare. Masina virtuala
"ascunde" utilizatorului toate detaliile privind, de exemplu, o
operatie de intrare/iesire sau o manipulare de fisiere;
5
c) Dispozitivele esentiale pentru sisteme multiprogramate, ca de
exemplu, canale de intrare/iesire, sistemul de ntreruperi, memoriile
auxiliare si terminalele interactive, la care se adauga alte dispozitive
pentru protectia programelor si a datelor, pentru relocarea dinamica
a programelor sau pentru gestiunea memoriei virtuale stau la baza
oricarui sistem de operare modern;
d) Masina cu doua stari:
-starea supervizor, rezervata sistemului de operare;
-starea utilizator, n care intra programele de aplicatie.
Aceasta conceptie permite dotarea sistemului cu un set instructiuni
de baza, executabile n cele doua stari, si cteva instructiuni
suplimentare, instructiuni privilegiate, executabile numai n mod
supervizor. Starea sistemului este specificata prin pozitionarea unui
indicator accesibil pentru modificare doar sistemului de operare (de
exemplu, un bit al registrului de stare).
n anumite situatii, indicatorul de stare trece automat n starea
supervizor, de exemplu n cazul unei ntreruperi sau n caz de
eroare, sau n general, ca urmare a unui eveniment care necesita
interventia sistemului.
Interfata ntre cele doua stari este asigurata prin existenta unei
instructiuni neprivilegiate, numita cerere a supervizorului.
e) Program, procesor, proces. Un program este o secventa statica de
instructiuni. Un procesor executa instructiunile unui program. Un
proces este o actiune, o secventa de operatii care se deruleaza
pentru realizarea unei sarcini determinate, pe scurt, este un program
n executie.
7.2 Structura unui sistem de operare modern
Examinnd functiunile unui sistem de operare modern, se poate aprecia
ca acesta se bazeaza pe un model structurat pe nivele, de exemplu, sistemul
de gestiune a fisierelor face apel la sistemul de gestiune a intrarilor/iesirilor,
care la rndul sau, utilizeaza modulul de prelucrare a ntreruperilor etc.
Se poate realiza un model de sistem de operare bazat pe o suprapunere
de nivele functionale, nivelele inferioare fiind n interactiune directa cu
hardware-ul, iar cele superioare servesc interfetei cu utilizatorul. Fiecare
nivel utilizeaza functiuni definite de catre nivelele inferioare, iar aceasta
abordare este asemanatoare cu cea adoptata pentru definirea nivelelor
6
functionale privind protocoalele de comunicare ntr -o retea de calculatoare
(modelul ISO-OSI).
Figura urmatoare prezinta structura unui sistem de operare conform
modelului expus, din care se desprinde ideea complexitatii sistemului de
operare.
utilizatori
programe de
interfata utilizator aplicatie ale
interpretor de comenzi utilizatorilor
si
planificarea lucrului programe de
servicii
gestiunea fisierelor - compilatoare
- linkeditoare
gestiunea intrarilor/iesirilor - editor de texte
....
gestiunea memoriei centrale
nucleu sistem de operare
gestiunea gestiunea gestiunea
proceselor ntreruperilor CPU
hardware
Nucleul sistemului de operare
Functiunile principale ale nucleului |kernel|sunt urmatoarele:
a) alocarea CPU;
b) gestiunea ntreruperilor;
c) gestiunea proceselor.
Nucleul este singura componenta a SO n ntregime rezidenta n
memoria centrala. Functiunile sale implica interventii frecvente si rapide.
De aceea, si datorita ocuparii permanente a unei parti din memorie,
codificarea nucleului trebuie realizata cu mare atentie si optimizata.
Este ntr-adevar nivelul cel mai solicitat al sistemului, codificat adesea
n limbaj de asamblare, restul sistemului fiind codificat n limbaj de
programare evoluat orientat sistem (C, Pascal concurent, Modula -2).
7
Alocare CPU
Alocatorul (dispecerul) este responsabil cu repartizarea timpului
disponibil unitatii de prelucrare (sau unitatilor de prelucrare n cazul
arhitecturilor multiprocesor) ntre diferite procese.
Sarcina sa implica gestiunea unui fir de asteptare, unde procesele care
sunt gata sa utilizeze CPU sunt clasate n ordinea prioritatii. Prioritatea
este atribuita de planificator n functie de urgenta prelucrarii si resursele
solicitate si este modificata dinamic pe baza timpului de asteptare ntre doua
executii partiale. Dispecerul aloca CPU procesului care se gaseste n capul
cozii n momentul n care CPU devine disponibil.
Dispecerul trebuie de asemenea sa salveze starea (contextul) procesului
a carui executie s-a ntrerupt si trebuie sa furnizeze CPU-ului elementele de
context (echipament) ale procesului desemnat ca succesor.
Pentru salvarea informatiilor privind starea proceselor, se asociaza
fiecarui proces o zona de memorie continnd toate informatiile esentiale ca:
identificator, paritate, context, statut (de exemplu activ, daca este stapn al
CPU; gata de executie, daca este ncarcat n memorie si dispune de toate
resursele, fara CPU; n asteptare, daca este pe disc n asteptarea posesiei
perifericelor si spatiului de memorie necesare; suspendat, daca executia sa
a fost ntrerupta; terminat, daca procesul si-a realizat sarcinile si executia
sa a luat sfrsit), necesitatile n resurse etc.
Acest bloc de informatii se numeste vector de stare, sau descriptor,
sau imaginea procesului. Acesti descriptori sunt regrupati ntr-o structura
de date si pot fi accesati printr-un pointer pornind de la o tabela centrala.
Aceasta structura este accesibila programelor nucleului.
Dispecerul este solicitat n toate cazurile n care trebuie schimbat
procesul stapn al CPU. De exemplu cnd procesul executant declanseaza o
operatie de intrare/iesire, sau cnd o ntrerupere de ceas semnaleaza ca
transa de timp alocata este epuizata si trebuie suspendata executia, atunci
trebuie atribuit CPU unui alt proces.
Dispecerul va fi de asemenea activ cnd o ntrerupere externa modifica
starea procesului stapn al CPU, sau l face pe moment inoperant (de
exemplu tratarea unei erori).
Gestiunea proceselor
Un proces (task) este un calcul care poate fi executat concurent sau n
paralel cu alte calcule. El este o abstractizare a procesorului, fiind
considerat ca un program n executie.
8
Existenta unui proces este conditionata de existenta a trei factori:
a) o procedura (un set de instructiuni) care trebuie executata;
b) un procesor care sa poata executa aceste instructiuni;
c) un mediu (memorie, periferice) asupra caruia sa actioneze
procesorul conform celor precizate n procedura.
Programare paralela si concurenta
Caracteristic programarii paralele este faptul ca procesele paralele nu
sunt conditionate unul de celalalt, nu colaboreaza ntre ele, executia unuia
nu este n nici un moment dependenta de rezultatele partiale ale celuilalt.
Spunem ca avem de-a face cu programare concurenta atunci cnd
procesele paralele se interconditioneaza reciproc.
ntr-un sistem de calcul, paralelismul proceselor trebuie nteles astfel:
Daca Ii si Ij sunt momentele de nceput a doua procese Pi si Pj, iar Hi si
Hj sunt momentele lor de sfrsit, Pi si Pj sunt executate concurent daca max
(Ii , Ij)smin (Hi , Hj).
Definitia 7.1 Executie paralela
Despre doua instructiuni succesive S1 si S2 spunem ca pot fi executate n
paralel, daca efectul lor asupra mediului este acelasi, indiferent daca mai
nti se executa complet S1 si apoi S2, sau se executa complet S2 si apoi S1,
sau executia uneia ncepe naintea terminarii executiei celeilalte.
Exemplul 1: Un program citeste de la doua periferice diferite pe a si b,
dupa care tipareste suma lor c. S1 si S2 se pot executa n paralel.
S1: read (a);
S2: read (b);
S3: c :=a+b;
S4: write (c);
Definitia 7.2 Graf de precedenta
Un graf aciclic (X, U) este graf de precedenta asociat unui program,
daca X este multimea instructiunilor programului, iar multimea arcelor U
este formata din perechi (Si, Sj) pentru care Si precede Sj.
Exemple de grafuri de precedenta si neprecedenta:
9
S1 S2 S1 S1
S3 S2 S3
S4 S4 S2
S5 S6
S7 S3
Grafuri de precedenta Graf de neprecedenta
Mecanisme de specificare a concurentei
Grafurile de precedenta sunt un model matematic pentru concurenta,
dar nu pot descrie direct concurenta n limbajele de programare.
Constructiile FORK, JOIN, QUIT
Instructiunea FORK are sintaxa: FORK eticheta; si provoaca executia
concurenta a doua secvente de program, deci creaza doua procese paralele.
Instructiunile primului proces ncep la eticheta eticheta, iar pentru al doilea
proces instructiunile sunt cele care urmeaza dupa FORK.
Instructiunea JOIN are sintaxa: JOIN nr, eticheta si are rolul de a
recombina nr procese, toate terminate. Dupa ce a fost executata a nr-a oara,
se trece la instructiunea cu eticheta eticheta. Variabila nr indica numarul de
procese paralele care mai sunt de asteptat n vederea reunirii.
Instructiunea QUIT are sintaxa: QUIT si are ca efect terminarea
procesului care o executa (de obicei nsoteste pe JOIN).
Prezentam descrierea FORK-JOIN-QUIT pentru grafurile de
precedenta din figura anterioara:
nr :=2; S1;
FORK L1; nr :=3;
read(a); FORK L1;
goto L2; S2;
L1: read (b); S4;
L2: JOIN nr, L3; FORK L2;
QUIT; S5;
10
L3: c:=a+b; goto L3;
write (c) L2: S6;
goto L3;
L1: S3;
L3: JOIN nr, L4;
QUIT;
L7: S7 ;
Mecanismul PARBEGIN-PAREND
O astfel de constructie are forma: S0 ; PARBEGIN S1 |S2|...|Sn
PAREND; Sn+1; si corespunde grafului de precedenta urmator:
S0
S1 S2 ... Sn
Sn+1
Deci instructiunile S1, S2, ..., Sn sunt lansate n executie simultan si sunt
executate concurent. Prezentam descrierea grafurilor de precedenta din
figura anterioara cu PARBEGIN-PAREND.
S1:
PARBEGIN
begin
PARBEGIN S2;
read (a); S4;
read (b); PARBEGIN
PAREND S5;
c := a+ b; S6;
write (c); PAREND
end;
S3;
PAREND
S7;
Prezentam n continuare un exemplu de copiere a unui fisier F ntr -un
fisier G, situat pe un suport diferit, folosind instructiuni concurente:
11
Type articol =record . . . end;
Var F, G: file of articol;
w, r: articol;
begin
reset (F);
rewrite (G);
read (F, r);
while not eof (F) do begin
w:=r;
PARBEGIN
read (F, r); | write (G, w);
PAREND;
end;
write (G,r);
close (F);
close (G);
end.
Conceptul de semafor
Un semafor s este o pereche (v (s), c (s)), unde v (s) este valoarea
semaforului (valoarea initiala v0 (s)), iar c (s) o coada de asteptare care
contine pointeri la procesele care asteapta la semaforul s. Pentru gestiunea
semafoarelor se definesc doua operatii primitive: WAIT si SIGNAL.
WAIT(s) apelat de procesul A : SIGNAL(s) apelat de procesul A:
v (s):=v (s) -1; v (s):=v (s) + 1;
if v (s) < 0 then begin if v (s) <=0 then begin
Trece A n asteptare; c (s) ==> B;
c(s) < ==A; Se extrage din coada B;
Trece controlul la dispecer; Trece controlul la dispecer;
end end
else else
Se trece controlul la A; Se trece controlul la A;
{endif} {endif}
Deci operatia SIGNAL (s) incrementeaza semaforul s cu o unitate, iar
WAIT (s) decrementeaza s cu o unitate daca s este pozitiv.
12
Sectiune critica, resursa critica,
excludere mutuala
Problema sectiunii critice consta n aceea ca doua sau mai multe procese
concurente ncearca sa modifice o aceeasi variabila, de un numar neprecizat
de ori:
PARBEGIN
P1: . . . v :=v + 1; . . .
P2: . . . v :=v + 1; . . .
PAREND
Vom spune ca portiunea de program prezentata, v :=v + 1 este o
sectiune critica, deoarece nu este permis ca ea sa fie executata simultan de
cele doua procese. Analog, vom spune ca variabila v este o resursa critica,
deoarece nu poate fi accesata simultan de mai multe procese. Procesele P1 si
P2 se exclud reciproc, deoarece au acces exclusiv la sectiunea si la resursa
critica.
Folosirea semafoarelor rezolva complet si elegant problema sectiunii
critice, fiind necesar un singur semafor s care se numeste semafor de
excludere mutuala.
var s:semafor;
v0 (s):=1;
PARBEGIN
P1: repeat
WAIT (s);
sectiune critica;
SIGNAL (s);
rest program1
until false
P2: repeat
WAIT (s);
sectiune critica;
SIGNAL (s);
rest program2
until false
PAREND
13
Sincronizarea proceselor
Operatia de sincronizare a doua procese se enunta astfel: Un proces P1
nu poate trece de un anumit punct A dect dupa ce un alt proces P 2 ajunge
ntr-un punct B. Prin intermediul semafoarelor, procesul P1 va astepta n
punctul A, prin operatia WAIT (s), pna cnd procesul P2 va efectua n
punctul B operatia SIGNAL (s).
var s:semafor;
v0 (s) :=0;
PARBEGIN
P1: repeat . . . A: WAIT (s); . . . until false;
P2: repeat . . . B: SIGNAL (s) . . . until false;
PAREND
Prezentam n continuare cteva aplicatii ale sincronizarii proceselor:
Problema producatorului si consumatorului
Sa presupunem ca exista unul sau mai multe procese numite
producatoare, si unul sau mai multe procese consumatoare (de exemplu
conceptele de pipe si spooling). Transmiterea informatiilor de la producatori
la consumatori se efectueaza prin intermediul unui buffer cu n intrari.
Problema consta n a dirija cele doua tipuri de procese astfel ca:
a) sa existe acces exclusiv la buffer (semaforul exclus);
b) consumatorii sa astepte cnd bufferul este gol (semaforul plin);
c) producatorii sa astepte cnd bufferul este plin (semaforul gol).
Var plin, gol, exclus: semafor;
v0 (plin) :=0;
v0 (gol) :=n;
v0 (exclus) :=1;
PARBEGIN
Producator: repeat
produce articol;
WAIT (gol);
WAIT (exclus);
depune articol n buffer;
SIGNAL (exclus);
SIGNAL (plin);
until false;
14
Consumator: repeat
WAIT (plin);
WAIT (exclus);
extrage articol din buffer;
SIGNAL (exclus);
SIGNAL (gol);
consuma articol;
until false
PAREND
Problema impasului
Problema impasului se manifesta n urmatoarea situatie cnd ambele
procese sunt blocate.
var x,y: semafor;
v0 (x) :=1;
v0 (y) :=1;
PARBEGIN
A: . . . WAIT (x); . . . WAIT (y);
B: . . . WAIT (y); . . . WAIT (x);
PAREND
Impasul este o stare foarte grava care poate duce la blocarea sistemului
de operare sau la distrugerea unor procese.
Modelarea matematica a impasului
Sa consideram n procese si m tipuri de resurse. Un proces oarecare va fi
notat cu litera i si i e{1, 2, ..., n}, iar o resursa oarecare cu litera j, si j
e{1, 2, ..., m}.
Notam cu x|j|cantitatea din resursa j existenta n sistem;
Notam cu c |i, j|(t) cantitatea din resursa j ceruta de procesul i la
momentul t;
Notam cu a |i, j|(t) cantitatea din resursa j alocata procesului i la
momentul t;
Notam cu r |j|(t) cantitatea din resursa j care mai este libera la
momentul t;
15
Definitie 5.3 Stare realizabila
Numim stare realizabila a alocarii resurselor la momentul t, daca au loc
conditiile:
c |i, j|(t) sx |j|, i, j;
a |i, j|(t) sc |i, j|(t), i, j;
a |1, j|(t) + a |2, j|(t) + ... + a |n, j|(t) sx |j|, i, j;
Problemele impasului si rezolvarea lor
a) Iesirea din impas se rezolva de regula adoptnd urmatoarele
strategii:
-rencarcarea sistemului de operare;
-alegerea unui proces "victima" care este distrus;
-crearea unui punct de reluare, care este o fotografie a
memoriei pentru procesul "victima" si pentru procesele cu
care colaboreaza;
b) Detectarea unui impas daca sistemul poseda un mecanism de
prevenire a impasului (de exemplu, detectarea ciclurilor n graful de
alocare a resurselor);
c) Prevenirea impasului se face prin urnmatoarele metode:
-Metoda 1: "totul sau nimic". Procesul cere resurse n
momentul ncarcarii, iar SO ntocmeste graful alocarii
resurselor;
-Metoda a 2-a: cererea de resurse ntr-o anumita ordine, prin
numerotarea resurselor;
-Metoda a 3-a: alocare si suspendare controlata.
Gestiunea ntreruperilor
ntreruperile sunt constituite dintr-un ansamblu de rutine, fiecare dintre
ele fiind activata la aparitia unui semnal fizic de ntrerupere.
Sarcina modulului de gestiune a ntreruperilor este determinarea sursei
ntreruperii si activarea rutinei de serviciu sau de raspuns corespunzatoare.
Am vazut ce este un program n limbaj masina. Putem presupune ca
executia unei instructiuni masina nu poate fi ntrerupta.
16
Prin starea unui program la un moment dat, notata prescurtat PSW
|Program Status Word|ntelegem o pereche formata din:
a) adresa urmatoarei instructiuni de executat;
b) continutul registrelor masina la terminarea ultimei instructiuni.
Fiecare sursa posibila a unei ntreruperi are asociata o locatie fixa de
memorie. n aceasta locatie se afla o adresa care indica locul din memorie la
care se gaseste o secventa de instructiuni, numita handler, care deserveste
ntreruperea respectiva.
La aparitia semnalului de ntrerupere, dupa ce instructiunea masina n
curs s-a executat, se deruleaza n aceasta ordine, urmatoarele activitati:
a) se salveaza ntr-o zona de memorie (n stiva, sau o zona prestabilita)
PSW-ul programului n curs de desfasurare;
b) se restaureaza PSW al handlerului asociat ntreruperii;
c) handlerul executa actiunile necesare deservirii ntreruperii;
d) se salveaza, numai daca este necesara corelarea a doua actiuni
succesive ale aceluiasi handler, PSW al handlerului;
e) se restaureaza PSW al programului care a fost ntrerupt.
Printre ntreruperile care trebuie tratate la acest nivel se includ
ntreruperile interne, provocate, de exemplu, de detectarea unei erori sau
printr-o actiune care solicita trecerea n starea supervizor, ca si toate
ntreruperile externe.
Ca exemplu de actiune care cauzeaza trecerea n starea supervizor se
poate cita cazul unui utilizator care ncearca sa execute o instructiune
privilegiata sau cauta sa acceseze o informatie protejata etc.
Daca ntreruperea implica o schimbare de alocare a procesorului, acest
modul al nucleului va activa dispecerul.
Gestiunea memoriei centrale
Programele au nevoie de memorie pentru executia lor (pentru stocarea
instructiunilor si datelor). Numai instructiunile stocate n memoria centrala
pot fi executate de CPU.
Daca sistemul de calcul (SC) este exploatat n monoprogramare,
problema se reduce la partajarea memoriei ntre programul de aplicatie de
executat si partea sistemului de operare rezidenta n memorie, care ocupa n
mod normal o zona de adrese pornind de la adresa 0, care se numeste adesea
partea de jos a memoriei.
Daca sistemul ocupa zona de adrese de la 0 la N, programul utilizator va
avea la dispozitie spatiul de adrese de la N + 1 la extremitatea superioara a
memoriei.
17
Daca programul utilizator are o talie mai mare dect spatiul disponibil,
programatorul trebuie sa "decupeze" programul n module care sa se poata
succede n zona de memorie pusa la dispozitia lor.
Sistemul nu este n mod obligatoriu stocat n memoria RAM, n anumite
cazuri se prefera utilizarea unei memorii ROM separate, pentru ratiuni de
protectie si nevolatilitate.
Memoria centrala este o resursa costisitoare si deci ea este limitata si
constituie un element critic al performantei unui calculator.
Dimensiunea memoriilor a crescut considerabil, o data cu adoptarea
memoriilor electronice, dar si cea aprogramelor a urmat aceeasi tendinta.
Spatiul de memorie trebuie gestionat eficient, iar al doilea nivel al SO
este asigura partajarea memoriei ntre mai multe procese n asteptare.
Partitii cu talie fixa
Ideea cea mai simpla de partitionare a memoriei ca ea sa poata contine
un numar maxim de programe consta n "decuparea" memoriei fizice
disponibile n partitii fixe, dar nu obligatoriu de talie identica, fixate la
generarea sistemului.
Aceste partitii fiind fixate n avans si o data pentru totdeauna, alocarea
lor prezinta cteva probleme:
a) trebuie gestionate mai multe cozi de procese n asteptare, sortnd
procesele n functie de talia lor;
b) se produce o oarecare risipa de memorie, deoarece nu poate fi
prevazuta talia joburilor de executat si rareori se va gasi un proces a
carui talie sa corespunda unei partitii prestabilite.
Partitii cu talie variabila
Inevitabila risipa de memorie a sistemelor cu partitii fixe conduce la
conceptia partitiilor adaptabile taliei programelor, numite partitii cu talie
variabila.
Daca unul sau mai multe programe si termina executia, apar zone de
memorie neocupate, deci ar fi de dorit sa se ofere posibilitatea deplasarii
programelor n memorie. n acest sens, sistemul, din cnd n cnd suspenda
executia programelor si efectueaza o compactare a spatiului de memorie
care permite rearanjarea memoriei ramase si crearea de spatiu pentru
programele n asteptare.
Pentru a realiza aceasta operatie de reasezare sau compactare este
necesara o tehnica de deplasare corecta a programelor nct acestea sa -si
poata continua executia. Aceasta tehnica se numeste relocare (realocare),
18
sau translatare dinamica si este realizata cu ajutorul registrelor de baza si
a dispozitivului de calcul al adresei efective n momentul executiei.
Adresa efectiva = adresa de baza + adresa nceputului de program
Relocarea dinamica a spatiului de adrese poate fi realizata deplasnd
programul si modificnd continutul registrului de baza asociat, iar executia
se va efectua corect, adresele fiind calculate la executie, n functie de adresa
continuta n registrul de baza.
Figura urmatoare ilustreaza aceasta idee care rezolva problema numai n
faza initiala de ncarcare a programelor.
zona sistem zona sistem zona sistem
program A program A program A
program B program C
program C program C program D
program D program D program F
program E program G
program F program F
program G program G
ncarcare Dupa un anu- Rearanjare
initiala mit timp de prin relocare
functionare dinamica
Translatarea dinamica si protectia
n sistemele multiprogramate trebuie protejat fiecare program contra
eventualelor greseli ale altor programe, greseli susceptibile de a periclita
19
executia corecta a unui program prin posibilitatea de a patrunde n zona sa
de memorie.
n principiu, este suficienta verificarea ca orice adresa calculata n
timpul executiei unui program sa fie interna intervalului de adrese alocate
programului respectiv.
Aceasta verificare se realizeaza cu ajutorul unui dispozitiv special care
compara adresa efectiv calculata cu adresele extreme ale zonei alocate
programului, stocate n registre "borna" sau marginite (este necesar un
singur registru marginit, deoarece adresa primei locatii de memorie este
stocata n registrul de baza).
Pentru a gasi adresa referita se calculeaza adresa efectiva AE = baza +
dep si se testeaza daca baza AE sup.
Numai SO are dreptul sa modifice continutul registrelor de baza si al
celor marginite, ceea ce implica instructiuni privilegiate care nu pot fi
executate dect n mod supervizor, iar daca un program face referire la o
adresa din exteriorul bornelor sale, dispozitivul de verificare genereaza o
ntrerupere alertnd SO.
Figura urmatoare prezinta aceste mecanisme.
memorie
baza baza registru de baza
adresa referita dep deplasament
program n raport cu B
sup sup registru marginit
(lim. superioara)
Pentru relocarea dinamica a memoriei si partajarea mai multor procese
se utilizeaza dispozitivele urmatoare:
a) registru de baza;
20
b) registru marginit;
c) dispozitiv de calcul al adresei efective pentru orice referinta la
memorie;
d) dispozitiv de verificare a apartenentei adresei efective la zona de
memorie a procesului.
Datorita acestor dispozitive, SO poate decide deplasarea unui program si
poate efectua din cnd n cnd o reasezare a memoriei. Procesele care devin
temporar inactive pot fi puse n asteptare pe disc si nlocuite n memorie de
alte procese (swapping).
Principalele limite ale acestei tehnici sunt:
a) timp deloc neglijabil petrecut cu reasezarea;
b) necesitatea alocarii de spatiu contiguu de memorie.
n evolutia conceptuala a sistemelor de gestiune a memoriei, etapa
urmatoare consta n a cauta metode de fragmentare a programelor si
memoriei, astfel nct un program sa poata fi ncarcat n zone necontigue de
memorie.
Segmentarea
Segmentarea consta n divizarea unui program n module sau segmente,
fiecare segment corespunznd unei entitati logice cum ar fi o procedura sau
un bloc de date, independenta de alte segmente.
Sistemul de operare se ocupa de plasarea n memorie a segmentelor
necesare executiei programelor gata sa utilizeze CPU. Sistemul de operare
trebuie sa stie unde sunt stocate diferitele segmente, si pentru aceasta el
organizeaza si gestioneaza un ansamblu de tabele de segmente, cte o
tabela pentru fiecare program, continnd adresele de ncarcare ale
segmentelor programului respectiv.
Adresa este structurata si contine 2 cmpuri:
a) numarul segmentului;
b) deplasamentul n cadrul segmentului.
Calculul adresei efective este realizat ca de obicei cu ajutorul unui
dispozitiv special, adaugnd offsetul adresei de ncarcare a segmentului care
este stocat n tabele de segmente.
Protectia poate fi asigurata la nivelul tabelei de segmente adaugndu -
i talia fiecarui segment sau ultima adresa a segmentului.
21
Memorie
Spatiul de memorie Tabela de
al programului segmente 50K
(n memorie)
70K
0
Segment 1 Numar Pozitie 95K
20
1 50K
0 120K
Segment 2
25 2 95K 130K
0 145K
Segment 3 3 130K
15 155K
0 4 155K 165K
Segment 4
10
Notiunea de memorie virtuala
Ideea de memorie virtuala este simpla, eleganta si consta n a trata
diferentiat adresele referite prin program (adrese virtuale) si adresele
memoriei fizice (adrese reale).
Multimea adreselor virtuale este independenta de implementarea
programului n memoria fizica, este vorba deci de un spatiu de memorie
virtual (care nu exista), dar poate fi utilizat de catre programator ca model
de memorie centrala la dispozitia sa.
Totul se petrece ca si cnd utilizatorul ar avea acces la o memorie avnd
2n locatii, n fiind numarul de biti pentru adresele programului.
Acest numar n poate fi mult mai mare dect numarul m care reprezinta
talia memoriei fizice. O tabela de corespondenta numita tabela de pagini
sau topografie de memorie, gestionata de catre sistemul de operare pune n
corespondenta cele doua spatii de adrese, iar un dispozitiv special asigura
transformarea unei adrese virtuale n adresa fizica.
22
Spatiul virtual de adrese, care rezulta de regula din linkeditarea
programului este gestionat de sistemul de operare, care este obligat sa
utilizeze memorii auxiliare (discuri, tambururi, memorii de sprijin etc), ca
extensii ale memoriei centrale.
Conceptul de memorie virtuala dezvoltat n perioada anilor '60 a facut
obiectul mai multor proiecte de cercetare, iar cea mai mare parte a
calculatoarele anilor '70 erau dotate cu memorie virtuala.
Realizarea conceptului de memorie virtuala se bazeaza pe tehnica
paginarii.
Paginare
Conceptul de paginare consta n a decupa cele doua spatii de adrese n
pagini de aceeasi talie (1024 sau 2048 cuvinte) si de a evidentia un
mecanism de transfer de pagini ntre memoria virtuala si cea reala.
n orice moment, un program gata de executie va avea plasate n
memorie cteva copii ale paginilor sale virtuale, alese n mod corespunzator
pentru a permite executiei sale sa avanseze.
Sistemul de operare trebuie sa rezolve cteva probleme importante:
a) daca o anumita pagina se gaseste deja n memorie si unde;
b) cum se convertesc adresele virtuale ale programului n adrese reale;
c) ce pagina va fi nlocuita pentru a face loc alteia;
d) cum se poate sti daca pagina evacuata din memorie a fost
modificata si trebuie deci recopiata n memoria auxiliara.
Tabela paginilor
Tabela paginilor constituie mecanismul esential care face sa corespunda
fiecarei pagini virtuale o serie de informatii, actualizate de catre sistem. Un
bit indicator specifica prezenta (sau absenta) paginii n memoria principala.
Daca pagina este n memoria principala, numarul paginii reale este
nscris n tabela.
Un alt bit indica daca pagina a fost modificata n timpul executiei.
Mecanismul de transformare a adreselor este urmatorul: cmpul de
adresa este divizat n doua parti:
a) numarul de pagina, singurul element care se modifica;
b) pozitia n cadrul paginii.
Tabela paginilor contine de asemenea biti de protectie specificnd un
anumit nivel al protectiei (protejare n citire, scriere, executie etc.).
Tabela paginilor ofera de asemenea protectia informatiilor n sensul
apartenentei adreselor la domeniul alocat paginii respective.
23
Paginarea la cerere
Aceasta metoda de gestiune a memoriei consta n ncarcarea unei pagini
din memoria virtuala numai daca ea a fost referita.
Spatiul de lucru
O alternativa a paginarii la cerere consta n a plasa n memorie a unui
mic numar de pagini oportun selectionate, acest ansamblu de pagini
numindu-se spatiu de lucru.
Paginare si segmentare
Anumite arhitecturi permit combinarea segmentarii cu paginarea.
Spatiul adreselor virtuale este segmentat si segmentele sunt decupate n
pagini. Structura adresei trebuie sa prevada atunci trei cmpuri:
a) numarul segmentului ;
b) numarul paginii n cadrul segmentului;
c) deplasamentul n pagina.
Segmentarea fiind o divizare logica a spatiului de adrese al programului,
este sarcina programatorului sa defineasca segmentele. Paginarea este
realizata prin intermediul hardware-ului si a sistemului de operare, ea este
deci transparenta pentru utilizator.
Paginarea sistemului de operare
Sistemul de operare este un program chiar daca el nu este chiar ca toate
celelalte (instructiuni privilegiate, mod supervizor etc.), iar cea mai mare
parte a sistemului de operare este supusa paginarii, deoarece, datorita taliei
sale el nu poate fi stocat n ntregime n memoria principala. Fac exceptie de
la aceasta regula nucleul si o parte a programelor de gestiune a memoriei si
intrarile/iesirile.
Programele de serviciu sunt de asemenea paginate. Ca regula generala,
programele care se executa ntr-un sistem multiprogramat modern nu au
dect cteva pagini n memoria centrala.
Tendintele actuale sunt pe de o parte de a trata majoritatea functiunilor
sistemului de operare ca procese utilizator si pe de alta parte de a profita de
microelectronica si de a ncredinta hardware-ului sau microprogramarii
sarcinile frecvente.
Organizarea intrarilor/iesirilor
Intrarile/iesirile constituie domeniul cel mai delicat n conceptia si
realizarea unui sistem de operare. Importanta lor este fundamentala, dar
24
orice generalizare devine dificila prin varietatea unitatilor periferice si a
procedurilor de intrare/iesire utilizate n sistemele de calcul actuale.
Dificultatile se refera att la aspectele materiale ct mai ales la
necesitatea de a asigura o gestiune optimala a resurselor sistemului precum
si simplificarea sarcinii utilizatorilor acestuia.
Iata cteva aspecte ale problemelor care se ridica:
a) diversitatea functionala a unitatilor periferice: imprimante laser,
unitati de discuri magnetice si optice, cartuse magnetice etc.
b) diferenta de viteza ntre unitatile periferice: de la cteva
caractere pe secunda ale tastaturii sau terminalului, la cteva
milioane de caractere ntr-o secunda pentru o unitate de discuri;
c) diversitatea de codificare si structurare a informatiilor
transferate: ASCII, EBCDIC, binar, cuvinte, octeti, blocuri;
d) diferenta ntre metodele de acces ale unitatilor: acces secvential
sau aleator, adresaj complet diferit pentru unitatile de banda, discuri
sau mari memorii de arhivare;
e) diferenta ntre conditiile de partajare a perifericelor: o unitate
de discuri sau ecranul terminalului pot fi utilizate n acelasi timp de
catre mai multe procese, n timp ce o imprimanta nu poate fi
partajata dect n timp si numai pentru job-uri ntregi;
f) marea diversitate a conditiilor de eroare: eroare de paritate,
imprimanta fara hrtie, eroare de pozitionare a unui cap de
citire/scriere pe disc, unitate deconectata, eroare de adresare etc.;
g) complexitatea sistemelor de legatura ntre periferice si unitatea
centrala: DMA, canale, bus, unitati de comanda, unitati de
telecomunicatii etc.;
h) gradul nalt de paralelism al operatiilor;
i) necesitatea protejarii utilizatorilor: "ascunderea" anumitor detalii
legate de operatiile de intrare/iesire;
j) necesitatea de a asigura independenta programelor fata de tipul
perifericelor utilizate.
Pentru rezolvarea acestor probleme, sistemul de operare ncearca sa
trateze toate perifericele de o maniera uniforma (periferice virtuale,
codificare interna a caracterelor etc.), ncredintnd toate prelucrarile
particulare modulelor specializate, numite gestionari de unitati periferce
|device handlers, drivers|.
Ca structura interna, acest nivel al sistemului de operare care se ocupa
cu gestiunea intrarilor/iesirilor, se poate detalia pe subnivele, astfel:
25
a) proceduri standard (programe de biblioteca) utilizate de catre
aplicatii si continnd cereri catre supervizor;
b) un software de intrare/iesire independent de unitatile periferice;
c) drivere, comandnd fiecare unitate n detaliu;
d) programe de serviciu ale ntreruperilor, actionnd n colaborare
cu functiunile nucleului.
Utilizatorul dispune de un set de instructiuni de intrare/iesire virtuale,
spre deosebire de instructiunile de intrare/iesire n cod masina, specifice
sistemului de operare.
Instructiunile de intrare/iesire virtuale se prezinta ntr-un limbaj de
programare evoluat sub forma unui apel de procedura sistem (read, write,
print etc), cu argumentele necesare de apel (nume variabile sau fisier, talie,
format, unitate logica etc.).
Aceste instructiuni sun nlocuite prin procedurile sistem corespunzatoare
n timpul fazei de compilare.
Exista de asemenea probleme de protectie la nivelul intrarilor/iesirilor.
n acest context, sistemul de operare verifica corectitudinea convertirii
adreselor virtuale n adrese reale n momentul initializarii, mpiedicnd
modificarea acestora naintea terminarii operatiei de intrare/iesire.
Fisiere si gestiunea fisierelor. SGF.
Gestiunea fisierelor este serviciul cel mai vizibil oferit utilizatorului de
catre un sistemul de operare. Cea mai interesanta situatie apare atunci cnd
memorarea se face pe suport magnetic, cu accent pe suportul disc, cel mai
convenabil tip de suport magnetic.
Gestiunea fisierelor privita de utilizator
Un volum poate fi o rola de banda, un ansamblu formnd un disc de
masa, un disc cartus, un disc flexibil (discheta).
n cadrul unui volum, informatiile sunt grupate de catre SO la indicatia
utilizatorului n ansambluri distincte numite fisiere.
Utilizatorul are acces prin programele sale la o (mica) entitate din cadrul
unui fisier, cunoscuta sub numele de articol. Putem spune ca un articol este
o subdiviziune a unui fisier care are un nteles de sine statator.
Informatiile dintr-un articol sunt de regula grupate n subdiviziuni
numite cmpuri sau atribute. Fiecare cmp sau atribut are n fisier o
anumita valoare. O pereche (atribut, valoare) o vom numi cheie. O cheie
unica se numeste index de articol.
26
Lungimea de reprezentare a unui articol poate fi constanta pentru toate
articolele sau poate sa varieze de la un articol la altul, deci putem avea
articole de format fix sau variabil.
Sistemul de gestiune a fisierelor (SGF) este un ansamblu de rutine de
legatura ntre utilizatori si componenta sistemului de intrare/iesire la nivel
fizic pentru operarea cu fisiere. Utilizatorul dipune de o serie de operatii
primitive pe care le poate solicita SGF-ului pentru serviciile dorite.
Conceptul de fisier abstract
Se poate defini un fisier ca o functie f: N T, unde N este multimea
numerelor naturale iar T multimea valorilor posibile pentru un tip de data
deja definit. Pentru tipurile de date obisnuite (integer, char, real) avem dea
face cu un fisier obisnuit.
Prin f (i) notam multimea valorilor cmpurilor articolului al i-lea din
fisier.
Daca tipul de data este la rndul sau un tip fisier, avem de-a face cu o
baza de date.
Principalele operatii asupra unui fisier notat f, presupunnd ca naintea
efectuarii operatiei, fisierul are n articole, sunt urmatoarele:
a) Citirea |Read|articolului k nseamna obtinerea valorii f (k);
b) Scrierea |Write|nseamna adaugarea unui nou articol la fisier. Deci
fisierul f cu n articole se transforma n fisierul f' cu n +1 articole
definite astfel:
f' (i) = f (i) , i e{1, 2, ..., n};
f' (n + 1) = x, unde x este valoarea articolului adaugat.
c) Inserarea |Insert|unui nou articol cu valoarea x, dupa articolul cu
numarul de ordine k nseamna obtinerea unui nou fisier f' cu n+1
articole:
f' (i) = f (i) , i e{1, 2, ..., k};
f' (k + 1) = x;
f' (i + 1) = f (i) , i e{k+1, ..., n}.
Se observa ca scrierea este echivalenta cu inserarea la sfrsitul
fisierului iar inserarea dupa pozitia 0 nseamna adaugare la
nceputul fisierului.
d) }tergerea |Delete|articolului k nseamna obtinerea unui nou fisier
f':
f' (i) = f (i) , i e{1, 2, ..., k - 1};
27
f' (i - 1) = f (i) , i e{k+1, ..., n}.
e) Modificarea |Modify, Update, Replace|articolului k cu un altul
de valoare x nseamna obtinerea fisierului f' cu n articole, astfel:
f' (i) = f (i) , i e{1, 2, ..., k - 1};
f' (k) = x;
f' (i) = f (i) , i e{k+1, ..., n}.
Tipuri de acces la articole
a) Accesul secvential la un articol f (i) presupune i - 1 accese n
ordine, la articolele cu numerele de ordine 1, 2, ..., i - 1.
b) Accesul direct |random access|presupune existenta unui mecanism
de obtinere a articolului cautat fara a parcurge secvential toate
articolele care-l preced. Mecanismul de acces este de doua feluri:
-acesul direct prin numar de pozitie (adresa) are loc atunci
cnd i se furnizeaza SGF-ului o valoare i si acesta returneaza
f (i) (acces relativ);
-prin continut, are loc atunci cnd i se furnizeaza SGF-ului o
cheie (a, v) si acesta returneaza acel articol i pentru care f
(i). a = v.
Clasificarea fisierelor
a) Dupa lungimea unui aricol:
fisiere cu articole de format fix;
fisiere cu articole de format variabil.
b) Dupa posibilitatea de afisare sau tiparire:
-fisiere text al caror continut poate fi afisat pe ecran sau la
imprimanta;
-fisiere binare, formate din siruri de octeti consecutivi, fara
nici-o semnificatie pentru afisare.
c) Dupa suportul pe care este rezident fisierul
-fisiere pe disc magnetic;
-fisiere pe banda magnetica;
-fisiere pe imprimanta;
-fisiere tastatura;
28
-fisiere pe ecran;
-fisiere pe plotter, digitizor;
-fisiere pe cartele perforate;
-fisiere pe banda de hrtie perforata.
d) Dupa modurile de acces
-fisiere secventiale;
-fisiere n acces direct:
i) acces direct prin adresa;
ii) acces direct prin continut:
-secvential-indexat;
-selectiv;
-multilista;
-B - arbore;
Referirea unui fisier
Utilizatorul se refera la un fisier n conformitate cu anumite reguli
sintactice impuse de catre SO. n general, referirea la un fisier se face
printr-un sir de caractere, diferite de spatiu. }irul de referinta contine 5
zone, plasate de la stnga la dreapta, astfel:
Periferic : Cale Nume . Tip ; Versiune
Periferic indica numele perifericului suport al fisierului, impus de
sistemul de operare.
Cale desemneaza subdirectorul din cadrul discului unde se afla fisierul
cautat.
Nume este o succesiune de litere si cifre date de creatorul fisierului.
Tip sau extensie a numelui este data tot de utilizator si ea reflecta
continutul fisierului.
Versiune este o notiune specifica unui anumit SO si diferentiaza mai
multe versiuni ale aceluiasi fisier.
Actiunile SGF la nivel de articol
a) citire pentru suporturile disc, banda magnetica, cartele, tastatura;
b) scriere pentru suporturile disc, banda magnetica, ecran,
imprimanta, plotter;
c) inserare, stergere, modificare, pentru suporturile de tip disc.
29
Actiunile SGF la nivel de fisier
a) functiile de deschidere si nchidere (open, close). Open este
operatia de deschidere si contine actiunile SGF efectuate naintea
primului acces la fisier, iar close (nchidere) dupa ultimul acces.
b) alte operatii globale:
-crearea unui fisier;
-stergerea unui fisier;
-copierea unui fisier n alt fisier;
-schimbarea numelui unui fisier (redenumire, mutare);
-listarea unui fisier;
-concatenarea mai multor fisiere;
-compararea a doua fisiere;
-fuzionarea a doua sau mai multe fisiere;
-sortarea (ordonarea) articolelor unui fisier;
-operatii de filtrare a unui fisier.
Descriptorul de fisier este un articol special care contine informatiile
de descriere ale unui fisier. Locul sau de memorare este n directorul
fisierului. Apar patru grupe de informatii:
a) identificarea fisierului (N, I), unde N este numele simbolic al
fisierului (specificatorul de fisier fara periferic), iar I este un numar
prin care descriptorul este reperat pe disc) n mod direct;
b) adresele fizice ocupate de fisier;
c) controlul accesului la fisier;
d) informatii de organizare calendaristice.
Pentru controlul accesului la fisiere se foloseste matricea de control
unde a (i, j)=1 daca utilizatorul i are drept de acces la fisierul j, si 0 n rest.
Clase de utilizatori:
a) proprietar: cel care creaza fisierul si stabileste drepturi de acces la
fisier;
b) utilizatori specificati: nominalizati de proprietar, cu statut special
n raport cu fisierul;
c) grup sau proiect: care pot folosi mpreuna un fisier;
d) public: restul utilizatorilor.
Moduri de organizare a fisierelor
a) organizare secventiala;
30
b) fisiere n acces direct prin pozitie;
c) fisiere n acces direct prin continut;
d) fisiere inverse: pe lnga fisierul de baza se creaza automat un fisier
invers care contine pentru fiecare cheie specificata, adresele disc la
care se afla articolele care contin cheia respectiva. Daca n1, n2, ..., np
sunt numerele de articole care contin cheile 1, 2, ..., p, iar a ij adresa
articolului j cu cheia i, atunci, daca j =k, aij =aik i.
e) fisiere multilista: se definesc atribute si valori cheie. SGF ataseaza
fiecarei chei un pointer catre articolul urmator care contine aceeasi
cheie. Exista attea liste cte chei sunt. Fiecare articol participa la c
liste, unde c este numarul de scrieri ale articolului, adica numarul de
aparitii ale valorii unei chei. Se creaza o zona cu cheile fisierului si
adresele primelor articole (fisierul director). Avem ca :
daca j =k atunci aij =aik i;
daca i =k atunci aij =akj , care apare de c ori.
f) fisiere secvential-indexate: articolele sunt scrise pe suport n
acces secvential si plasate n ordinea crescatoare a valorilor
indexului, rezulta ca se creaza o tabela de indecsi care are o parte
principala si o parte de depasire. Exista trei nivele pentru
tabelele de indecsi:
nivelul 3: fisier: numarul intrarilor este egal cu cel al
volumelor;
nivelul 2: volum: numarul intrarilor este egal cu numarul
cilindrilor din cadrul volumului;
nivelul 1: cilindru, contine attea intrari cte pagini sunt n
cilindrul respectiv.
g) fisiere selective: au functia de regasire materializata printr-un
calcul al CPU, numita functie de randomizare f : {multimea
valorilor posibile pentru index}{0, 1, ..., n - 1} Articolele care
au aceeasi valoare pentru functie se numesc sinonime.
h) fisiere organizate n B - arbori regulari. Fiecare nod este prevazut
cu m casute (pentru m chei unice). n fiecare nod pot fi maxim m si
minim m div 2 chei. nainte de prima cheie, ntre 2 chei si dupa
ultima cheie sunt pointeri spre noduri subordonate.
Actiunile SGF la nivel de suport disc
SGF are trei sarcini principale:
a) sistem de regasire a fisierelor pe disc;
31
b) evidenta spatiului neutilizat pe disc;
c) utilizarea acestui spatiu pentru crearea sau extinderea fisierelor.
Sisteme de cataloage (directoare)
Sunt tabele care contin fisierele existente si informatii necesare
accesului la aceste fisiere. Fiecare intrare n director contine un descriptor
de fisier. Principalele operatii asupra cataloagelor sunt urmatoarele: cautare,
inserare, stergere, listare, salvare/restaurare etc.
Integritatea informatiilor
Deoarece utilizatorul depinde de sistemul de fisiere pentru tot ceea ce
vizeaza aspecte legate de lucrul cu datele sale, este esential ca sistemul sa
fie dotat cu mecanisme de salvare a informatiilor permitnd eventual
reconstituirea fisierelor pierdute ntr-un accident software sau hardware.
Printre metodele comune utilizate n acest sens, sunt urmatoarele:
a) salvare completa |backup|, care permite recopierea pe banda
magnetica a fisierelor disc, o data la doua sau trei zile. n caz de
accident, se pot reconstitui fisierele care existau n momentul
ultimului backup;
b) salvare incrementala, care permite recopierea doar a informatiilor
modificate dupa ultimul backup. Aceasta abordare permite
reducerea frecventei backup-urilor masive (de exemplu, o data pe
saptamna sau pe luna). n cazul reconstructiei fisierelor,
procedurile de lucru sunt mai complexe;
c) dublarea sistematica a fisierelor disc, care consta n a pastra
ntotdeauna doua copii ale fiecarui fisier pe doua unitati de disc
diferite. Aceasta metoda necesita mai putine interventii din partea
operatorilor, dar implica dublarea spatiului disc disponibil.
Servere de fisiere
O abordare moderna a gestiunii fisierelor, foarte la moda datorita
avntului informaticii distribuite, consta n a ncredinta unui calculator
independent ntreaga gestiune a fisierelor specifice unei comunitati de
utilizatori conectati la o retea locala. Un astfel de calculator se numeste
server de fisiere. n aceasta arhitectura, partea majora a spatiului disc este
concentrata n jurul serverului, celelalte calculatoare din retea nu au nevoie
de capacitate disc locala pentru fisierele lor.
O alta realizare recenta, datorata integrarii tot mai pronuntate a
calculatoarelor si a retelelor este aceea a dispersate ntr-o retea. Utilizatorul
unui astfel de sistem nu stie si nu are nevoie sa stie n care calculator sunt
32
stocate fisierele sale. n momentul n care o cerere de acces este adresata
sistemului de fisiere, acesta determina pozitia fisierului cautat si, utiliznd
serviciile retelei, pune la dispozitia solicitantului o copie a fisierului
respectiv.
Alocarea resurselor
ntr-un mod general, definim o resursa ca fiind un element necesar unui
procesor pentru a asigura executia sa n bune conditiuni.
Resursele materiale ale unui sistem de calcul (CPU, memorii,
dispozitive de intrare/iesire etc.), sunt disponibile n cantitate limitata si
trebuie sa fie partajate ntre diferite procese.
Produsele software si fisierele, daca pot fi partajate, fac de asemenea
parte dintre resursele pe care sistemul trebuie sa le gestioneze.
Mecanismele de alocare ale unei resurse particulare sunt realizate pe
diferitele nivele ale sistemului de operare. De exemplu, dispecerul decide
daca alocarea CPU si alocarea unui fisier al unui proces este implementata
la nivelul gestiunii fisierelor.
Strategia de repartizare si de alocare a resurselor trebuie sa fie
determinata global, pentru tot sistemul. La nivelul sistemului, se iau decizii
n legatura cu planificarea globala a activitatii, se decide, de exemplu,
crearea de noi procese, sau asteptarea, pe baza resurselor disponibile,
nivelul de prioritate al unui job.
Obiectivele acestui nivel al sistemului pot fi rezumate astfel:
a) asigurarea unei bune utilizari a resurselor: contabilizarea si
furnizarea de statistici asupra resurselor principale;
b) crearea de noi procese si atribuirea unui nivel de prioritate
corespunzator: se permite fiecarui proces existent n sistem sa
obtina resursele necesare n limite de timp rezonabile;
c) excluderea mutuala a proceselor care solicita aceeasi resursa
nepartajabila si si evitarea situatiilor de blocare (asteptare fara
sfrsit a unei resurse de catre mai multe procese).
Procesul sistem care se ocupa de toate aceste probleme se numeste
planificator |scheduler|. Planificatorul determina ordinea de executie a joburilor
lansate de utilizatori, el alege momentul pentru lansarea unei executii
si refuza accesul unui utilizator interactiv daca numarul de utilizatori
conectati poate conduce la o degradare inacceptabila a timpului de raspuns.
Scopul planificatorului este de a asigura o exploatare echilibrata si n
consecinta un serviciu satisfacator pentru toti utilizatorii.
33
Interfata utilizator-sistem
Interfata ntre utilizator si sistemul de operare se efectueaza prin
intermediul unui limbaj, numit limbaj de comanda. Natura acestui limbaj
depinde de sistemul considerat.
Sistemele batch sunt dotate cu un limbaj relativ suplu si puternic,
permitnd utilizatorului sa specifice n avans succesiunea prelucrarilor de
realizat, tinnd cont de toate alternativele posibile.
Sistemele interactive ofera interfete mai simple prin care utilizatorul
poate urmari derularea job-ului sau si decide succesiunea operatiilor pe
masura ce se prezinta situatiile posibile.
n majoritatea sistemelor actuale, modurile de lucru batch si multiacces
coexista, iar limbajul de comanda este adaptat n mod corespunzator.
Tendinta actuala este de a simplifica sarcina utilizatorului, propunndu-i
un repertoar de comenzi usor de utilizat. Aceste comenzi se exprima sub
forma cuvintelor cheie (Login, Logout, Edit, Fortran, Run, File, Copy,
Help etc.), urmate de anumiti parametri. Este de asemenea normala
procedura de lucru prin care se realizeaza prescurtarea comenzilor (de
exemplu, fl n loc de file list) sau regruparea acestora n fisiere executabile,
un fel de macro-comenzi, de exemplu, se poate nlocui secventa Compile,
Link, Load, Run prin procedura Execute.
Directivele pe care utilizatorul le furnizeaza sistemului cu ajutorul
limbajului de comanda sunt interpretate de catre interpretorul de comenzi
|command interpreter|. Acesta citeste comenzile provenind de la terminal si
dupa interpretarea acestora realizeaza serviciile solicitate. Datorita
dialogului, sistemul trebuie sa semnaleze faptul ca el "asculta" si este gata
sa primeasca instructiunile utilizatorului, raspunznd comenzilor si
comunicnd disponibilitatea sa prin afisarea pe ecran a unui caracter special
|prompt|, invitnd utilizatorul de a formula noi cereri.
Comenzile trimise catre sistem sunt o forma de cereri la supervizor
|sistem calls|, cu deosebirea ca, n loc sa provina dintr-un program sau
dintr-o procedura de biblioteca, aceste comenzi sunt comunicate direct
sistemului de catre utilizator.
Majoritatea limbajelor de comanda reflecta structura interna a sistemului
de operare, neputnd fi schimbate dect cu mare greutate. Totusi, n cazul
sistemului Unix, interpretorul de comenzi, numit shell, poate fi modificat
sau chiar nlocuit de catre utilizator, care poate sa comunice astfel cu
sistemul ntr-un limbaj convenabil ales.
34
Shell-ul interpreteaza comenzile provenind de la un terminal sau de la
un fisier |shell script|si poseda structuri de control puternice, permitnd
executia conditionata sau repetata a unei succesiuni de comenzi.
Cu abordarea shell, este usor de a combina proceduri existente si diverse
elemente de programare; adesea se utilizeaza shell-ul pentru a se evita
scrierea de noi programe.
Interfata utilizator grafica
Pna la debutul anilor '80, toate interfetele utilizator erau bazate pe
limbaje de comanda ca shell-ul sistemului Unix. Pentru fiecare actiune de
efectuat, utilizatorul trebuia sa cunoasca si sa tasteze numele comenzii.
n laboratoarele Xerox Park, a fost elaborat un nou tip de interfata, si
anume interfata grafica |GUI: Graphical User Interface|, bazata pe
utilizarea unui ecran grafic n locul unui ecran alfanumeric.
Au aparut noi concepte, principalele fiind acelea de ferestre, pictograme,
meniuri care defileaza, mouse etc.
Acest tip de interfata a devenit la moda prin intermediul familiei
Macintosh elaborata de firma Apple.
La ora actuala, majoritatea sistemelor de calcul utilizeaza interfete
utilizator grafice.
Introducerea grafismului n interfetele utilizator a revolutionat lumea
informaticii, n principal prin aceea ca permite publicului larg sa utilizeze
calculatoarele prin imagine, fara a cunoaste un jargon specific.
Dupa revolutia imaginii se estimeaza ca va veni revolutia sunetului,
recunoasterea vocala din cadrul interfetelor om -masina.
1
8 SISTEMELE DE OPERARE ACTUALE
Sistemele de operare se clasifica n doua categorii:
a) sisteme proprietare, care sunt sisteme specifice unei masini sau
unei game de masini ale unui anumit constructor, ca de exemplu
VMS, elaborat de firma DEC pentru gama VAX, MS-DOS, pentru
microcalculatoare bazate pe microprocesoare Intel, VM, pentru
calculatoare IBM, MACOS pentru Macintosh al firmei Apple etc.
b) sisteme deschise, care sunt sisteme portabile pe diverse masini.
Sistemul Unix este exemplul tipic al unui sistem deschis, el a fost
implementat pe masini dintre cele mai diverse, de la
microcalculatoare si pna la supercalculatoare.
Sistemele proprietare au tendinta sa dispara n beneficiul sistemelor
deschise standard.
O noua generatie de sisteme de operare deschise se dezvolta la ora
actuala, (ca de exemplu, sistemul Windows NT al firmei MicroSoft) sisteme
deschise care functioneaza n regim de multiprogramare, multiutilizator, cu
o interfata grafica, si care integreaza multiple posibilitati de lucru n retea.
8.1 Sistemul DOS
DOS |Disk Operating System|este un sistem de operare care cuprinde
programe de interfata ntre utilizator si sistemul de calcul stocate pe disc
magnetic.
Structura sistemului de operare DOS este urmatoarea:
a) Componenta ROM-BIOS este livrata de catre firma producatoare a
sistemului de calcul si are rolul de a egaliza toate diferentele
constructive ale sistemelor de calcul fata de conventiile DOS, deci
calculatoarele sunt compatibile. ROM-BIOS ofera rutine de
ntrerupere prin care se realizeaza legatura cu toate unitatile
periferice conectate la sistem;
b) Componenta DISK-BIOS, este independenta de hardware-ul
sistemului de calcul si ea extinde functiile ROM-BIOS. Aceasta
componenta este materializata printr-un fisier disc care, n functie
de versiunea sistemului de operare poate avea unul dintre numele:
IBMBIO.COM, BIO.COM, IO.SYS, si este rezidenta pe discheta
sau discul Wincester de pe care se ncarca sistemul. Functiile BIOS
care vizeaza a) si b) au n vedere urmatoarele sarcini:
2
-ncarcare sistem de operare;
-determinarea si testarea echipamentelor periferice;
-testarea memoriei RAM;
-functii de baza asupra ecranului video;
-functii elementare de citire a tastaturii;
-functii elementare de lucru cu dischetele sau cu hard-discul;
-functii de lucru cu caseta magnetica;
-functii de lucru cu liniile de comunicatie asincrona
(imprimanta, scanner, plotter etc.);
Pentru lucrul cu discul, BIOS opereaza cu cilindri, piste si sectoare.
c) Componenta BDOS extinde functiile BIOS la un nivel mai nalt, n
special catre lucrul cu discurile. Aceasta componenta este
materializata printr-un fisier disc care, n functie de versiunea
sistemului de operare poate avea unul dintre numele:
IBMDOS.COM, DOS.COM, MSDOS.SYS, si este rezidenta pe
discheta sau discul Wincester de pe care se ncarca sistemul. Cele
mai importante sarcini BDOS sunt urmatoarele:
-gestiunea memoriei: alocarea si eliberarea spatiului de
memorie necesar programelor;
-gestiunea proceselor (programelor);
-executia operatiilor de intrare/iesire cu periferice de tip
caracter;
-tratarea fisierelor disc: creare, deschidere, nchidere, accesare,
stergere;
-partajarea fisierelor ntre mai multe procese active la un
moment dat;
-gestiunea structurii arborescente a fisierelor si manipularea
directoarelor ;
-gestiunea retelelor de calculatoare;
-modificari ale sistemului de ntrerupere;
-gestiunea ceasului intern si a calendarului.
d) Componenta COMMAND are ca sarcina principala preluarea
comenzilor formulate de utilizator de la tastatura si lansarea lor n
executie. Aceasta componenta este materializata prin fisierul disc
COMMAND.COM. Comenzile DOS sunt de doua tipuri:
-comenzi interne, nglobate n COMMAND si ncarcate
permanent n memorie. De regula, acestea sunt comenzi mai
3
simple si de prima utilitate: rezumate de disc, copieri de fisiere
etc.
-comenzi externe, rezidente pe disc sub forma unor programe
executabile sau sub forma unor fisiere de comenzi (fisiere text
n care sunt apelate alte comenzi DOS). De regula, comenzile
externe sunt mai complexe dect cele interne.
n timpul introducerii comenzilor, DOS recunoaste o serie de functii de
control, din care amintim cteva:
-<CTRL/C> sau <CTRL/Break>: abandoneaza linia de comanda;
-<F3>: copiaza pe ecran ultima linie introdusa;
-<CTRL/P>: trimite n ecou iesirea pe ecran si imprimanta;
-<CTRL/N>: anuleaza efectul lui <CTRL/P>;
-<CTRL/S>: opreste temporar defilarea ecranului, repornirea se
realizeaza prin apasarea oricarei taste cu exceptia <CTRL/C>;
-<F6> sau <CTRL/Z>: insereaza marcator de sfrsit fisier;
-<F1>: copiaza un caracter din sablon si l afiseaza;
-<F2>: copiaza toate caracterele care preced un caracter specificat.
Generarea sistemului de operare DOS pe o discheta sau pe un harddisc
se realizeaza prin intermediul unor comenzi standard, stergnd toate
informatiile vechi de pe discul respectiv. Etapele generarii unui disc DOS
sunt urmatoarele:
a) Partajarea hard-discului: mpartirea n una pna la patru zone
contigue numite partitii. n acest fel, n loc de un singur disc mare,
DOS "vede" mai multe discuri mici. Operatia de partajare se
realizeaza cu ajutorul programului FDISK, care printr-un dialog cu
utilizatorul realizeaza partitionarea la dimensiunile dorite;
b) Formatarea discului. Comanda DOS FORMAT realizeaza
formatarea discului (mpartire n cilindri, piste, sectoare) si
verificarea sectoarelor sale. Tot prin aceasta comanda se creaza
discul sistem DOS (optiunea /S), iar ca efect, pe discul respectiv se
realizeaza urmatoarele:
n sectorul 0 se pune programul bootstrap de ncarcare a
sistemului de operare;
se depun pe disc fisierele IBMBIO.COM, IBMDOS.COM si
COMMAND.COM;
n restul sectoarelor se pune valoarea 0.
4
Daca s-a procedat la partajarea hard-discului este necesara
formatarea tuturor unitatilor de disc logic care au ca suport fizic
discul partajat. Este suficienta formatarea cu optiunea "/S" numai a
uneia dintre partitii (cea care este declarata activa prin FDISK);
c) Crearea fisierului de configurare. La fiecare lansare a sistemului
se executa o operatie de configurare prin care se fixeaza valorile
unor parametri sistem, cum ar fi:
-numarul fisierelor deschise simultan;
-numarul zonelor tampon pentru operatiile de intrare/iesire;
-numarul si dimensiunea stivelor;
-conditia de sesizare a tastarii <CTRL/Break>;
-conventiile de tara, timp, moneda;
-precizarea unor noi drivere de intrare/iesire;
Acesti parametri sunt precizati prin intermediul unui fisier text
numit CONFIG.SYS. Daca fisierul nu este prezent pe disc, atunci
DOS atribuie acestor parametri niste valori implicite, care depind de
tipul sistemului de calcul. De obicei, continutul acestui fisier este
stabilit la generare n functie de configuratia hardware si de
aplicatiile care vor fi rulate pe sistemul respectiv. Fisierul se creaza
simplu, cu ajutorul unui editor de texte, eventual el poate fi pregatit
dinainte, urmnd a fi copiat pe noul disc;
d) Crearea fisierului de comenzi initiale. n momentul lansarii
sistemului, dupa fixarea parametrilor de configurare si dupa
ncarcarea interpretorului de comenzi, DOS cauta pe disc un fisier
cu numele AUTOEXEC.BAT. Acesta este un fisier text n care
utilzatorul trece toate comenzile DOS care se doresc a fi executate
la lansarea sistemului. De obicei, aceste comenzi se refera la:
-fixarea de catre utilizator a datei si orei exacte de pornire;
-fixarea modului de afisare a prompterului de invitare la
comenzi;
-precizarea directoarelor de pe disc unde DOS cauta comenzile
externe.
La fel ca si CONFIG.SYS, fisierul AUTOEXEC.BAT poate fi
pregatit (eventual n avans) folosind un editor de texte.
e) Copierea fisierelor dorite pe discul sistem. Se realizeaza cu
comanda XCOPY.
Sistemul DOS dispune de comanda interna SELECT destinata realizarii
automate a ultimelor 3 etape.
5
Organizarea si specificarea fisierelor DOS
Sistemul de operare DOS, ncepnd cu versiunea 2.0 adopta un sistem
de fisiere organizat arborescent. n forma cea mai simpla, un fisier obisnuit
se specifica astfel: nume. tip, unde nume are maximum 8 caractere, iar tip
are maximum 3 caractere.
Fisierele speciale DOS au nume predefinite, care nu pot fi utilizate ca
nume pentru fisierele obisnuite. Numele rezervate sunt:
-CON desemneaza tastatura, daca este folosit ca fisier de intrare,
respectiv ecranul terminalului, daca este folosit ca fisier de iesire;
-PRN (avnd ca sinonim LPT1), LPT2, LPT3 desemneaza una dintre
imprimantele paralele;
-AUX (avnd ca sinonim COM1), COM2, COM3 si COM4
desemneaza unul dintre adaptoarele de comunicatii asincrone);
-NUL este numele unui fisier (echipament) fictiv. Folosit ca fisier de
intrare genereaza imediat pentru sistemul de gestiune a fisierelor
marcatorul de sfrsit de fisier, iar folosit ca fisier de iesire,
informatiile "scrise" n el nu sunt de fapt depuse nicaieri.
n forma cea mai generala, un fisier pe suport disc se specifica prin cele
patru zone, adica: aperiferics acales nume a.tips, unde:
perferic se va specifica printr-o litera urmata obligatoriu de ":".
DOS poate avea maximum 26 de periferice de tip disc notate cu
literele alfabetului, ncepnd cu A. n mod obligatoriu literele A: si
B: desemneaza dischete. Daca sistemul de calcul dispune de hard
disc el (primul dintre ele) va fi notat cu C:, apoi pot urma si alte
periferice de tip disc. Daca lipseste specificarea pentru periferic,
sistemul presupune ca este vorba despre perifericul implicit;
cale indica, dupa caz, succesiunea directoarelor de la radacina pna
la fisier (primul simbol din cale este "t") sau de la directorul curent
pna la fisier (cnd cale nu ncepe cu "t"). Separarea directoarelor
DOS se face cu simbolul "t". Daca specificarea de cale lipseste,
atunci sistemul considera ca fisierul face parte din directorul
curent. Sistemul DOS retine cte un director curent pentru fiecare
periferic disc din sistem si de aceea, atunci cnd se trece de la un
periferic la altul fara sa i se indice acestuia calea, sistemul
considera ca este vorba despre directorul curent al perifericului
respectiv.
tip poate lipsi, dar n general se foloseste pentru a indica continutul
fisierului. Cteva tipuri sunt uzuale: BAS, FOR, PAS, C, ASM,
6
OBJ, EXE, COM, BAT, LST, DAT, DOC, TXT, MAP, LIB, TMP,
BAK.
Unele comenzi DOS accepta specificarea generica a unei familii de
fisiere. Aceasta presupune folosirea, numai n zona de nume sau tip
(eventual n ambele) a simbolurilor speciale: "*", care poate substitui un
grup de caractere, sau "?", care poate substitui un caracter pe pozitia pe care
se gaseste.
Iata cteva exemple de nume de fisiere:
PROG.PAS, PROG;
B: ALFA. UNU, B: ALBA. DOI, B: ALGA. COM;
C: t programet pascalt *. PAS
Primele doua fisiere se afla pe perifericul implicit si n directorul curent.
Urmatoarele trei fisiere sunt pe discul B: si n directorul implicit.
Specificarea generica PROG.* include primele doua fisiere. Specificarea
B: AL?A.* contine cele trei fisiere de pe discul B:.
Specificarea C: t programet pascalt *. PAS contine toate textele sursa
Pascal aflate n directorul numit pascal, care este subdirector al directorului
programe, care este subdirector al radacinii discului C:. Daca directorul
curent este t programe, atunci specificarea poate fi facuta si sub forma C:
t pascalt *. PAS.
Structura interna a unui disc DOS
Un sector al unui disc este fie liber, fie ocupat de un fisier anume, fie
contine informatii destinate special sistemului de operare.
n sistemul DOS, unitatea de alocare a spatiului pe disc este cluster-ul.
Un cluster este o succesiune de 1 pna la 8 sectoare vecine, alocate
mpreuna aceluiasi fisier. Dimensiunea unui cluster este o constanta care
depinde de tipul discului si de tipul sistemului de calcul. Valoarea acestei
constante este n cazurile urmatoare:
1 sector / cluster, pentru o discheta simpla fata;
2 sectoare / cluster, pentru o discheta dubla fata;
4 sectoare / cluster, pentru un hard disc al unui IBM PC / AT;
-8 sectoare / cluster, pentru un hard disc al unui IBM PC / XT;
Pentru a vedea modul n care un anumit fisier utilizeaza clusterii unui
disc fizic, este necesar sa parcurgem mai multe etape, care n abordarea top -
down (de sus n jos) ar fi:
a) partitionarea unui hard disc n discuri logice;
b) structura si alocarea spatiului la un disc logic;
7
c) structura si reprezentarea unui director;
d) manipularea fisierelor si articolelor.
Structura si alocarea spatiului la un disc logic
Un disc logic este fie o discheta fizica, fie o partitie de hard disc, fie un
ramdrive (disc simulat n memoria RAM). Un disc logic este mpartit n
patru zone si anume:
a) Zona de boot contine informatii care sunt utilizatecnd se ncarca
sistemul de operare. Aceste informatii sunt dependente de sistem,
dar n mod tipic contin un program de ncarcare;
b) FAT - Tabela de alocare a fisierelor contine informatii cu ajutorul
carora se gestioneaza spatiul pe disc. n FAT este nregistrata starea
zonelor de pe disc divizate n entitati numite clustere. Pentru a
cunoaste lungimea unui cluster indiferent de disc se va specifica
comanda CHKDSK. Alocarea clusterelor se realizeaza prin
intermediul FAT care contine o lista de numere care reprezinta
fiecare cluster alocat pe disc:
-daca intrarea n FAT este 0, atunci clusterul este liber;
daca intrarea n FAT este nenula, atunci este un cluster n
folosinta, iar numarul gasit este utilizat pentru a lega diferite
clustere care alcatuiesc mpreuna fisierul;
c) ROOT directory - directorul radacina, simbolizat prin " t " este
un director n care se memoreaza, pentru fiecare fisier urmatoarele
infirmatii:
-numele si extensia sa;
-data crearii sau a modificarii (vizibile cu comanda DIR);
-numarul de nceput al clusterului (clusterul care contine
prima nregistrare a fisierului);
-atributul fisierului;
d) File - Zona alocata fisierelor contine n prima parte fisierele
sistemului de operare IBMBIO. COM si IBMDOS. COM si n
continuare, fisierele divizate n clustere a caror ordine de legaturi
este pastrata n FAT. Subdirectorii sunt localizati n FAT ca orice
alt fisier, iar atunci cnd se utilizeaza continutul unui subdirector,
acesta actioneaza ca si directorul radacina.
8
Principalele comenzi DOS
Interpretorul de comenzi COMMAND. COM se ncarca n memorie la
pornirea sistemului de operare. El tine evidenta discurilor implicite si a
directoarelor curente de pe fiecare disc si n plus, efectueaza un numar de
comenzi DOS prestabilite.
Comenzile DOS se mpart n doua categorii:
a) comenzi rezidente (interne), sunt comenzile nglobate n
COMMAND. COM;
b) comenzi tranzitorii (externe), sunt cele care solicita existenta pe
disc a unui fisier de tip .COM sau .EXE avnd ca nume numele
comenzii.
O comanda rezidenta se lanseaza astfel: ... > comanda argumente, iar
o comanda rezidenta: ... > comanda ad:s acales argumente.
Ca efect, COMMAND.COM cauta si repereaza pe disc un fisier avnd
unul din numele: comanda.COM, comanda.EXE, comanda.BAT
Daca se specifica "d:", atunci cautarea se face pe discul specificat, n
caz contrar se cauta pe discul implicit.
Daca se specifica "cale", atunci fisierul se cauta n directorul indicat de
cale.
n situatia n care lipseste att specificarea de disc ct si specificarea de
cale, cautarea se face n ordine:
-n directorul curent;
-n directoarele specificate prin comanda PATH.
n cazul n care, n acelasi director este reperat mai mult de un fisier din
cele trei, de exemplu, unul de tip COM si altul de tip BAT, prioritatea la
lansare o are COM, apoi EXE si la urma BAT.
O sinteza a formatului comenzilor DOS cu principalele optiuni este
prezentata n figura urmatoare. Comenzile interne sunt evidentiate prin
litera "I" plasata n dreapta comenzii.
CD |d:||cale|sau CHDIR |d:||cale|I
MD |d:||cale|sau MKDIR |d:||cale|I
RD |d:||cale|sau RMDIR |d:||cale|I
JOIN d1 d2 tdirector |/D|
FDISK |d:|
FORMAT d: |/S||/V|
UNFORMAT d:
LABEL |d:||eticheta_volum|
9
DISKCOMP d1: d2:
DISKCOPY d1: d2:
CHKDSK |d:||cale||fisier|. tip|||/F||/V|
RECOVER d:
DIR |d:||cale||fisier|. tip|||/P||/W|I
COPY |/A||/B||d:||cale|fisier|. tip|
|+|d:||cale|fisier|.tip|...||d:||cale|fisier|.tip|I
XCOPY |d:||cale|fisier|. tip| |d:||cale|fisier|. tip|
|/A||/D: ll-zz-aa||/E||/M||/P||/S||/V||/W|
REN sau RENAME |d:||cale|fisier|.tip| |d:||cale|fisier|.tip|I
DEL sau ERASE |d:||cale|fisier|.tip|I
UNDELETE |d:||cale|fisier|.tip||/LIST||/ALL|
COMP |d:||cale|fisier|.tip| |d:||cale|fisier|.tip|
TYPE |d:||cale|fisier|.tip|I
PRINT |d:||cale|fisier|.tip|... |/C||/P||/T|
SORT |/R||/+n|
FIND |/V||/C||/N|"sir" sau |d:||cale|fisier|.tip|...
MORE
EXE2BIN |d:||cale|fisier. COM |d:||cale|fisier. EXE
PATH ||d:|cale|;|d:|cale ...||I
APPEND ||d:|cale|;|d:|cale ...||
FASTOPEN d: |= n|
DATE |ll-zz-aa|I
TIME |hh-mm|:ss||I
BREAK |ONOFF|I
PROMPT |text|I
SET |nume = |valoare||I
CLS
MEM |/P||/C||/D|
VER I
VOL |d:|I
HELP |comanda|
Principalele comenzi DOS pot fi grupate astfel:
a) Comenzi de manipulare a directoarelor:
CD (CHDIR): schimba directorul curent n cel specificat;
10
MD (MKDIR): creaza un director nou, numai daca nu exista
deja un director cu numele specificat;
RD (RMDIR): sterge un director vid (nu contine nici-un fisier
sau subdirector specificat);
-JOIN: realizeaza conectarea unei structuri de fisiere aflata pe
un disc "d1" la structura de fisiere a discului "d2". n urma
comenzii, cele doua sisteme de directoare sunt privite ca si unul
singur, directorul radacina al discului "d1" fiind conectat ca
subdirector cu numele "director" al radacinii lui "d2".
Optiunea "/D" realizeaza operatia inversa, adica deconectarea,
iar atunci se vor specifica numai "d1" si "/D";
b) Comenzi de manipulare a unui disc:
-FDISK: realizeaza partajarea unui hard disc n partitii;
-FORMAT: initializeaza discul specificat prin "d:" la un format
standard acceptat de catre DOS. Dupa ce se scrie pe tot discul,
se creaza directorul radacina si se initializeaza directorul
radacina precum si tabela FAT. Optiunea "/S" cere ca discul
respectiv sa fie facut disc sistem, optiunea "/V" specifica o
eticheta de volum pentru identificare;
-UNFORMAT: permite refacerea unui disc formatat, indicat
prin "d:". Comanda este valabila la DOS 5.0, iar refacerea se
realizeaza prin formatarea doar a partii de nceput, pna la
directorul radacina inclusiv. nainte de scriere, aceasta portiune
se salveaza ntr-o zona rezervata a discului. Utilizatorul trebuie
sa lanseze comanda UNFORMAT nainte de a scrie ceva pe
discul formatat, iar daca nu se respecta aceasta conditie, sau se
lanseaza FORMAT cu "/U", atunci refacerea nu mai este
posibila;
-LABEL: permite crearea sau stergerea unei etichete de volum.
Aceasta eticheta poate fi data si prin comanda FORMAT,
printr-un dialog ntre sistem si utilizator;
-DISKCOMP: permite compararea dischetelor indicate prin
"d1" si "d2". Comparatia se face pista cu pista, semnalndu-se
diferentele. De regula, aceasta comanda se da pentru a se
verifica daca s-a facut corect o operatie de copiere cu comanda
DISKCOPY;
11
-DISKCOPY: copiaza la nivel fizic, discheta "d1" pe discheta
"d2" (daca e nevoie, discheta "d2" este formatata automat);
-CHKDSK: analizeaza structura informatiei de pe un disc DOS
si afiseaza un raport asupra starii discului. Optiunea "/F" cere
corectarea (pe ct posibil a) structurii nct sa devina una
valida, iar optiunea "/V" afiseaza o serie de detalii n timpul
executiei comenzii. Daca se specifica un fisier (sau o familie),
atunci se indica numarul de zone necontigue ocupate de fisierul
(fisierele) n cauza.
-RECOVER: recupereaza fisierele de pe disc care contin
sectoare defecte, si de asemenea, se marcheaza sectoarele
defecte. Fisierele recuperate primesc nume noi, sub forma:
FILEnnnn. REC, unde "nnnn" este un numar de ordine. Toate
fisierele recuperate vor fi plasate n directorul radacina.
c) Comenzi referitoare la fisiere:
-DIR: listeaza toate intrarile din fisierul director sau numai cele
specificate. Parametrul "/P" genereaza executia unei pauze ori
de cte ori ecranul este plin de informatii, iar parametrul "/W"
produce o afisare condensata a directorului, listnd doar
numele fisierelor, cte cinci nume pe linie;
-COPY: copiaza unul sau mai multe fisiere pe un alt disc si
optional, atribuie un nume diferit pentru copie. De asemenea,
COPY poate crea o copie pe acelasi disc. n timpul procesului
de copiere se poate realiza si o concatenare de fisiere, daca se
specifica operatorul "+". Parametrii "/A" si "/B" indica
volumul de date care se va copia si anume:
- n intrare: "/A" exclude copierea marcatorului de sfrsit de
fisier, iar "/B" impune copierea ntregului fisier;
- n iesire: "/A" adauga marcatorul de sfrsit de fisier, iar
"/B" nu adauga marcatorul de sfrsit de fisier;
-XCOPY: permite copierea selectiva de fisiere sau grupuri de
fisiere care pot sa includa si subdirectoare. Ca optiuni, pot fi:
- "/A": copierea fisierelor marcate pentru arhivare;
- "/M": identic cu "/A", dar schimba marcajul de
arhivare;
- "/D": copierea fisierelor modificate dupa data specificata;
- "/E": creaza la destinatie subdirectoarele din sursa;
- "/P": copierea cu confirmare pentru fiecare fisier;
12
- "/S": copierea din sursa a directoarelor si subdirectoarelor
- "/V":verificare scriere la destinatie (recitire si comparare)
-REN (RENAME): schimba numele fisierului specificat;
-DEL (ERASE): sterge fisierul cu numele specificat, din
directorul si unitatea specificate sau implicite;
-UNDELETE: permite refacerea fisierelor sterse (valabila la
DOS 5.0). n mod obisnuit se reface un singur fisier, dar
optiunea "/ALL" permite refacerea tuturor fisierelor posibile,
caz n care prima litera a numelor acestor fisiere este stabilita
automat. Optiunea "/LIST" permite afisarea fisierelor care pot fi
refacute;
-COMP: compara doua fisiere de aceeasi lungime, prin citirea si
compararea continutului lor. Compararea se termina fie la
sfrsit, fie la depistarea a maximum 10 octeti diferiti ( primele
10 diferente sunt afisate);
-TYPE: afiseaza continutul fisierului specificat pe dispozitivul
standard de iesire;
-PRINT: tipareste o coada (lista) de fisiere de date la imprimanta
n timp ce pe sistem se pot executa alte lucrari;
d) Filtre DOS:
-SORT: citeste date de la echipamentul standard de intrare,
sorteaza datele, apoi scrie datele sortate la echipamentul
standard de iesire. Sortarea se efectueaza crescator dupa
codurile ASCII ale caracterelor, sau descrescator ("/R");
-FIND: trimite la echipamentul standard de iesire toate liniile
din fisierul specificat n comanda si care contin un sir de
caractere specificat. Parametrul "/V" determina afisarea tuturor
liniilor care nu contin sirul specificat, iar parametrul "/C"
permite afisarea unui contor cu numarul de aparitii a sirului
specificat;
-MORE: este un filtru care citeste date de la intrarea standard si
le transpune pe ecran, iar cnd acesta este plin, se asteapta
apasarea unei taste pentru a se trece la ecranul urmator;
-EXE2BIN: este un filtru special care transforma un program
executabil de tip EXE n unul de tip COM;
13
e) Comenzi de configurare dinamica DOS:
-PATH: fixeaza caile de cautare a fisierelor executabile;
-APPEND: fixeaza caile de cautare a fisierelor neexecutabile;
-FASTOPEN: optimizeaza accesul la fisierele si directoarele
folosite mai des. n acest scop se gestioneaza o zona tampon cu
adresele disc recent utilizate, potrivit principiului memoriei
cache. Parametrul "n" indica numarul de adrese gestionate,
cuprins ntre 10 si 999, cu valoarea implicita 34;
-DATE, TIME, BREAK, PROMPT: se refera la schimbarea
datei, a orei exacte, a sesizarii sau nu a lui <CTRL/Break>, sau
a formei prompterului de invitare la comenzi;
-CLS: provoaca stergerea completa a ecranului terminalului
-SET: fixeaza valori ale unor parametri aflati ntr-o zona de
memorie controlata de COMMAND. COM.
f) Comenzi de informare:
-MEM: afiseaza continutul memoriei la un moment dat;
-VER: afiseaza versiunea sistemului de operare DOS;
-VOL: afiseaza eticheta de volum specificat sau a celui curent;
-HELP: ofera detalii despre comenzile DOS n general, sau
despre o anumita comanda DOS specificata.
Fisiere de comenzi (BAT) sub DOS
Un fisier de comenzi (al carui tip este . BAT), este un fisier text care
contine una sau mai multe comenzi si/sau directive care se executa
succesiv, fara interventia directa a utilizatorului. Un prim exemplu de fisier
de comenzi DOS este fisierul AUTOEXEC. BAT. Daca acest fisier este
prezent n directorul radacina pe discul de pe care se face ncarcarea, DOS
executa automat comenzile din el la fiecare ncarcare a sistemului.
Un fisier de comenzi DOS contine mai multe tipuri de constructii:
- comenzi DOS propriu-zise;
- etichete;
- caracterele speciale , <, > si %;
- parametrii formali care vor fi nlocuiti la lansare cei actuali;
- variabile globale rezidente n interpretorul de comenzi;
- variabile locale utilizate n instructiuni repetitive;
- directive adresate interpretorului fisierelor de comenzi.
14
Exemplu: TIPAR. DAT: DIR *. PAS
COPY *. PAS a:
DEL *. PAS
O eticheta se scrie sub forma: : nume, unde caracterul ":" este urmat de
maximum 8 litere sau cifre. O eticheta apare pe o singura linie, la nceput de
rnd.
Caracterele speciale , < si > sunt interpretate n comenzi prin legare n
pipe a doua comenzi, respectiv redirectarea intrarii si/sau iesirii standard a
unei comenzi.
Caracterul % marcheaza parametrii formali, variabilele globale si
variabilele locale.
ntr-un fisier de comenzi pot fi specificati pna la 10 parametri formali,
notati %0, %1, ..., &9. Corespunzator acestora, n linia de comanda care
lanseaza n executie fisierul de comenzi argumentele sunt puse n
corespondenta cu acesti parametri.
Directivele interpretorului fisierelor de comenzi
- FOR %% variabila IN (multime) DO comanda;
- CALL fisier_comenzi;
- IF |NOT|ERRORLEVEL n comanda, sau
- IF |NOT|sir1 == sir2 comanda sau
- IF |NOT|EXIST fisier
- GOTO eticheta
- SHIFT
- ECHO |ONOFFmesaj|
- PAUSE |mesaj|
Directiva FOR permite prelucrarea iterativa a unei comenzi dintr-un
fisier de comenzi. %%variabila este o variabila locala de ciclare care va fi
nlocuita secvential cu fiecare membru din multime, apoi comanda este
evaluata si executata. Daca un membru al multimii este o expresie
construita generic (cu * si/sau ?), atunci %%variabila va fi nlocuita pe
rnd cu toate numele de fisiere care se potrivesc cu aceasta expresie.
De exemplu, comanda:
FOR %%f IN (*.PAS *.DOC) DO TYPE %%f
va tipari pe ecranul terminalului mai nti toate fisierele de tip PAS, apoi
pe cele de tip DOC.
Directiva CALL permite apelul (lansarea n executie) a unui fisier de
comenzi din altul. La terminarea fisierului apelat, controlul revine fisierului
15
apelant. Este posibil ca ultima linie a unui fisier de comenzi sa ceara
lansarea altui fisier de comenzi (fara CALL), si n acest caz se realizeaza o
nlantuire fara revenire a celor doua fisiere.
Directiva GOTO transfera controlul n fisierul de comenzi, n linia de
comanda situata dupa eticheta specificata.
Directiva IF permite executia conditionata a unei comenzi DOS din
fisierul de comenzi, sau a unei alte directive.
Fiecare comanda DOS transmite, n momentul terminarii, un cod cu o
valoare ntre 0 si 255. De obicei, un cod cu o valoare nenula indica o
situatie neobisnuita, n anumite situatii de programare specificnd ramura
pe care s-a terminat programul. Conditia "ERRORLEVEL numar" este
adevarata daca codul de retur al ultimei comenzi este mai mare sau egal cu
numarul scris dupa cuvntul ERRORLEVEL.
Conditia "sir1 == sir2" este adevarata daca valorile celor doua siruri de
caractere coincid, iar cel putin unul din siruri trebuie sa contina un
parametru formal sau o variabila globala.
Conditia "EXIST fisier" este adevarata daca fisierul specificat, simplu
sau generic exista.
Actiunea directivei IF fara NOT nseamna executia comenzii daca
conditia este adevarata, iar daca NOT este prezent, atunci comanda se
executa cnd conditia este falsa.
Comanda ASK face parte dintr-o familie de programe utilitare oferite
de firma NORTON. Prin intermediul acestei comenzi, utilizatorul poate
interactiona cu fisierul de comenzi.
ASK mesaj, aliteres are ca efect afisarea pe ecran a "mesaj", care nu
contine ",", dupa care asteapta ca utilizatorul sa apese una din literele dintre
paranteze . Daca utilizatorul a tastat a i-a litera din lista, atunci ASK se
termina cu ERRORLEVEL = i. Evident, o succesiune de directive IF
poate realiza o ramificare multipla a executiei.
Exemplu: ASK. BAT: ASK Doriti testare AV?, |DdNn|
IF ERRORLEVEL 3 GOTO :F{R{
SCAN c: d:
PAUSE
: F{R{
Directiva SHIFT permite folosirea a mai mult de 10 parametri formali.
Efectul ei este acela de a "decala" parametrii formali, facnd sa se piarda
16
parametrul %0, parametrul care nainte era %1 sa devina %0, cel ce fusese
%2 sa devina %1 etc.
Exemplu: STERGE.BAT:
:IAR
SHIFT
IF "%0" == " " GOTO :STOP
DEL %0
GOTO :IAR
:STOP
Lansat cu ...> STERGE a b c d e f g h i j k l va sterge pe rnd cele 12
fisiere citate n comanda.
Directiva ECHO permite sa se afiseze (ON) sau sa nu se afiseze (OFF)
comenzile care se executa, sau daca directiva contine un mesaj, se afiseaza
acest mesaj pe ecran.
Directiva PAUSE suspenda executia fisierului de comenzi pna la
apasarea unei taste.
ntreruperea executiei unui fisier de comenzi se face cu <CTRL/C>.
Sistemul Windows
Windows poate fi considerat ca o extensie a sistemului de operare DOS,
menit pe de o parte sa puna n valoare calitatile DOS nca neexploatate, iar
pe de alta parte sa asigure utilizatorului o interfata grafica deosebit de
atractiva. Aceasta interfata este asigurata att fata de DOS, ct si fata de
programele de aplicatii, indiferent daca acestea sunt produse de firma sau
sunt dezvoltate de catre utilizator.
Trebuie precizat ca Windows nu este numai o suprafata de operare, ci
o extensie efectiva a DOS. n sustinerea acestui fapt trebuie aratat ca
Windows ofera trei facilitati care direct sub DOS se pot realiza numai cu
mare efort din partea utilizatorului:
a) executia (aproximativ) "simultana" a mai multor aplicatii;
b) transmiterea sub controlul utilizatorului a unor date ntre aplicatii;
c) realizarea unui mecanism standard de interfata grafica utilizator, la
toate nivelele de aplicare.
Sub Windows pot fi lansate n lucru mai multe aplicatii. O aplicatie
lansata poate fi suspendata temporar. Dupa suspendare poate fi lansata o
alta aplicatie, sau poate fi relansata una dintre cele suspendate. Este deci
limpede ca nu este vorba de multitasking n sensul clasic. Daca un astfel de multitasking este necesar sau
nu, aceasta depinde de aplicatii. n orice caz, desi n documentatii se vorbeste
de multitasking sub Windows, acesta trebuie nteles n sensul de mai sus.
Singurele aplicatii efectiv executabile n paralel sunt cele oferite de
DOS:
a) listarea la imprimanta n paralel cu executia altor programe;
b) supravegherea ceasului sistem n vederea lansarii unui program la o
ora fixata.
Realizarea schimbului de date
Windows gestioneaza implicit o aplicatie numita ClipBoard. Prin
intermediul acesteia utilizatorul poate depozita temporar, din orice aplicatie, informatii din zona
rezervataClipBoard. Informatia poate fi de tip text sau grafica. Tot prin ClipBoard utilizatorul poate edita
continutul informatiei depozitate. n sfrsit, din orice aplicatie se pot extrage informatii depozitate n
zona ClipBoard. n acest mod se pot transmite informatii de la o aplicatie la alta.
Interfata grafica Windows (GUI - Graphics User Interface)
Elementul esential de intrare n aceasta interfata este tastatura. Pentru
simplificarea muncii, Windows "prefera" pentru cele mai multe raspunsuri
simple unul sau doua apasari ale unui buton de la mouse.
Elementul esential de afisare n aceasta interfata este fereastra. Aceasta
este o portiune dreptunghiulara afisata ntr-o zona a ecranului, destinata
comunicarii utilizator-Windows. Principalele componente ale unei ferestre
sunt:
a) Titlul ferestrei;
b) Butonul de nchidere / deschidere a ferestrei (stnga sus);
c) Butonul de minimizare (triunghiul cu vrful n jos plasat n partea
dreapta sus);
d) linia pentru meniuri pull-down (File, Window, Help etc.);
e) scroll-bar pentru defilare verticala (plasat pe latura verticala din
dreapta si prevazut cu doua sageti pentru ridicare sau coborre si un
buton nescris pentru a marca pozitia curenta);
f) scroll-bar pentru defilare orizontala (plasat pe latura orizontala de
jos, cu acelasi continut ca si scroll-bar pentru defilare verticala);
g) continutul propriu-zis al ferestrei care este de fapt partea cea mai
mare a ei, plasat ntre cele doua scroll-bar si linia de meniuri pulldown.
La un moment dat pe ecran pot sa existe mai multe ferestre, eventual
suprapuse total sau partial. Fiecare fereastra apartine unei aplicatii.
Fereastra care este deasupra si n care apare cursorul este cea activa, odata
cu aplicatia careia i apartine. Activarea/dezactivarea unei ferestre se face
printr-o simpla apasare pe butonul din stnga sus de la mouse.
Cu ajutorul mouse-ului fereastra activa poate fi deplasata sau
redimensionata. Pentru aceasta se deplaseaza mouse-ul la una din margini,
se lasa pna cnd cursorul si schimba forma, dupa care, cu butonul tinut
apasat se deplaseaza si se dimensioneaza dupa dorinta.
Scroll-bar-urile apar si se folosesc atunci cnd spatiul oferit de partea
principala a ferestrei este prea mic pentru a putea afisa toata informatia. Din
aceasta cauza, se afiseaza doar o parte din informatii, numai ct ncape n
fereastra. Apasnd butonul mouse-ului cu cursorul pe una dintre aceste bare
de defilare, informatia se va deplasa facnd vizibile alte informatii n
fereastra.
O fereastra poate fi nchisa (close), caz n care aplicatia proprietar se
termina. Suspendarea se realizeaza fie suprapunnd peste ea o alta
fereastra, fie minimiznd fereastra respectiva.
O fereastra minimizata apare pe ecran sub forma unui asa-zis icon
(pictograma). Aceasta este o imagine de dimensiuni mici care contine un
mic desen sugernd aplicatia.
Maximizarea unei ferestre plecnd de la o pictograma nseamna
"trezirea" aplicatiei respective, maximizarea nseamna dimensionarea ei
astfel nct sa ocupe tot ecranul.
Un meniu pull-down devine activ daca se apasa butonul din stnga de la
mouse atunci cnd cursorul se afla pe numele meniului. n acest moment
apare o fereastra care permite utilizatorului sa aleaga o actiune din mai
multe posibile. Utilizatorul poate tasta pentru alegere litera subliniata, sau
se poate deplasa cu sagetile sau cu mouse-ul pe titlul variantei alese, dupa
care poate tasta <ENTER> sau un "clic" (apasarea unuia dintre butoanele
de la mouse).
Resurse Windows
Continutul principal al ferestrei depinde de tipul acesteia. Fiecare tip de
fereastra constituie pentru Windows o resursa. O resursa Windows este o structura de date care defineste
o portiune vizibila pe ecran a unui program.
O astfel de resursa este de regula materializata printr-un fisier de un anumit tip.
Esenta programarii sub Windows consta n urmatoarele: un program
simplu DOS de tip EXE, nainte de a putea fi executat sub Windows este
supus unei faze suplimentare numita adaugarea resurselor la fisierul
executabil.
Fiecare dintre mediile de programare celebre ofera biblioteci de
interfata Windows. Aproape toate acestea adopta pentru programare
politica de programare orientata obiect OOP (Object Oriented
Programming). Spre exemplu, firma Borland a lansat o data cu Turbo
Pascal 6.0 pachetul Turbo Vision. Aceasta permite o interfata excelenta la
nivel text cu ecranul. Curnd dupa aceasta, aceeasi firma lanseaza Object
Vision, care ofera o serie de unitati de lucru de interfata Windows n
aceleasi scopuri. Pachete similare au fost lansate pe piata pentru C, C++,
dBASE, Paradox etc.
Utilizatorii nu ntmpina greutati deosebite pentru programare sub
Windows. De exemplu, un program Pascal obisnuit se scrie la fel mediul
Turbo obisnuit ca si n mediul Turbo for Windows, singura modificare
este declararea uses de folosire a unitatii Wincrt, deci programul va avea
forma:
program nume;
uses Wincrt
. . .
end.
Trebuie totusi precizat un lucru n legatura cu programarea sub
Windows. Nucleul acesteia pretinde un control total asupra resurselor hard
ale sistemului de calcul. Micile "smecherii" posibile sub DOS:
interceptarea tastaturii, definirea unor ntreruperi ale utilizatorului,
deturnarea unor ntreruperi care vizeaza ecranul si tastatura etc. nu mai sunt
posibile.
Principalele tipuri de resurse Widows sunt:
a) acceleratori;
b) bitmapuri (harti de biti);
c) cursoare;
d) ferestre de dialog (dialog boxes);
e) fonturi;
f) iconuri (pictograme);
g) meniuri;
h) tabele de stringuri;
i) resurse definite de utilizator;
Actiunile posibile cu resursele sunt:
a) adaugarea unei resurse la un proiect;
b) stergerea unei resurse;
c) redenumirea unei resurse;
d) editarea unei resurse;
e) salvarea unei resurse;
f) specificarea optiunilor de memorie ale unei resurse.
Sa vedem acum ce este de fapt fiecare tip de resursa Windows. nainte
de a le defini, trebuie spus ca Windows ofera instrumente grafice de definire
a lor pe baza de dialog. Utilizatorul poate de asemenea sa le descrie prin
intermediul unui limbaj specializat. Experienta a demonstrat ca n marea
majoritate a cazurilor, resursele sunt definite nu prin descrieri anticipate n
limbajul specializat ci prin intermediul instrumentelor de dialog oferite de
Windows.
Accelerator este o combinatie de chei pe care utilizatorul o defineste
pentru a comanda efectuarea unei sarcini dintr-o aplicatie.
De exemplu, daca ntr-o aplicatie are nevoie de stergerea frecventa a mai
multor fisiere, el poate sa-si defineasca combinatia <ALT/F8> pentru a
sterge fisierul punctat de cursor (este vorba aici de prescurtarea unor
comenzi, nu de marirea vitezei de executie).
Bitmap are rolul de a afisa imagini grafice n programul Windows.
Crearea unui bitmap se face cu ajutorul componentei Paint Editor care
creaza n acest sens un fisier. Bitmap-urile sunt folosite pentru a reprezenta:
sagetile scroll-bar, butoanele de minimizare si maximizare si orice alte
imagini create de utilizator.
Cursorul este un bitmap alb-negru de 32 32 biti prin care este indicata
pozitia curenta pe ecran. Proiectarea unui cursor se face cu Paint Editor.
Dialog-Boxes (ferestre de dialog) sunt resursele care ofera modalitatea
de interactiune cu o aplicatie. O astfel de fereastra ofera pentru interfata
meniuri pull-down, butoane pentru selectarea unei valori, butoane care
permit selectarea simultana a mai multor valori (radio-buttons), casute
pentru introducerea si editarea unui text etc. Pentru creare, Windows ofera
un editor special pentru dialoguri.
21
Fonturi. Un font este o colectie de date care descriu un caracter
individual, precum si modul n care acesta va fi afisat sau tiparit.
Pictograme. O pictograma |icon|este o imagine bitmap de 3232 biti
(daca apare si numele iconului) sau 32 16 biti (daca apare doar imaginea).
Proiectarea unui icon se face cu Paint Editorul. Imaginea creata depinde de
fantezia utilizatorului, totul este sa sugereze, foarte sintetic, continutul
aplicatiei respective.
Meniuri. Un meniu cere utilizatorului sa aleaga una dintre optiunile
oferite. Pentru crearea de meniuri, Windows ofera editor special.
Tabele de stringuri. O astfel de tabela contine mesaje de eroare,
prototipuri sau orice colectie de mesaje text pe care o aplicatie le poate da.
Pentru creare, exista un editor special de stringuri.
Resurse definite de utilizator. Exista posibilitatea de a defini si alte
tipuri de resurse dect cele prezentate pna acum. O resursa o data definita,
poate fi folosita ori de cte ori se doreste.
Operarea sub Windows
Lansarea n lucru se face cu comanda: ....> Win. Dupa lansare apare
fereastra principala. Iconul marcat este deja prezent n memorie si poate fi
facut activ prin meniul File. Dupa activare apar doua ferestre partial
suprapuse. De aici se poate face activ un alt icon sau alege o alta aplicatie.
Refacnd activa una dintre ferestrele "de dedesubt", de acolo se poate
alege o alta aplicatie etc. Minimiznd si eventual deplasnd si
redimensionnd, se pot crea mai multe aplicatii suspendate temporar si una
activa.
Meniul Window apare n foarte multe aplicatii. El permite o aranjare a
ferestrelor de pe ecran fara nterventia efectiva a utilizatorului. Exista n
principal doua moduri de aranjare:
a) cascada, partial suprapuse, cele mai mari dedesubt, iar cele mai
mici deasupra;
b) tile (piese de domino), cnd ferestrele sunt plasate alaturat, fara
suprapuneri.

Document Info

Accesari: 1265
Apreciat:
Comenteaza documentul:
Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta

Creaza cont nou

A fost util?
Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site

Copiaza codul
in pagina web a site-ului tau.






Copyright Contact (SCRIGROUP Int. 2012 )

S-ar putea să vă placă și